Skip to content

chernistry/bernstein

v3.1.0 Breaking

This release includes breaking changes for platform teams planning a safe upgrade.

✓ No known CVEs patched
Read the diff → Tool health → What is this tool? →

✓ No known CVEs patched in this version

Topics

agent-orchestrator agentic-ai ai-agents aider air-gap audit-trail
+14 more
claude-code cli-tool codex-cli coding-agent deterministic-replay deterministic-scheduler hmac-audit mcp-server model-context-protocol multi-agent parallel-worktrees provenance python reproducibility

Summary

AI summary

Task completion now emits a sealed verification evidence bundle with content‑addressed proofs.

Full changelog

v3.1.0

Released 2026-07-07.

A verifiability feature release. Task completion now produces a sealed,
content-addressed proof of what passed, not just a status line, and that proof
verifies with the same audit chain that seals everything else.

Verification evidence bundles (#2362)

"Done" used to be a status plus scattered logs that died with the worktree. Now
every completed task that declares evidence producers emits a verification
evidence bundle:

  • Evidence producers (test command, coverage, lint, an optional screenshot or
    recording command for web-facing work) are declared in the task spec and run
    at gate time. Required producers gate completion; advisory producers attach a
    failure record without blocking.
  • Bundle outputs are content-addressed, stored under a size-capped store with
    garbage collection, referenced from the task lineage record, and sealed by a
    new audit-chain event. Media evidence flows through the existing content
    credentials support.
  • Sealing runs at task completion and is fail-open: a task that declares no
    producers is untouched, and any error while sealing is logged and swallowed so
    it can never block or fail a completion.
  • bernstein evidence show <task> renders a bundle. bernstein audit verify
    now covers bundle integrity, so a tampered evidence file is detected exactly
    like a tampered chain entry, naming the file that broke.
  • Deterministic producers replay to byte-identical bundle hashes, signatures,
    and journal anchors.
  • Generated pull-request bodies link the sealed bundle: the bernstein pr path,
    the orchestrator auto-PR path, and the issue-to-PR path each emit an evidence
    summary when a bundle is present and are unchanged when it is absent.

Reliability

  • Eliminated the order-dependent shard flakiness in the unit suite: the worker
    installs its terminating-signal handler before the PID file exists (so a
    signal in that window cannot leave a stale file for a later test), and
    retry-budget marker matching is anchored on token boundaries to remove a
    cross-test leak. (#2341)

Housekeeping

  • Resolved the open refurb idiom warnings across the recently shipped
    interop, orchestration, and security modules; behavior unchanged.
  • Removed the expired one-shot Scorecard 90-day self-resolve workflow now that
    the repository has passed the threshold and its tracking checkpoint is closed.
  • Routine toolchain and action updates (uv, setup-uv, harden-runner, and
    frontend dependency digests).

Weekly OSS security release digest.

The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.

No spam, unsubscribe anytime.

Share this release

Track chernistry/bernstein

Get notified when new releases ship.

Sign up free

About chernistry/bernstein

Deterministic multi-agent orchestrator for 18 CLI coding agents (Claude Code, Codex, Cursor, Aider, Gemini CLI, OpenAI Agents SDK, and more). MCP server mode (stdio + HTTP/SSE) exposes the orchestrator to any MCP client. Git worktree isolation per agent, HMAC-chained audit trail, cost-aware model routing via contextual bandit. ~11K monthly PyPI downloads, Apache 2.0.

All releases →

Related context

Earlier breaking changes

  • v3.7.1 `bernstein approve` and `bernstein reject` now enforce identifier regex `[A-Za-z0-9._-]{1,64}`.
  • v3.7.1 Tampered mission ledger reports as unverified rather than not-found.
  • v3.7.1 `mission define` now refuses phases without gate tasks.
  • v3.5.0 MCP client, transport, and gateway become stateless; calls carry content‑derived trace IDs in _meta.

Beta — feedback welcome: [email protected]