3.1 is a minor on top of 3.0. The 3.0 north star is unchanged — AgentOps is the in-session operating loop plus the context compiler that feeds it. Read 3.0.md first for what AgentOps is. This page covers what 3.1 adds: the loop becomes installable for three runtimes, and the release gate itself becomes the product. When this page and 3.0 disagree on the core thesis, 3.0 wins; this page only extends it.
AgentOps 3.1 does not add a new practice. It does two things to the 3.0 core:
- Makes it installable — the three IMAGE-CORE recipes (Claude, Codex, Gemini/Antigravity) ship as real, documented, smoke-proven install paths, with Day-2 operations (update, backup, permission repair, recovery, escalation) treated as part of the product.
- Makes the gate the authority — the release pipeline that produces AgentOps was itself hardened: a native Go gate with workflow-parity enforcement, a verdict gate that requires cross-family validation with author exclusion, and a skill corpus canonicalized from one source of truth.
The through-line: 3.0 named the loop; 3.1 productized the loop and the discipline that ships it.
The biggest change in 3.1 is invisible in ao --version but load-bearing for everyone who ships through it. Three gates tightened together.
In 3.0 the pre-push gate was a sheaf of inline bash checks. In 3.1 those checks were ported to a single native Go gate (ao gate check), and the pre-push hook runs it as the release authority. Local validation is the routine shipping path; GitHub Actions is an optional/manual backstop, not the gate of record. This matters because the project repeatedly hit GitHub Actions quota exhaustion — the local gate keeps shipping viable without it (the DSR fallback).
The gate doesn't just run checks; it enforces workflow parity. Each check reports which CI workflow backs it, and a check that is green locally but has drifted out of CI fails the gate. A check that has no enforcing workflow is not a gate — it's an orphan. 3.1 makes that distinction mechanical.
The 3.0 verdict gate had a hole (LAW-3 gap): council_judge counted files, not distinct validator families, and did not exclude the author. Two verdict files from the same model — or a verdict written by the same agent that did the work — could admit a close. A self-graded "looks good" was enough.
3.1 closes it. A close now requires verdicts from distinct validator families with the author excluded. The gate can no longer trust a self-declaration. This is the close-admission discipline: work isn't done because the worker says so; it's done when an independent, cross-family verdict says so.
3.1 forces the skill corpus to have a single source of truth. Ghost skills (referenced but not materialized) were brought into the tree; registries, counts, and catalog surfaces were regenerated from that source; and bundled image copies were forced back to byte identity with the canonical skills/<slug>/SKILL.md. The image verifiers (images/{claude,gemini,codex}/verify.sh) prove that identity on every release, so a stale bundled copy can't silently drift from the skill the docs describe.
A related compliance fix landed here: the headless and team-runner paths no longer shell out to claude --print (LAW 0).
The three IMAGE-CORE recipes are materialized in the repo as images/claude/, images/codex/, and images/gemini/ — each with a manifest (manifest.json / plugin.json), a README.md citing the control-plane/IMAGE-CORE.md spec, and a verify.sh. Each has a documented install path:
# Claude Code — marketplace plugin
claude plugin marketplace add boshu2/agentops
claude plugin install agentops@agentops-marketplace
# Codex CLI — native plugin curl installer (macOS/Linux/WSL)
curl -fsSL https://raw.githubusercontent.com/boshu2/agentops/main/scripts/install-codex.sh | bash
# Gemini / Antigravity (AGY) — validates and installs images/gemini via `agy plugin`
curl -fsSL https://raw.githubusercontent.com/boshu2/agentops/main/scripts/install-agy.sh | bashThe full Install section, including the Windows variants and the optional ao CLI, is in the README.
The install gate (3.1 acceptance): a fresh machine can install AgentOps 3.1 for any of the three vendors via one of these documented one-liners. The install smoke suite proves all three paths without invoking the vendor runtimes:
$ bash tests/install/test-install-smoke.sh
Results: 45 passed, 0 failed(Figures above are measured from origin/main at the 3.1 cut.)
Per the AT&O doctrine — install, update, backup, permission, recovery, and escalation paths are part of the product, not afterthoughts — 3.1 ships docs/install-day2-ops.md: operator guidance for each of those six paths across Claude, Codex, and Gemini/AGY. Installing is step one; staying installed and recovering cleanly is the rest of the product.
- The 3.0 thesis stands. AgentOps is still the in-session loop plus the compounding
.agents/corpus. No new methodology; 3.1 is composition and packaging, not invention. - Still hookless by default. The default install registers zero hooks; skills + the
aoCLI + the local gate drive the lifecycle. - Still no daemon, scheduler, or hosted control plane. Out-of-session orchestration remains the substrate's job (NTM/ATM + MCP + managed-agents). The in-session loop is the zero-dependency sovereignty floor.
- State stays in
.agents/. No telemetry, no cloud, portable across model and harness.
ao --version is injected at build time from the git tag via goreleaser ldflags (-X main.version={{ .Version }}, see .goreleaser.yml). There is no static version file — the v3.1.0 git tag is what makes the CLI report 3.1.0, and it drives the goreleaser Homebrew/release assets. The plugin manifests (.claude-plugin, .agy-plugin, .codex-plugin, images/gemini/plugin.json) are already at 3.1.0 on main; cutting the v3.1.0 tag is the single load-bearing release step that turns this into a shipped 3.1.
Tag-cut status: the 3.1 content is fully landed on
main(all four plugin manifests at3.1.0, CHANGELOG, docs, installers, smoke-proven). The remaining external step is thev3.1.0git-tag cut + goreleaser release-asset/Homebrew publication, gated on GitHub Actions quota (the goreleaser release workflow). The local cockpit gate is the release authority for the landed content; tag publication is the one downstream action the release owner performs when Actions quota returns.
Canonical references: 3.0.md (the north star) · CHANGELOG · install-day2-ops.md · README §Install · images/{claude,codex,gemini}/ (the materialized recipes)