Repository navigation
Releases
Anvil 0.6.26
Anvil 0.6.26 adds native Run and saved-session Continue to the CLI and web UI, with a default configuration and verified model/run options. Execution submits native evidence for review; it does not automatically accept work.
Execution receipts now become visible only after complete, durable JSON has been staged. Publication cannot replace another receipt, interrupted attempts stay reserved, and lost-response inspection does not launch duplicate work. This supersedes the held 0.6.25 candidate; its existing tag remains unchanged. See #278.
Complete Python CI and release tests now run in four disjoint partitions. No regression tests were permanently disabled. The successful comparison reduced complete CI from 29m42s to 12m40s, a 57% improvement in one before/after observation. See #279.
API 26 and State schema 26 are unchanged. Source release, PyPI publication, installed fleet versions, live web activation and canonical-State verification are separate delivery stages. The 15 ms latency target was not consistently met, and hundreds or thousands of concurrent model containers remain unqualified; those performance targets are deferred.
Anvil 0.6.25 — held candidate; do not install
HELD CANDIDATE — DO NOT INSTALL OR DEPLOY 0.6.25.
Post-merge CI 43392811815 failed: 1 failed, 7,225 passed and 65 skipped. The failure exposed a receipt-publication race: an execution result can become visible before its JSON is complete, and fixture cleanup can fail before confirming worker custody.
Publication attempt 43394089444 was cancelled during its full release gate. Artifact build, qualification and upload were skipped; the PyPI publishing job was cancelled without executing its steps. This GitHub entry does not establish a qualified or delivered PyPI package.
The existing tag and source target are retained unchanged for traceability. Release and rollout remain held pending a repaired, separately qualified successor. Prior source, local artifact and bounded journey results remain historical evidence; they do not override the failed post-merge gate.
Original candidate notes:
Anvil 0.6.25 adds explicit Run and saved-session Continue through registered harnesses and the task board. Work returns with native evidence for review; acceptance remains separate.
- Native Run and Continue: preview and confirm approved work in an isolated claim checkout. Continue reuses an official saved conversation under fresh task, source and claim authority. Anvil verifies returned edits, executes the frozen host checks and submits fresh evidence. #271, #276
- Default and Advanced options: Default inherits configured model/thinking settings by omission. Advanced uses exact provider/model pairs and verified thinking choices. Saved execution requires an explicit pinned registration upgrade; selected-model metadata refresh is separate from a task prompt. #276
- Web execution: separate Run/Continue controls, explicit confirmation, background execution and bounded status inspection keep the board usable. Lost responses can be inspected without repeating dispatch. Moving a card never starts a harness, and closing the browser never cancels its owner. #277
- Safety and correctness: strengthen registration/path checks, output and time limits, descendant custody, malformed-preview refusal and exact receipt matching. Concurrent web inspections receive independent handles. Closed-task attempt views now preserve audited closure data. #271, #275, #276, #277
- Execution instrumentation: finite paced arrivals record scheduled/actual offers, capacity refusals, backlog and drain while preserving the single ledger writer and proof custody. This adds measurement capability, not a performance result. #274
The package uses discovery API 26: 99 commands and 112 contracts. State schema stays 26; provider operation versions and the response envelope remain unchanged. Legacy ephemeral Run remains supported; native harness execution requires Linux.
Retained actual Pi/GLM journeys in NVIDIA OpenShell exercised CLI and browser Run/Continue, with returned edits passing 14 and 18 host cases respectively. These bounded journeys do not qualify throughput or scale. Qualification of the unmet 15 ms p95 ledger-latency and large-concurrency targets remains explicitly deferred; prior misses remain failures.
Final tagged wheel/sdist qualification and publication use the guarded release workflow. Publication does not itself upgrade fleet clients, deploy the web service, migrate State or grant task acceptance.
Anvil 0.6.23
Anvil 0.6.23 improves State safety, bundle admission and approval-wait coverage. Schema remains 26 and discovery API remains 24.
Added
- CLI/HTTP regression tests cover independent proof execution during final
approval waits, saved-attempt confirmation, preview expiry, and coordinator
lease expiry before and after review finalization. - Recoverable POSIX local-to-Git conversion for eligible histories, with an
identity-bound nativemigrate-events --to git --resume --yesrecovery command. - Repeatable execution-scale campaigns with matched host cells, explicit targets,
source bindings and retained failed attempts.
Fixed
- Hooks and packet metrics resolve the project-selected event storage mode,
preserving Git-backed history even when global defaults select local storage. - Empty-scope bundle admission uses the existing task/status index; nonempty
file or conflict-group scopes retain the complete conflict scan. - Event-format conversion refuses event-bound PRD/bundle authority and all
accepted-task histories, including legacy acceptance whose signed receipts
may exist off-host. Resume applies the same admission to retained original
history and leaves unsupported pending recovery intact; no authority is
rewritten or reapproved. - Event conversion holds stable custody across log replacement, checks task and
bundle claims, and fences waiting or retained clients with stale storage modes. - Conversion preserves private artifact permissions and rejects unsafe paths
before creating its coordination token. Native scratch replay and projection
repair retain the same State coordination boundary. - Force initialization refuses pending recovery and Git-backed State before
deletion. Local resets share conversion custody through bootstrap and discard
old SQLite journals with the replaced database. - Raw SQLite inspection, stable snapshots, live fsync and legacy workspace copies
run in bounded owned child processes so closing their file descriptors cannot
drop another connection's POSIX locks. Warm backups include committed WAL data
and capture the matching event log before releasing custody for upload. - Evidence queries propagate database failures instead of reporting absent proof.
- Local and Git appends refuse unterminated, malformed or ID-less final log
records before changing State. Read/replay tolerance for a torn final record
remains; append requires explicit restoration or recovery and preserves the
original bytes without truncation.
Qualification limits
- Windows event-format apply and recovery refuse before artifact creation until
private backup DACL handling is qualified. Dry runs and schema-only migration
remain available. Older engine processes must be stopped before conversion. - Matched measurements of empty scopes on a shared host did not consistently
meet the 15 ms p95 target: seven of nine candidate cells failed. These
measurements predate the final release source and do not qualify its latency. - The measured workload used 1,000 leased tasks, eight command processes, one
ledger writer, and zero containers. Hundreds or thousands of executing
containers remain unqualified. - Approval regression tests use disposable synthetic actors; they do not
establish authenticated human approval or bulk final acceptance. Coordinator
expiry before review finalization still blocks that cohort.
Final-source qualification
The exact release source f9b0771b2ed77984888ad76fc4bbe0d70888a28b completed all five declared 1,000-task cells correctly, with replay equality, no false acceptance, and stopped worker custody. Four of five cells missed the 15 ms claim-append p95 target. Progress append, proof validation and evidence append passed the target in all five cells.
| Mode | Command executors | Claim-append p95 | 15ms target |
|---|---|---|---|
| Relaxed, local events | 8 | 16.053ms | FAIL |
| Relaxed, local events | 32 | 14.272ms | PASS |
| Relaxed, local events | 128 | 16.178ms | FAIL |
| Strict, local events | 8 | 17.999ms | FAIL |
| Relaxed, Git events | 8 | 17.060ms | FAIL |
These are shared-host fixture measurements, 84 bundle appends per cell, one ledger writer and zero containers. Command overlap reached 8/32/128/8/8. The target does not cover full scoped claims, queues or end-to-end execution. Hundreds or thousands of executing containers and concurrent ledger writers remain unqualified.
All six source PR CI jobs passed, including 6,845 Linux tests with 65 skips. The reviewed tree matches the actual merge. Exact tagged wheel and source archive passed isolated installation, source-archive wheel rebuild, CLI/MCP version, 94-command/API24 and release-identity contracts. The rebuilt wheel is byte-identical. Strict source/history/archive scans found zero confirmed credentials; retained findings are type annotations or synthetic test fixtures.
Source delivery: #261, #262, #263, #264, #265, #266, #267. Package publication runs through the existing build-and-qualify workflow after this release is published. Source release does not establish fleet installation, live Web deployment, resident-session reload, event-format conversion or final task acceptance.
Anvil 0.6.22
Anvil 0.6.22 brings the Kanban workflow and scoped concurrent execution into a compatible schema-26 release, including the existing schema-23 bundle-withdrawal lineage. It also repairs the concurrent SQLite checkpoint race found during 0.6.21 validation. Sources: PR #258, PR #259, and PR #260.
- Kanban stages follow native Anvil transitions, with guarded approvals, review and closure dispositions.
- Scoped execution supports bounded bulk authorization and claim-bound command evidence. Acceptance retains its proof and human-approval gates.
- Native schema migration checks active task and bundle custody in both the projection and canonical log, keeps consistent private backups, and preserves event history. Empty existing projections cannot bypass custody admission.
- Coordinator-only withdrawal closes unused pristine planned bundles without changing their member tasks or deleting history.
- Side-effect-free schema probes retry complete captures when a checkpoint removes a WAL or changes the database header. Persistent errors still refuse after three attempts.
This release uses schema 26 and discovery API 24. Upgrade idle State stores through anvil migrate state; preview is the default and --yes applies. Preserve active workers and refresh loaded clients through their owning workflows. See migration guidance. The held v0.6.21 tag remains unchanged; its PyPI publisher was cancelled before upload.
The 15 ms ledger-latency target was not consistently met. Hundreds or thousands of executing containers remain unqualified. A source release does not itself deploy the Web UI, upgrade fleet clients, migrate live State, or repair historical project graphs.
Private migration snapshots use streamed copies with content verification. Arbitrary large WAL/replay histories remain unqualified. Concurrent local-to-Git event-format conversion remains unqualified (MIG-1); stop all writers and retained backend handles before that separate conversion. Schema-only migration preserves event formats.
Anvil 0.6.21
Publication held: post-merge Windows CI found an unresolved concurrent attempt-view reader failure. PyPI publication was cancelled before upload, and fleet rollout is on hold. This tag remains unchanged for investigation. Failing CI run.
Anvil 0.6.21 brings the Kanban workflow and scoped concurrent execution into a compatible schema-26 release, including the existing schema-23 bundle-withdrawal lineage. Source: PR #259.
- Kanban stages follow native Anvil transitions, with guarded approvals, review and closure dispositions.
- Scoped execution supports bounded bulk authorization and claim-bound command evidence; acceptance retains its proof and human-approval gates.
- Native schema migration checks active task and bundle custody in both the projection and canonical log, keeps consistent private backups, and preserves event history. Empty existing projections cannot bypass custody admission. Fresh-clone/replay reconstruction remains a separate native operation.
- Coordinator-only withdrawal closes unused pristine planned bundles without changing their member tasks or deleting history.
This release uses schema 26 and discovery API 24. Upgrade idle State stores through anvil migrate state; preview is the default and --yes applies. Preserve active workers and refresh loaded clients through their owning workflows. See migration guidance.
The 15 ms ledger-latency target was not consistently met. Hundreds or thousands of executing containers remain unqualified. A source release does not itself deploy the Web UI, upgrade fleet clients, migrate live State, or repair historical project graphs.
Private migration snapshots use streamed copies with content verification. Arbitrary large WAL/replay histories remain unqualified.
Concurrent local-to-Git event-format conversion remains unqualified (MIG-1). Stop all writers and retained backend handles before using that separate conversion command; this schema-only rollout preserves event formats.
Anvil 0.6.16 - Long-running delivery and evidence recovery
Anvil 0.6.16 improves long-running agent delivery while preserving evidence, review and custody boundaries.
- Repository-owned verification profiles freeze literal commands and runner-file identities. Planning, claims and qualifying evidence refuse changed bindings.
- CLI and MCP expose advisory evidence preflight and bounded current-attempt views with retained failures, review state and invalidation history.
- Complete command-proof import refuses overflow, unreadable or replaced inputs before evidence append. Exact accepted-attempt invalidation preserves historical proofs and requires ordinary fresh-generation recovery.
- Attempt timing distinguishes elapsed interval union from summed execution and labels missing measurements explicitly. Observations grant no completion or lease authority.
- Installed skills and harness instructions describe native resume, three independent task reviews, explicit approval authority and final user validation.
- Since the previous published release, this also includes preview-first historical event recovery and stronger coordinated root-set command-proof and verification-policy controls.
The public API advances to 19. MCP exposes 26 execution tools by default and 38 tools with planning enabled. The State schema remains 22. Automation should refresh its command/tool discovery for the added advisory surface.
The source was qualified on Linux, native Windows and native Darwin, reviewed by three independent final reviewers, and validated by the user before merging PR #254. Tagged wheel and sdist artifacts are qualified by the guarded publishing workflow before PyPI upload, including full tests, Ruff, benchmark smoke, strict docs, frozen CLI/skill contracts and exact release provenance.
Install or upgrade:
uv tool install --force --python 3.11 --upgrade anvil-state==0.6.16Full changes: v0.6.12...v0.6.16
Anvil 0.6.12 — optional Jev advice and coordinated root-set evidence
Anvil 0.6.12 adds optional, default-off Jev advice and includes the root-set coordination and recovery improvements since 0.6.8. CLI, MCP, and harness plugin manifests share the 0.6.12 release identity.
PR #238 passed all required CI checks. The release owner explicitly waived the quota-blocked Copilot gate after reviewing the recorded independent reviews and validation. All live Jev capabilities remain off.
The release workflow validates the exact tagged wheel and source distribution before publishing to PyPI.
Anvil 0.6.8 — native Pi command-proof forwarding
Anvil 0.6.8
Native Pi submissions can now forward existing command-proof artifact paths to Anvil State. Both the structured anvil_submit tool and interactive /anvil:submit command enforce a maximum of 16 non-option paths, each 1–512 characters, before launching the CLI.
This also publishes the previously unreleased 0.6.6 and 0.6.7 changes since the last published version, 0.6.5:
- Harness/subscription execution and GPT-6 Astra planning support, with direct API providers requiring explicit
llm_allow_api: true. - Reversible project/projection repair with backups and replay verification for historical state.
- Bundle-member proof validation against the active coordinator and member leases.
- Updated native Pi output handling and sandbox contracts already merged on main.
The changelog records the individual version changes. Existing direct-API users should review the explicit API opt-in before upgrading.
The dedicated wrapper uses a conservative 12,000-character aggregate argument budget; individual field maxima apply within that total, and oversized combinations are rejected before process creation. Sixteen maximum-length proof paths plus the command and one changed path fit. The generic anvil_run limit remains unchanged. The sandbox tree pin is refreshed, and release metadata includes the portable plugin manifest.
State remains the authority for claim attribution and proof validation. The extension does not create proofs or grant acceptance; human approval remains a separate gate. Proof artifacts are unsigned claim-owner evidence, not a cryptographic attestation of independent execution.
Validation includes native Pi proof forwarding and rejection tests, sandbox integrity/launcher checks, synchronized versions and release contracts, and the repository CI gates. Automated-review findings for manifest consistency and interactive proof validation were corrected before merge. Wheel/sdist qualification and publication follow the existing trusted PyPI workflow.
This release supports the optional workflows in Anvil Extensions 0.8.0. It does not activate clients, restart services, or change router/model assignments. Existing local baseline installations are preserved.
The aggregate budget accounts for quoting headroom under the Windows process command-line limit; it is not a promise that every individual field maximum can be combined.
Published artifacts and verification
Anvil State 0.6.8 is published on PyPI. The exact-merge CI and qualified publication workflow passed. The final PR suite passed 5,143 tests with 65 skips. Both PyPI file hashes match the qualified wheel and source archive.
v0.6.5 — Lifecycle Integrity and Faster Windows Feedback
v0.6.5 is the complete published delta from v0.6.3. The v0.6.4 candidate was never tagged or published.
Highlights
- Revision-safe PRDs — review, approval, planning, and new claims bind the exact source revision (#180, #192).
- Transactional Git claims — task and bundle branch/worktree setup now commits completely or rolls claim state back cleanly (#180).
- Versioned provider reads — bounded project snapshots and PRD content no longer require internal SQLite coupling (#178).
- Safer task routing — PRD scope, strict 1-5 risk ceilings, and actor review history agree across CLI and MCP (#56, #109).
- Faster Windows feedback — the maintained suite runs in parallel with a focused contract slice, no UAC, and no junction-dependent collection (#118).
- Named-PRD ownership repairs — legacy titles and dependency mutations retain their correct PRD partition (#177, #181).
The READMEs, architecture, CLI/MCP/hook references, migration and recovery guidance, roadmap, and historical-spec labels were refreshed against the shipped v0.6.5 surface.
Verification
- CI: 4,947 passed, 64 skipped in 13m53s under four xdist workers.
- Dependency floors: passed on Linux and Windows from the built wheel.
- Windows focused contracts: passed without UAC or junctions.
- Strict Ruff, mypy boundary, and MkDocs: passed.
- Benchmark smoke: markdown control 8 collisions / invalid final state; Anvil 0 collisions / valid final state.
- Frozen contract: schema 21, API 14, 70 CLI commands, 79 node contracts.
- Three independent adversarial reviewers passed the exact release candidate.
Upgrade
uv tool upgrade anvil-stateSee the full changelog for the detailed lifecycle and compatibility changes.