This release includes 1 security fix for security teams reviewing exposed deployments.
Topics
+14 more
Affected surfaces
ReleasePort's take
Moderate signalVersion v3.2.0 introduces resilient resumption of interrupted runs via a Merkle‑chained ledger and deterministic rerouting for provider outages with receipted decisions.
Why it matters: Patches CVE-2026-8643 by bumping the pip lockfile; adopt v3.2.0 to eliminate this high‑severity vulnerability (severity 90).
Summary
AI summaryRuns resume from a verified ledger and provider outages reroute along declared fallback chains with receipts.
Changes in this release
| Type | Severity | Summary | CVE |
|---|---|---|---|
| Security | Critical |
Dependency update bumps pip lockfile past CVE-2026-8643, patching the vulnerability. Dependency update bumps pip lockfile past CVE-2026-8643, patching the vulnerability. Source: llm_adapter@2026-07-15 Confidence: high |
— |
| Feature | Medium |
Interrupted runs resume from a Merkle-chained work ledger without re‑executing completed tasks. Interrupted runs resume from a Merkle-chained work ledger without re‑executing completed tasks. Source: llm_adapter@2026-07-15 Confidence: high |
— |
| Feature | Medium |
Failed task retries can warm‑resume from recorded checkpoints, preserving in‑context progress. Failed task retries can warm‑resume from recorded checkpoints, preserving in‑context progress. Source: llm_adapter@2026-07-15 Confidence: high |
— |
| Feature | Medium |
Provider outages trigger deterministic rerouting along declared fallback chains with receipted decisions. Provider outages trigger deterministic rerouting along declared fallback chains with receipted decisions. Source: llm_adapter@2026-07-15 Confidence: high |
— |
| Feature | Medium |
Local OpenAI‑compatible endpoints can serve worker roles after passing a certification gate with signed receipts. Local OpenAI‑compatible endpoints can serve worker roles after passing a certification gate with signed receipts. Source: llm_adapter@2026-07-15 Confidence: high |
— |
| Feature | Medium |
Cross‑adapter coordination uses HMAC‑chained, Ed25519‑signed task mailboxes with claim receipts in the audit chain. Cross‑adapter coordination uses HMAC‑chained, Ed25519‑signed task mailboxes with claim receipts in the audit chain. Source: llm_adapter@2026-07-15 Confidence: high |
— |
| Bugfix | Low |
Resolved all open scanner alerts by applying idiom cleanups and adding containment checks for derived filenames. Resolved all open scanner alerts by applying idiom cleanups and adding containment checks for derived filenames. Source: llm_adapter@2026-07-15 Confidence: high |
— |
Full changelog
v3.2.0
Released 2026-07-10.
A resumability and availability release. Interrupted runs continue from a
verified ledger instead of starting over, provider outages reroute along
declared fallback chains with a receipt for every decision, and certified
local endpoints join the worker pool behind a certification gate.
Durable work ledger (#2358)
An interrupted orchestration run no longer discards finished work. The
scheduler records every task transition in a Merkle-chained work ledger:
- Every state transition of the task graph appends a redacted,
content-addressed ledger entry whose hash links its predecessor, using the
same canonical-JSON contract as the per-step replay journal. bernstein ledger resumerebuilds scheduler state purely by replaying the
chain and re-dispatches only tasks without a completion entry. Completed
work is never re-run.- The ledger is machine-portable: clone the repository on another machine and
resume there with zero lost completed work. Tampering or divergence
surfaces as a hash mismatch at an exact position, never as a silent merge. bernstein resume <task-id>picks up a single paused, killed, or crashed
task from its last checkpoint and points at the ledger when the id matches
a portable run.
Checkpointed retries (#2359)
A failed task retry no longer has to start cold. When the native agent
session recorded a checkpoint, the retry engine resumes it warm:
- Warm resume replays the recorded session checkpoint with a templated
corrective instruction, so in-context progress is preserved. - Fork branches a fresh session off the checkpoint and leaves the original
session intact. Cold restart stays the always-safe fallback. - Every decision (warm, fork, or the downgrade reason that forced cold) is
anchored in the journal and mirrored to the audit chain, so a retry replays
identically and the decision trail survives the worktree.
Provider availability policy (#2355)
Provider outages reroute instead of failing the spawn. Roles declare a
fallback chain, and failover is a deterministic, receipted decision:
- Per-role fallback chains list providers in preference order; health probes
are cached with an explicit TTL so dispatch bursts do not re-probe. - Chain resolution is deterministic: the same policy and probe results always
produce the same decision hash, and every failover lands a journal receipt
mirrored to the audit chain. bernstein doctor --failover-drillexercises every declared chain against
simulated outages and reports the route each role would take, before a real
outage forces the question.
Local-model worker tier (#2356)
OpenAI-compatible local endpoints can now serve worker roles behind a
certification gate:
bernstein doctor --endpointruns the conformance suite against an
endpoint and produces a signed certification receipt; certified endpoint
profiles are the only ones the config gate accepts for role assignments.- Certification receipts are anchored to the audit chain, so an assignment
can always be traced back to the exact probe run that admitted the
endpoint. - Three verified local configurations are documented in the local-endpoints
reference, each reproduced from its certification receipt.
Cross-adapter coordination (#2357)
Workers on different adapters now coordinate through a signed task mailbox
instead of ad-hoc files:
- Every mailbox message is HMAC-chained and Ed25519-signed; the response to a
post is the signed journal entry itself. - The claim API is dependency-gated: a task cannot be claimed until the tasks
it depends on have verified completions, and every claim emits a claim
receipt into the audit chain. - Delivery is replay-identical: replaying the same journal reproduces the
same message order and the same claim outcomes, byte for byte.
Housekeeping
- Resolved all open scanner alerts in the new feature code: applied the
suggested idiom cleanups, restricted the endpoint conformance transport to
http/https handlers only, and added containment checks for filenames
derived from session and approval ids. - Dependency updates, including a pip lockfile bump past CVE-2026-8643.
Security Fixes
- Dependency updates bump pip lockfile past CVE-2026-8643.
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
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.
Related context
Related tools
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]