Skip to content

chernistry/bernstein

v2.16.0 Security

This release includes 1 security fix for security teams reviewing exposed deployments.

✓ No known CVEs patched
Read the diff → Tool health → What is this tool? →
This release patches 1 known CVE

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

Updates Output economy, Worker reliability and safety, and Internal across a mixed release.

Full changelog

v2.16.0

Released 2026-07-05.

An output-economy and worker-reliability release: response-style profiles wired end to end, ledger-attributed savings you can recompute, a three-arm cost-and-quality A/B harness, proactive context compaction with signed receipts, schema-enforced worker outcomes, and pinned team manifests. Plus a batch of contributor reliability fixes.

Output economy

  • Response-style profiles are now resolved deterministically per role or per task and rendered into the worker spawn prompt; the profile hash is folded into task identity and recorded in the cost ledger. (#2251)
  • Per-profile cost attribution: bernstein cost --by profile and a content-addressed, audit-chain-anchored bernstein cost profile-report whose every figure recomputes from ledger entries; mid-run profile changes are excluded rather than guessed. (#2255)
  • Three-arm profile A/B harness (bernstein eval ab --suite ... --arms 3): baseline, minimal-control, and candidate arms, cost and quality in one canonical-JSON comparison artifact with every cost figure referenced to a ledger line. (#2264)
  • Operator-gated role-template compression (bernstein templates compress|restore): mechanical invariant validators, out-of-tree hash-verified backups, byte-identical restore, and chained receipts; savings are only ever reported from real ledger deltas. (#2272)

Worker reliability and safety

  • Proactive context compaction: long-running workers compact at a configurable pressure threshold instead of waiting for an overflow failure; each event is validated by zero-LLM invariant checks (code blocks and error text must survive) and recorded as an HMAC-chained receipt. bernstein compaction log --task <id>. (#2263)
  • Credential-shaped content is refused before any compaction or summary request reaches a model API; redactions and refusals are audit-logged by span hash, never by content. Reactive-path refusals now fail fast with a typed reason instead of burning retries. (#2250, #2270)
  • Schema-enforced worker completion payloads with typed refusal outcomes; an invalid payload is a typed contract_violation failure, and blocked workers report a closed set of refusal kinds the orchestrator can route deterministically. (#2252)
  • Named, sha256-pinned team manifests with drift detection and lineage-recorded digests: bernstein team list|show|drift. (#2256)

Contributor fixes

Thanks to @shanemmattner for a deep reliability batch, all merged with authorship preserved:

  • Tasks now transition to failed on MaxTurnsExceeded instead of hanging in claimed; the previously dead timeout / auth-error / api-error fast-fail paths are activated. (#2259)
  • Static budget-aware prompt nudge for turn-limited models, composing with the response-style addendum. (#2260)
  • A batch of ten independent bugfixes across the run-id override, seed-path resolution, model-alias matching, auto-commit deny list, merge safety, and secret-log hygiene. (#2261)
  • Instrumentation capture for content, tool results, and batched-task fan-out; JSONL parser resilience; a single documented max_turns validation story across the API, adapter, and resolution layers. (#2262)

Internal

  • Fixed a per-request /api/v1 router mutation that grew route tables quadratically and could crash the test harness with recursion; app factories now build a fresh router each call. (#2266)
  • Migrated the remaining str-Enum classes to StrEnum. (#2267)
  • Refreshed the deferred-adapter review stamps and resolved outstanding scanner findings. (#2258)

Security Fixes

  • Credential‑shaped content is now refused before reaching model APIs; refusals are audit‑logged by span hash instead of content

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]