Skip to content

chernistry/bernstein

v2.15.0 Feature

This release adds 5 notable features for engineering teams evaluating rollout.

✓ 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

Adds Hold/release API, per‑task turn budget, agent instrumentation, council redesign, and seed block forwarding.

Full changelog

v2.15.0

Released 2026-07-05.

Feature release built around five community contributions by Shane Mattner (@shanemmattner), plus scheduler and test-infrastructure fixes.

Features

  • Hold/release API (/orchestrator/holds): heartbeat-renewed leases that keep the spawner alive while an external workflow driver is active, replacing the fixed quiescence settle timer. TTL is a grace window; expired holds release on their own. Operator docs in docs/operations/HOLDS.md. (#2218, thanks @shanemmattner)
  • Explicit max_turns on TaskCreate: per-task turn budgets flow end to end to the adapter spawn, bypassing the complexity heuristic when set; bounded 1..10000 at the schema boundary; retries carry the value forward. Docs in docs/operations/MAX_TURNS.md. (#2217, thanks @shanemmattner)
  • Per-agent run instrumentation: JSONL records for every LLM call, tool call, and conversation message, captured in real time via SDK hooks and anchored to the project root (not the per-task worktree). Docs in docs/operations/INSTRUMENTATION.md. (#2219, thanks @shanemmattner)
  • Council-of-agents redesign: per-member cost attribution, judge synthesis over candidate outputs, enable_thinking=false injected for Qwen models served from Alibaba Cloud endpoints (hostname-suffix detection), and BERNSTEIN_BUILTIN_ALLOW_RUN_COMMAND passthrough in env isolation. (#2220, thanks @shanemmattner)
  • Inline role_model_policy.<role>.council seed blocks now forward into the runner manifest, behaving identically to the councils/*.yaml file convention. (#2231)

Fixes

  • Model selection no longer falls back to hardcoded model strings: every selection flows from configuration, and unconfigured paths raise ModelNotConfiguredError instead of silently guessing. (#2216, thanks @shanemmattner)
  • Critical-path priority boost applies on the first spawn batch, so a low-priority dependency of a high-priority task is claimed first. (#2233)
  • Worker exit codes: when the whole process group receives SIGINT, the worker no longer re-forwards the signal into the child's interpreter shutdown window, so it reports the child handler's exit code instead of 130. (#2238)
  • Five integration tests repaired and re-enabled after root-causing failures that predated this cycle. (#2232)

Internal

  • Unit coverage for the council runner path. (#2230)
  • Log-injection sanitization on hold fields; scanner findings resolved across instrumentation and council logging. (#2229)

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]