v4.0.0
What's Changed
Features
-
Headless Council Engine:
amicus council run(CLI) andamicus_council_run(MCP tool) now execute the complete adjudicated pipeline without Claude. Stage-1 independent reviews feed into anonymized peer cross-review, a deterministic tally, and a non-Claude chair verdict, with durable run-directory checkpointing and full SIGINT/SIGTERM finalization support. -
Council Review GitHub Action v2: The workflow now posts real adjudicated verdicts via check runs with inline annotations for Confirmed findings (with best-effort file:line parsing), a sticky PR comment showing the chair verdict and per-tier finding lists, and uploads the full run directory as evidence. Gating is opt-in via
fail_on(none/fix/rethink). -
Published JSON Schemas: All output documents are now schema-validated (draft 2020-12) and shipped in the tarball. New
docs/schemas.mddocuments the council-family and result-family schemas. -
Unified JSON Envelope Convention: CLI
--jsonand MCP tool outputs now carry{schemaVersion, type}consistently. MCP council tools return fenced JSON in the untrusted-output fence to enforce anonymity boundaries. -
Council-Aware Status and List Commands:
amicus status,amicus wait, andamicus listnow discover and track council runs via sessions-dir pointer files, with asyncamicus_council_runreturning immediately. -
Per-Run Nonce for Headless Mode:
buildPromptsnow requires a per-run nonce in headless mode to prevent fold-marker echo hazards during conversation replay.
Breaking Changes
-
council stats --jsonoutput shape: Now wraps rows in{schemaVersion: 2, type: "council-stats", models: [...]}. Update scripts to read.models. -
MCP council tools fence JSON: Tools like
amicus_council_tally,amicus_council_stats, andamicus_verdictwrap JSON in<untrusted_sidecar_output>fences. MCP consumers must unwrap before parsing (CLI--jsonremains unchanged and byte-stable). -
Failure JSON goes to stdout: Under
--json, launch failures, status/wait invalid taskId, and route errors now emit error envelopes on stdout instead of plain text on stderr. Scripts must read the stdout envelope. -
Action v1 → v2 migration: New optional inputs
chair(defaultdeepseek),critic, andfail_on(defaultnone). Themax_costdefault increases from1.00to2.00for full council runs. Chairs listed inmodelsare excluded from the bench at runtime. -
Fold markers are nonce-required: Bare
[SIDECAR_FOLD]markers are no longer written or parsed as a fallback. Resume replay strips residual fold-marker lines viastripFoldMarkers.
Improvements
-
Chair retry and fallback chain: When a chair fails to output a parseable VERDICT line, the engine repairs with a bounded-retry loop and fallback strategy, with
overallVerdict: nullwhen repair exhausted. -
Quorum and degradation handling: The run enforces ≥2 judges and exits with
COUNCIL_QUORUMif fewer than 2 produce usable output. Dead-leg judges exit with code 2 and degrade gracefully. -
Whole-run cost ceiling:
--max-costnow applies to the entire pipeline with pre-tally and post-tally branches, preventing overspend after the tally is committed. -
Anonymity enforcement: Judge and reviewer tool-exec directories are pinned to run scratch, and MCP is disabled during council stages to enforce spec §6 anonymity.
-
Street-cred ranking: Verdicts now include per-model street-cred scores (peers-only and with-self variants) for transparency on finding confidence.
Documentation
docs/council.mdexpanded with headlessamicus council runreference and usage examples.docs/schemas.mddocuments all published JSON Schema files.docs/ROADMAP.mdand v4.1-4.7 draft designs committed for future work (skill-on-engine, local providers, observability, workspace, policy composition).SKILL.mdandSEAT-BRIEFS.mdupdated with phrase-only VERDICT-line guidance.
Full Changelog: v3.2.3...v4.0.0