8000 gate-dispatch: the dispatch model is the project's resolved one, not the supervisor's pick (run 20 → run 21: $2.79 → $0.66) by adeelahmad · Pull Request #33 · adeelahmad/aloop · GitHub
[go: up one dir, main page]

Skip to content

gate-dispatch: the dispatch model is the project's resolved one, not the supervisor's pick (run 20 → run 21: $2.79 → $0.66) - #33

Merged
adeelahmad merged 5 commits into
masterfrom
claude/project-thread-vm6wyr-model-gate
Oct 18, 2026
Merged

adeelahmad merged 5 commits into
masterfrom
claude/project-thread-vm6wyr-model-gate

Conversation

@adeelahmad
@adeelahmad adeelahmad commented Oct 18, 2026 •
Copy link
Copy Markdown
Owner

Requested by Adeel · project thread

Before: the model per role was advice in SKILL.md ("pass aloop models resolve as the Agent call's model"). Live e2e run 20, the first run with the planner stuck release and the dependent-task RED rule, was the cleanest yet (12/12, 10m47s, 1 block, 0 re-plans, 0 stuck, planner verdicts logged) and the most expensive: $2.79 against $0.99 for run 19. The supervisor dispatched the planning roles on opus and the workers on sonnet although defaults.md said haiku for both and its own aloop models resolve call had printed haiku.

After: gate-dispatch refuses a dispatch of any aloop role whose model is not the role's resolved one (aloop models resolve <role>, matched by model family so haiku and claude-haiku-5-5 agree), or that passes no model (which would fall back to the agent file's default, opus for the planning roles). An empty resolution (Codex) checks nothing. The block names the model to pass and where the setting lives. Live run 21 with the gate: 12/12, 8m17s, $0.66, 1 wake, 0 plugin-source reads, 3 blocks (two planner self-checks and one structural-review finding, each fixed on the first retry), every dispatch on haiku (haiku $0.10, supervisor sonnet $0.56).

How: gate-dispatch reads model from the Agent payload, widens its role list to the planning roles for this check only, and compares against models resolve <role> before the existing contract checks. Master (#32, #34, #35, #37) is merged in; the ROADMAP and CHANGELOG conflicts kept both threads' entries. ROADMAP M0.8 records runs 20 and 21; the evidence ledger (docs/evidence/README.md) gets both rows from run-summary.

Evidence: dispatch.test.py 12/12 (5 new cases written first, red before the change); layout.test.py 7/7 (its dispatch payloads now name a model); evidence.test.py 4/4; planner-stuck 5/5; make conformance 60/60; make test-hosts pycheck json shellcheck version-check OK; check-tracking 44 requirements. Run 21 log and run dir: make e2e-live YES=1 INTENT=semver on this branch at 1ad94e2.

🤖 Generated with Claude Code

https://claude.ai/code/session_014j4wLin3oJTtnvjE9Lq2VV

…the supervisor's pick

Live e2e run 20 (12/12, 10m47s, 1 block, 0 re-plans) cost $2.79 instead of
$0.99: the supervisor dispatched the planning roles on opus and the workers
on sonnet although defaults.md said haiku for both and its own
`aloop models resolve` call had printed `haiku`. The gate now refuses a
dispatch of any aloop role whose `model` is not `aloop models resolve <role>`
(matched by model family) or that passes no model. Test-first:
scripts/test/dispatch.test.py (12 checks); layout.test.py's dispatch
payloads name a model. ROADMAP §0 records run 20; CHANGELOG, bin/README,
SKILL.md and TRACKING updated.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014j4wLin3oJTtnvjE9Lq2VV
@adeelahmad adeelahmad self-assigned this Oct 18, 2026
….66, 8m17s, 12/12)

Run 21 is the first run under the dispatch model gate: every dispatch went on haiku and the cost
fell from $2.79 (run 20) to $0.66 with 3 blocks, 1 wake and 0 plugin-source reads. ROADMAP M0.8
carries runs 20 and 21; the evidence ledger gets both rows (run-summary's output).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014j4wLin3oJTtnvjE9Lq2VV
@adeelahmad adeelahmad changed the title gate-dispatch: the dispatch model is the project's resolved one, not the supervisor's pick (live run 20) gate-dispatch: the dispatch model is the project's resolved one, not the supervisor's pick (run 20 → run 21: $2.79 → $0.66) Oct 18, 2026
@adeelahmad
adeelahmad merged commit 7417bb9 into master Oct 18, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

0