v0.2.0
Highlights
The control plane now has an identity plane. Every RPC connection resolves to a principal before any method is dispatched, on both the Unix socket and the loopback WebSocket: bearer credentials for operators and adapters, a console subprotocol carrier, and same-uid peer mapping so local CLI use keeps working with no migration. Every method carries an authority class (host, interactive, or ingress) checked at the dispatcher, with unknown methods failing closed. Sessions, refusals, and host-level effects are witnessed as durable records written before the effect happens. A new cooldis identity CLI covers bootstrap, declare, mint, list, and revoke; tokens are printed exactly once and only digests are stored. The design and its shipped state are documented in ADR 0008, and docs/app-server.md now walks an operator from an empty machine to an authenticated managed deployment.
Adapters target a pinned envelope contract. ADR 0007 lands the typed delivery envelope: external provenance, principal and tenant resolution, and byte-stable dedupe identity, with admission refusing unwitnessed input. Telegram webhook authentication fails closed.
Recovery and explainability. Tool invocations carry effect classes and fingerprints that govern crash recovery. Manifests keep immutable authored and resolved version snapshots, standing grants expire, and cooldis debug bind explains a thread's effective configuration from its receipts, online or straight from the journal.
Breaking changes. Clients connecting to the TCP WebSocket without a credential now receive 401 Unauthorized (local Unix-socket use with the same uid is unaffected). The Codex CLI runtime adapter has been removed.
Full change list below.
What's Changed
- EMO-462: give burst-test shutdown bounds CI headroom by @hellosunnyfield in #14
- CI: add Workspace tests soak lane on the self-hosted mac mini by @hellosunnyfield in #15
- CI: bound the persistent cargo target on the macmini runner by @hellosunnyfield in #16
- EMO-466: remove codex CLI runtime adapter by @hellosunnyfield in #17
- EMO-479: threat-model registry with append-only lint guard by @hellosunnyfield in #18
- EMO-478: admission-coverage ratchet over all turn-entry surfaces by @hellosunnyfield in #20
- EMO-472: fail-closed Telegram webhook authentication by @hellosunnyfield in #19
- EMO-453: expiry on manifest grants closes the standing-grant gap by @hellosunnyfield in #21
- EMO-450: immutable authored + resolved manifest version snapshots by @hellosunnyfield in #22
- EMO-451: bind explain projects the effective envelope from receipts by @hellosunnyfield in #23
- EMO-448: effect classes and fingerprints govern tool invocation recovery by @hellosunnyfield in #24
- EMO-492: batch dependency bumps (hmac 0.13, regex 1.13, ratatui 0.30.2, artifact actions v7/v8) by @hellosunnyfield in #25
- Bump regex from 1.13.0 to 1.13.1 by @dependabot[bot] in #12
- EMO-467: rename provider_runtime to agent_loop: it is the one runtime by @hellosunnyfield in #26
- EMO-490: route hook and local verify builds through the managed cargo lane by @hellosunnyfield in #27
- EMO-493: make the product-term guard merge-aware by @hellosunnyfield in #28
- EMO-471: adapter envelope contract v0 by @hellosunnyfield in #29
- README: present the kernel as a product by @hellosunnyfield in #33
- ADR 0008: identity plane v0 (accepted) by @hellosunnyfield in #34
- EMO-473: identity plane skeleton (types, authority trait, config shape) by @hellosunnyfield in #35
- EMO-496: identity records, SQLite authority, and the identity CLI by @hellosunnyfield in #36
- EMO-499: daemon identity config wiring, mode and tenant from config by @hellosunnyfield in #37
- EMO-497: boundary authentication with bearer tokens and peer uid mapping by @hellosunnyfield in #38
- EMO-498: dispatcher authorization at the choke point by @hellosunnyfield in #39
- EMO-500: identity plane docs, threat-model update, TM-ID lint by @hellosunnyfield in #40
- chore: ignore local .wt worktree container by @hellosunnyfield in #41
- EMO-504: de-flake test timeout bounds, add test-timeout lint by @hellosunnyfield in #42
- release: bump cooldis to 0.2.0 by @hellosunnyfield in #43
Full Changelog: v0.1.0...v0.2.0