Skip to content

feat: retire model families from the provider catalogue - #21

Merged
outofcoffee merged 3 commits into
mainfrom
worktree-retire-model-families
Jul 29, 2026
Merged

outofcoffee merged 3 commits into
mainfrom
worktree-retire-model-families

Conversation

@outofcoffee

@outofcoffee outofcoffee commented Jul 29, 2026 •

Copy link
Copy Markdown
Collaborator

Collapse the provider catalogue to provider plumbing only, retiring the model-family concept.

Summary

  • BREAKING: remove the FAMILY Outfit keyword and the --model-family/-f flag; a selection is now a provider plus a MODEL and/or ALIAS.
  • Strip providers.yaml to plumbing (description, name, npm, API-key config, options, pi) — no more families: blocks, model lists, or per-family default models.
  • Remove the family machinery from the catalogue API (Family, Provider.Families, MatchFamily, SortedFamilyNames, Family.ModelKeys) and the familyName parameter from BuildProviderBlock/BuildPiProvider.
  • Simplify outfit list (providers plus plumbing), outfit export (names the model directly), outfit remove (no family expansion), and shell completion.
  • Update the documentation throughout.

Implementation details

The per-family model lists were the catalogue's only real churn: models change constantly, but the plumbing (around six providers) rarely does. BuildProviderBlock already synthesises a model entry for any id the user names, so arbitrary models worked without being listed — the curated lists were conveniences, not an authoritative registry, and no shipped Outfit used FAMILY. Single-model selection, default-model resolution, and alias-keying are unchanged. Model completion loses its static source here; a follow-up change (#22) restores a browsable, self-updating list by querying each provider's own /models endpoint. Delivered as the retire-model-families OpenSpec change (proposal, design, spec deltas, and implementation).

Add an OpenSpec change proposal to collapse the provider catalogue to
provider plumbing only, removing the FAMILY keyword, the --model-family
flag, and the per-family model lists and default models. The user names
the model directly via MODEL/ALIAS, which already passes through the
block builders.

Includes proposal, design, spec deltas (provider-catalog,
provider-selection, outfit-files, shell-completion), and tasks. No code
changes yet — implementation follows via the apply flow.

Claude-Session: https://claude.ai/code/session_01WmyqktzL3xrG4bVQYoP7aT
Collapse the catalogue to provider plumbing only. Models change all the
time, so the hand-curated per-family model lists were an unbounded
maintenance burden — yet BuildProviderBlock already synthesises a model
entry for any id the user names, so arbitrary models already work. The
family layer only bundled several models under one name, and no shipped
Outfit used FAMILY.

Changes:
- providers.yaml drops every families block (models + defaultModel);
  each provider keeps only description/name/npm/apiKey*/options/pi.
- catalog: remove Family, Provider.Families, MatchFamily,
  SortedFamilyNames, Family.ModelKeys; drop the familyName parameter
  from BuildProviderBlock and BuildPiProvider.
- Outfit format: remove the FAMILY keyword and Selection.Family.
- CLI: remove --model-family/-f; simplify list (providers + plumbing),
  export (names the model directly), and remove (no family expansion).
- completion: drop family names; --model has no static source now.
- docs updated throughout; FAMILY/-f removed.

BREAKING: Outfits or scripts using FAMILY/--model-family must switch to
MODEL/ALIAS. No shipped example used FAMILY.

Implements the retire-model-families OpenSpec change.

Claude-Session: https://claude.ai/code/session_01WmyqktzL3xrG4bVQYoP7aT
@outofcoffee outofcoffee changed the title Propose: retire model families from the provider catalogue Retire model families from the provider catalogue Jul 29, 2026
@outofcoffee outofcoffee changed the title Retire model families from the provider catalogue feat: retire model families from the provider catalogue Jul 29, 2026
Archive the completed OpenSpec change and fold its deltas into the main
specs. OpenSpec cannot drop a scenario from a MODIFIED requirement, so the
requirements whose family scenarios were removed are expressed as
remove+add under family-free names:
- provider-catalog: Embedded provider catalogue -> Embedded provider definitions
- provider-selection: Selection validation -> Validating a selection;
  Removing a selection -> Removing a provider or model
- shell-completion: Completion coverage -> Completion surface coverage

Also refresh the two spec Purpose sections (non-normative, untouched by
the delta sync) to drop their family wording.

Claude-Session: https://claude.ai/code/session_01WmyqktzL3xrG4bVQYoP7aT
@outofcoffee
outofcoffee marked this pull request as ready for review July 29, 2026 11:30
@outofcoffee
outofcoffee merged commit 9d15612 into main Jul 29, 2026
1 check passed
@outofcoffee
outofcoffee deleted the worktree-retire-model-families branch July 29, 2026 11:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant