Skip to content

dispatcher: retire Tier-4 legacy resolve_slot + add public SlotManager.state(); document the two routing axes #624

@thinmintdev

Description

@thinmintdev

What to build

The Dispatcher's Tier-4 legacy fallback proxy.resolve_slot (path/name heuristics) is reached at exactly one site and is superseded by Tiers 1-3. Retire it: delete Tier-4, raise NoRouteFound when Tiers 1-3 miss (confirm no model bindings rely on the legacy path first). Also add a public SlotManager.state(name) -> SlotState and switch the Dispatcher off the private _current_state() leak. Add a short ARCHITECTURE note documenting the two orthogonal routing axes (Dispatcher = model-id→URL transport; route_for_request = capability→slot selection) so this isn't misread as redundant again.

Do NOT touch omni_router / route_for_request — they stay (verified load-bearing for omni's tool selection + dispatch).

Pointers: dispatcher/proxy.py:58, dispatcher/router.py:549,669,704. Audit Q2.1.

Acceptance criteria

  • Tier-4 resolve_slot removed; Tiers 1-3 raise NoRouteFound on miss
  • Public SlotManager.state() added; Dispatcher no longer calls _current_state()
  • ARCHITECTURE documents the two routing axes
  • omni_router untouched; suite green

Blocked by

None - can start immediately

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestoss-readiness2026-06-07 codebase-audit OSS-readiness backlogready-for-agentPRD is fully scoped and ready for an AFK agent to pick up

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions