Skip to content

chernistry/bernstein

v1.8.7 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

Affected surfaces

auth

Summary

AI summary

Fixed CI test collection failures due to module path mismatches and added an import‑linter contract gate.

Full changelog

v1.8.7

Architecture boundaries + CI unblock.

Architecture

  • Import-linter contracts. A new CI gate enforces the intended boundaries between cli/, core/, adapters/, and their sub-packages. Violations fail the Lint job before they can land.

CI

  • Fixed test collection on main — cheaper_retry and retry_budget back-compat redirects pointed at bernstein.core.cost.* but the modules actually live in bernstein.core.cost.planned.*, so the Ubuntu/macOS test matrix was failing with ModuleNotFoundError. Redirects now match the real locations.
  • Cleaned up shellcheck warnings in the mutation-testing workflow (grouped consecutive >> $GITHUB_OUTPUT redirects, dropped two unused variables).
  • Added import-linter to the dev dependency group so the new contracts run in CI.
  • Added a back-compat shim at bernstein.cli.display.icons after icons moved to core/observability/icons.py.
  • Removed accidentally-tracked .sdd/ runtime files that had slipped in through batch merges.
  • SonarCloud cleanup: noisy style hotspots suppressed while keeping security rules active; JS event handlers hardened; test-file scope excluded from bug/vulnerability rules.

Orchestrator & server

  • Spawner and ingest: pre-emptive fixes for hook 401 and batch 422 responses.
  • Boot: LOCKED_FILES paths updated after the sub-package reorg; auth token is auto-generated on first boot.
  • TUI / CLI: the Tasks panel was empty because the client wasn't sending an Authorization header — now fixed.

Cost & cleanup

  • api_usage.py moved out of the cost/planned/ staging area so the back-compat redirect map resolves.
  • CostAutopilot wired into the cost pipeline; duplicate custom_metric_dsl implementation removed.
  • Deleted bulletin_board.py (no production importers remained after the communication/ split).

Full changelog: https://github.com/chernistry/bernstein/compare/v1.8.6...v1.8.7

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]