Skip to content

Follow-up: Automatically fall back when a worker model route cannot be bound #116

Description

@justin808

The model-routing recovery policy currently requires an unavailable worker route to stop and re-plan, but it does not define how the coordinator should discover dispatcher capabilities or automatically select an authorized stronger fallback. This caused batch awfa-20260709-1753-docs-adoption to remain blocked after its requested Terra / Extra High replacement could not be bound through the available subagent API, even though a Sol fallback was acceptable once the operator was asked.

Incident evidence:

  • The batch needed a corrective implementation worker for issue Follow-up: Fix seam-init forwarding edge cases after PR #107 #112 after PR Add one-command consumer seam initialization #107 merged with two known forwarding defects.
  • The dispatcher exposed worker creation but no model/effort binding or verification field.
  • The batch instruction prohibited an unbound worker, so the coordinator correctly preserved the claim and stopped.
  • Goal-mode blocker auditing then repeated until the goal was marked blocked.
  • Work resumed only after the operator explicitly authorized Sol / Extra High fallback.

Desired behavior:

  • Represent routing intent as a required route plus an explicit ordered fallback chain, distinguishing hard prohibitions from preferences.
  • At preflight, discover whether the active dispatcher can bind and attest the requested model/effort pair.
  • If the requested pair is unavailable, automatically select the first operator/repository-authorized fallback and record requested route, actual route, reason, and authority in coordination state.
  • If no fallback is authorized, ask one focused question immediately and persist a restart-safe decision request rather than repeating unchanged blocker audits.
  • Preserve claim, branch, worktree, file-touch map, and sanitized replacement handoff across the switch.
  • Never silently inherit the coordinator route or weaken an explicitly hard routing restriction.
  • Add contract fixtures for: requested route available; requested route unavailable with authorized stronger fallback; unavailable with no authorized fallback; and dispatcher unable to attest its selected route.
  • Ensure Goal-mode completion/blocking behavior resumes automatically after an authorized fallback is selected.

Process Gap Disposition:

  • Mechanism target: schema plus dispatcher-capability preflight and replayable contract tests.
  • Motivating miss: awfa-20260709-1753-docs-adoption, issue Follow-up: Fix seam-init forwarding edge cases after PR #107 #112 corrective lane.
  • Replay evidence: simulate a dispatcher without model/effort parameters, configure Terra/xhigh -> Sol/xhigh, and prove the lane transfers once without overlapping workers or user intervention.
  • Non-goal: prose that merely tells coordinators to ignore unavailable route bindings or silently substitute arbitrary models.

Related implementation history:

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions