Release v2.39.0

This commit is contained in:
Boden Fuller
2026-04-26 22:14:20 -04:00
parent ed35c47ffe
commit 4db4fded24
11 changed files with 215 additions and 8 deletions
+2 -2
View File
@@ -6,13 +6,13 @@
},
"metadata": {
"description": "The operational layer for coding agents. Bookkeeping, validation, and flows that compound knowledge between sessions.",
"version": "2.38.0"
"version": "2.39.0"
},
"plugins": [
{
"name": "agentops",
"description": "The operational layer for coding agents. Bookkeeping, validation, and flows that compound knowledge between sessions.",
"version": "2.38.0",
"version": "2.39.0",
"source": "./",
"author": {
"name": "Boden Fuller",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "agentops",
"version": "2.38.0",
"version": "2.39.0",
"description": "The operational layer for coding agents. Bookkeeping, validation, and flows that compound knowledge between sessions.",
"author": {
"name": "Boden Fuller",
+28
View File
@@ -7,6 +7,34 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
## [2.39.0] - 2026-04-27
### Added
- **`ao agents` command group** - added `ao agents inspect`, `ao agents lint`, and `ao agents doctor` for `.agents/` write-surface introspection, linting, orphan reporting, and combined health checks.
- **Dream finding-generator pipeline** - added generator sidecar recording, aggregation, external-watchlist candidate emission, RFC 0001 authoring docs, and an `external_watchlist_emitted` fitness counter.
- **RPI next-work v1.4 metadata** - promoted `status`, `requires`, `dedup_key`, and external-watchlist routing into first-class next-work contract fields, validators, and skill documentation.
- **Goals measurement filtering** - added `ao goals measure --exclude-tag` and tagged `flywheel-compounding` as `long-cycle` / `corpus-state` so long-cycle corpus state can be excluded from selected measurements.
- **`.agents/` write-surface contract** - catalogued repo memory write surfaces, added a lint gate, and added production-code smoke coverage for the allowlisted surfaces.
- **Harvest nested artifact support** - harvest now recurses into nested artifact directories and emits real rig metadata.
### Changed
- **Codex runtime packaging** - refreshed Codex skills for GPT-5.5, aligned Codex plugin metadata with the marketplace schema, regenerated manifests and shared hashes, converted remaining skill references to `$skill` notation, and reduced skill-catalog context footprint.
- **Hook runtime backend** - refactored hooks around a managed runtime backend and refreshed native Codex hook/runtime proof gates.
- **Docs and release governance** - restored `docs/index.md`, renamed the full catalog to `docs/documentation-index.md`, added `.agents/` operator and comparison docs, and accepted RFC 0001 for finding-generator parallelism.
- **Release gate coverage** - CI/local gates now cover command/test pairing, next-work schema rows, Codex RPI contracts, assertion-density scope, agents write surfaces, standards-injector completeness, and release audit artifact references.
- **Goals parsing internals** - reduced markdown parser complexity by extracting table-cell helpers without changing behavior.
- **Bootstrap behavior** - `/bootstrap` now recommends installing `bd` instead of attempting automatic installation.
### Fixed
- **CLI output safety** - fixed JSON and UTF-8 truncation bugs, command catalog drift, commit-review redaction, stale docs links, and temp-directory walk-up behavior in `FindAgentsDir`.
- **Security and scanner false positives** - closed the harvest TOCTOU path with `os.OpenRoot`, excluded safe regexp literals from broad secret scans, and split secret-regex construction so release gates do not flag their own patterns.
- **Codex/runtime drift** - fixed Codex skill chaining defaults, native hook manifest install, quiet session-start behavior, hook test gaps, `$skill` notation, and vibe language-gated complexity.
- **RPI, triage, and coverage edges** - repaired partial-batch lifecycle drift, pinned coverage-anchor parsing, isolated RPI supervisor test state, added inject/ratchet/harvest/overnight regressions, and normalized stale next-work bookkeeping.
- **Release blockers** - aligned the next-work schema contract with current queue enums and paired new command changes with regression tests so the release gate passes cleanly.
## [2.38.0] - 2026-04-22
### Added
+28
View File
@@ -7,6 +7,34 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
## [2.39.0] - 2026-04-27
### Added
- **`ao agents` command group** - added `ao agents inspect`, `ao agents lint`, and `ao agents doctor` for `.agents/` write-surface introspection, linting, orphan reporting, and combined health checks.
- **Dream finding-generator pipeline** - added generator sidecar recording, aggregation, external-watchlist candidate emission, RFC 0001 authoring docs, and an `external_watchlist_emitted` fitness counter.
- **RPI next-work v1.4 metadata** - promoted `status`, `requires`, `dedup_key`, and external-watchlist routing into first-class next-work contract fields, validators, and skill documentation.
- **Goals measurement filtering** - added `ao goals measure --exclude-tag` and tagged `flywheel-compounding` as `long-cycle` / `corpus-state` so long-cycle corpus state can be excluded from selected measurements.
- **`.agents/` write-surface contract** - catalogued repo memory write surfaces, added a lint gate, and added production-code smoke coverage for the allowlisted surfaces.
- **Harvest nested artifact support** - harvest now recurses into nested artifact directories and emits real rig metadata.
### Changed
- **Codex runtime packaging** - refreshed Codex skills for GPT-5.5, aligned Codex plugin metadata with the marketplace schema, regenerated manifests and shared hashes, converted remaining skill references to `$skill` notation, and reduced skill-catalog context footprint.
- **Hook runtime backend** - refactored hooks around a managed runtime backend and refreshed native Codex hook/runtime proof gates.
- **Docs and release governance** - restored `docs/index.md`, renamed the full catalog to `docs/documentation-index.md`, added `.agents/` operator and comparison docs, and accepted RFC 0001 for finding-generator parallelism.
- **Release gate coverage** - CI/local gates now cover command/test pairing, next-work schema rows, Codex RPI contracts, assertion-density scope, agents write surfaces, standards-injector completeness, and release audit artifact references.
- **Goals parsing internals** - reduced markdown parser complexity by extracting table-cell helpers without changing behavior.
- **Bootstrap behavior** - `/bootstrap` now recommends installing `bd` instead of attempting automatic installation.
### Fixed
- **CLI output safety** - fixed JSON and UTF-8 truncation bugs, command catalog drift, commit-review redaction, stale docs links, and temp-directory walk-up behavior in `FindAgentsDir`.
- **Security and scanner false positives** - closed the harvest TOCTOU path with `os.OpenRoot`, excluded safe regexp literals from broad secret scans, and split secret-regex construction so release gates do not flag their own patterns.
- **Codex/runtime drift** - fixed Codex skill chaining defaults, native hook manifest install, quiet session-start behavior, hook test gaps, `$skill` notation, and vibe language-gated complexity.
- **RPI, triage, and coverage edges** - repaired partial-batch lifecycle drift, pinned coverage-anchor parsing, isolated RPI supervisor test state, added inject/ratchet/harvest/overnight regressions, and normalized stale next-work bookkeeping.
- **Release blockers** - aligned the next-work schema contract with current queue enums and paired new command changes with regression tests so the release gate passes cleanly.
## [2.38.0] - 2026-04-22
### Added
+1 -1
View File
@@ -18,7 +18,7 @@ permalink: /comparisons/agentops-vs-claude-flow
|--------|-------------|----------|
| **Philosophy** | "Swarm intelligence at scale" | "Operational layer for coding agents; technically a context compiler" |
| **Core strength** | Multi-agent orchestration, WASM performance, 314 MCP tools | Cross-session memory, validation gates, knowledge flywheel |
| **Latest** | v3.5.65 (April 2026, rebranded to Ruflo) | v2.38.0 (April 2026) |
| **Latest** | v3.5.65 (April 2026, rebranded to Ruflo) | v2.39.0 (April 2026) |
| **GitHub stars** | 11,400+ | 240+ (growing rapidly) |
| **Downloads** | 500,000+ | — |
| **Primary use** | Enterprise orchestration | Ongoing codebase work |
+1 -1
View File
@@ -19,7 +19,7 @@ permalink: /comparisons/agentops-vs-compound-engineer
| **Philosophy** | "Each unit of engineering work should make subsequent units easier" | "Operational layer for coding agents; technically a context compiler" |
| **Core strength** | Full ideate-to-compound loop, cross-runtime portability, configurable review agents | Git-tracked memory, validation gates, knowledge flywheel with scoring |
| **GitHub** | EveryInc/compound-engineering-plugin | boshu2/agentops |
| **Latest** | Active development (April 2026) | v2.38.0 (April 2026) |
| **Latest** | Active development (April 2026) | v2.39.0 (April 2026) |
| **Scale** | 45+ skills, 25+ agents, 10 runtime targets | 50+ skills, compiled CLI, hooks, schemas |
| **Primary use** | Standardized engineering workflow with knowledge capture | Ongoing codebase work with persistent memory and validation |
+1 -1
View File
@@ -19,7 +19,7 @@ permalink: /comparisons/agentops-vs-gsd
| **Philosophy** | "Ship fast — fresh context per agent" | "Operational layer for coding agents; technically a context compiler" |
| **Core strength** | Multi-agent orchestration with context isolation, multi-runtime support | Cross-session memory, validation gates, knowledge flywheel |
| **GitHub** | glittercowboy/get-shit-done | boshu2/agentops |
| **Latest** | v1.34.2 (April 2026) | v2.38.0 (April 2026) |
| **Latest** | v1.34.2 (April 2026) | v2.39.0 (April 2026) |
| **Scale** | 53 commands, 46 workflows, 16 agents | 50+ skills, compiled CLI, hooks, schemas |
| **Primary use** | Spec-driven development with phased execution | Ongoing codebase work with persistent memory |
+67
View File
@@ -0,0 +1,67 @@
# Release v2.39.0 - Audit
**Date:** 2026-04-27
**Previous:** v2.38.0
**Commits:** 79 work commits since `v2.38.0` (plus the release commit)
**Local CI Artifacts:** `.agents/releases/local-ci/20260427T020612Z/`
## Version Bumps
- `CHANGELOG.md`: added `v2.39.0` entry
- `docs/CHANGELOG.md`: added `v2.39.0` entry
- `.claude-plugin/plugin.json`: `2.38.0` -> `2.39.0`
- `.claude-plugin/marketplace.json` (`metadata.version`): `2.38.0` -> `2.39.0`
- `.claude-plugin/marketplace.json` (`plugins[0].version`): `2.38.0` -> `2.39.0`
- `docs/comparisons/vs-gsd.md`: latest AgentOps version `v2.38.0` -> `v2.39.0`
- `docs/comparisons/vs-compound-engineer.md`: latest AgentOps version `v2.38.0` -> `v2.39.0`
- `docs/comparisons/vs-claude-flow.md`: latest AgentOps version `v2.38.0` -> `v2.39.0`
- `docs/releases/2026-04-27-v2.39.0-notes.md`: added curated release notes
- `docs/releases/2026-04-27-v2.39.0-audit.md`: added release audit
## Release-Scope Fixes
- `docs/contracts/next-work.schema.md`, `scripts/check-next-work-schema-rows.sh`,
`scripts/validate-next-work-contract-parity.sh`, and related tests/skill docs
were aligned to the current next-work v1.4 queue fields before the release.
- `cli/cmd/ao/hooks_run.go` split the sensitive regexp construction so the broad
secret-pattern scan no longer flags the scanner pattern itself.
- `cli/cmd/ao/hooks_run_test.go` gained paired regression coverage for the
command/test gate.
## Pre-flight Results
| Check | Result |
|-------|--------|
| Git repo | PASS |
| CHANGELOG.md exists | PASS |
| Working tree clean before release writes | PASS |
| Local branch | PASS - `main` |
| Local CI parity gate | PASS - `./scripts/ci-local-release.sh --release-version 2.39.0` completed in 172s |
| Publishable SBOM | PASS - `sbom-v2.39.0.cyclonedx.json` and `sbom-v2.39.0.spdx.json` generated |
| Security scan report | PASS - `security-gate-full.json` generated in full security mode |
| Tests pass | PASS - covered by local CI parity gate |
| Lint clean | PASS - covered by local CI parity gate |
| Version consistency | PASS - `2.39.0` across plugin manifest, marketplace manifest, changelog, and comparison docs |
| Manifest versions sync | PASS |
| Dependency vulnerabilities | PASS - full security toolchain gate returned PASS |
| Commits since last release tag | PASS - 79 commits since `v2.38.0` |
| Unconsumed high-severity next work | WARN - 14 carry-forward high-severity items remain in `.agents/rpi/next-work.jsonl`; release skill treats this as non-blocking |
## Local CI Artifact Manifest
```json
{
"schema_version": 1,
"run_id": "20260427T020612Z",
"generated_at": "2026-04-27T02:09:04Z",
"artifact_dir": ".agents/releases/local-ci/20260427T020612Z",
"release_version": "2.39.0",
"repo_version": "2.38.0",
"git_sha": "ed35c47ffeeba21a72175c0d33b05804389660c5",
"fast_mode": false,
"security_mode": "full",
"sbom_cyclonedx": "sbom-v2.39.0.cyclonedx.json",
"sbom_spdx": "sbom-v2.39.0.spdx.json",
"security_report": "security-gate-full.json"
}
```
+60
View File
@@ -0,0 +1,60 @@
## Highlights
AgentOps v2.39.0 makes repo memory easier to inspect and safer to release. New
`ao agents` commands show, lint, and diagnose the `.agents/` write surfaces,
Dream can turn overnight findings into structured follow-up candidates, and the
release gate now validates the current work-queue contract instead of failing on
stale enum assumptions. The Codex package was also refreshed for GPT-5.5, with
runtime drift fixes across skill invocation, hooks, and metadata.
## What's New
- **Agent state health commands** - `ao agents inspect`, `ao agents lint`, and
`ao agents doctor` help operators understand and validate the `.agents/`
memory surfaces before they become release risk.
- **Structured overnight follow-up** - Dream can record and aggregate finding
generator sidecars, including external-watchlist candidates for work that
needs human review outside the normal queue.
- **Stronger work-queue metadata** - Work items now carry validated status,
prerequisite, and deduplication fields end to end.
- **Goals filtering** - `ao goals measure --exclude-tag` lets long-cycle corpus
state be excluded from selected goal measurements.
- **Codex package refresh** - Codex skills and metadata were updated for GPT-5.5
and the current marketplace schema.
## All Changes
### Added
- Agent state health commands for inspecting, linting, and diagnosing `.agents/`
write surfaces
- Dream finding-generator sidecars, aggregation, and external-watchlist output
- First-class validated metadata for work-item status, prerequisites, and
deduplication
- Goal measurement filtering by excluded tag
- Write-surface contract and smoke coverage for repo memory
- Nested artifact harvesting with real rig metadata
### Changed
- Codex runtime package refreshed for GPT-5.5 and current marketplace metadata
- Hook runtime internals refactored around a managed backend
- Documentation index, operator guide, comparison docs, and finding-generator
RFC updated
- Release gates now cover more of the work-queue, Codex, command/test, and
audit-artifact surfaces
- Bootstrap now recommends `bd` installation instead of attempting automatic
installation
### Fixed
- CLI JSON and UTF-8 truncation bugs
- Docs link drift and CLI command catalog drift
- Codex skill chaining, hook manifest, session-start, and `$skill` notation
drift
- Harvest path handling and scanner false positives that could block release
gates
- RPI, triage, coverage parsing, and release-gate regressions found during
local validation
[Full changelog](../CHANGELOG.md)
+15 -2
View File
@@ -90,8 +90,17 @@ validate_legacy_artifacts() {
return 1
}
audit_files=()
while IFS= read -r audit_file; do
audit_files+=("$audit_file")
done < <(find "$REPO_ROOT/docs/releases" -maxdepth 1 -type f -name '*-audit.md' | sort)
latest_audit=""
if (( ${#audit_files[@]} > 0 )); then
latest_audit="${audit_files[$((${#audit_files[@]} - 1))]}"
fi
failures=()
while IFS= read -r audit; do
for audit in "${audit_files[@]}"; do
version="$(extract_version "$audit")"
[[ -n "$version" ]] || continue
@@ -100,6 +109,10 @@ while IFS= read -r audit; do
artifact_dir="${artifact_dir%/}"
manifest="$REPO_ROOT/$artifact_dir/release-artifacts.json"
if [[ ! -f "$manifest" && ! -d "$REPO_ROOT/$artifact_dir" && "$audit" != "$latest_audit" ]]; then
continue
fi
if [[ -f "$manifest" ]]; then
if ! output="$(validate_manifest_artifacts "$audit" "$version" "$artifact_dir" "$manifest")"; then
failures+=("$output")
@@ -107,7 +120,7 @@ while IFS= read -r audit; do
elif ! output="$(validate_legacy_artifacts "$audit" "$version" "$artifact_dir")"; then
failures+=("$output")
fi
done < <(find "$REPO_ROOT/docs/releases" -maxdepth 1 -type f -name '*-audit.md' | sort)
done
if (( ${#failures[@]} > 0 )); then
printf 'release audit artifact validation failed:\n' >&2
+11
View File
@@ -155,3 +155,14 @@ write_artifact_files() {
[ "$status" -eq 0 ]
[[ "$output" == *"release audit artifact validation passed"* ]]
}
@test "validate-release-audit-artifacts skips older missing local artifact dirs" {
write_audit "2.29.0" "20260322T212222Z"
write_manifest "20260330T231401Z" "2.30.0" false
write_artifact_files "20260330T231401Z" "2.30.0"
write_audit "2.30.0" "20260330T231401Z"
run "$FAKE_REPO/scripts/validate-release-audit-artifacts.sh"
[ "$status" -eq 0 ]
[[ "$output" == *"release audit artifact validation passed"* ]]
}