Skip to content

v4.0.0

Choose a tag to compare

@github-actions github-actions released this 21 Jul 00:36

What's Changed

Features

  • Headless Council Engine: amicus council run (CLI) and amicus_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.md documents the council-family and result-family schemas.

  • Unified JSON Envelope Convention: CLI --json and 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, and amicus list now discover and track council runs via sessions-dir pointer files, with async amicus_council_run returning immediately.

  • Per-Run Nonce for Headless Mode: buildPrompts now requires a per-run nonce in headless mode to prevent fold-marker echo hazards during conversation replay.

Breaking Changes

  • council stats --json output 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, and amicus_verdict wrap JSON in <untrusted_sidecar_output> fences. MCP consumers must unwrap before parsing (CLI --json remains 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 (default deepseek), critic, and fail_on (default none). The max_cost default increases from 1.00 to 2.00 for full council runs. Chairs listed in models are 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 via stripFoldMarkers.

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: null when repair exhausted.

  • Quorum and degradation handling: The run enforces ≥2 judges and exits with COUNCIL_QUORUM if fewer than 2 produce usable output. Dead-leg judges exit with code 2 and degrade gracefully.

  • Whole-run cost ceiling: --max-cost now 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.md expanded with headless amicus council run reference and usage examples.
  • docs/schemas.md documents all published JSON Schema files.
  • docs/ROADMAP.md and v4.1-4.7 draft designs committed for future work (skill-on-engine, local providers, observability, workspace, policy composition).
  • SKILL.md and SEAT-BRIEFS.md updated with phrase-only VERDICT-line guidance.

Full Changelog: v3.2.3...v4.0.0