Other

/plan-council

Cross-family judge council over ONE authored plan or spec: 3 visible seats from 3 model families, self-invented rubrics, live-repo read-only validation, measured same-family bias, lift round, exact-head review loops. Triggers: council, review my plan, score the plan, judge the plan, cross-family judges, lift round, exact-head review, conditional GO, MUST_FIX. NOT for anonymized candidate ranking (/adversarial-council) or bulk verdict fleets (/judge-fleet).

$ golems-cli skills install plan-council
3 workflows

Updated 1 week ago

Review one authored plan or spec with declared cross-family judges. Disagreement is evidence: preserve each judge's independent rubric, validate claims against live local state, and let the conservative non-author-family score govern disputed lanes.

Output contract

EVERY artifact this protocol emits — ballot, lift table, convener report — leads with its table; environment caveats and preamble go BELOW the first table, never above it.

Route first

NeedUse
Review one authored plan/spec with declared judge families and measured bias/plan-council
Rank multiple anonymized candidates without authorship signals/adversarial-council
Fan out bulk verdict production over many prompts/items/judge-fleet

Five laws

1. Seats

  • Convene 3 voting seats from 3 model families in visible cmux panes: R1 Opus 5, R2 GPT-5.6-Sol at xhigh, and R3 Fable 5. Never use background subagents.
  • Pin every seat explicitly and verify the effective model from the pane. The Fable seat uses raw claude --dangerously-skip-permissions --model claude-fable-5 because the repoGolem launcher cannot express it.
  • Supply no shared rubric. Each judge invents named dimensions and weights totaling 100.
  • Each judge scores every lane 1-10, checks the live repo read-only, makes findings falsifiable, gives GO / NO-GO / CONDITIONAL GO per gated unit, names its top three changes, signs its family, and ends with its agreed sentinel.
  • Each judge's FIRST output line after the ballot heading must be the scorecard TABLE header; judges write no prose before it.

Use references/seat-briefs.md and workflows/run-council.md.

2. Merge

  • The plan author holds no seat and scores nothing.
  • Do not average disagreement away. For each disputed lane: merged(lane) = min(non-author-family judge scores).
  • Report same-family bias per lane and the round mean. Flag a same-family judge at ≥ +2 above the conservative non-family read.
python3 <plan-council-skill-dir>/council_bias.py <ballots-dir> --author-family <author-family>

3. Lift round

For every lane below 8, ask every judge for THE ONE artifact that would lift it above 8 and an explicit research call. The governing instruction is:

one artifact each, and it must be the thing whose absence is why the score is low — not a wish list.

Run workflows/lift-round.md. Conditions addressed to the author are work: apply them and continue. They are not ratification theater. Irreversible state changes retain their own receipt-first HARD STOP.

4. Exact-head review

Every execution verdict names the exact head SHA. ACCEPT / ITERATE / MUST_FIX without that SHA is void. The ACCEPTED head is the merged head; any later head movement makes the verdict stale and requires re-review.

Every review round declares its axis and method. A stale-only round counts toward a published stop-line only when it explores the same axis as the prior round and uses an adversarial method that attempts to defeat the rules. A confirmatory happy-path round never counts; changing axis resets the counter. Publish axis, method, counter, and stop-line before dispatch. See workflows/exact-head-review.md.

5. Conditions are work

Apply council conditions assigned to the author and go. Do not park approved work behind another ratification step. This does not weaken independent data-safety gates for migrations, backfills, or other irreversible operations.

Workflows

/plan-council:exact-head-review/plan-council:lift-round/plan-council:run-council