Anneal v0.4.0 — Developer Preview 4
This page is the release notes for v0.4.0, and the source text for the GitHub
Release body of the same tag.
Anneal is a local, single-operator control plane for handing scoped software
tasks to coding CLIs already installed on your own machine, and for keeping what
they did observable and durable: tasks, agents, repository and file grants,
isolated run records, provider event streams, human questions, review gates and
git delivery, in one workflow.
What this release is for. The same envelope as the previews before it:
evaluating Anneal on a machine you own, against repositories you are willing to
have an agent write to. It is not a production install.
The project is now called Anneal
This is the first release under the name. The repository is mosonlab/anneal,
the internal npm scope is @anneal/*, and the product name in the console, the
documentation and the release material follows. Releases up to v0.3.0 were
published as AgentOS; their notes are left as they were written.
Nothing an operator configures was renamed. The AGENTOS_* environment
variables, the default agentos PostgreSQL database and role, the ~/.agentos/
runtime directories and the agentos MCP server name are unchanged, so an
existing .env and an existing runner host keep working. Renaming them is
successor work and will be called out as breaking when it happens.
What changed since v0.3.0
The headline is operator control over a chain that is already running, and a
console you can read afterwards:
- Hold and resume a running chain.
POST /tasks/:taskId/chain/holdholds a
chain at its current layer andPOST /tasks/:taskId/chain/resumereleases it,
both idempotent on a request identifier. The hold is enforced where work is
admitted, not only in the UI: successor layers do not activate, a held step is
refused admission, held successor runs are excluded at claim time, and a
universal enqueue barrier covers the paths that used to enqueue around the
layer machinery. - Sessions is readable. Rows replace the table, sessions group by calendar
day, agent and status filters narrow the list, unseen sessions are tracked
locally, and the stream is projected rather than dumped — tool calls group,
prose merges into continuous text, markers and operator input render as their
own nodes, and output lines are capped. - A Costs page. Read-only spend over 7, 30 or 90 days: tiles for total
spend, runs and average per run, a daily stacked bar chart grouped by agent,
and by-agent and top-run tables. The chart is inline SVG with no charting
dependency, and the same figures ship as a table beside it because three of
the light-theme series colours sit under 3:1 against the card. - Regression verification split. Mechanical verification moved into a
script and the verifier is narrowed to the semantic recheck; verdicts persist
mechanically and settle durably, including after a transport failure. - A cumulative merge train. Delivery no longer coordinates one candidate at
a time — the proof modes are in
docs/adr/0002-coordinate-main-delivery-with-merge-trains.md,
and the merge lease is now acquired in readiness
(docs/adr/0003-acquire-merge-lease-in-readiness.md). - The release-authority attestation layer is removed. The autonomous merge
tail no longer holds a merge for an independent review of a defense-list diff
— detection stays as an audit record — and the Ed25519 signing layer is gone
whole, including theGOAL5A0_MASTER_SHAandGOAL5A0_CONTROL_PLANE_A_SHA
exports every previous install path required. Do not export them for this
release; nothing reads them. - Prior outputs are whitelisted. Each template step declares which prior
outputs it may read, and the declaration is enforced, so a step cannot
silently widen its context. - The direct engineer workflow is eight steps and opens with a conditional
revalidation of the brief, materialized only when the chain is bound to a
predecessor task. - An operator API handbook.
docs/operator-api.md
documents the routes, and a route change must update it in the same change.
The full list, by area, is in CHANGELOG.md.
Release identity
| Version | 0.4.0 |
| Tag | v0.4.0 (annotated) |
| Prerelease | Yes |
| Release commit | The commit the v0.4.0 tag points to, stated on the GitHub Release page. |
The GOAL5A0_* SHA exports that appeared in this table for v0.1.0 through
v0.3.0 are gone with the attestation layer, and this release has no equivalent.
Install and upgrade
There is no upgrade path between developer previews. This release adds eight
migrations, so install fresh, following the quickstart in the repository
README.md — it checks out v0.4.0. The host warnings and
verification steps in the v0.1.0 release notes apply
unchanged to this preview, except that its GOAL5A0_* exports no longer exist.
Existing installations that track main can bring their database prompts up to
date with npm run db:sync-canonical-prompts -w @anneal/db after pulling.
Canonical sync now adopts drift only where an operator has not customized the
value, and notifies on customized drift instead of overwriting it.
Support, security and licensing
The support matrix remains the current statement of what is
supported and on what evidence. This release changes no platform or provider
classification: macOS on Apple Silicon is still the only target, and the
merge-executor and gate-worker profiles are documented rather than verified. The
security, license and assets and
migration and recovery documents remain current.