B. Logical OpenAI model discovery + bare-model resolution (D-055) #134
Labels
No labels
accessibility
bug
documentation
duplicate
enhancement
good first issue
help wanted
invalid
P1
P2
P3
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Creatidy/scarcity-router#134
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Child B of #132. Routing-contract change: representative OpenAI clients must select real models normally. Records decision D-055 (next valid number, checked).
Scope (frozen)
GET /v1/modelsexposes usable logical model ids for allowed adopted source-derived models, in addition to configured routing aliases. Restricted (daybreak) and discovered/unclassified models never appear; retired models never appear.model = gpt-5.6-luna+reasoning_effort = maxconstrains routing to exactly that physical model and effort. Multiple sources/resources providing the identical exact identity may compete under existing capacity/scarcity/authorization policy. No cross-model substitution, ever.reasoning_efforton a logical-model request: a max-only family (D-054) may usemaxwhen it is the only legal evidenced effort; otherwise the request fails explicitly — no invented effort, no silent default.model_not_found. Genuinely unknown (or restricted/unclassified-not-adopted) slug →model_not_found.sr-pin:semantics unchanged and still authoritative for exact resource/source selection.sr-pin:→ alias → logical adopted model →model_not_found.docs/decisions.md(alternatives, supersession/reconciliation language vs the D-042 model-field resolution contract as documented indocs/execution-surface.md); amend the execution-surface model-resolution section in place — no redundant new document./v1/modelsentries carry anx_scarcity_routerextension (effective context/output ceilings, available reasoning efforts, restricted flag absent by construction) so representative clients and the child H integration UX can consume real numbers. Standard fields stay OpenAI-compatible.Tests
One source; two sources same model/effort; source unavailable (availability outcome); model retired; restricted model; unclassified model; alias collision; explicit pin; bare logical model; exact effort honored; forbidden downgrade (non-max effort request against a max-only family fails; a lower-effort logical request never silently reroutes); restricted slug never routable via discovery; collision precedence.
Non-goals
No Codex adapter changes (child D/E); no reasoning-dialect parsing (child C); no limits changes (child D); no client-specific hacks in the routing core.
Complexity boundary
gateway_openai.py,gateway_coordinator.py(resolution),gateway_server.py(models payload),execution_sources.py(exposed-models view),gateway_contracts.pyif typed errors needed; +1 decision/doc update; ~4–6 test files extended. Budget: 120 min wall clock.Acceptance
Full gate green (
uv sync --only-dev,make check,uv run basedpyright,git diff --check); representative fixture's model-resolution pin flipped to the new contract (child A asset updated); child-A positive/pin controls still green; PR open for human review; not merged.