fabro/docs
Scott Werner 14584bbc32 Reject bare provider names and unknown unpinned selectors
Fabro's shared resolver passed any unknown bare selector through verbatim
to the highest-priority ready provider. A provider name in the model field,
such as `gemini`, is not a catalog model, so it took that path and reached
Anthropic with wire model `gemini`. The same path turned any typo into a
request on whichever provider happened to win priority.

An unqualified unknown selector is now an error. Passthrough of an
uncatalogued model id still works, but only with a provider pin, which is
also how the operator docs already described it. A bare provider name gets
a dedicated error that names the provider and says to pin it and omit the
model to use its default.

The completions endpoint returns that error as a 400 before any provider
call; the models lookup returns it as a 404. Session creation keeps its
own provider-name message and no longer passes unknown unpinned names
through either. The OpenAPI description of `CreateCompletionRequest.model`
no longer advertises a provider id as a selector, and the TypeScript client
is regenerated from it.

Closes #950 by rejecting the input rather than resolving it: a provider
name in the model position is ambiguous with model aliases, and no
comparable library resolves it to a provider default.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-20 13:16:51 -04:00
..
brainstorms Remove nonfunctional run agent permissions setting 2026-07-29 10:23:00 -04:00
ideation docs 2026-04-09 17:24:30 -04:00
internal Require finalization for every Fabro run 2026-10-09 12:08:28 -04:00
plans Reuse PermissionLevel and fix stale run spec snapshots 2026-08-01 10:09:44 -04:00
public Reject bare provider names and unknown unpinned selectors 2026-10-20 13:16:51 -04:00
superpowers Reuse PermissionLevel and fix stale run spec snapshots 2026-08-01 10:09:44 -04:00