Skip to content

Anneal v0.4.0 — Developer Preview 4

Latest

Choose a tag to compare

@mosonlab mosonlab released this 29 Aug 05:30
· 150 commits to main since this release

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/hold holds a
    chain at its current layer and POST /tasks/:taskId/chain/resume releases 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 the GOAL5A0_MASTER_SHA and GOAL5A0_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.