v3.2.0
brew update && brew upgrade agentops · bash <(curl -fsSL https://raw.githubusercontent.com/boshu2/agentops/main/scripts/install.sh) · checksums · verify provenance
AgentOps v3.2.0
Highlights
AgentOps 3.2 makes verification the front door of the product. ao verify reviews a change with a model from a different family than the one that wrote it, binds the verdict to the provenance ledger, and can install that same pre-push ratchet in any repo; ao done closes work only against such a verdict. The reviewer now runs as a standing multi-model service that reports its true state: failover engages only during an outage and labels its verdicts degraded, a byte-identical rebase reuses its existing verdict (REBOUND) instead of paying for a fresh review, and the opt-in strict quorum reports UNAVAILABLE when a second qualified reviewer family is missing. Reviews also leave a record — ao membrane catch/recall/triage stores what reviewers caught, recalls it by domain, and reports whether the same class keeps recurring. The default CLI build slims to the verification and bookkeeping core: ao rpi and the v1 memory commands are removed, the bd/Dolt tracker is retired in favor of br + bv, and the skill catalog drops from 105 to 63. docs/3.2.md has the full narrative.
Upgrade Notes
- Installs upgrade in place:
brew upgrade agentops, or re-run the install one-liner for your runtime (README §Install). No data migration. - Removed: the
ao rpicommand (ADR-0009). Use the operating loop (docs/architecture/operating-loop.md) and the/rpiskill; the CLI engine behind them is gone. - Removed:
ao recallandao memory ingest-claude. For session recall, use the open-source cass / cass-memory tools directly. - Removed: the bd/Dolt tracker lane.
br(beads_rust) +bvare canonical, the issue ledger is git-JSONL, and the oldbdwrappers and docs were swept. - Changed: the default
aobuild ships the core command set only. The corpus-flywheel and legacy families (harvest,refinery,mind,turn,harness,operator,curate) now require building with-tags "flywheel legacy";ao --helpgroups experimental surfaces separately. - Deprecated:
ao inject. Skills and docs now point toao lookup; the old command still ships in 3.2. - New commands:
ao verify,ao done,ao provenance show,ao pawl {up,health,route,metrics},ao wiki,ao plan-pawl decide.
At a Glance
| Product Area | Added | Changed | Refactored | Fixed | Deprecated/Removed |
|---|---|---|---|---|---|
| Install, Upgrade, and Distribution | 1 | 3 | 0 | 1 | 0 |
| CLI and Operator Commands | 6 | 2 | 0 | 1 | 3 |
| Skills and Workflows | 4 | 4 | 0 | 2 | 1 |
| Codex and Runtime Integrations | 3 | 2 | 0 | 2 | 0 |
| Knowledge Flywheel, Search, and Memory | 3 | 2 | 0 | 1 | 1 |
| Eval, Validation, and Release Gates | 7 | 3 | 0 | 3 | 0 |
| Docs and Onboarding | 2 | 2 | 0 | 1 | 0 |
| Security, Privacy, and Supply Chain | 0 | 0 | 0 | 0 | 0 |
| Contributor/Internal Refactors | 0 | 0 | 2 | 1 | 0 |
Product Areas
Install, Upgrade, and Distribution
- Added: a core-only install tier. The default
aobuild carries the verification and bookkeeping commands; corpus-flywheel and legacy commands sit behind theflywheel/legacybuild tags. - Changed: the pre-push path holds up under load. Installs are worktree-safe with a self-healing hook chainer and a
core.barerepair, concurrent local pushes serialize, and an installed fast-forward hook candidate is preserved instead of clobbered. - Changed:
ms-reindexships with a post-merge hook installer, so the skill-search index updates itself after every merge. - Changed: GitHub Actions checkout bumped from v4 to v7 across workflows.
- Fixed: workflow install and drift validation scripts guard the
.claude/workflowsinstall path against marker and content drift.
CLI and Operator Commands
- Added:
ao verify, the verification verb.initinstalls the portable pre-push verdict ratchet and chain verify in any repo,statsreports what verified-done costs from the ledger (dispositions, refute rate, rounds, wall time, degraded share, repeat reviews),receiptsrenders a proof page, and a per-repo config file comes with--show-config. - Added:
ao donecloses an issue only with a verdict reference, behind a warn-first close-rate gate. When the local ledger lags, it reads the one on origin/main. - Added:
ao pawlmanages the standing reviewer service (up/down/health/route/metrics), andao pawl reviewruns a one-shot review that works without configuration on a repo it has never seen. - Added:
ao provenance showprints the verdict lineage for a commit or issue;ao provenance mine-sessionmines session logs incrementally. - Added:
ao wiki, a port of OpenKB:init/use/add/remove/recompile/lint/status, gold-wiki compilation from.agents/, and a publish step that is verdict-gated and bound to a content digest. - Added:
ao plan-pawl decide(deterministic duel decider),ao governor budget(error-budget burn rate),ao scenario evaluate,ao worktree create,ao beads verify-acceptance,ao rehydrate, andao skills retire. - Changed: session-continuity commands live under
ao sessionand eval commands underao eval; the quick-start reaches a first verdict in one command. - Changed:
--configis fail-closed. The flag names the config file, and nothing silently falls back to the home directory. - Fixed: gate checks accept
--scope rangeand emit non-empty--jsonfailure detail for landing loops. - Removed: the
ao rpicommand (ADR-0009); the operating loop and skills carry that role. - Removed:
ao recallandao memory ingest-claude; cass / cass-memory own session recall. - Removed: the dead
ao croncompatibility shim.turn,harness,operator,harvest,refinery,mind, andcuratemoved behind the archive build tags.
Skills and Workflows
- Added: a durable 15-skill core partition (
spine: truein frontmatter, held by a behavioral gate) that separates the proven product loop from experimental skills. - Added: the
msskill (meta_skill search and load doctrine: consume over MCP, write via CLI), surfaced in session bootstrap and folded into the discovery, plan, and skill-builder decision points. - Added: the plan-pawl duel in planning:
/discoverygains--duel/--no-duel/--duel-rounds, pre-mortem gains the duel checklist, and fanout-class plans face a cross-family acceptance gate before any issue is written. - Added:
behavior-first-planningandpre-land-refutersskills;dual-pane-atmabsorbs the mixed-model duel;account-rotationunifies host-routed account switching. - Changed: the skill catalog consolidated from 105 to 63 — one prune folded 39 sources into 21 targets, a second pass folded six more into their canonical owners — and
ao skills retiremakes a retirement deterministic through the dispositions ledger. - Changed: six corpus-flywheel skills plus
evolve,autodev, andacfsmoved to a new experimental tier, and demoted skills no longer carry Codex twins. - Changed: thirteen substrate skills folded down to five via the dispositions ledger.
- Changed: all 50 trigger-marker offenders were cleared, a new
skill.triggersgate holds the line, and folded-skill redirects are gate-checked for validity. - Fixed: retired
bdtracker vocabulary swept tobracross the skill corpus and workflows, with a regression gate. - Fixed: skill code fences avoid start-of-line
#comments, which the ms normalizer garbles. - Removed: the standalone
caamskill (folded intoaccount-rotation) and the other retired slugs recorded in the dispositions ledger.
Codex and Runtime Integrations
- Added: task-packet and run-receipt JSON Schemas enforced at runtime. Dispatch validates the packet, executes
required_commands, and records the results in the receipt. - Added: dispatch security hardening. Packet-injected auth environment variables are rejected, and dispatch paths are bounded to the working directory and
allowed_pathsroots. - Added: a Codex image health doctor with per-check timeouts and slow-check reporting.
- Changed: Codex twins are generated self-contained from source, ending the hand-mirroring, with a pointer-exemption mechanism, a byte-verify drift gate, and content-divergence gates that now cover SKILL.md bodies and references.
- Changed: twin regeneration is scoped to the core skill set, which cut routine regeneration work by about 70%.
- Fixed: one shared fail-closed
codex-execrunner library now carries the stall and echo defenses for every non-review caller. - Fixed: rebase auto-merge damage in generated Codex manifests is repaired and guarded against.
Knowledge Flywheel, Search, and Memory
- Added: review memory.
ao membrane catchrecords what a review panel caught at the verdict chokepoint,ao membrane recallretrieves those catches by domain (--include-catchesinjects them into prompts), andao membrane triagereports recurrence on two axes. - Added: the escape loop is proven end-to-end on the shipped binary. A review that wrongly passed compiles into a draft constraint, activating the constraint enforces it at the gate, the derived check loads by domain and cites the original miss, and learned constraints travel to CI and clean clones.
- Added: real token accounting. Token counts were hardcoded zeros; they are now captured per issue,
ao yield tokensparses Claude and Codex transcripts (deduplicated by response id, erroring on transcripts without usage data), andao governor budgetadds an error budget with a two-sided noise band. - Changed: retrieval gained a gold layer.
ao lookup --goldreads the gold wiki compiled from.agents/,--pointersbounds retrieval, and a cold-start exploration floor keeps low-traffic knowledge reachable. - Changed: gold findings are ranked by utility with token-match relevance weighting, so natural-language queries actually surface them.
- Fixed: provenance ledger appends serialize under a cross-process lock, so concurrent landings can no longer fork the chain.
- Removed: the unproven memory-moat machinery, per the ADR-0004 honesty ruling. The verification layer is untouched.
Eval, Validation, and Release Gates
- Added: REBOUND verdicts. A byte-identical rebase re-authorizes through patch-id, lineage, and a green gate rather than a second full review; the portable push-gate and CI both honor it, and a keep-ref lets CI re-verify a reviewed commit that history later orphaned.
- Added: an opt-in strict two-family cold quorum that will not fall back — it reports UNAVAILABLE until a second strict-eligible family exists — plus an outage-only cold failover chain whose verdicts carry an explicit degraded label.
- Added: an evidence-quality floor for CONFIRMED verdicts (a concrete finding or attestation plus a genuine-run marker) and a live-smoke mode that puts runtime evidence in the review packet.
- Added: the verification-membrane eval measures false-done catch rate against deterministic oracles with cross-family verifiers, alongside real false-done trap tasks, escape-harvest tooling, and a local-MLX eval reviewer that matched codex on 100% of eval tasks (the production gate stays on frontier cross-family models).
- Added: scenario A/B gained environment-level arm isolation (macOS sandbox-exec), deterministic answer-key grading, a ceiling pre-screen, and absolute task-success judging; ineligible scorecards are rejected outright.
- Added: new deterministic gates — the full race suite on every push to main, provenance hash-chain verification, live-doc CLI-snippet resolution, skill references checked across all docs, an unproven-claims lexicon over live docs, a script-preamble ratchet, an ADR-registry check, pinned fail-closed golangci-lint, and a shell-portability gate.
- Added: a hardened landing pipeline — a single-writer land lane with a branch submit queue, a deterministic land wrapper, a staged-scope pre-commit guard against cross-lane contamination, and per-item consumed markers in the next-work queue.
- Changed: the ship path routes to the Go release authority (
ao gate check), and a report-only CI backstop re-verifies tip verdicts. - Changed: review timeouts scale with diff size, and
#trivialwaivers verify the diff really is provenance-only. - Changed: the standing reviewer service is the default review route, with warm panes across three model families, capability-adaptive routing, self-healing respawn and reroute, and p50/p95 latency plus agreement metrics.
- Fixed: the review pipeline records each pane's actual verdict rather than fabricating REFUTED from a timeout, collects every verdict rather than stopping at the first REFUTED, and uses delivery-based sends now that the unreliable engagement gate is gone.
- Fixed: cold codex reviews are echo-safe and explain themselves when a backgrounded process is reaped, and a hijack guard refuses to bind a verdict if the worktree HEAD moved mid-review.
- Fixed: a macOS portability sweep across the bats suites and release scripts (BSD
wc/stat/find/seddifferences); the full suite passes on both platforms.
Docs and Onboarding
- Added: docs/3.2.md, the release narrative, plus a quick-start that lands a first verdict in one command.
- Added: a loop-map doc indexing the five loop framings, and §6 conformance-pattern documentation for workflow authors.
- Changed: the root agent docs were reconciled to executable truth, with source-of-truth precedence stated inline and stale tracker and hook-era wording swept.
- Changed: README claims now cite evidence docs, and unproven-claim language is mechanically banned from live docs by a gate.
- Fixed: a doc-lifecycle sweep deleted byte-duplicate files, renumbered a duplicate ADR, repaired broken architecture links, and removed a career-page leak.
- Docs: corrected the
msCLI search documentation — upstream hybrid search is BM25-only, so the docs no longer describe a semantic mode that does not exist.
Security, Privacy, and Supply Chain
- Security: tar extraction gained explicit containment — absolute paths rejected, a canonical path-inside assertion, and typed rejections.
- Security: a fail-closed pre-push guard scans the full tree for private artifacts, and
ao corpus scandetects deny-listed and PII content before it ships. - Security: working-directory-relative script execution routes through a trust chokepoint, and Codex dispatch rejects packet-injected auth environment variables.
- Security: the provenance ledger is tamper-evident. Hash-chain verification runs as a local gate before every push, and appends serialize under a cross-process lock.
- Security: JSONL storage helpers moved to a loud-failure buffer policy with fsync-safe atomic writes, including a parent-directory fsync after rename.
Contributor/Internal Refactors
- Refactored: the retired rpi orchestration engine was dismantled. Its live helpers moved to
internal/worktree,internal/runtimecmd, andinternal/rpi; the dead engine surfaces were deleted. - Refactored: atomic file writes converge on
storage.AtomicWriteFile; the quest, llmwiki, doctor, and wiki writers all delegate to it. - Fixed: test-isolation hardening across
cli/cmd/ao— cobra flag and writer state restored viat.Cleanup, tmux socket isolation, deterministic process-group tests, and a trustworthy cmd/ao test floor with the gate blind spot that had shipped it red now closed.
Known Issues
- The full-tier local gate (
ao gate check --full) is green at the tree level: 105 of 108 checks pass on the release tip, and the three failures are local to the primary development machine (an attached-worktree pile-up, a stale local citation backlog, and local corpus defrag staleness). All three pass on a fresh clone. The tree-level failures found during release prep — Go lint, skill heal, and the flywheel proof with its roll-up gate — were fixed in this release, and the push-path gate set is green. - The Gemini/AGY install one-liner fails right now.
scripts/install-agy.shrunsimages/gemini/verify.shas a hard gate, and that bundle predates the skill consolidation (44 bundled skills against a hardcoded 65-slug list that names retired skills), so the installer aborts beforeagy plugin install. Workaround: pin the last good bundle withinstall-agy.sh --ref v3.1.0. The Claude (marketplace) and Codex (curl) paths install from the live tree and pass the 45-check install smoke.images/claude/verify.shhas the same staleness in its manifest. A bundle refresh is queued for the first 3.2.x patch. - One historical commit on main (5b064b2) carries a wrong author email from a lane that predated the identity fix. The effect is cosmetic — GitHub misattributes that single commit — and we accepted it rather than rewriting released history.
- A cold cross-family review cannot verdict a diff whose
git showoutput exceeds roughly 65KB, which mostly means deletion-heavy commits. The warm service handles larger diffs; for the rest, split the removal into smaller commits. - The strict two-family cold quorum reports UNAVAILABLE until a second reviewer family qualifies for strict mode; Gemini remains benched for strict validation.
Full changelog
AgentOps 3.2 is the verification-keystone minor: the cross-family review loop became the product's front door. ao verify is the canonical verb over the pawl engine (with init making the pre-push verdict ratchet portable to any repo, stats pricing the cost of verified-done, and receipts rendering the proof), ao done makes bead closes verdict-referenced, and the reviewer hardened into a standing multi-model service with honest degradation — outage-only failover, REBOUND re-authorization for byte-identical rebases, and an opt-in strict two-family quorum that reports honest-UNAVAILABLE rather than fake redundancy. The membrane gained memory (ao membrane catch/recall/triage) and its escape→derived-check loop is proven end-to-end on the shipped binary, including constraint travel to CI. Around that core the CLI shed the cathedral: the default build is the verification + bookkeeping spine (corpus-flywheel and legacy families behind -tags "flywheel legacy", ADR-0012), the ao rpi surface and v1 memory experiment are removed, the bd/Dolt tracker is retired for br+bv, and the skill catalog consolidated 105→63. See docs/3.2.md for the release narrative.
Added
ao verify— the verification front door (age-wedge-all-in-dyr0, age-rk3r):ao verifyreviews a change and binds the verdict to the provenance ledger;ao verify initinstalls the portable pre-push verdict ratchet + chain verify in any repo;ao verify statsreports dispositions, refute rate, rounds, duration, degraded share, and re-review waste from the ledger;ao verify receiptsrenders the proof page from the embedded bundle; per-repo config file +--show-config.ao done— verdict-referenced bead close with a warn-first close-rate gate, falling back to the origin/main ledger when the local one lags (age-wedge-all-in-dyr0.4, age-lw4c);ao provenance show(per-SHA/bead verdict lineage) andao provenance mine-session.- Standing pawl service (age-standing-pawl-service-ml8):
ao pawl up/down/health/route/metricswith warm tri-model panes (Claude + Codex + AGY), capability-adaptive routing, self-healing respawn/reroute, p50/p95 + agreement SLOs;ao pawl reviewruns zero-config on a stranger's repo (age-a9iv). - Verdict-integrity layers (age-rk3r): REBOUND patch-id verdicts authorize byte-identical rebases without a re-review (honored by the portable push-gate and CI with Go-side lineage+proof re-validation, plus a keep-ref so CI can re-verify an orphaned reviewed commit); opt-in strict two-family cold quorum that refuses to degrade (honest-UNAVAILABLE); outage-only cold reviewer failover chain with explicit degraded labels; evidence-quality floor for CONFIRMED; live-smoke verify mode; provenance v1.1 verdict-edge enrichment (reviewer_family, degraded, rounds, duration_s, evidence_path).
- Membrane memory (age-zpj5, age-membrane-memory-arch-tz2s):
ao membrane catchrecords panel catches (class key + affected paths),ao membrane recall --include-catchesretrieves them by domain into prompts,ao membrane triagereports honest two-axis recurrence; the escape→derived-check loop is proven end-to-end on the shipped binary (scripts/em-loop-donetest.sh) with learned constraints traveling to CI and clean clones. ao wiki— the OpenKB port (age-port-openkb-into-agentops-go-5qw):init/use/add/remove/recompile/lint/status, gold-wiki compilation from.agents/with sanitize+mine, and verdict-gated publish bound to a content digest; retrieval integration viaao lookup --goldand--pointersbounded retrieval with a cold-start ε-exploration floor.- Plan-pawl duel (age-plan-pawl-9yib):
ao plan-pawl decidedeterministic duel decider;/discoverygains--duel/--no-duel/--duel-rounds; pre-mortem gains the duel checklist; ApprovalEdge records two judge panes. - Real token accounting + governor: per-bead token capture kills the hardcoded zeros,
ao yield tokensparses Claude and Codex transcripts (deduped by response id, loud on absent usage), andao governor budgetadds an SPC error-budget with a two-sided noise band (age-membrane-memory-arch-tz2s.3, .7). - Gate wave (age-gate-the-ungated-egwt, age-push-equals-ci-0ua): full
-racesuite on push-to-main, provenance hash-chain gate at the pre-push boundary,docs.cli-snippets(live docs resolve against the cobra tree),docs.skill-refs --all-docs,docs.demoted-claimshonesty lexicon, script-preamble ratchet, ADR-registry check, fail-closed pinned golangci-lint, static shell-portability gate, jsonl-scanner ratchet, and a report-only CI verdict backstop (age-wedge-all-in-dyr0.9). - Land pipeline (agentops-2pl, age-genn, age-qeqv, age-tkxq): single-writer land lane with branch submit queue and default-deny gh shim, deterministic land wrapper, staged-scope pre-commit guard against concurrent-lane contamination, first-class per-item consumed markers in next-work.
- Eval instruments (age-cwo, age-7q7d, age-kf-s1-close-loop-0ly): verification-membrane eval (false-done catch rate over deterministic oracles + cross-family verifiers), real-false-done trap tasks, escape-harvest tooling, measured local-MLX eval membrane (100% per-task concordance vs codex; eval-path only), scenario-ab environment-level arm isolation (macOS sandbox-exec), deterministic answer-key grading, ceiling pre-screen, absolute task-success judging.
- Codex runtime hardening (ag-p273x, ag-codex-runtime-enhancement-o0nds): task-packet and run-receipt JSON Schemas enforced at runtime,
required_commandsexecuted and recorded, dispatch paths bounded to cwd/allowed_paths, packet-injected auth env rejected, dispatch receipts, image health doctor with per-check timeouts. - ms integration: the
msskill (meta_skill search/load doctrine), session-bootstrap surfacing,ms-reindexwrapper + post-merge hook installer, and "ms search first" folded into discovery/plan/skill-builder (age-l6y3, age-22g0, age-50pr). - 15-skill spine partition:
spine: truefrontmatter with a behavioral GOALS gate, plusflywheel/legacyarchive build tags — the defaultaobuild omits archived families (age-focus-membrane-bookkeeper-m1wg.12/.23, ADR-0012).
Changed
- The ship path routes to the Go release authority —
ao gate checkis the default gate on the ship path (age-fkps),#trivialwaivers verify the diff is genuinely provenance-only (age-u43w), and non-trivial commits hidden behind a#trivialtip are gated individually (age-8ais). - The default pawl routes through the standing service when it is up, with size-scaled review timeouts for large read-files packets (age-standing-pawl-service-ml8.7, age-wedge-all-in-dyr0.11).
- Skill catalog consolidated hard: the corpus prune folded 39 sources into 21 targets (105→65, ag-s43tg), then 70→63 with six skills folded into canonical owners (#889); six corpus-flywheel skills plus
evolve/autodev/acfsdemoted to a new experimental tier; substrate skills folded 13→5;ao skills retiremakes retirement deterministic via the dispositions ledger; all 50 trigger-marker offenders cleared behind a newskill.triggersgate. - Codex twins are generated self-contained from source with pointer exemptions, a byte-verify drift gate, and content-divergence gates extended to SKILL.md bodies and references; twin regeneration scoped to the spine set (~70% regen cut) (age-8wm, age-codex-twin-generator-qlj, age-k2ag, age-focus-membrane-bookkeeper-m1wg.18).
- CLI consolidation: session-continuity commands under
ao session, eval-family commands underao eval, an experimental help group for corpus/flywheel surfaces, and a quick-start that lands the first verdict in one command (age-focus-membrane-bookkeeper-m1wg.16/.17, age-h4y3, age-wedge-all-in-dyr0.5). - Storage discipline: canonical
storage.AtomicWriteFile(quest/llmwiki/doctor/wiki delegate), exported JSONL helpers with a loud-failure buffer policy, fsync-safe atomic writes + parent-dir fsync, and tar extraction containment (age-3azc, age-uja6, age-storage-hardening-roxg, age-y9jy). - Out-of-session substrate wording reconciled (Wave F). Live multi-agent orchestration is documented as NTM/ATM + Agent Mail; Gas City remains an optional reference SDK, not the default operator substrate. Historical 3.0.0 CHANGELOG entries that name Gas City as primary orchestration are superseded by this note for current doctrine — see
docs/3.0.mdanddocs/architecture/codebase-overview.md. - Doc-debt reconciliation waves A–F (2026-06-16):
cli/AGENTS.mdbr pointer stub +cli.agents-trackerdrift gate; RPI terminology glossary;ports-and-adapters.md+ BC5 + hookless framing with adocs.architecture-driftgate; worktree disposition audit (dry-run);skill-probe-i0.sh+check-provenance-orphans.shregistered in the Go gate registry; skill-disposition triage checklist. - Root agent docs reconciled to executable truth (age-2d8m) — source-of-truth precedence stated inline; stale hook-era/
bdwording swept; README claims PMF-linted with evidence citations (age-ejk).
Fixed
- Pawl truthfulness arc: each pane's ACTUAL verdict is recorded (no fabricated REFUTED from timeouts), all verdicts are collected (no first-REFUTE guillotine), cc/agy sends are delivery-based (the unreliable atm-wait engagement gate removed), cold codex reviews are echo-safe with a hardened shared
codex-execrunner, a hijack guard refuses verdict binds when the worktree HEAD moved mid-review, and backgrounding-reap failures self-explain (age-pawl-good-bar, age-55qz.10/.11, age-sylz, age-wjp0, age-gate-the-ungated-egwt.8/.13). - Full-tier gate reds greened (age-hl9q): the flywheel proof builds its sandbox
aowith the ADR-0012 archive tags (PROOF_BUILD_TAGS),heal.sh --strictresolves skill CLI references against the full command surface via the shared snippet resolver (third instance of the archived-command escape class), andcomputeVerifyStatswas split under the gocyclo budget. - macOS portability sweep: bats suites and release scripts fixed for BSD
wc/stat/find/sed/touchdivergences; a static shell-portability gate guards regressions (age-qzvm, age-lz4b, age-m9rf, age-jtz0, age-i0ky, age-7jm6). - Test isolation hardening in
cli/cmd/ao: cobra flag/writer state restored viat.Cleanup, tmux socket isolation, deterministic process-group tests, os.Setenv ratchet, and the trustworthy cmd/ao test floor restored with the gate blindness that shipped it red closed. - Regen determinism:
registry.jsondrops wall-clockgenerated_at(age-9itj), the skill catalog regen folded intoregen-all/regen-check(age-biop), and the catalog/registry inventory surfaces agree at 64 skills (age-61ci). - Provenance integrity: strict bead-id extraction kills false edges from prose, post-land emit is race-proof via disposable worktrees, merge_sha is trunk-bound, and ledger appends serialize under a cross-process lock.
Removed
- The
ao rpicommand surface — ADR-0009 executed; the operating loop + process skills are the navigation path, and the engine's live helpers were extracted tointernal/worktree,internal/runtimecmd, andinternal/rpi(age-tlj6, age-3pdt). ao recallandao memory ingest-claude— the v1 unified-memory experiment retired; recall is consumed from the coexisting open-source tools (cass / cass-memory) rather than rebuilt in-tree (age-5nvy, age-7grl).- The bd/Dolt tracker lane —
br(beads_rust) +bvare canonical over a git-JSONL ledger; bd wrappers, docs, and workflow references swept with regression gates (ag-joto6, age-m44f, age-u1u6). - Archived command families —
turn,harness,operator,harvest,refinery,mind, andcuratemoved behind theflywheel/legacybuild tags; the deadao croncompat shim deleted (age-focus-membrane-bookkeeper-m1wg.13/.14/.15). - The unproven memory-moat machinery — retired per ADR-0004 honesty; the membrane stays, the moat claims went (age-7grl).
Security
- tar extraction containment (IsAbs reject, canonical path-inside assertion, typed rejects); fail-closed full-tree pre-push path guard for private artifacts;
ao corpus scandeny/PII leak detector; cwd-relative script execution routed through theaoBinaryInsidetrust chokepoint; Codex dispatch rejects packet-injected auth env; the SDLC provenance ledger is tamper-evident with hash-chain verification at the pre-push boundary (age-storage-hardening-roxg.2, ag-ao0eo, ag-b0x50, age-gate-the-ungated-egwt.2/.9).
Full Changelog: v3.1.0...v3.2.0