Skip to content
Current section: Council

Run a Council Review

Part of Council.

  1. Plan. Ask which reviewers to start:

    Terminal window
    cedr council plan review.council

    It prints one line per member and ends with the quorum and a run ID, such as quorum 2: 2 eligible, run r-5c1e0a2b9d47. It exits with 3 when fewer members than the quorum have room; start them anyway, and the merge will report the council incomplete.

  2. Review. Give each member the change and ask for a report. A report is either text, one finding per line:

    src/auth.rs:42 - P1 - session token is compared with == - a timing attack recovers the token
    src/auth.rs:88 - P3 - error message names the user table

    or JSON:

    {"member": "codex/gpt-6.1-sol", "findings": [
    {"file": "src/auth.rs", "line": 42, "severity": "P1", "claim": "session token is compared with ==", "scenario": "a timing attack recovers the token"}
    ]}

    A report with no findings means the member reviewed and found nothing.

  3. Merge. Pass every report, naming the member for text reports:

    Terminal window
    cedr council merge --route review.council --run r-5c1e0a2b9d47 claude/opus=claude.md codex.json

Use the actual run ID printed by your plan, not the example ID above. Identify each report by the exact member returned by the plan, and use that same identity consistently. A member who could not run is absent, not a reviewer with an empty report. Report the absence and do not silently substitute another model.

Prefer JSON for automated reviews. An explicit "findings": [] means the reviewer completed the review and found no issues. Give each reviewer the same change, scope and acceptance checks; do not ask reviewers to edit the shared checkout during review.

Planning exits with 0 when quorum is reachable, 3 when some members are available but too few for quorum, 1 when none are available, and 2 on error. A failed plan is not a passing review.

The merge can return a nonzero code for a valid gate. Read Gates, Revisions and History before wiring it into a script.