mirror of
https://github.com/boshu2/agentops.git
synced 2026-09-14 15:08:13 +08:00
main
23 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
20f9d4a338 |
Release AgentOps 3.7.0 (#1144)
## What Release the prepared AgentOps update as **3.7.0**, the minor release after 3.6.0. Align the CLI and plugin versions, regenerate the Gemini manifest, and rename/update the curated notes and changelog links. ## Why The operator selected a minor release. No 4.0.0 tag or release was published. Migration instructions and the documented removed commands/skills remain accurate. ## How I tested - Go lint and focused version/manifest tests passed. - Full regeneration parity, changelog mirror parity, and release-note coverage from v3.6.0 passed. - The exact 3.7.0 release rehearsal passed in 143 seconds; all 73 full repository gates passed. All 12 security tools ran with zero missing/error tools, critical findings or security-high findings; existing advisories remain reported. - All nine hosted checks passed on `092e1814b6cba46cd9ac1d797dab2a5c8c7c188c`, including Go race/shuffle tests and 1,509 executed Bats passes (31 environment-dependent skips, zero failures). A new CLI wiring regression confirms `ao version --json` reports the build version. - Actual fresh native Claude/Codex 3.7.0 installs and upgrades from 3.6.0 passed with exact 34-skill inventories. Existing implementation validation from PR #1143 remains applicable to unchanged source. - Fresh author-distinct correction review passed for exact head `092e1814b6cba46cd9ac1d797dab2a5c8c7c188c`, covering all changed paths and four acceptance criteria with no unchecked scope. Verdict digest: `e7b24a297a0b232138de011473df8be6eb3eeaf47afd1f300398eecafab2fbab`. ## Checklist - [x] Version owners and generated metadata agree on 3.7.0. - [x] Migration/removal guidance is preserved. - [x] Exact-candidate release checks pass before tagging. - [x] Fresh correction review is recorded before tagging. |
||
|
|
d972fa2090 |
Prepare AgentOps 4.0.0 plugins, skills and CLI release (#1143)
## What Prepare AgentOps 4.0.0 across the Claude plugin, Codex plugin, skills and CLI. Claude writers capture the supplied check status during its original invocation, and plugin conformance verifies exact skill membership and link destinations. Full release security now scans the repository and blocks on Python collection failures that previously produced a false green result. ## Why The 3.6.0-to-current interval removes published commands and 20 skill names, so this is a major release with migration instructions. Release validation also exposed stale skill assertions and test prerequisites that need to match the current product contracts without weakening acceptance. ## How I tested - Native Claude Opus/Haiku success, failing-check and direct-writer trials: each check ran once, and the direct child returned plain JSON. - Actual fresh installs and upgrades from 3.6.0 in isolated Codex and Claude homes: 34 skills, expected agents, and exact installed package bytes. - Exact candidate `b721d02559e1495be6095ad97b820e88ceb4a049`: all 73 full repository gates, regeneration parity, and the complete local release rehearsal passed. All 12 security tools ran with zero skips, tool errors, critical findings or high-severity security findings. The unchanged advisory policy reports 35 quality-high findings on unchanged files. - Python: 327 tests and 72 subtests passed. Hosted Bats: 1,509 passed, 31 environment-dependent skips, zero failures. Go lint/build/vet/race/shuffle checks and CLI smoke/integration passed. - All 11 hosted checks passed, including Windows correctness, macOS/Linux installation, security, and the six-target no-publish GoReleaser snapshot. Local archive checksums and a real macOS CLI initialization/status/version smoke also passed. - Fresh author-distinct review passed all four acceptance criteria and all 35 changed paths with no unchecked acceptance. Canonical subject and caller-intent verification passed; verdict digest `68af2c935ed0106cd91b3950f5d168e662f4071f660fcbd113c36b7cd0f0426e` binds manifest `7affc77e25eaff69ba36c5ce05582b4f0385c954b76b62c02b97f97041f489b2`. ## Checklist - [x] Breaking changes documented in the migration guide and complete release notes. - [x] No credentials or private runtime proof included. - [x] Final full release checks pass on the exact candidate. - [x] Fresh author-distinct final PASS is recorded before merge. This prepares the release candidate; it does not publish a tag or release. Coverage limits remain explicit: native plugin tests used isolated macOS homes and local marketplaces, guard installation remains opt-in, and reader instructions do not prove sandbox confinement. Semgrep retains pre-existing warning-level parser diagnostics. Snapshot metadata follows the existing 3.6.0 tag; this is a packaging rehearsal, not a published 4.0.0 archive. |
||
|
|
3213afcf1c |
Default to native execution and report independently accepted work (#1129)
## Change Make native coding-agent execution the default AgentOps entry path with zero mandatory skills. Preserve full bundles and add repeatable `ao skills link --skill NAME` selection, validating the entire selection before writes. Align product, installation, architecture and generated command documentation. Extend the existing trial readout to separate endpoint test results, execution state and independently accepted work. Bind supplied judgments to exact content, acceptance and native evidence. Reject empty implementation subjects and require the caller's complete criterion ID set before reporting acceptance. Preserve genuine nonempty and deletion-only subjects, valid failures and missing-proof outcomes. ## Validation - Native onboarding from empty home/consumer directories produces no setup files; selective/full linking and failure boundaries are covered. - Actual RED/GREEN regressions cover empty subjects and the partial-criterion omission found by independent review. - Full Go build, vet and race/shuffle tests; affected Go lint; 88 Python readout/statistics tests passed. - All 73 gates, generated projections, strict documentation build and local aggregate passed (10 passed; one documented optional absence). - All nine PR checks succeeded at `7df0d42b12f35ffc22008cc10a40339afcfbb6a0`. - Fresh author-distinct review passed all six acceptance criteria over all 59 changed paths, with no findings or unchecked scope, after repairing the criterion-coverage finding. ## Evidence limits The real native coding repair demonstrates usability, not comparative skill uplift. The strict live-session machine replay remains NOT_PROVEN where execution/identity observations are unavailable; the source review PASS is retained separately. Existing cohort limits and the historical aggregate-enforcement gap remain unwaived. No new comparative cohort, scheduler, skill-corpus deletion, memory migration or global installation is included. |
||
|
|
e1fae0dae6 |
Make the engineering harness lean and add optional topic memory (#1116)
RPI now owns the authorized outcome through finish, with Plan and Memory
loaded only when useful. Known defects get direct repair, and evidence
can change the approach under unchanged acceptance. Fresh exact-content
validation remains required. Memory provides optional recall, mining and
curation of reviewed topic pages; specialists and the fixed-dispatch
adapter remain optional.
The change reconciles current documentation and generated skill
projections. It preserves native budget and permission authority, BD
work ownership, protected external evidence storage and the distinction
between a supported lesson and demonstrated later benefit. It adds no
scheduler, work store, Go command or evidence schema.
Validation: required local Go/build/vet/race checks, aggregate suite,
generated-output check and 72 gates pass. The complete 44-test executor
suite passes; its shared-deadline fixture now tolerates CI scheduling
jitter while still requiring deadline exhaustion and preventing a third
launch. Fresh author-distinct review passed all 112 changed paths with
no findings; all seven exact-head CI checks passed at
|
||
|
|
568e99d436 |
Loop restore: converge and crank as control flow under the verdict contract (ADR-0017) (#1099)
## Loop restore: converge and crank as control flow under the verdict
contract (ADR-0017)
Intent source: `docs/plans/2026-09-03-loop-restore.md` (in this PR).
Decision record:
`docs/adr/ADR-0017-loop-as-control-flow-not-knowledge.md`.
**Why.** The 2026-07-14 single-pass cut (`482307762`) removed the
iterate loop (discovery, crank, converge, evolve, the learn write-half)
together with the unproven compounding claim, although ADR-0011 demoted
only the latter. The control flow was never demoted, and its absence
showed on 2026-09-02, when a three-lane fix needed eight validators and
two stops because the contract had no repair phase. This restores the
loop as control flow and nothing else: no knowledge store, no `ao
converge`/`ao crank`, no evolve, no canary. ADR-0004 and ADR-0011 stay
in force.
**What changes.**
- **RPI gains a bounded repair phase.** On `FAIL` or `NOT_PROVEN` with
findings, repair and re-validate freshly under the convergence law:
caller-declared `repair_rounds` (default 2); open finding set keyed by
stable `findings[].id`, union across validator families, non-growing; no
closed id reopens; the subject digest changed or, for `NOT_PROVEN`, new
digest-bound evidence resolved a named gap. Converged = fresh PASS plus
cross-family PASS on risky surfaces. Plan and Implement keep their
single dispatch. `skills/rpi/scripts/run_once.py` models the law as pure
data (33 tests): rounds are validated for shape (digest required, no
duplicate ids, no PASS with findings, no FAIL without findings),
condition 4's evidence branch needs a NOT_PROVEN previous round, a
non-FAIL current round, new evidence, and a resolved finding, and a PASS
over unchanged bytes after a FAIL is a flip that reports NOT_PROVEN.
`workflows/rpi.js` runs validation as legs (spawned or external primary,
plus a caller-supplied `crossFamily.command` on risky surfaces) merged
worst-of with a union of stable ids; a risky surface without a
cross-family leg is `diversity_unsatisfied` and never converges or
enters repair; a failed repair or re-validation returns NOT_PROVEN with
no stale verdict. Validators return `subjectDigest`, stable finding ids,
and `evidenceRefs`.
- **crank returns as a thin wave executor** (113 lines): the caller
selects the wave and the repair bound, crank invokes RPI per lane
(parallel only on disjoint write and regen scopes), runs the wave
acceptance once, returns evidence, and stops. No retry, budget, queue,
claim, lease, Git, closure, or next-work ownership. Routing golden
`rq-07-wave-execution` ranks it first.
- **validate is cross-family by default on risky surfaces**
(`cli/internal/gates/**`, `scripts/check-*.sh`, `tests/**`,
`skills/*/scripts/**`, hook policies, `lib/**`, security-scanned paths)
with the LAW-0 dispatch table: Claude orchestrating uses read-only
`codex exec`; Codex orchestrating uses an interactive Claude session in
an NTM pane, never `claude -p`. No live adapter means
`diversity_unsatisfied`, which on a risky surface is `NOT_PROVEN`. The
full literal CI command set runs once on the final integrated subject;
routine rounds keep the receipt-driven freshness contract.
- **Conformance assertions flipped under ADR-0017 only:**
`scripts/check-cathedral-cut-conformance.py` (crank live; "Stop
regardless" replaced by positive canaries for the law's four conditions;
a bounded `for` loop that compares against `repair_rounds` is required
in `run_repair_phase`, and the gate executes the law's canaries against
the reference behavior), `workflows/rpi.js`,
`skills/rpi/scripts/validate.sh`,
`evals/agentops-core/rpi-behavior.json`,
`skills/rpi/references/rpi.feature`. Every single-pass public surface
(README, AGENTS.md, PRODUCT.md, CI-CD, agent-workflow-reference,
rpi-traversal, cli/README, quickstart and demo commands, the
operating-contract and product-boundary bats, the Codex-description
oracle) now states repair to convergence.
**Known approximation, disclosed.** The Claude conveyor has no
deterministic shell primitive, so changed paths are derived by the fresh
validator (git status and diff against the clean pre-run tree) and
unioned with the implementer's report; risk is classified over that
union and unreported paths are coverage findings. A validator is still a
model; runtime derivation outside every agent is a follow-up. Family
distinctness of the cross-family leg is asserted by the caller's choice
of command and not verified by the script.
**Not in scope.** Premortem stays a single advisory judge and Plan still
only names the first check (phase boundaries unchanged). No `verdict.v2`
or `rpi-report.v1` change. The loop's own effect on outcomes is
unmeasured and owed a seeded-defect probe, like the rest of the corpus.
**Evidence on the tip.** Regen check clean; full gate green with a
HEAD-built binary; CI's bats command green; Go build/vet/test green;
golangci-lint clean; security gate quick PASS; one fresh validator over
the whole diff; one cross-family read of the design before
implementation (13 findings folded) and two of the integrated diff (9
findings in round one, 11 by round two, 15 by round three, each round
repaired and re-reviewed; the fresh validator passed the tip after round
two and the final tip
|
||
|
|
ffb9f122af |
refactor(cli): delete the unconsumed eval/redact surfaces — the estate audit's mechanical cut (#1082)
> **Review findings closed.** The re-check's residue (app-seam family count) is applied in `9a2790ae7` along with the full-tier CI settlements: regenerated documentation index (generated file, hand-edit drifted it), regenerated CLI-surface count fixtures (top=18 sub=44 all=62), `Test-Removal-Reason` trailer for the deliberate test deletions, and the release-tag bats output list updated to the real changes-job set. 67/67 full-tier gates green locally. Merging on Bo's instruction. ## What Deletes the provably-dead 28% of the `ao` CLI and every reference to it, per the 2026-08-23 estate audit. −19.5K lines in the lane commit plus integration fixups. **Removed (each with zero live consumers, verified by consumer-grep + `go list -deps`):** - `ao eval` — 13 subcommands, ~10.9K LOC. Its would-be consumers were already tombstones (`scripts/eval-agentops.sh` printed `RETIRED`), `release.yml` hardcoded `--eval pass`, release evidence recorded `suite_count: 0`, and three of its module tests exercised subcommands that could never register (nil composition seats). - `ao redact` — its only declared caller (`skills/compile/scripts/compile.sh`) never existed. - `cli/internal/types/memrl_policy.go` + the orphan cascade it and eval left behind (`internal/scenario`, `internal/wiki`, `internal/runtimecmd`, `internal/redact`) — all with zero importers, verified before and after. - `scripts/check-memrl-health.sh` + `examples/schedules/feedback-drain-hourly.yaml` — a health check for the feedback loop amputated on 2026-07-14; it exits 1 on main today and the example instructs a verb (`ao feedback-loop`) that no longer exists. - `corpus.secret-scan` gate — vacuous: its file filter excluded the single tracked path its globs could match, so it scanned zero files; secrets are covered by the pinned gitleaks steps in nightly and release (validate's quick toolchain mode skips gitleaks). - Docs for the deleted surface: `docs/architecture/eval-architecture.md`, `docs/code-map/eval-lid-primitives.md`; `contracts/eval-baseline-ab.md` already carried a RETIRED banner and stays as history (delisted from the live index). **Kept, deliberately:** - `ao robot-docs` — the audit's "duplicate of `doctor robot-docs`" premise was false: they render different handbooks (whole-CLI vs doctor-scoped). Verified before acting. - `completion`, `demo`, `quick-start` — interactive human furniture, not dead code. - `corpus.witness-dolt-jsonl-crosscheck` gate — retargeted, not retired: its backing script is a hermetic self-test over real tracked fixtures; globs now point at the paths it actually exercises. - `cli/internal/evalsubstrate` — Go-dead but it is the declared mirror of `schemas/outcomes-rubric.v1.schema.json`; retiring it needs a paired schemas/docs/scripts decision (package doc comment records this). - `scripts/ci-local-release.sh` eval-evidence stanza — self-contained honest bookkeeping (`status: not_applicable`), invokes nothing removed. **Tombstones + migration:** `eval` and `redact` added to `removed_command_hint.go` and `docs/MIGRATION.md`; the now-false "(`ao eval` returned in 3.3 …)" parenthetical deleted; `go-cli.md` spine and the "Eval — the Learn seat" section updated; the dated research snapshot got a HISTORICAL banner via the docs-scope self-declaration mechanism (history not rewritten). ## Why v3.6.0 binary downloads: 4 darwin-arm64, 3 linux-amd64. Only 7 of 53 shipped skills invoke `ao` at all, and none of them touch this surface. The eval family was the single largest command surface in the CLI with zero live consumers — 28% of non-test Go maintained for nobody. ## Evidence - `cd cli && go build ./... && go vet ./... && go test ./...` — exit 0 (previously-failing `TestGoCLIDocSpineMatchesApprovedSpine` and `TestRemovedVerbsHaveMigrationRows` now pass) - `scripts/check-docs-cli-snippets.sh` PASS · `check-cmdao-surface-parity.sh` PASS (54 leaf commands) · `check-corpus-path-guard.sh` PASS · `check-new-scripts-use-preamble.sh` PASS · `ao gate check --dry-run` PASS - Implemented by a worktree-isolated lane, independently validated by a fresh context that re-ran the suite itself; the two failures it found were doc files outside the lane's write scope, fixed in the integration commit. Cross-family (Codex) review verdict included in the final session report. ## Cross-family review (Codex, fresh context) First pass: **FAIL** with two majors — (1) `quality.DeprecatedCommands` still mapped five rewrite entries onto the removed eval family, so `ao doctor --fix` would have introduced dead commands; (2) retained docs (formal-verification research links, applied-ood README run block, evalsubstrate hint strings) still prescribed removed commands. Both repaired in `4da85a0d4` (one bounded round), plus its two minors (types/AGENTS.md row, .gitignore unignore, family counts, gitleaks-coverage comment). Re-verified: full suite green, snippets gate PASS. Focused re-check: first-round findings confirmed closed; one new residue (the family count above) stopped the loop under the spiral rule. ## Follow-ups (not in this PR) - `cli/internal/quality/stale_refs.go` `DeprecatedCommands`: the five eval-target entries are pruned here; the older pre-existing dead targets (forge, inject, flywheel, ratchet, …) still need a map-wide reconciliation against the live registry. - `cli/internal/evalsubstrate` retirement decision (paired schemas/docs/scripts change). - `evals/scenarios/applied-ood/`, `evals/tier2-premortem/`, `evals/_stats/` retain historical `ao eval` mentions in prereg/holdout records — dated artifacts, left as history. |
||
|
|
7a765cde19 |
Align AgentOps around its operations-layer identity (#1051)
Executes docs/plans/2026-08-07-agentops-operations-layer-alignment.md: AgentOps is the operations layer for agentic engineering; the federated integration graph is the topology, the semantic work-and-proof protocol is the contract, and RPI is the standard one-experiment traversal. Retires the ao flywheel command family and all knowledge-flywheel product state, tombstones the seven-move operating-loop workflow, narrows ao init and the .agents state writers to declared destinations, renames the core architecture page to rpi-traversal.md with a compatibility redirect, aligns AGENTS.md, 25 skills, public and package copy, regenerates every owned projection, and strengthens the conformance gates with planted-negative proofs. Both the alignment subject and the follow-up gate-bookkeeping commit carry fresh author-distinct validation PASS verdicts with empty not_checked scope. Test-Removal-Reason: dead knowledge-flywheel and session-store surfaces were deleted with their tests (operations-layer alignment) |
||
|
|
a6359795bf |
Make fresh validation persistence optional (#1012)
Keep fresh author-distinct validation mandatory while making verdict and report persistence consumer-driven. Align the RPI/Validate contracts, executable behavior, current guidance, regression coverage, and generated projections; preserve the Gas City 1.4 cutover. |
||
|
|
3d24ee0e9d |
fix(cli): residue wave — doctor dev-version coherence, diff --only, config-models removal, dual-root stragglers (#944)
Wave 4 (residue) of the new-user happy-path arc. Three scoped implementer lanes + fresh adversarial verifier (4 RESOLVED; 1 INCOMPLETE = stale generated projections, closed in integration). **Doctor**: the dev-version detector now reuses the Binary Freshness resolution — a from-source build matching its checkout is healthy (a novice building from source can finally see `ao doctor` exit 0); findings fire only on genuine drift, shadowed duplicate `ao` binaries, or an informational from-source note outside any checkout. `ao doctor diff` gains `--only` so the fix-plan preview can be scoped the way remediation text implies. **Config**: the dead `ao config models` surface is removed end-to-end (lane re-verified zero consumers before deleting; `--show` proven byte-identical before/after; removed-child hint + MIGRATION row; existing `models:` config sections still parse and are ignored). **Dual-root stragglers**: learning-coherence gate globs, `quality.CountConstraints`, and the eval sandbox corpus deny-list now cover canonical `.agents/ao/<section>` alongside legacy roots. **Doc-link hygiene**: the strict docs-link backstop's allowlist was 100% stale (53/53 entries referenced Cathedral-Cut-deleted docs) — refreshed to 10 verified accepted-class entries; ROADMAP dead links fixed; documentation-index generator emits GitHub URLs for repo-root targets; doc-skill references instruct only shipped scripts; codex twins + CLI-surface projections + surface-count fixture regenerated. **Deferred by design**: the `3.3.0-rc` fallback version bump belongs inside the v3.3.0 tag-cut commit. **Verified**: full suite 61/61 pkgs (2825 tests); golangci-lint clean; `ao gate check --full` 67/67 over this range; Test-Removal-Reason trailer covers the 6 deliberately deleted models tests. |
||
|
|
bbddc4f123 |
docs(onboarding): coding-agent prerequisite, npx-only quickstart, codex plugin remove — novice edges 5/9/10 (#943)
Wave 3 (final) of the new-user happy-path fixes from the fresh-eyes novice test. **Edge 5** — no doc ever named the one real prerequisite (a coding agent) or where `/rpi` is typed; the newcomer guide only listed what you *don't* need. README Quickstart, newcomer-guide, and getting-started now say it plainly: the loop runs as skills inside your coding agent (Claude Code, Codex, Cursor, …) and `/rpi` goes in that agent's chat. **Edge 10** — the Quickstart's first command was `brew install beads` while the same README insists no tracker is needed. The first block is now the universal npx line alone; beads is introduced in the bead section as the optional tracker it is. **Edge 9** — Codex installed via the `codex plugin` verb but uninstalled via manual `rm -rf` + config.toml hand-editing. `codex plugin remove` (verified in `codex plugin --help`: "Remove an installed plugin from local config and cache") is now primary in install-day2-ops and MIGRATION; the manual path is an explicit older-Codex fallback. **Verified:** `ao gate check --full` 67/67 over this range (changelog sync, doc-release checks, skill snippets). Doc-only — no binary changes. |
||
|
|
d043390a0a |
fix(release): resolve 3.3 release-wrapper audit — blocker + 13 majors (#935)
Resolves every spellbreaking finding (the blocker + all 13 majors) from the 3.3.0 release-readiness audit ([docs/audits/release-readiness-3.3-2026-07-20.md](docs/audits/release-readiness-3.3-2026-07-20.md), included in this PR). ## Finding → fix map **CLI self-documentation (M1–M3)** - **M1** `ao robot-docs` prescribed removed `ao inject` → line removed from the canonical agent workflow; `inject` added to the removed-command hint table **and** the MIGRATION.md map (drift test `TestRemovedVerbsHaveMigrationRows` enforces the pair). - **M2** `ao config --help` documented ~14 env vars for removed subsystems (RPI/Dream/Council/tiers) → help text and the `--show` env panel pruned to the 5 vars the binary consumes; mirrored list in `internal/config` pruned identically. - **M3** `ao flywheel status` read only legacy `.agents/<section>` while `ao doctor fix` migrates learnings to canonical `.agents/ao/learnings` → new `quality.KnowledgeSectionDirs` dual-roots every knowledge reader (tier counts, new/stale artifacts, retros, health delta, utility, loop metrics, retrievable-citation stats — plus the golden-signals readers `ComputeResearchClosure`/`ComputeReuseConcentration` that the fresh verification pass caught as missed). Sandbox-proven twice: a learning existing only under `.agents/ao/learnings` appears in all metrics, and a research file only under `.agents/ao/research` flips closure from `starved/0` to `unmined/1 orphan`. **Release story (M4–M6)** - **M4** CHANGELOG `[3.3.0]` omitted post-07-17 surfaces → folded in `ao eval` (#921), default-build `ao flywheel`, the PreToolUse policy engine, and the #919 cleanup; date moved to 2026-07-20; `docs/CHANGELOG.md` re-synced (changelog.sync gate green). - **M5** MIGRATION.md attributed `ao eval` to a nonexistent "3.4" → now "returned in 3.3". - **M6** four release surfaces claimed a 50-skill corpus vs 48 everywhere real → all counts now 48 (CHANGELOG ×2, docs/3.3.md, release-notes page ×2). **Install story (M7 — product decision by Bo)** npx first (universal — installs into all coding agents), **plugins for Claude Code/Codex encouraged**, checkout + `ao skills link` as the source-tracked/contributor path; curl installers stay tombstones. Harmonized across README, UPGRADING, install-day2-ops, MIGRATION, 3.3.md, CHANGELOG, the release-notes page, all six installer tombstone messages (`install.sh` + claude/codex/agy/opencode/`codex.ps1`), and the site's CLI page. All "legacy migration-only / not the recommended path" plugin branding removed. **Docs site (B1, M8–M12)** - **B1** generated site CLI page instructed a tombstoned curl installer, nonexistent `ao rpi phased`, and wrong skills dir → `emit_index()` rewritten to the real install menu + a quickstart of commands that exist; semantic loop correctly attributed to skills. - **M8** deploy workflow's `--strict` contradicted mkdocs.yml's declared non-strict policy and aborted the build → flag dropped (lychee + validate-links.sh own link checking). - **M9** site banner said "AgentOps 2.x" → now 3.3. - **M10** ~176 internal files (audits/plans/handoffs/… + TEMP scratch doc) published and dominated search → `exclude_docs` extended; built site verified free of them; search index 4,751 → 2,444 entries. - **M11/M12** newcomer-guide skill links and all six SCHEMAS.md links 404'd on the site → absolute GitHub URLs (resolve on both GitHub and the site). The fresh verification pass found the same class on `docs/contracts/index.md` (nav-listed), `docs/contracts/corpus-learning-seam.md`, `docs/templates/slice-validation.md`, and five `docs/architecture/gas-city-factory.md` links into now-excluded `docs/audits/` — all repointed to absolute GitHub URLs. - Also from the verification pass: robot-docs exit-code table no longer says "bead claimed" (removed concept), and the docs.yml comment now cites the link checker that actually runs (`tests/docs/validate-links.sh` via doc-release checks) instead of lychee. **Skills corpus (M13)** - rch skill instructed 5 nonexistent scripts + 8 nonexistent reference files as recovery steps → pruned to the 7 real references; the wire-level `printf | rch` probe replaces the phantom `protocol_test.sh`; codex twin regenerated (parity gates green). ## Verification - `go vet` clean; **full test suite 60/60 packages pass** (includes the new-shape flywheel/quality/config tests and the inject↔MIGRATION drift test). - **`ao gate check --full --scope worktree`: 67/67 pass, 0 warnings** over this exact change set (changelog sync, shellcheck on the edited installer, skill mesh + codex parity, manifests/schema/triggers, provenance chain). - `scripts/regen-all.sh --check`: all generated projections current. - Rebuilt binary re-exercised: `robot-docs` clean, `ao inject` tombstone live, config help clean, flywheel sandbox proof above. - `mkdocs build` exit 0; warnings 84 → 46 (remainder is the accepted out-of-tree-link class per mkdocs.yml's declared policy). - Fresh-context adversarial verification workflow over all four fix groups (results in session log). ## Known residuals (deliberately out of scope) - `ao config models` subcommand still renders tier config (its two env vars ARE consumed; `COUNCIL_CLAUDE_MODEL` in its display list is not — follow-up). - Same-class single-rooted readers off the flywheel path: `learning.coherence` gate glob (`.agents/learnings/**` only), `quality.CountConstraints`, config `Paths` defaults feeding eval sandbox deny-lists. - `scripts/docs-build.sh` still uses `--strict` with its own allowlist (not wired into any workflow or gate). - Audit minors 1–8 (rc fallback version string, `config --show` legacy-fallback display, `ao init` vs doctor layout, doctor's `ao beads dir` hint, dead `tracker:` key in the example config, doc-skill phantom scripts, ROADMAP dead links, documentation-index root links). |
||
|
|
81e6380510 |
feat(cli): wire ao eval — the Learn seat's measurement surface (#921)
Registers the fully-built-but-never-wired eval module into the CLI spine and repairs its one real instrument bug. Three commits, RPI-shaped: wire + fix, drift guards + docs, fixture counts. ## What - **`ao eval` joins the spine** (cmd/ao/eval_composition.go): deterministic suite runs, run-record compare/baseline/scorecard/coverage, locked Tasks, holdout scenarios, suite A/B verdicts with power-derived n-required, and the holdout-safe Outcomes projection. This is the operating contract's *Learn* seat — a read/measure consumer of evidence. It reports numbers and owns no retry, scheduling, promotion, or lifecycle authority. The retired Aliases/Bench seats stay nil and their subcommands are omitted. - **Instrument bug fixed**: both scenario-ab arms were corpus-denied at runtime — the with-gold treatment was only a prompt injection through the retired `ao lookup`, so the A/B silently guaranteed a zero delta. Treatment is now environment-shaped: the with-gold arm runs with the corpus readable, the control arm stays sandbox-confined (the fail-closed empty-deny guard is untouched), and judges are always corpus-denied. - **Schema drift guards**: a run record persisted by the production writer must validate against eval-run.v1.schema.json (and the minimal suite against eval-suite.v1.schema.json) — closing the same silent-fork class the verdict.v2 golden corpus closed. - **Hermetic test builds hardened**: keep the real HOME's Go caches (TestMain isolation was forcing module re-downloads) and skip VCS stamping. - docs/architecture/go-cli.md gains the eval section; MIGRATION.md notes `ao eval`'s return; COMMANDS.md, cli-surface, and surface counts regenerated; new leaves carry honest allowlist reasons; new cmd/ao L2 tests drive eval run/compare/help through the full production wiring. ## Evidence - Full cli suite 2,801 green; race green on cmd/ao + the eval island; vet clean - Full-tier gate: 65/66 on the penultimate commit; the single failure (surface counts) is the final fixture commit, re-verified PASS standalone — no other check reads those fixtures - Fresh independent validation (Codex, frozen subject 86022a3c6, clean tree at start and end): **OVERALL PASS**, 6/6 — including a live end-to-end `ao eval run` producing a passing run record - Rubric-relocation decision honored: true holdout rubrics live in the external measurement register; the repo keeps only leak-guarded projections |
||
|
|
64e93c0428 |
refactor(cli): complete the post-Cathedral-Cut Go CLI cleanup (#919)
Completes the Go CLI migration: one composition model, no tombstones, no dead packages, hermetic tests, and a cross-language verdict contract corpus. Net −88k lines. ## What - **Tombstones + prune deleted**: the 21 registered 'Removed in the Cathedral Cut' stubs, `zzz_default_spine.go`'s runtime prune, and the ~30 registered-but-pruned legacy command families are gone. The registered tree IS the production tree; retired verbs fail with exit 1 + a data-driven replacement hint pointing at docs/MIGRATION.md (now covering nested verbs). Non-runnable parents reject unknown subcommands instead of printing help with exit 0. - **~35 unreachable packages deleted** (cliapp, canon, pawl-era verdict parser, pool, harvest, knowledge, wiki engine, vibecheck, cli/embedded, …) after import analysis + script/CI consumer verification. Retained with named consumers: archcheck (arch gate scripts), eval island (rubric schema drift guards), drwitness/drrebuild (witness-crosscheck). - **Composition decision recorded**: single cmd/ao root + internal/commands/<family> modules + clicontract; the never-adopted cliapp.BuildRoot is removed. New overview: docs/architecture/go-cli.md (repairs two broken links). - **Hermetic tests**: flag_matrix_test.go builds the exec'd binary from package source — the stale cli/bin/ao failure class is closed; TestHermeticBinaryMatchesSourceSurface pins source↔binary correspondence. - **Verdict contract consolidated**: verification extracted from status.go into cli/internal/verdictcheck; 19-case golden corpus (tests/fixtures/verdict-contract) runs through Go + Python + JSON schema via blocking gate `contract.verdict-corpus`. One divergence closed (empty-string context ids now rejected by all three). - **Fossil guard chains retired**: embedded-sync (mirror had zero importers), retired-family compat baselines, dead go_cli_compatibility.bats, stale gate globs/grandfather entries. ## Evidence - Full-tier deterministic gate: **66/66 PASS** on the rebased tip (fresh source-built binary) - cli suite 2,795 tests green; race suite green on touched packages; vet + pinned golangci-lint clean - Cathedral Cut conformance PASS; CLI reference/surface projections regenerated and checked - Independent cross-family validation (fresh Codex context, frozen SHA): 5/6 claims CONFIRMED; 6th NOT_PROVEN only due to sandbox networking (its cached rerun of the same suite passed) - Test-count decrease is deliberate and carried by a Test-Removal-Reason trailer |
||
|
|
8cb904de0d |
release: ship the Cathedral Cut as v3.3.0 (#914)
Ship the Cathedral Cut on the 3.x line with the intentional semver deviation documented for v3.3.0. Includes the complete release rebadge, release-gate artifacts, removed-command tombstones, and a legacy config read fallback that preserves existing settings when saving the new canonical path.\n\nValidated by the full local Go/release suite and all required GitHub checks on head
|
||
|
|
64a81e28e7 |
refactor: move loop evidence stores from .agentops/ to .agents/ao/
Intent snapshots and verdict artifacts now default to
.agents/ao/{intents,verdicts}/sha256/ so all session/evidence state lives
under .agents/ as the single agent-state root. Updates validate.py defaults,
ao init/status/demo, the cathedral conformance probe, craft_score.py digest
resolution, and every doc/skill mention. Existing artifacts migrated in
place; .agentops/ retains only the tracked project config.yaml.
Co-authored-by: Cursor <cursoragent@cursor.com>
|
||
|
|
5bdbb5fd09 | refactor: simplify AgentOps loop and harden CLI | ||
|
|
e4dbef98f6 |
Collapse AgentOps install to ao skills link
Retire the 3.x plugin curl/PowerShell installers as tombstones, delete the plugin-cache helpers, and rewire CI/doctor/conformance onto the canonical checkout + ao skills link path. Keep install-bd and the opt-in operator scripts. Co-authored-by: Cursor <cursoragent@cursor.com> |
||
|
|
baaa9e22da | feat!: prepare AgentOps 4.0 cathedral cut | ||
|
|
4823077621 | refactor: cut AgentOps to a single-pass evidence loop | ||
|
|
31337c369e |
docs: establish lean AgentOps product boundary
Implements: age-agentops-lean-loop-direct-cut-rp16f.1 |
||
|
|
1c183714a2 |
docs(migration): name every removed verb — ao daemon/plans/watch rows + ao factory no-restore row (age-trim-fat-migration-map-4cpk)
Codex refute on the arc verdict: MIGRATION.md promised a row for every removed surface but omitted the four verbs migration-3.0.md names as removed. Verified none exist in any build (no legacy tag registers factory/plans/watch/daemon), so the factory row explicitly denies a restore path. |
||
|
|
cd2a3d8584 |
docs(migration): fix false restore claim caught by content-truth judge (age-trim-fat-migration-map-4cpk)
Validation judge B built the binary with -tags 'legacy flywheel' and proved ao rpi / ao evolve do NOT return under any build tag (rpi hard-deleted at f61c5f0e7; evolve at #724) — the docs claimed AGENTOPS_LEGACY=1 make build restores them. All four claim sites now say the truth: the verbs are gone; the tag restores the archived factory machinery (ao loop, ao orchestrate, ao operator, ...) only. Evidence: .agents/council/judge-B-trim-fat-content.md |
||
|
|
469aed3474 |
docs(migration): add MIGRATION.md — living map from retired surfaces to the recommended OSS stack (age-trim-fat-migration-map-4cpk.1)
Every removed/retired surface (bd/Dolt, hooks, daemon/schedule/cron, ao rpi, ao recall/memory, flywheel+legacy build-tag archives, in-repo Gas City substrate, PR-flow, acfs skill, Olympus) mapped to its replacement + restore path; recommended stack table (ACFS, br+bv, NTM, MCP Agent Mail, cass, cm, ubs, dcg) with URLs; pack roadmap cited as planned-not-shipped beads. Verification: retired-tech gate green (file exempt via *MIGRATION* glob); wiring greps green (documentation-index + mkdocs nav). Strict docs build is differentially clean: identical 82 pre-existing warnings with and without this change, zero referencing MIGRATION.md (pre-existing debt = age-y0ww). |