This release includes 2 breaking changes for platform teams planning a safe upgrade.
✓ No known CVEs patched in this version
Topics
+14 more
Affected surfaces
Summary
AI summaryTelegram driver now uses standard python-telegram-bot v22 long‑poll integration, removing the optional bridge architecture and its configuration.
Full changelog
v1.10.6
A scope-cleanup and documentation release. The Telegram driver collapses back to the standard python-telegram-bot long-poll integration. Comprehensive operator docs land for the v1.10.5 compliance, A2A, adapter, and research-grade surfaces.
Changed — chat bridge
- One Telegram driver, the obvious one.
bernstein.core.chat.drivers.telegramis now the standardpython-telegram-botv22 long-poll driver. Plug in a bot API token from@BotFather, set the chat id, restart. The earlier optional bridge-router-service architecture has been removed because it pointed at a deployment most users could not stand up themselves. - Notification sink simplified.
TelegramSinkaccepts either a liveTelegramBridge(viaconfig["bridge"], useful when chat-serve and notifications share one bot) or a token string (viaconfig["token"], the sink builds and owns its own bridge). The earlier preference-flag tangle is gone.
Operator action (1.10.5 → 1.10.6)
If 1.10.5 was running with the optional bridge architecture, switch over before upgrading:
- Talk to
@BotFatheron Telegram, create a bot, copy the API token. - Set
BERNSTEIN_TG_TOKENin the deployment env (or pass it via the chat sink config). - Set the target chat id in the sink config.
- Restart bernstein.
The previous bridge env vars are no longer read.
Documentation
A multi-area sweep covering the v1.10.5 surface. The shape was: where a user of v1.10.5 would have had to read the source to understand the new feature, there is now an operator-facing page.
New pages:
docs/architecture/a2a.md— A2A v1.0 contract: JCS body (RFC 8785), detached JWS (RFC 7515), Ed25519 (RFC 8037), JWKS layout, RFC 8707 audience binding, cold-startRLockrationale.docs/security/keystore.md— persistent keystore: filesystem layout,O_EXCLplus0o600semantics on creation, refusal-to-load on wider perms, 24-hour rotation grace window, operator runbook.docs/security/audit-dsse-envelope.md— DSSE / in-toto v1 envelope, four-check verification model, standalone stdlib-only verifier attools/verify_audit_dsse.py.docs/compliance/eu-ai-act-article-12-bundle.md— operator guide for the deterministic Article 12 evidence pack: manifest +events.jsonl+data_catalog+clause_map, retention pin, narrow + HMAC + third-party verifiers.docs/adapters/deepseek.md— DeepSeek V4-Flash + V4-Pro routing through theollamaadapter, EU-residency guard, octet-aware host check, vLLM endpoint shape for the 1.6T variant.docs/security/owasp-asi.md— ASI01-10 detector pack, context envelope, opt-out viaBERNSTEIN_DISABLE_OWASP_ASI=1.docs/security/mcp-signing.md— Ed25519 manifest signing over JCS, supply-chain scanner targeting the four common attack classes, strict / warn-only matrix,mcp_unsigned_loaded_totalmetric.docs/security/credential-scoping.md— default-on credential scoping policy chain, fail-closed semantics, storage-sink scrubber.docs/concepts/wiki-build.md,jsonl-memory-log.md,sandbox-selector.md,scaffold.md,team-hub.md,orchestrator-hardening.md— explainers for the research-grade slices.docs/eval/ab-runner.md— A/B runner primitive.docs/observability/llm-watcher.md— opt-in Haiku watcher.
Updates:
docs/security/audit-log.md—audit slicedeterministic subset extractor section.docs/reference/cli-reference.md—--max-cost-usd,audit slice,scaffold,wiki build.docs/operations/cost-optimization.md—--max-cost-usdhard-cap section.docs/compliance/finos-aigf-mapping.md— control-mapping prose refreshed.docs/compliance/regulatory-lineage.md— KMS adapter dispatch + dual-signature countersign.docs/operations/security-and-identity.md— Install fingerprint v1.0 section + kill switch.docs/security/AUDIT.md— Article 12 file location row + cross-links.docs/operations/compliance.md— cross-link list extended.docs/adapters/ADAPTER_GUIDE.md— 44 adapters; Junie + Q Developer full profiles; ollama section now covers DeepSeek V4 + residency guard.docs/adapters/compatibility.md— refreshed matrix.mkdocs.yml— fourteen new nav entries.
Removed
src/bernstein/core/chat/drivers/_legacy_telegram.py— content promoted todrivers/telegram.py.tests/unit/test_chat_telegram_bridge.py— no more bridge to test.
Honesty note
The OWASP ASI detector pack defaults to on in source. The v1.10.5 release notes said "off by default"; the new operator page reflects the source. If the intended default is off, BERNSTEIN_DISABLE_OWASP_ASI=1 is the kill switch and the source default is the place to flip.
Full changelog: https://github.com/sipyourdrink-ltd/bernstein/compare/v1.10.5...v1.10.6
Breaking Changes
- Removed `src/bernstein/core/chat/drivers/_legacy_telegram.py` and its associated bridge implementation; `python-telegram-bot` v22 long‑poll driver is now the only Telegram integration.
- Environment variables previously read for the optional bridge (e.g., legacy bridge vars) are no longer processed; configuration must use `BERNSTEIN_TG_TOKEN`, chat ID, and updated sink config.
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
Beta — feedback welcome: [email protected]