#1156-C: exact legacy provider, agent, route and model selection #1181

Open
opened 2026-08-13 00:29:56 +00:00 by Ghost · 0 comments

Child of #1156. Remove remaining exact-selection substitution/no-op success in legacy surfaces.

Adjudicated findings

  • FL-04: partial/ambiguous supplied selection and duplicate model-only lookup can silently choose another provider. Truly absent selection may remain a separately typed legacy automatic-routing mode, but it requires an explicit deterministic policy rather than accidental available[0] selection.
  • FL-05: supplied unresolved agentConfigId is ignored; execution proceeds under default agent/provider/model behavior.
  • FL-12: legacy /model <free text> is production-reachable, lacks catalog validation, changes metadata rather than reconstructing the active runtime, and can report success without confirmed runtime application.
  • Dead RoutingEngineService still encodes unconditional cross-provider fallback; it must stay mechanically unreachable or be removed/rewritten.

Dropped after independent adjudication: FL-06. /api/providers/route accepts a documented legacy preferred criterion under automatic score-routing; preferred is not a binding exact tuple. A future binding-selection API must be separately typed and must never reuse this fallback contract.

Binding outcome

  • Supplied provider/model/agent choices are exact and binding. Partial, ambiguous, unknown or unavailable supplied choices fail typed with no session/provider creation.
  • A truly absent selection, if retained, enters only an explicit automatic-routing mode with a deterministic reviewed default policy—never incidental first-array choice.
  • Unresolved supplied agent config fails before model/prompt/tool resolution.
  • Legacy /model is disabled pending catalog-qualified semantics, or accepts only a catalog-qualified tuple and reports success only after confirmed runtime application.
  • Add a mechanical no-production-consumer fence for any retained dead fallback engine.
  • Red-first boundary matrix, full Gateway tests/typecheck/lint/build, independent exact-head verifier and focused code/security review.

This child binds before native stage, not W-F1. Preserve owner-tracked legacy continuity boundaries. Split AgentService resolution and /model retirement if the candidate crosses a bounded exact-selection packet.

Child of #1156. Remove remaining exact-selection substitution/no-op success in legacy surfaces. ## Adjudicated findings - FL-04: **partial/ambiguous supplied selection** and duplicate model-only lookup can silently choose another provider. Truly absent selection may remain a separately typed legacy automatic-routing mode, but it requires an explicit deterministic policy rather than accidental `available[0]` selection. - FL-05: supplied unresolved `agentConfigId` is ignored; execution proceeds under default agent/provider/model behavior. - FL-12: legacy `/model <free text>` is production-reachable, lacks catalog validation, changes metadata rather than reconstructing the active runtime, and can report success without confirmed runtime application. - Dead `RoutingEngineService` still encodes unconditional cross-provider fallback; it must stay mechanically unreachable or be removed/rewritten. **Dropped after independent adjudication:** FL-06. `/api/providers/route` accepts a documented legacy *preferred* criterion under automatic score-routing; preferred is not a binding exact tuple. A future binding-selection API must be separately typed and must never reuse this fallback contract. ## Binding outcome - Supplied provider/model/agent choices are exact and binding. Partial, ambiguous, unknown or unavailable supplied choices fail typed with no session/provider creation. - A truly absent selection, if retained, enters only an explicit automatic-routing mode with a deterministic reviewed default policy—never incidental first-array choice. - Unresolved supplied agent config fails before model/prompt/tool resolution. - Legacy `/model` is disabled pending catalog-qualified semantics, or accepts only a catalog-qualified tuple and reports success only after confirmed runtime application. - Add a mechanical no-production-consumer fence for any retained dead fallback engine. - Red-first boundary matrix, full Gateway tests/typecheck/lint/build, independent exact-head verifier and focused code/security review. This child binds before native stage, not W-F1. Preserve owner-tracked legacy continuity boundaries. Split AgentService resolution and `/model` retirement if the candidate crosses a bounded exact-selection packet.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: mosaicstack/stack#1181