Commit Graph

57 Commits

Author SHA1 Message Date
Bo 6d5d111faf feat(skills): land four-vendor skill corpus (#803)
## Summary
- Lands the AgentOps skill corpus across source and Codex wrappers,
including Gemini image targets.
- Integrates the skill branch onto current origin/main and refreshes
generated manifests/catalogs.
- Normalizes local next-work queue enum drift and fixes shellcheck in
alias-collision validation.

## Validation
- bash scripts/regen-all.sh --check
- bash scripts/validate-skill-schema.sh
- bash tests/skills/test-token-budgets.sh
- bash tests/skills/run-all.sh
- bash scripts/audit-codex-parity.sh && bash
scripts/validate-codex-override-coverage.sh && bash
scripts/validate-codex-generated-artifacts.sh --scope worktree && bash
scripts/validate-codex-api-conformance.sh && bash
scripts/validate-codex-runtime-sections.sh && bash
scripts/lint-codex-native.sh
- bash skills/heal-skill/scripts/heal.sh --strict
- PRE_PUSH_SKIP_MKDOCS=1 bash scripts/pre-push-gate.sh --fast

MkDocs strict remains skipped locally via the documented
PRE_PUSH_SKIP_MKDOCS=1 override because the repo currently emits
repo-wide strict-link warnings unrelated to this landing; CI remains
authoritative.
2026-06-06 23:44:42 -04:00
Bo b84dcf3ca2 docs(hookless): close cold-start orientation drift (soc-qh2g1 #cold-start-orientation-coherence) (#795)
## Summary

Close the hookless cold-start orientation gap for `soc-qh2g1` by making
the live startup docs and skills point at explicit `ao session
bootstrap` plus pulled context (`ao inject` / `ao lookup`) instead of
hidden SessionStart behavior.

## Changes

- Reframes live docs that still implied automatic startup/handoff
injection to the hookless explicit-command path.
- Updates source and Codex skill mirrors for `quickstart`, `inject`,
`using-agentops`, `recover`, `bug-hunt`, and `session-bootstrap`.
- Expands the cold-start and docs drift gates so `SessionStart hook`,
`startup hooks`, and `auto-inject ... hook` promises fail unless
explicitly hedged as opt-in, removed, or historical.
- Refreshes scoped Codex skill hashes for the touched mirrors.

## Test plan

- [x] `bash scripts/check-hookless-cold-start.sh`
- [x] `bash scripts/check-doc-hooks-drift.sh`
- [x] `bats tests/scripts/check-hookless-cold-start.bats
tests/scripts/check-doc-hooks-drift.bats`
- [x] `shellcheck scripts/check-hookless-cold-start.sh
scripts/check-doc-hooks-drift.sh`
- [x] `bash scripts/regen-codex-hashes.sh --check --only
session-bootstrap,quickstart,inject,using-agentops,recover,bug-hunt`
- [x] `bash scripts/validate-codex-generated-artifacts.sh`
- [x] `bash scripts/validate-codex-lifecycle-guards.sh`
- [x] `bash scripts/validate-agents-split.sh`
- [x] `git diff --check`
- [x] `bash scripts/validate-skill-runtime-parity.sh`
- [x] `bash scripts/lint-codex-native.sh`

Closes-scenario: soc-qh2g1#cold-start-orientation-coherence
Bounded-context: BC1-Corpus
Evidence: scripts/check-hookless-cold-start.sh
2026-06-06 11:23:56 -04:00
Bo de0699a493 feat(skills): operating-loop-workflow skill ships the workflow to plugin users (agentops-7m7a #plugin-deliver-operating-loop) (#595)
## What
Adds a `operating-loop-workflow` skill that delivers the
`operating-loop` Workflow-tool script to **installed plugin users** and
invokes it.

## Why
Claude Code plugins do **not** load `.claude/workflows/*.js` (recognized
components are `skills/`, `commands/`, `agents/`, `hooks/`, …). PR #594
force-added the script so it *ships in the plugin cache*, but an
installed user still wouldn't see `/operating-loop`. This skill is the
delivery vehicle.

## How
On `/operating-loop-workflow`, the skill:
1. Idempotently copies
`${CLAUDE_PLUGIN_ROOT}/.claude/workflows/operating-loop.js` →
`~/.claude/workflows/operating-loop.js` (copy-if-newer; never clobbers
user edits).
2. Invokes `Workflow({name:'operating-loop', args})` (supports
`{mode:'plan'}` for the plan-only half).

Named `operating-loop-workflow` (not `operating-loop`) to avoid
colliding with the workflow's own auto-surfaced `/operating-loop` in the
dev repo.

## Registries updated
- `skills/SKILL-TIERS.md` row + `sync-skill-counts.sh` (→ 76 total, 66
user-facing)
- `docs/contracts/skill-dispositions.yaml` + regenerated
`docs/reference/agentops-skill-domain-map.md` (76/76)
- `docs/contracts/context-map.md`,
`docs/reference/agentops-domain-evolution-bdd.md` count

## Validation
- `scripts/pre-push-gate.sh --fast` passed (registry-drift,
skill-domain-map golden gate, domain-evolution plan all green)
- `generate-skill-domain-map.sh`: 76 skills, 76 dispositions, clean

Closes-scenario: agentops-7m7a#plugin-deliver-operating-loop
Bounded-context: BC3-Loop
Evidence: docs/reference/agentops-skill-domain-map.md

🤖 Generated with [Claude Code](https://claude.com/claude-code)
2026-05-29 02:30:09 +00:00
Bo b4c6aec361 feat(skills)!: 3.0 consolidation — merge 4, cut 2, resolve 6 keep-flags (81→75) (#533)
## AgentOps 3.0 skill consolidation — reconcile-and-tighten

Resolves all 12 skills flagged `merge-review`/`cut-review` in
`docs/contracts/skill-dispositions.yaml` per the operator-approved
dispositions. **Zero capability loss** — every merged skill's content
lives in its target as a mode/section.

### MERGE (4) — content folded into target, source removed
| Source | Target | How |
|---|---|---|
| expert-council | council | `--mode=debate` (alias triggers documented
in council) |
| oss-docs | doc | `--mode=oss` (refs + `audit-oss-docs.sh` copied into
`doc/`) |
| readme | doc | `--mode=readme` (`readme-craft.md`; `bootstrap`
consumer repointed readme→doc) |
| pr-retro | post-mortem | `--scope=pr` (`pr-scope.md` + gh PR-outcome
mining) |

### CUT (2) — genuinely redundant, no live consumer
- **pr-plan** — folds into `/plan` + `/pr-research`; pr-* chain
repointed.
- **update** — install-script concern; refresh note added to
`using-agentops` + install one-liner.

### KEEP — resolved 6 flags (rationale in `skill-dispositions.yaml`)
`validate` + `curate` (designed-future canonical validator/miner; epic
`soc-cp7pv` GO/REVERT is a separate decision) · `security` (release-gate
driver, distinct from security-suite) · `converter` (packaging adapter
skill-builder consumes) · `knowledge-activation` (outer-loop
operationalization) · `grafana-platform-dashboard` (marketplace
specialization).

### Result
**81 → 75 skills** (65 user-facing + 10 internal). Trunk regenerated
once: skill-counts, skill-catalog, skill-domain-map, context-map,
registry, sku-catalog, codex hashes, embedded-sync. Evals repointed to
absorbed locations.

### Gates verified locally (all green)
lint-skills · heal.sh --strict · skill-schema · skill-frontmatter ·
skill-dependency-check · scenario-test-linkage ·
validate-context-map-drift · check-registry-drift · generate-registry
--check · skill-domain-map golden · validate-sku-catalog-drift ·
bounded-contexts-drift · ci-policy-parity · codex
parity/override-coverage/manifest/generated-artifacts/skill-parity/runtime-sections/backbone/lifecycle
· regen-codex-hashes --check · embedded-sync · validate-skill-count ·
markdownlint · shellcheck (--severity=error) · `cd cli && go build && go
vet && go test ./cmd/ao` (9126 passed).

Closes-scenario: ag-cons#consolidation
Bounded-context: BC1-Corpus
Evidence: .agents/discovery/2026-05-24-skill-consolidation-plan.md
2026-05-24 23:17:27 -04:00
Bo c88d0f0d88 feat(ci): skill-body command-ref gate — block stale ao refs in prose (ag-4x8) (#532)
## What

New CI gate `validate-skill-body-refs` (T1) that scans the **inline-code
prose** of every `SKILL.md` + `references/*.md` (under `skills/` and
`skills-codex/`) for `` `ao <command>` `` / `` `ao <command> --flag` ``
tokens and validates each against the **live `ao` help tree**.

This is the systemic fix for oracle gap #3:
`validate-skill-cli-snippets.sh` only inspects fenced/`ao`-leading
snippets, so a stale command/flag named inside an inline code span
mid-sentence (e.g. `` `ao schedule` `` , `` `ao context assemble` ``)
regenerated after every CLI rename. This gate is the **complement** of
the snippet gate — together they cover both fenced snippets and prose.

## How the gate works

- Builds a robust live command tree: `ao capabilities` (authoritative
top-level) + recursive grouped-help subcommand parse (handles `ao
goals`' category-grouped help that the standard "Available Commands:"
parser misses) + command aliases (`quickstart` → `quick-start`) +
per-command flags.
- Only validates `ao` refs inside inline `` `code` `` spans — bare-prose
English ("if ao available", "ao not installed") is never treated as a
command, eliminating false positives while still catching the genuine
(always backtick-quoted) stale refs.
- Justified historical refs skip via an inline marker (`Superseded` /
`Historical` / `removed in` / `retained for history` / `(historical)`)
on the line/file, or `scripts/skill-body-refs-allowlist.txt`.

## Prose sweep (what made main pass)

The gate detected genuine stale refs on main; swept them to keep the
gate green:

- `ao context assemble` → `ao lookup` (8 sites — the command was never
built; `ao lookup` is the real co-cited replacement)
- `ao cite` → `ao metrics cite`
- `ao worktree gc` → `git worktree prune` (4 sites — `ao worktree` never
existed)
- `ao hooks` removal note → reworded to "removed in 3.0" (matches the
`removed in` historical marker)

## Allowlist contents

- `skills/standards/references/cli-wireup-template.md` — illustrative
naming template (deliberately names `ao loop-history` / `ao loop write`
/ `ao loop tail` as good/bad examples + future placeholders)
- `skills/release/references/release-notes.md`,
`skills-codex/release/references/release-notes.md` — historical
changelog prose (e.g. `ao daemon status` from the daemon era)

## Wiring

- `.github/workflows/validate.yml` — new T1 job + `summary.needs` +
`validate-pr-evidence-claims.needs` + summary echo (65 jobs)
- `docs/contracts/ci-jobs.yaml` — manifest entry (keeps
`validate-ci-policy-parity` green)
- `AGENTS-CI.md` — regenerated via `scripts/generate-ci-jobs-table.sh
--write`
- `tests/scripts/validate-skill-body-refs.bats` — 6 cases (clean pass,
stale-cmd fail, stale-flag fail, historical-marker skip, bare-prose
ignore, committed-tree pass)

## Verification (local, green)

- `bash scripts/validate-skill-body-refs.sh` → exit 0
- `scripts/validate-ci-policy-parity.sh` → PASS (65 rows)
- `scripts/validate-skill-cli-snippets.sh` → passed (no regression)
- `scripts/check-codex-parity-drift.sh` +
`validate-codex-generated-artifacts.sh --scope worktree` → passed (codex
hashes regenerated for the 6 edited skills only)
- `bats tests/scripts/validate-skill-body-refs.bats` → 6/6 ok
- `shellcheck scripts/validate-skill-body-refs.sh` → clean
- `markdownlint` on changed docs → clean

Closes-scenario: ag-4x8#body-ref-gate
Bounded-context: BC1-Corpus
Evidence: scripts/validate-skill-body-refs.sh
2026-05-24 22:42:40 -04:00
Bo 9543207b5a fix(skills): sweep stale CLI snippets — hooks removed + ao corpus inject (ag-d0t) (#524)
## What

Sweep 16 stale CLI snippets across `skills/` and `skills-codex/` that
referenced commands/flags removed from the `ao` CLI. Unblocks the
release `skill-cli-snippet` gate —
`scripts/validate-skill-cli-snippets.sh` now reports **0 failures** (was
16).

## Three fix patterns (verified against the built `ao` binary)

1. **`ao init --hooks`** — the `--hooks` flag is gone (hooks removed).
`ao init` is hookless (only `--stealth`). Fixed snippets to `ao init`
and reframed surrounding prose: hooks are opt-in / author-it-yourself
via the `hooks-authoring` skill, not an `ao` command/flag.
2. **`ao hooks install --force` / `--full` / `ao hooks test`** — the `ao
hooks` command is gone entirely (`unknown command`). Removed the broken
snippets and reframed the quickstart troubleshooting "Optional Hooks"
sections to hookless (CI is the authoritative gate).
3. **`ao inject --query`** — wrong: `ao inject` uses `--context`; the
corpus-query command is **`ao corpus inject --query`**. Fixed
`using-gc/reference-city.md` (canonical + codex). For
`domain/context-compiler.md` the line also carries `--apply-decay
--max-tokens` (which live on `ao inject`, NOT `ao corpus inject`), so
the surgical fix there was `--query` → `--context` on the existing `ao
inject` command.

## Sites fixed (canonical + codex twins in lockstep)

- bootstrap: `SKILL.md` Step 6 + `references/related-runbooks.md` (×2
trees)
- quickstart: `SKILL.md` Hook-activation row +
`references/troubleshooting.md` (×2 trees)
- domain: `references/context-compiler.md` (canonical only — no codex
twin)
- using-gc: `references/reference-city.md` (×2 trees)

`regen-codex-hashes.sh` refreshed the affected
`.agentops-generated.json` + manifest.

## Gate results (all green)

- `scripts/validate-skill-cli-snippets.sh` → **passed, 0 failures**
- `tests/scripts/test-skill-cli-snippets.sh` → 4 PASS / 0 FAIL
- `skills/heal-skill/scripts/heal.sh --strict` → All clean
- `scripts/audit-codex-parity.sh --skill
{bootstrap,quickstart,using-gc,domain}` → all passed
- `scripts/regen-codex-hashes.sh --check` → All hashes up to date
- `cd cli && make build` → green
- markdownlint (cli2) on all changed `.md` → clean

Closes-scenario: ag-d0t#snippet-sweep
Bounded-context: BC1-Corpus
Evidence: scripts/validate-skill-cli-snippets.sh
2026-05-24 20:18:42 -04:00
Bo 010ade393c feat(rip)!: carve the daemon — delete internal/daemon + agentopsd, GC is the substrate (soc-2rtm0 #daemon-carve wave5) (#515)
Wave 5 of 5 (the finale) of the orchestration-substrate retirement
(soc-2rtm0). AgentOps stops being the orchestration substrate; GC is the
substrate. The always-on out-of-session supervisor (the daemon) is
deleted; GC's controller replaces it. Features that ran AS daemon jobs
(wiki build, llmwiki loop) keep their BUILDER CORE (in-process /
GC-callable) but lose the daemon-job-executor wrapper.

## Deleted
- `cli/internal/daemon/` — the whole package (71 .go files + testdata +
AGENTS.md).
- `cli/cmd/ao/`: `agentopsd.go`, `daemon_jobs.go`, `daemon_soak.go`,
`daemon_fake_policy.go`, `rpi_phased_daemon.go` (+ their tests).
- Daemon-only tests: `rpi_status_daemon_test.go`,
`rpi_integration_test.go`, `doctor_product_runtime_test.go`.
- `internal/doctor/fix_daemon.go` (+test) + the daemon
runtime/ledger-health/telemetry/openclaw-consumer checks and the
`--product-runtime` flag in `doctor.go` (the `ao doctor` command itself
is KEPT).
- The `ao daemon`/`agentopsd` command registration (went with
`agentopsd.go`).
- Daemon test scripts: `scripts/validate-daemon-product-e2e.sh`,
`tests/scripts/test-daemon-product-e2e.sh`.

No daemon CI gates existed in `validate.yml` / `ci-jobs.yaml` to remove
(prior waves had already cleared them).

## Severed (KEEP features — builders stay, daemon-job-executor wrappers
removed)
- **wiki** (`internal/wiki/pipeline.go`): removed the
`daemon.JobExecutor` impl
(`JobTypes`/`RunJob`/`PipelineJobSpec`/`parsePipelineJobSpec`/`jobResultFromOutcome`)
+ the daemon import. The builder core — `WikiPipeline`, `RunStage`,
`SelectStage`, the ingest/query/lint runners — is untouched; `ao wiki
lint/query/promote` run in-process.
- **llmwiki** (`internal/llmwiki/executor.go`): removed
`LLMWikiLoopExecutor` + `LoopJobSpec` + the daemon import. KEPT the leaf
builder core in the same file (`Stage`, stage constants, `StageHandler`,
`StageResult`, `DefaultLintIntervalHours`, `SelectStage`,
`rawHasNewerFiles`, `lintIsStale`) — `stages.go` (the real handlers) and
`internal/scope` depend on these. No new package needed; the shared
types already lived in this leaf file.
- **rpi status** (`cmd/ao/rpi_status.go`): severed the
`--daemon`/`--daemon-url`/`--daemon-fallback` read path. `ao rpi status`
now reads only the local run registry (`.agents/rpi/runs/`) — a KEEP
feature. Relocated the tiny `cobraContext` helper here (it lived in the
deleted `agentopsd.go`, only consumer is this file).
- **rpi phased** (`cmd/ao/rpi_phased.go`, `rpi_phased_context.go`):
removed the `--daemon-submit` short-circuit + flags + the
`DaemonSubmit/URL/Token/Fallback` opts fields (only consumer was the
deleted submit path).

## Lost capabilities (intentional, daemon-only)
- `ao rpi status --daemon` (read RPI job state from agentopsd) and `ao
rpi phased --daemon-submit` (queue an RPI run to agentopsd).
- llmwiki `LoopJobSpec.AllowPlaceholderOutputs` opt-in gating (the
placeholder-output-disabled skip) — that gate lived in the removed
daemon-job wrapper, not the stage handlers.
- `ao doctor` daemon runtime/ledger-health/telemetry/openclaw-consumer
checks + `--product-runtime`.

## Verification (all green)
- `gofmt -l` clean (my files), `go build ./...`, `go vet ./...`, `go
test ./...` → 11920 passed, 0 failed, 65 packages.
- `scripts/release-smoke-test.sh` → 108 pass / 0 fail (EXPECTED_COMMANDS
never listed daemon; no scrub needed).
- `tests/windows/test-windows-smoke.ps1` → `Invoke-GoTest` list has no
`./internal/daemon` ref (nothing to scrub).
- `internal/quality/stale_refs.go` → no daemon/agentopsd
deprecated-command entries (`TestDoctorStaleReplacementsExist` passes).
- `tests/smoke-test.sh`, `tests/cli/test-json-flag-consistency.sh`
(15/0), `scripts/test-agentops-contract-canaries.sh` (failures=0 after
fixing the cli-command-surface heading-count fixture/eval 68/179/247 →
67/172/239 and the `ao daemon` refs in `skills/dream` +
`skills-codex/dream`).
- Regenerated `cli/docs/COMMANDS.md` + `registry.json`;
`regen-codex-hashes.sh --check` clean; `validate-ci-policy-parity.sh`
PASS; doc link/learning-ref checks pass; `heal.sh --strict` clean.

Diff stat: 113 files changed, 95 insertions, 34,978 deletions.

Closes-scenario: soc-2rtm0#cascade-rip
Bounded-context: BC5-Runtime
Evidence: .agents/discovery/2026-05-24-rip-caller-map.md
2026-05-24 17:11:20 -04:00
Bo 892eb45bdb chore(codex): regen 8 drifted codex hashes from #503-#508 (soc-z5mbz #regen-8-codex-hashes) (#509)
Skill-dir edits across #503-#508 (.feature additions, SKILL.md links,
heal.sh) changed source dirs but the regenerated codex source_hashes
were never committed; CI codex gate is --scope-head so cross-PR
accumulation slipped through. `regen-codex-hashes.sh` → 'All hashes up
to date'. 9 files, hash strings only.

NOTE: claude-review infra-red (weekly limit) — operator-authorized
bypass when sole red.

Closes-scenario: soc-z5mbz#regen-8-codex-hashes
Bounded-context: BC1-Corpus
Evidence: skills-codex/.agentops-manifest.json
2026-05-24 00:19:09 -04:00
Bo ef32912010 feat(quickstart): executable acceptance for the next-action recommender (soc-9ew18 #quickstart-hexagon) (#455)
soc-qk4b skill-hexagon-crank — peripheral skill. /quickstart
(driving-adapter, customer-of rpi) lacked a .feature.

- skills/quickstart/references/quickstart.feature (NEW): detect setup
(git/ao/bd/.agents); state-appropriate next action; ready repo → next
concrete step
- linked in SKILL.md; registry regenerated

consumes [rpi] already filled — acceptance-only.

How tested: lint-skills ✓ quickstart (129 lines); scenarios --lint 0
errors; codex parity passed; registry up to date.
Sibling: acceptance-only crank like /session-bootstrap #454.

NOTE: claude-review infra-red (weekly limit, resets May 25) —
operator-authorized bypass when sole red.

Closes-scenario: soc-9ew18#quickstart-hexagon
Bounded-context: BC5-Runtime
Evidence: skills/quickstart/references/quickstart.feature
2026-05-23 06:03:55 -04:00
Boden Fuller b8c5a3761b feat(agentops): make 3.0 hookless-first
Add DDD skill-domain contracts, hook lease inventory, replacement ports, artifact-first RPI skill boundaries, and release exact-SHA validation. Demote ao inject to a compatibility adapter and remove prompt-only default hooks.
2026-05-16 09:43:08 -04:00
Boden Fuller 8c731aef64 fix(ci): make skill validate-contracts billboard-aware (clears 4 CI failures)
#275's billboard refactor thinned process-skill SKILL.md files and moved
detail into references/, but the validate contracts still grepped SKILL.md.

skill-lint + smoke-test: relax content-presence checks in crank/implement/
  post-mortem/swarm validate.sh to scan the skill as a unit (SKILL.md +
  references/); structural/identity checks stay SKILL.md-only. test-first-smoke
  updated to match relocated SPEC/TEST WAVE + Step 0/4 headings.
skill-lint line caps: trim flywheel 310 -> 286 (cap 300), using-agentops
  261 -> 239 (cap 250) by removing redundant prose, no content lost.
skill-integrity: link 3 orphaned references (crank/branch-isolation,
  validation/flags + release-readiness-gates).
codex parity: regenerate stale skills-codex source hashes (77 skills).

Local: run-all.sh PASS, heal.sh --strict clean, smoke-test PASS.
2026-05-15 16:30:32 -04:00
Boden Fuller bef9b42d60 feat(practice): pass-4 backfill — 13 more practices: declarations + harvest
Adds practices: frontmatter to 13 next-batch skills: inject, llm-wiki, oss-docs,
openai-docs, perf, product, provenance, push, quickstart, ratchet, readme,
recover, refactor.

scripts/validate-practice-citations.sh:
  with practices field: 52 (was 39)
  missing practices field: 702 (was 715)
  invalid slug citations: 0

🤖 Generated via /evolve cycle 2.
2026-05-10 20:45:29 -04:00
Boden Fuller 9d2d81f273 docs(positioning): thesis polish — verb-led headline, assurance posture, three-surfaces-plus-enforcement (epic soc-sx99)
Operator polish on top of the just-shipped substrate-leads thesis. Tightens
voice and adds an Assurance Posture section that names the operating
discipline without overclaiming certifications.

Headline:
- "AgentOps is a context compiler that feeds your software factory" →
  "AgentOps compiles and compounds the context that feeds your software
  factory" (verb-led, more active; "the substrate the supermodel plugs
  into" relegated from headline to body).

Body:
- New value-prop paragraph: "the highest-leverage input to coding agents
  is context: what the system knows, what it has tried, what failed, what
  the codebase decided, and what gates must hold."
- "One substrate, four surfaces" → "One substrate, three operator surfaces,
  one enforcement layer" (cleaner separation: surfaces are for humans,
  hooks are policy).
- "TSMC-efficiency for code" → "factory-grade throughput for code"
  (accessible, not brand-specific).
- "Humans drop in or out" → "Humans choose the posture" (more deliberate).
- Lineage demoted with note: "users do not need that vocabulary to
  understand the product."

NEW: Assurance Posture section (PRODUCT.md) — names the constrained-
environment habits (local-first control, context as a boundary, evidence
by default, policy gates over advice, variable autonomy, constrained-
network fit) WITHOUT making certification claims. Explicit caveat:
"Formal deployment into classified, export-controlled, or safety-critical
environments still requires the local authority's security controls,
model approvals, supply-chain process, and accreditation work."

Also tracked as a Known Product Gap: "High-assurance profile is not yet
formalized." Honest framing: posture exists, accreditation surface does
not.

Mirrored across:
- AGENTS.md, CLAUDE.md preamble: matching one-paragraph form
- README.md hero: matching headline
- docs/strategic-direction.md: lineage spine matched
- skills/quickstart/SKILL.md, skills-codex/quickstart/SKILL.md (parity sync;
  hashes regenerated via scripts/regen-codex-hashes.sh)
2026-05-07 12:03:22 -04:00
Boden Fuller 47fb67844d fix(quickstart): correct ao schedule + ao daemon invocation in always-on lane (epic soc-sx99)
The /quickstart and ao demo "Always-on lane" snippets used the wrong CLI form:
- 'ao schedule add ./path' → should be 'ao schedule add --file ./path' (CLI requires --file flag)
- 'ao daemon' → should be 'ao daemon run' (parent command needs subcommand)

Found by /council --mixed --deep validation of soc-sx99 positioning thesis (8/8
WARN, operator-clarity perspective): the recipe pack docs/scheduling.md got the
flags right, but the same-session quickstart edit shipped the wrong form. Both
shipped commits would have failed at runtime on first user attempt.

- skills/quickstart/SKILL.md: corrected always-on lane snippet
- skills-codex/quickstart/SKILL.md: parity sync
- cli/cmd/ao/demo.go: corrected step 6 command in quickDemo
- skills-codex hashes regenerated via scripts/regen-codex-hashes.sh

Verified: cli/docs/COMMANDS.md:1031,3630-3645 confirms canonical form is
'ao daemon run' and 'ao schedule add --file <path>'. docs/scheduling.md:24-32
already used the right form.
2026-05-07 12:03:22 -04:00
Boden Fuller e96d4942f3 feat(skills): quickstart + demo surface ao schedule + ao daemon (epic soc-sx99 W2.2)
The 5-minute quickstart path didn't mention scheduling, but the user's actual
flagship usage is the always-on dream daemon. This adds scheduling co-equally
with compiler+gates in the basic surface.

- skills/quickstart/SKILL.md: new "Schedule a nightly dream (always-on lane)"
  step in the 5-minute path with `ao schedule add ./examples/schedules/dream-nightly.yaml`
  and the one-sentence note that `ao daemon` is the always-on lane
- skills-codex/quickstart/SKILL.md: parallel sync (PreToolUse hook required)
  with `$skill` prefix in place of `/skill`
- skills-codex/.agentops-manifest.json + .agentops-generated.json: regenerated
  via scripts/regen-codex-hashes.sh
- cli/cmd/ao/demo.go: 6th step "Schedule a recurring job (always-on lane)"
  added to quickDemo's step deck

Note: the original issue mentioned skills/init/ and skills/quick-start/ —
neither exists in the repo; the only quickstart skill is skills/quickstart/.

Closes soc-sx99.5.
2026-05-07 12:03:22 -04:00
Boden Fuller a7a51f2c16 feat(standards): codify skill tier caps and codex registration 2026-05-03 23:00:11 -04:00
Boden Fuller f382d42bc3 docs: clarify AgentOps golden paths 2026-05-03 00:41:17 -04:00
Boden Fuller 39477a9533 feat(onboarding): unify repo seed golden path 2026-05-02 22:19:23 -04:00
Boden Fuller 557e4af9ec feat(codex): cap skills-codex description catalog and add --repair-shape audit
Adds a 2400-char aggregate budget for skills-codex/*/SKILL.md `description:`
fields in tests/skills/test-token-budgets.sh, then trims each skill's description
to fit (catalog now 2146/2400). Both Claude and Codex SKILL.md descriptions
are kept in sync; codex .agentops-generated.json hashes regenerated.

Adds --repair-shape to scripts/audit-codex-hooks.sh: when ~/.codex/hooks.json
is missing or in legacy-flat shape, rewrites it from hooks/codex-hooks.json
with the active plugin_root (read from .agentops-codex-install.json) and
backs up any prior file. Covered by new test_repairs_legacy_flat_shape.

Memory decay (4 .agents/ files) bumped by the SessionStart inject hook.
2026-04-30 15:16:59 -04:00
Boden Fuller 00ebd7cec7 fix(evals): refresh canary closeout expectations 2026-04-27 16:27:20 -04:00
Boden Fuller d9810d281e test: add status quickstart dashboard eval 2026-04-27 16:08:59 -04:00
Bo 8079d570de fix(ci): repair validation gate failures 2026-04-27 09:16:44 -04:00
Bo 9b08fb933d refactor(cli): go cli quality discovery batch (gc-bridge, json contracts, leaf-help smoke) (#162)
* docs: add go cli quality discovery plan

* fix(cli): harden gc bridge version parsing

* docs(go): align complexity policy with gates

* docs(cli): classify command surface

* fix(cli): enforce json output contracts

* feat(cli): expand completion coverage

* refactor(cli): pilot badge options writer

* refactor(cli): inject contradict output writer

* refactor(cli): inject notebook update writer

* fix(cli): enable gc runtime smoke coverage

* fix(cli): align gc bridge with gascity v1

* Release v2.39.0

* fix(tests): align next-work schema test with widened type enum

Commit ed35c47f added `docs` and `chore` to the script's VALID_TYPES,
but tests/scripts/check-next-work-schema-rows.bats:42 still used
`type:"docs"` as its supposed-to-be-rejected example, so the test
now passes through the validator — `bats-tests` has been red on
main since.

Switch the rejected-type example to `finding`, which is still
outside the enum and is also the canonical example cited in the
script's own header comment ("type=finding ... caught at push time").

Local: 11/11 in tests/scripts/check-next-work-schema-rows.bats pass.

* docs: capture finding generator postmortem (#157)

* fix(rpi): sort verdicts deterministically in context and status helpers (#158)

BuildPhaseContext and JoinVerdicts iterated the verdicts map directly,
producing non-deterministic output across runs. Sort keys before
rendering so prompt injection and status logs are reproducible.

Closes council finding W-7 (context-orchestration-leverage batch). The
related buildHandoffContext path was already fixed to delegate to
FormatVerdicts (which sorts); this completes the remaining helpers.

- cli/internal/rpi/status.go: sort keys in JoinVerdicts
- cli/internal/rpi/phased_context.go: sort keys in BuildPhaseContext
- tests: replace "ordering not deterministic" waivers with exact-order
  asserts and add a 50-run stability check

https://claude.ai/code/session_01Qw4bZvXUNuLs8Rp1j1homB

Co-authored-by: Claude <noreply@anthropic.com>

* fix(codex): audit noisy hook injections (#159)

* docs: add competitive radar (#160)

* feat(agents): harden operator control plane (#161)

* docs(discovery): plan agents control plane hardening

* feat(agents): harden operator control plane

* Release v2.39.0

* fix(tests): align next-work schema test with widened type enum

Commit ed35c47f added `docs` and `chore` to the script's VALID_TYPES,
but tests/scripts/check-next-work-schema-rows.bats:42 still used
`type:"docs"` as its supposed-to-be-rejected example, so the test
now passes through the validator — `bats-tests` has been red on
main since.

Switch the rejected-type example to `finding`, which is still
outside the enum and is also the canonical example cited in the
script's own header comment ("type=finding ... caught at push time").

Local: 11/11 in tests/scripts/check-next-work-schema-rows.bats pass.

* docs: capture finding generator postmortem (#157)

* fix(rpi): sort verdicts deterministically in context and status helpers (#158)

BuildPhaseContext and JoinVerdicts iterated the verdicts map directly,
producing non-deterministic output across runs. Sort keys before
rendering so prompt injection and status logs are reproducible.

Closes council finding W-7 (context-orchestration-leverage batch). The
related buildHandoffContext path was already fixed to delegate to
FormatVerdicts (which sorts); this completes the remaining helpers.

- cli/internal/rpi/status.go: sort keys in JoinVerdicts
- cli/internal/rpi/phased_context.go: sort keys in BuildPhaseContext
- tests: replace "ordering not deterministic" waivers with exact-order
  asserts and add a 50-run stability check

https://claude.ai/code/session_01Qw4bZvXUNuLs8Rp1j1homB

Co-authored-by: Claude <noreply@anthropic.com>

* fix(codex): audit noisy hook injections (#159)

* docs: add competitive radar (#160)

* fix(merge): drop unused AgentsDoctorError ref and prune allowlist entries without production refs

---------

Co-authored-by: Claude <noreply@anthropic.com>

* fix(merge): resolve conflicts by taking PR's refactored contradict/codex_runtime, main's overnight test schema

---------

Co-authored-by: Claude <noreply@anthropic.com>
2026-04-26 23:09:48 -04:00
Boden Fuller fc863c9d9f Refresh Codex skills for GPT-5.5 2026-04-24 21:56:40 -04:00
Boden Fuller 0496441989 Reduce skill catalog context footprint 2026-04-24 00:52:27 -04:00
Claude dd2eadc3ad chore: resync embedded hooks and codex artifact hashes
Unblocks CI on this PR. Both were pre-existing drift on main:

- cli/embedded/.../test-pyramid.md: re-ran `cd cli && make sync-hooks`
  to match source under skills/standards/references/. Fixes the
  embedded-sync and go-build `Verify embedded hooks in sync` gates.
- skills-codex/{crank,quickstart,standards}/.agentops-generated.json
  and skills-codex/.agentops-manifest.json: re-ran
  `scripts/regen-codex-hashes.sh`. Fixes the codex-runtime-sections
  `Validate Codex generated artifacts` gate.

https://claude.ai/code/session_01W5b6kSdX9wEDgXfVGCXTZa
2026-04-21 01:23:47 +00:00
Boden Fuller 816a36d83f docs: align box-drawing vertical lines in ASCII art
Systematic pass over 104 markdown files with box-drawing characters.
Fixed 15 files where interior `│` / outer `┌┐└┘` / divider `┬┴` columns
were off by 1-2 cols from their reference row. Zero content changes —
only whitespace and `─` fill chars moved to recover column alignment.

## Files fixed

**docs/** — CI-CD.md, agentops-system-map.md, brownian-ratchet.md,
context-packet.md, curation-pipeline.md, the-science.md,
comparisons/README.md, comparisons/vs-claude-flow.md

**skills/** — SKILL-TIERS.md, swarm/SKILL.md,
crank/references/fire.md, standards/references/test-pyramid.md

**skills-codex/** — crank/references/fire.md,
quickstart/references/full-catalog.md,
standards/references/test-pyramid.md

## Common failure modes found

- Off-by-one closing corners (e.g., `└───────── ┘` with stray space → `└──────────┘`)
- Box width vs content width mismatch (interior row 1-2 chars wider than its `┌┐` box)
- Diverging canonical widths across rows (widened the narrow rows rather
  than truncate content)
- T-junctions (`┬` / `┴`) not aligned with `│` rows above/below

## Scope preserved

- Tree diagrams (`├── file.md` / `│   └── child.md`) — intentional
  variable-width indentation, left alone
- Markdown pipe tables — not ASCII art, not touched
- Content of labels/box text — unchanged

Verified: `scripts/docs-build.sh --check` (mkdocs strict) passes clean.
2026-04-19 15:11:31 -04:00
Boden Fuller f73a49927b fix(codex): remove Claude-specific runtime rows from codex mirror + sync hashes
skills-codex/compile/SKILL.md: dropped claude-cli and claude rows from
the AGENTOPS_COMPILE_RUNTIME backend table; rewrote the 'When unset'
paragraph to describe CLI auto-detect without referencing the claude
binary. These were inconsistent with the skill's description field
which already scopes Codex users to ollama|api backends, and the
codex-runtime lint (validate-codex-runtime-sections.sh) rejects them.

skills-codex/quickstart/SKILL.md:50: swapped the
GIT=false + AO=true + GLOBAL_AGENTS=true branch hint from
AGENTOPS_COMPILE_RUNTIME=claude-cli to ollama/openai.

Hash regen also absorbs the swarm-skill hash drift from d8ea5c12
(worker-prompt template update).

Resolves the 2 pre-existing gate failures tracked in
.agents/rpi/next-work.jsonl under source_epic swarm-2026-04-15-8-issue.

Ref: .agents/learnings/2026-04-15-codex-mirror-runtime-string-lint.md
2026-04-15 14:22:07 -04:00
Boden Fuller fa6f4048af fix(compile,quickstart): embed compile.sh, auto-detect claude-cli, batch large corpora
Fixes three onboarding defects that surfaced on 2026-04-15 when running
against a global ~/.agents corpus from a non-git home directory:

1. `ao compile --full` failed in the installed bundle with
   "open skills/compile/scripts/compile.sh: file does not exist". The
   Makefile's sync-hooks target never copied compile.sh into
   cli/embedded/skills/, so the //go:embed all:skills fallback had
   nothing to fall back to. Fix: sync-hooks now seeds the script and a
   regression test (TestMaterializeCompileScriptFallsBackToEmbedded)
   asserts the embedded copy resolves when no local skills/ exists.

2. Headless compile implicitly required OLLAMA_HOST / OPENAI_API_KEY /
   ANTHROPIC_API_KEY with no actionable error when none were set, and
   ignored a locally installed `claude` CLI. Fix: resolveCompileRuntime
   auto-detects the `claude` binary and selects claude-cli runtime (no
   API key needed — inherits Claude Code auth). preflightCompileRuntime
   fails fast with an actionable error naming the exact env var to set.
   compile.sh gains a matching claude-cli backend and a --preflight flag.

3. The headless compiler concatenated all changed files into one LLM
   prompt, which is unworkable on 2000+ file corpora. Fix: compile.sh
   batches by --batch-size (default 25) and --max-batches (default
   unlimited); ao compile propagates both flags.

Onboarding gaps:

- $quickstart now detects a global ~/.agents corpus (GLOBAL_AGENTS=true)
  and, when GIT=false + AO=true, surfaces a harvest → compile →
  knowledge-activation path instead of only suggesting `git init`.
- Harvest SKILL.md clarifies that promotion writes to ~/.agents/learnings/
  (not ~/.agents) and adds a "which skill do I need?" decision table.
- Compile SKILL.md documents the claude-cli runtime and batching flags.
- skills-codex/compile/scripts/compile.sh wrapper now falls back through
  multiple candidate paths and finally delegates to `ao compile`, so an
  installed bundle without a sibling skills/ checkout still works.

Tests added:
- TestMaterializeCompileScriptFallsBackToEmbedded
- TestResolveCompileRuntime
- TestPreflightCompileRuntimeErrors (5 subtests)
- TestPreflightCompileRuntimeSuccess
- TestCompileScriptOptionsPassesBatchFlags
- TestQuickstartSkillCoversGlobalCorpus (both parity surfaces)

Verification:
  cd cli && go vet ./... && go test ./...   # all green
  bash skills/heal-skill/scripts/heal.sh --strict   # clean
  bash tests/docs/validate-doc-release.sh   # PASS
  bash scripts/check-contract-compatibility.sh   # 0 failures
  bash scripts/regen-codex-hashes.sh   # 3 skills rehashed
  bash scripts/generate-cli-reference.sh   # COMMANDS.md regenerated
2026-04-15 09:32:06 -04:00
Boden Fuller f6e122b946 docs: package codex native hooks release 2026-04-09 16:54:53 -04:00
Boden Fuller 6d80baf689 docs: align product framing across onboarding surfaces 2026-04-09 15:45:04 -04:00
Boden Fuller f6b502909b fix: align rpi lifecycle contracts and packet retention 2026-04-03 17:26:56 -04:00
Boden Fuller 98e581989c codex: retire stale artifact provenance metadata 2026-04-01 13:10:42 -04:00
Boden Fuller 0030790283 feat(skills): encode evidence-driven anti-patterns, unify flywheel metrics, add normalization defect detection
- Create global ~/.agents/MEMORY.md with 7 universal principles and top patterns
- Unify sigma/rho/delta definitions across skills/docs/code (code is truth)
- Add normalization defect scan to Athena defrag (placeholder, stacked frontmatter, bundled, dupes)
- Add anti-pattern pre-flight to /plan (dead infra, brainstorm-as-plan, 40% context, commit cadence)
- Expand pre-mortem from top-5 to top-8 FAIL patterns (dead infra activation, rollback maps, four-surface closure)
- Add 4 new forge uncaptured lesson categories (normalization defects, promotion pipeline, taxonomy, stale contradictions)
- Add normalization defect check to post-mortem four-surface closure
- Fix pre-existing broken link in flywheel-diagnostics.md (regex in code block)
- Sync all changes to skills-codex with Codex-specific adaptations preserved
2026-03-30 15:27:49 -04:00
Boden Fuller 3f6bb2bda4 chore(codex): sync Codex skills for 6 new lifecycle skills
Add Codex variants (SKILL.md, prompt.md, markers) for test, review,
refactor, deps, perf, and scaffold. Wire cross-references in 8 existing
Codex skill copies. Update catalog and manifest.
2026-03-27 19:39:12 -04:00
Boden Fuller ea5d1148bb feat: harden codex hookless follow-up flows 2026-03-24 10:09:27 -04:00
Boden Fuller 62b2b5b3a0 fix: narrow codex closeout ownership 2026-03-23 19:54:10 -04:00
Boden Fuller ebba51716d feat: wire codex lifecycle into codex skills 2026-03-23 19:21:36 -04:00
Boden Fuller 9e4ddcf859 feat: add codex hookless lifecycle fallback 2026-03-23 15:24:33 -04:00
Boden Fuller b5316baef7 fix: align codex skill bundle with runtime contract 2026-03-21 10:08:27 -04:00
Boshu2 8e59cf1389 fix(skills-codex): audit + fix 60+ findings, strengthen CI gates
Skills content fixes:
- Add metadata.tier to all 54 skills-codex/ frontmatter
- Fix wrong-directory cross-refs in 11 skills (skills/ → ../)
- Remove Claude primitive leakage from 13 skills (TaskCreate,
  AskUserQuestion, read_file, Agent tool, claude-code-latest-features)
- Fix dead refs, link missing references, remove orphaned Claude files
- Fix malformed ..$X link syntax in brainstorm, codex-team, rpi, validation
- Minor skills/ fixes: release refs, using-agentops count, push sections

CI gate hardening (false-pass elimination):
- heal.sh: scan skills-codex/, add MISSING_TIER/MALFORMED_LINK/DUPLICATE_REF
- audit-codex-parity.py: +7 Claude primitive patterns, +WRONG_XREF_DIR
- validate-links.sh: add skills-codex/ to scan scope (726 → 1117 links)
- validate-codex-generated-artifacts.sh: frontmatter check, invoke audit
2026-03-15 13:51:49 -04:00
Boshu2 f41e6d6a5a fix(converter): rewrite reference files through codex_rewrite_text
Reference .md files in skills-codex/ were copied verbatim from source,
bypassing all converter rewrite rules. Now .md files in references/,
scripts/, and other subdirs are processed through codex_rewrite_text()
during passthrough copy.

Empirically validated: Codex agent confirms 0 Claude primitives in
converted reference files (was 107). Remaining gap: crank/swarm
orchestration patterns need full Codex-native rewrites (not converter
fixes) — tracked separately.

Validated with: codex exec -s read-only (gpt-5.4)
2026-03-14 03:29:04 -04:00
Boden Fuller 9205270833 Harden local codex skill validation 2026-03-07 13:26:49 -05:00
Boden Fuller 6dfef761b3 Fix codex skill sync and local push gates 2026-03-07 12:14:08 -05:00
Bo b75bee0911 chore: automate codex skill parity (#72) 2026-03-05 20:43:27 -05:00
Boden Fuller 9d06279043 chore(na-3re): wave 2 — harden hooks, wire context, clean docs, add CI job (5 issues)
Issues: na-3re.7, na-3re.8, na-3re.9, na-3re.10, na-3re.12

Wave 2 changes (37 files):

- na-3re.7: Add check-test-staleness CI job (warn-only, continue-on-error)
- na-3re.8: Harden 4 hooks with WARN-first defaults:
  - pre-mortem-gate: AGENTOPS_PREMORTEM_FALLBACK=open (advisory by default)
  - task-validation-gate: recursion depth limit (max 3), AGENTOPS_METADATA_GATE=warn
  - ratchet-advance: epic-scoped gating via AGENTOPS_ACTIVE_EPIC
  - go-complexity-precommit: _validate_restricted_cmd helper
- na-3re.9: Extract section name constants, add context section validation tests
- na-3re.10: Clean stale /learn→/retro refs (5 docs), .agents/retros/→.agents/learnings/
  refs (17 files), fix post-mortem SKILL.md step numbering
- na-3re.12: Verify Go code items (6/7 already correct), add ASCII fast-path comment
2026-03-05 10:21:27 -05:00
Boden Fuller 96b62f20fb chore: stage council V2 contract wiring and skill-codex updates
Wire 6-judge analytics recommendations into skill contracts, add push
skill, sync embedded hooks, and update docs/product metadata.
2026-03-02 06:48:56 -05:00
Boden Fuller e7fd527b61 fix(skills): replace three stale commands that break rpi/evolve/crank
1. ao flywheel status (14 files) → ao metrics flywheel status
   `ao flywheel` only has `close-loop` subcommand. Status lives under
   `ao metrics flywheel status` (metrics_flywheel.go).

2. ao settings notebook update (skills-codex/retro) → ao notebook update
   `ao settings` namespace was removed in 4fd2512c; top-level `ao notebook`
   is the correct form.

3. ao start seed / ao start init (skills-codex/quickstart) → ao seed / ao init
   `ao start` namespace was removed in 4fd2512c; seed and init are top-level.
2026-02-27 10:46:48 -05:00
Boden Fuller 8455f0c796 fix(skills-codex): replace stale ao know/ao quality namespace references
The CLI namespace was flattened in 4fd2512c (remove know.go, work.go,
quality.go), but skills-codex/ was never updated. Replace all stale
two-token prefixes with their flat equivalents across 17 SKILL.md files:

  ao know forge     → ao forge
  ao know inject    → ao inject
  ao know search    → ao search
  ao know lookup    → ao lookup
  ao know temper    → ao temper
  ao quality flywheel → ao flywheel
  ao quality pool     → ao pool
  ao quality metrics  → ao metrics
  ao quality maturity → ao maturity
  ao quality badge    → ao badge
  ao quality constraint → ao constraint
  ao quality contradict → ao contradict
  ao quality dedup    → ao dedup
  ao quality curate   → ao curate

71 occurrences fixed. Codex agents following these skills will no longer
invoke commands that return "unknown command".
2026-02-27 10:43:26 -05:00
Boden Fuller 9da36b33f5 refactor: remove npx skills — replace with native curl installers
skills/update/SKILL.md: bash <(curl .../install.sh) replaces npx
skills-codex/update/SKILL.md: curl install-codex.sh for Codex
scripts/install.sh: git archive download, no npm required
scripts/extract-release-notes.sh: remove npx from update hint
cli/cmd/ao/doctor.go: update "no skills found" message
cli/cmd/ao/seed.go: update skills install reference
skills/quickstart/SKILL.md: update troubleshooting command
skills/quickstart/references/troubleshooting.md: same
skills-codex/quickstart/references/troubleshooting.md: same
validate.sh (both): grep for install.sh instead of npx
All docs/AGENTS.md/README.md/CLAUDE.md: replace npx references
2026-02-27 09:15:00 -05:00