mu-3ajg ai-review: per-seat review focus — differentiated parallel panel seats#489
Merged
Conversation
…nel seats The code_review panel dispatched the identical round-1 prompt to every rank, so the two per-card ornith seats (mu-vneb) ran the same review twice — parallel hardware, zero added coverage. dispatch.sh now reads an optional per-rank `focus` from agent_roles.toml (same source of truth as tools/endpoint/lease). A focused rank reviews from its own prompt file: the shared prompt plus a trusted seat-focus clause naming its primary topic. Emphasis only — the output contract is unchanged, off-focus findings stay reportable, and ranks without `focus` are byte-identical to before. Convergence rounds stay unfocused on purpose: they reconcile the pooled findings. Panel-driven hardening (this change's own first gate run converged needs-changes on exactly this): the focused-prompt build is fail-closed — if the cp or the clause append fails, the seat falls back to the SHARED prompt (logged, and .done records focus=[]) instead of silently reviewing an absent/partial prompt; and dispatch.sh fails fast on a missing/unreadable round-1 prompt file instead of surfacing it as N parallel per-seat failures. Roster (user config): gpt-5.5 full-surface anchor; ornith-q4-r0 correctness/concurrency; glm-5.2 error-handling/missing-safeguards; ornith-q4-r1 architecture invariants/contract drift. Verified with a stubbed dispatch lib + temp roster: focused rank gets shared+clause (persisted as r1.<tag>.prompt); unfocused rank gets the pristine shared prompt; unwritable out-prefix falls back to shared with the fallback logged; missing prompt file exits 2 up front.
sahuagin
approved these changes
Jul 14, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes mu-3ajg: the code_review consensus panel dispatched the identical round-1 prompt to every rank, so the two per-card ornith seats (mu-vneb parallel topology) ran the same review twice — parallel hardware, zero added coverage.
Change
dispatch.shreads an optional per-rankfocusfromagent_roles.toml(the same single source of truth astools/endpoint/lease). A focused rank reviews from its own prompt file — the shared round-1 prompt plus a trusted seat-focus clause naming its primary topic — persisted asr1.<tag>.promptin the artifacts dir so escalations show exactly what each seat was asked. Emphasis only: the output contract is unchanged, off-focus findings stay reportable, and ranks withoutfocusare byte-identical to before, soconverge.pyneeded no changes. Convergence rounds (2+) stay deliberately unfocused — they reconcile the pooled findings.Fail-closed by construction (added after this change's own first gate converged needs-changes on exactly this): if the focused-prompt
cpor clause append fails, the seat falls back to the shared prompt (logged;.donerecordsfocus=[]) instead of silently reviewing an absent or partial prompt, anddispatch.shfails fast (exit 2) on a missing/unreadable round-1 prompt file.Roster config (user-side,
~/.config/mu/agent_roles.toml): gpt-5.5 full-surface anchor; ornith-q4-r0 → correctness + concurrency/lifecycle; z-ai/glm-5.2 → error handling + missing safeguards; ornith-q4-r1 → architecture invariants + contract drift.Verification
AGENT_ROLES/AGENT_DISPATCH_LIBoverrides): focused rank receives shared+clause, unfocused rank receives the pristine shared prompt, unwritable out-prefix falls back to shared with the fallback logged, missing prompt file exits 2.just ci-aiprgates ran with the focused roster and a healthy 4-seat panel. First run converged needs-changes on a real defect (the unchecked prompt build) — the differentiated seats produced complementary findings rather than four copies of one review. After the fix, the re-gate converged approve in 3 rounds; the prompt-injection framing offocuswas rejected in convergence on trust-boundary grounds (agent_roles.tomlalready controls provider/model/tools).Gate
just ci-aipr: pre-pr-check green; consensus panel PASS — approve after 3 rounds, all four seats live.🤖 Generated with Claude Code
https://claude.ai/code/session_01REB3QZvP3arA2cLMVRgYam