Extensions repeated Erlang helpers and imported daemon internals or another extension's private implementation. Move their shared contracts and operations into albedo/harness/sdk, and migrate the callers to typed Gleam APIs. Four boundary lint rules now enforce the supported import and native-binding paths.
The SDK covers plugin declarations and lifecycle, commands and RPC, settings, provider accounts and sign-in, HTTP and helpers, bounded caches and concurrency, history and images, and typed session operations. Durable state retains its daemon owner. Mail and image writes keep the caller's transaction, history retains captured snapshot bounds, and MCP preparation captures revision-bound catalogue access. Intentional feature dependencies use explicit public APIs.
Remove obsolete helper implementations and native exports. Share fast-mode account selection, provider identity rules, subprocess execution, image codecs, and gateway encoding. Claude uploads now use the shared concurrency owner: killing their caller stops upload workers, and one failed reader no longer discards successful uploads. Capped subprocess output also stops accumulating empty chunks after its byte limit. Native process, port, transport, filesystem, and compatibility implementations remain where they have a concrete owner; this change does not eliminate all extension Erlang.
Behavior changes include a 1,024-entry limit per cache namespace, private atomic Bedrock cache writes, recovery of Codex's old Unicode-home cache path, and a stable OpenCode Go console server throughout sign-in. Login projections tolerate malformed refresh fields without treating those rows as usable request credentials. Helper cleanup covers commands that remain in their registered process group.
Document every public SDK function beside its signature, with error behavior, time units, snapshot rules, and ownership where relevant. Add a generated API reference entry point and expand the extension guide with a complete Gleam command, typed settings, registration, and an offline real-daemon scenario.
Fix the workspace-move and spare-expiry test races investigated on main, bound the cell-deletion fixture below its allocation fuse, and make test cleanup report leaked processes without interpreting snapshot paths as regular expressions. Merge main's background-cell job support, retaining nested job IDs, parent relationships, output and stop behavior, and live root counts.
Validation: the full merged gate passed, followed by passing affected gates for the final trims and documentation. The generated SDK reference covers all public functions; documentation links and headings pass, and the guide's exact example passed through the real daemon and Python binding. All nine Antigravity scenarios and the cell-deletion interruption scenario under CPU/disk load passed. Six Sol audits, three Sol trim reviews, and an Astra correctness review were completed; their verified defects and stale-code findings are addressed. No live-provider authentication or uploads were performed.