Skip to content

mu-3ajg ai-review: per-seat review focus — differentiated parallel panel seats#489

Merged
sahuagin merged 1 commit into
mainfrom
cc/mu-3ajg-panel-seat-focus
Jul 14, 2026
Merged

mu-3ajg ai-review: per-seat review focus — differentiated parallel panel seats#489
sahuagin merged 1 commit into
mainfrom
cc/mu-3ajg-panel-seat-focus

Conversation

@tcovert-c137

@tcovert-c137 tcovert-c137 Bot commented Jul 13, 2026

Copy link
Copy Markdown
Contributor

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.sh reads an optional per-rank focus from agent_roles.toml (the same single source of truth as tools/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 as r1.<tag>.prompt in 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 without focus are byte-identical to before, so converge.py needed 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 cp or clause append fails, the seat falls back to the shared prompt (logged; .done records focus=[]) instead of silently reviewing an absent or partial prompt, and dispatch.sh fails 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

  • Stubbed dispatch lib + temp roster (AGENT_ROLES/AGENT_DISPATCH_LIB overrides): 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.
  • Live fire: this change's own just ci-aipr gates 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 of focus was rejected in convergence on trust-boundary grounds (agent_roles.toml already 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

…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 sahuagin merged commit 35ffeb0 into main Jul 14, 2026
5 checks passed
@sahuagin sahuagin deleted the cc/mu-3ajg-panel-seat-focus branch July 14, 2026 18:26
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.

1 participant