Commit Graph

47 Commits

Author SHA1 Message Date
boshu ad494e6f88 feat: apply mined AgentOps workflow improvements 2026-07-15 21:32:15 -04:00
boshu 4823077621 refactor: cut AgentOps to a single-pass evidence loop 2026-07-14 22:01:50 -04:00
boshu a2423cfaca refactor(loop): require four umbrella receipts 2026-07-13 08:23:27 -04:00
boshu 9c6a662203 feat(loop): refactor the four-umbrella operating loop
Bead: age-four-umbrella-loop-refactor-xz4ps.1
2026-07-13 06:48:50 -04:00
boshu c6e23d2036 feat(skills): mesh native genies and factory orchestration (age-o43w) 2026-07-10 10:52:06 -04:00
Boden Fuller fbba8af5ac feat: land audit hardening and goal-design workflow 2026-07-09 12:20:53 -04:00
boshu 3fe37b1867 docs: repair strict docs-build link/anchor warnings + disposition the rest (age-y0ww)
Make `scripts/docs-build.sh --check` a MEANINGFUL signal instead of advisory
noise (was 82 strict-mode warnings, always ignored).

Root cause: mkdocs --strict fails on 82 links that leave docs/ (the knowledge
graph deliberately links out to skills/, scripts/, schemas/, evals/, and canonical
repo-root docs). All 82 were verified to resolve to REAL repo files on disk — zero
accidental breaks — so they are intentional cross-references, not bugs.

Fixes (category A + B, INFO-level drift, verified against built HTML anchors):
- Anchors: GLOSSARY SKILLS.md#beads->#beads-br; INCIDENT-RUNBOOK scenario-C
  double->single hyphen (x2); pawls.md directive-precedence / diversity-mode /
  escalation double->single (referrers in ADR-0007, autonomy-ladder, pawls self);
  catch-derived-fuel membrane update anchor (single + date suffix).
- Suffixes: levels L1-L4 README next-level links + workflows meta-observer ->
  explicit README.md targets.

Dispositions (category C + D): the 82 intentional external cross-refs are enumerated
in tests/docs/mkdocs-strict-allowlist.txt and explained per-class in
docs/docs-build-dispositions.md. `docs-build.sh --check` now runs mkdocs --strict
end-to-end (nothing weakened, no --no-strict) and fails on any warning NOT on the
allowlist — proven: a fresh broken link still fails the check; the 82 pass.

Result: `docs-build.sh --check` is CLEAN-or-dispositioned (exit 0). Wired doc into
nav + CONTRIBUTING pointer.
2026-07-08 23:29:25 -04:00
boshu 9a23ba9cc5 refactor(skills): execute the audit retire wave — 8 skills retired/merged, 66 -> 58, spine 15 -> 13 (age-skills-audit-fable-l6ic.12)
Executes the age-e3zk decision (fresh disposition pass: docs/audits/
skills-audit-2026-07-06.md; council 2026-07-06 parked this behind age-p2c7,
which landed as d7f950ca8; operator directive 2026-07-07 authorized finishing
all filed work).

RETIRED: red-team (validate --debate absorbs), perf (frontier-generic, zero
repo bindings), flywheel (ao flywheel status CLI is the surface).
MERGED: eval-outcomes -> validate (--mode=pre-impl --target=scenario),
review -> validate (--mode=pr), compile + curate -> post-mortem (mining half;
mechanical surfaces stay ao compile / ao lookup), recover -> status
(--recover mode; deep playbook preserved at status/references/
recovery-playbook.md; delivers l6ic.7 and the l6ic.13 row reconcile).

Mechanics: ao skills retire x8 (trees incl. images/*/skills, terminal ledger
rows via --into, .agy-plugin review bundle removed); absorption tombstones in
docs/SKILLS.md + SKILL-TIERS.md (56 user-facing + 2 internal = 58, counted);
spine gate re-anchored 15 -> 13 (l6ic.11 minimal consistency: review +
red-team leave; membrane 7 + bookkeeper 6); bespoke twins post-mortem/status
hand-mirrored per AGENTS-CODEX; manifest pruned of orphan twin rows (62 -> 57);
overrides catalog pruned of 8 retired rows; gemini verify core_skills +
claude/codex image manifests updated; retired-subject eval
red-team-adversarial-validation.json removed (not canary-listed).

Gates: spine-integrity 13 PASS; wiring-closure PASS; skill-frontmatter 58/58;
codex manifest+artifacts+parity PASS; regen-check ALL GREEN; SKILL-TIERS also
fixed Opus 4.6 -> 4.8, GOALS.yaml -> GOALS.md, flywheel diagram to CLI truth
(l6ic.6 pre-work). Residual prose mentions in non-gated docs are the l6ic.2
debris sweep's scope.
2026-07-07 11:06:35 -04:00
boshu 0ffaa6561f feat(skills): using-gc operator skill + gc-membrane reference — gas-city factory enablement (age-gc-integrate-8aom.1, delivers age-gc-adoption-u0he.3)
The vibing-with-ntm analog for gc: standup (native store contract, LAW-0
print_args, pack wiring, pre-trust), the day-to-day quest loop, admin
(doctor cadence, backup, binary discipline, config knobs), and the
symptom-keyed stall ladder (submit-only drain recovery, trust modal,
quarantined check step, spawn livelock, diff-frame refutes). gc-membrane
carries the close-door reference (finalize semantics, pawl-verdict.v1
anatomy, RBAC). Router lines in SKILLS.md + SKILL-ROUTER.md (operator
choice, never auto-routed); AGENTS.md substrate pointer; tier + disposition
ledger entries; regen projections (64→66).

Verified: silent-novice probe — fresh agent restricted to the skill files
answered 10/10 standup/run/admin/troubleshoot scenarios correctly with
citations.
2026-07-06 08:51:28 -04:00
boshu 257be5312e feat(skills): add ms skill — meta_skill search/load doctrine (MCP consume, CLI writes) 2026-07-02 11:18:48 -04:00
Bo aae1a3af9a refactor(skills): consolidate catalog 70 → 63 — cut acfs, fold 6 skills into their canonical owners (#889)
Full-catalog skills audit + consolidation via ao skills retire: acfs cut; autodev→evolve, skill-auditor→heal-skill, beads-workflow→beads-br, continuity-loop→using-atm, inject→operationalize, forge→curate. Trigger surfaces preserved via absorbed-from notes; ao CLI surfaces unchanged; dispositions ledger flipped to historical rows; registries/codex twins/eval canaries regenerated and retargeted. Includes self-review fixes: ledger-aware DEAD_XREF in heal.sh, scenario-linkage allowlist retarget, codex-twin dead-path repairs, strengthened eval canaries, fold-survival guard for operationalize, and beads consolidation test hardening.
2026-07-02 09:23:55 -04:00
boshu c7c074e739 refactor(skills): fold substrate-skill sprawl 13->~5 via the dispositions ledger (age-focus-membrane-bookkeeper-m1wg.22)
Fold 5 substrate skills into their survivors (ao skills retire --into), after
re-litigating each keep-rationale:
- vibing-with-ntm -> ntm       (operator layer over the same NTM tools)
- agy-headless-evidence -> agy-native  (consumes agy-native; evidence is a
  listed capability; mirrors agy-mcp/rules/sidecar folds)
- codex-approval -> codex-exec (codex-runtime driving-adapter; mirrors the
  codex-* consolidation)
- dual-pane-atm -> using-atm   (a specialization of the ATM substrate)
- orchestrate -> using-atm     (route/preflight/verify instrument; the ao
  orchestrate CLI survives, only the skill doc folds)

using-atm is the surviving out-of-session-substrate consolidator. Manual cleanups
ao skills retire does NOT reach: git rm .agy-plugin/skills/vibing-with-ntm +
drop it from validate-agy-plugin.sh core_skills; drop the dual-pane-atm/orchestrate
lines from scripts/.scenario-linkage-allow; drop vibing-with-ntm from
scripts/lint/codex-cross-runtime-skills.txt; repoint 26 broken cross-ref links to
survivors + fix frozen-twin generated_hash. scenario-linkage / skill-redirects
(47 resolve) / doc-skill-refs / manifests all green.

NOTE: validate-agy-plugin.sh has a PRE-EXISTING 9-bundle drift at HEAD (agent-mail,
beads-*, cass, cc-hooks, dcg, ntm, rch — stale hand-committed .agy-plugin bundle,
no sync tooling, not a routed gate); untouched here, flagged for a follow-up.
2026-07-01 02:28:07 -04:00
Boden Fuller 07d9a2d6e6 feat(skills): revive + rename reverse-engineer-rpi -> reverse-engineer with the steal-map discipline
Restore the cut reverse-engineer-rpi skill (was cut in 94db74318), rename it
(drop the rpi suffix across 16 files + both trees), and upgrade it from a pure
teardown tool into teardown -> steal-map (have/gap/steal/park/reject) -> route
one-way doors to /discovery's mixed-model duel. Folds this session's discipline:
validated cross-family not self-report, park substrate we delegate (ADR-0009),
steal the pattern not the platform, probe real state not stale. 308->125 lines,
codex twin mirrored (slim frontmatter + hashes), disposition keep row added.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-18 13:23:59 -04:00
Boden Fuller a4104bb966 feat(skill): behavior-first-planning — back bdd-foundry before thinning (age-3va.2)
Extract the behavior-first-planning discipline (intent → frozen Gherkin
behaviors → EXECUTED-red acceptance tests → derived spec → acceptance-gated
bead DAG) into skills/behavior-first-planning/SKILL.md, so the capability
survives independent of the bdd-foundry workflow. The rule it enforces: no
runnable acceptance test, no bead — closing the spec-first "beads ship with no
done-criteria" hole (the 3/10 problem) before W3 thins the workflow.

Covers the four bdd-foundry phases + the closing independent-review gate
(validate before tracker write). Codex twin mirrored (manual) + hashes regen;
dispositions ledger row (BC3 Loop, domain, planning, parity required); registry
+ skill-domain-map + SKILL-TIERS + count-propagation regenerated (73→74).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 18:48:23 -04:00
Boden Fuller daf5c4fdd3 feat(orchestrate): Phase 1 instrument lane + profiles contract (age-ueu)
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-17 16:48:21 -04:00
Boden Fuller fbcfbad7f0 feat(skills): land dual-pane-atm skill (unblocks fast gate)
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-17 10:56:09 -04:00
Boden Fuller 7e447c02b5 docs(destale): wave 2 + ratchet — all live docs off retired tech (age-docs-staleness-remediation-cko)
Completes the staleness epic. 42 P2/P3 files converged to current truth
(bd→br, gascity/gt-sling/mayor→NTM+Agent Mail, daemon→substrate, hooks→hookless,
CI-authoritative→push-to-main local Go gate); GLOSSARY's 18 dead skills/* links
repaired to ../skills/<name>/SKILL.md (19 links, 0 broken); contracts/runbooks
that freeze retired-system nouns bannered RETIRED/HISTORICAL rather than rewritten.

Adds the Arc-7 ratchet — scripts/check-docs-no-retired-tech.sh — which scans all
live docs (260) for retired-subsystem commands/phrases and fails on regression.
A doc opts out by carrying a RETIRED/HISTORICAL/SUPERSEDED banner (or being an
ADR / migration / upgrade / index doc), and lines that describe a removal are not
flagged. Running it caught 12 stale refs the deep-read sweep missed — a
"CI is the authoritative gate" cluster (agentops-brief, primitive-chains,
INCIDENT-RUNBOOK, knowledge-flywheel, philosophy, software-factory), stale
hook-smoke in release-e2e-checklist, and GasCity descriptors in
contracts/index + SCHEMAS + strategic-direction — now fixed. Gate: PASS.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 10:29:17 -04:00
Boden Fuller cf90ec392a feat(skills): consolidate beads 4->2 — retire beads umbrella, fold lifecycle doctrine into beads-br (ag-ez7y6 #beads-consolidate-4to2)
Salvaged the uncommitted work from wt-ag-ez7y6 and completed the 4->2 beads
skill consolidation the salvaged test asserts:

- Fold the "Issue-Lifecycle Discipline" doctrine (live-reads-authoritative,
  scoped-closure-proof, parent-reconciliation, narrow-the-umbrella-issue,
  normalize-stale-queue) from the retired `beads` umbrella into beads-br.
- Retire skills/beads --into beads-br via `ao skills retire` (trees removed,
  ledger row moved to historical: merged-into beads-br).
- Re-target every retired-skill reference: crank/implement/plan/post-mortem/
  refactor frontmatter+deps, SKILL-TIERS rows, docs/SKILLS.md, GLOSSARY link,
  sku_catalog LOOP_MOVES[2], image manifests (counts adjusted).
- Codex twin: mirror the doctrine into skills-codex/beads-br, prune `beads` from
  the codex catalog/manifest, regen hashes (parity gate age-yxl).
- Add cli/cmd/ao/beads_consolidation_test.go (L2 structural invariants). Uses a
  leak-proof repo-root finder (skills/+docs/contracts/) because the shared
  findRepoRoot keys on .agents/, which the cmd/ao suite leaks into the pkg dir.

Fixed an ao-skills-retire bug surfaced here: the historical row was appended at
the end of the `workflows:` section (between historical: and dispositions:)
instead of inside historical:. Corrected manually; full fix tracked separately.

Bounded-context: BC3-Loop
Evidence: cli/cmd/ao/beads_consolidation_test.go

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-16 23:42:28 -04:00
Boden Fuller 3e13ee4e66 feat(converge): thin converge skill memo over ao converge (ag-slice4-skill-thin-memo-1wi5y)
skills/converge/SKILL.md is a thin (<=120 line) lazily-loaded memo that points
at the Go 'ao converge' command — NOT a reimplementation (it's a Go CLI, not a
skill). References 'ao converge', carries the two-leg cross-family dispatch table
+ the LAW-0 rule, no shell-loop reimplementation. Disposition row added; full
make regen-all propagated the new skill into registry.json + the generated docs
(SKILLS/GLOSSARY/ARCHITECTURE/context-map/domain-map + 71->72 counts).

Closes-scenario: ag-slice4-skill-thin-memo-1wi5y#S4.1
Bounded-context: BC5-Runtime

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-13 14:09:50 -04:00
Boden Fuller 24e2296558 chore(codex): rebase-4 reconciliation — splice repair, twin re-registration, regen (ag-xwjlc)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-12 23:24:29 -04:00
Boden Fuller 334a179449 feat(skills): pre-land-refuters — unbiased dual-model validation panel before landing (ag-48ybr-adjacent; pattern codified from ag-s43tg)
Freeze a mechanical claim, dispatch a stake-free Fable refuter + a codex exec
read-only refuter in parallel with the full gate, fix findings forward, re-verify
pins on the landed tree. Self-audit: WARN (acceptable v1). Factory tax paid:
codex twin+prompt, manifest/catalog/dispositions/tiers rows, counts 67, regen green.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-12 14:48:50 -04:00
Boden Fuller 9dd62c75c7 merge: origin/main (codex-approval + task-packet contract) into ag-s43tg prune — union resolution + validator-driven fixes
Dual independent validation (unbiased Fable + codex exec) refuted the first
cut; this merge-commit carries the fixes: deps pin phrase landed in security,
brainstorm body/rubric/feature rescued into discovery references and bats
repointed, skills/catalog.json + image manifests regenerated/remapped to fold
targets, docs/SKILLS.md routes rewritten, dead vibe/ship-loop frontmatter
edges retargeted, validate description carries readiness signal, deep-sweep
post-mortem sweep checks restored against surviving references, bd-era canary
asserts dropped, counts re-baselined to 66 (codex-approval arrived upstream).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-12 09:58:57 -04:00
Boden Fuller 94db743181 feat(skills)!: skill-corpus prune phase 2 — fold 39 sources into 21 targets + cut reverse-engineer-rpi (105→65) (ag-s43tg #single-writer-final-pass)
21 trigger-graft augments (aug/* branches) merged; 40 skill dirs removed across
skills/, skills-codex/, images/*; dispositions ledger flipped to terminal
historical rows (42, rows never deleted); all factory surfaces regenerated
(registry, domain map, context map, codex twins+hashes, overrides catalog,
SKILL-TIERS, count diagrams); embedded using-agentops retired (BC5 carve-out);
validators/canaries repointed to fold targets (bd-era + Lane-A pre-existing
reds fixed honestly: mkdocs strict, beads canary, council verdict schema,
finding-registry rows, prompt catalog); vibe reference library + ship-loop
anti-patterns + brainstorm ideation refs rescued into fold targets.

Also clears the account-rotation factory-parity debt (3384f5638).

Closes-scenario: ag-s43tg#single-writer-final-pass
Bounded-context: BC4-Factory
Evidence: docs/plans/ag-s43tg-trigger-manifest.md (pinned-phrase contract)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-12 09:49:02 -04:00
Boden Fuller fefdffa1c3 feat(codex): add fable approval skill (ag-codex-runtime-enhancement-o0nds.7) 2026-06-12 08:45:32 -04:00
Boden Fuller 40ee1c34fa chore(skills)!: skill-prune Phase 2 — execute disposition ledger remainder (ag-if7p)
9 remaining ledger rows (49 of 58 already landed via Phase 1 5e4f7e58a):
5 codebase-* skills folded into codebase-audit (references/REPORT-MODES.md,
context_rel adopted), 4 retired. 114 -> 105 skills (97 user-facing + 8
internal). Registry regen: SKILL-TIERS 166->105 (clears Phase 1 backlog),
sync-skill-counts (12 files), codex overrides catalog 114->105, manifest
180->171, context/domain maps, skill catalog. Repairs two validators that
were red on main: validate-agy-plugin.sh (10 stale core_skills + bundle
prune to 17 + drift resync) and validate-skill-flow.sh (5 orphans -> 0;
codebase-audit wired supplier-to plan/validate, handoff allowlisted,
cross-vendor-trust-gate consumes converted-skill). Pre-cull tree archived
at archive/skill-prune-phase2-20260611.

Closes-scenario: ag-if7p#phase2-execute-ledger
Bounded-context: BC1-corpus
Evidence: evidence/skill-prune-phase2.md
2026-06-11 08:39:45 -04:00
Boden Fuller 61421cdb93 chore(skills): align generated registries + counts for the codebase-* quartet; drop stray security-suite leftover (cp-801l)
- regenerate docs/reference/agentops-skill-domain-map.md (166 skills, 5 BCs)
- bump narrative counts 162->166 in skill-domain-map + domain-evolution-bdd
- cli embedded sync (make sync-hooks) for using-agentops SKILL.md
- remove stray untracked skills/security-suite/ leftover (__pycache__ only;
  not tracked on main — retired skill remnant) so disk == tables == 166
- resync skill counts across PRODUCT.md/docs after the removal (167->166)

Local gate checks green: registry drift PASS, domain-map golden PASS,
domain evolution 166, lint suite OVERALL PASS, counts in sync.
2026-06-09 20:03:35 -04:00
Boden Fuller 584701af8f feat(skills): register codebase-* quartet across catalog surfaces (cp-801l)
Gate-surfaced registrations for the 4 canonicalized skills:
- docs/contracts/skill-dispositions.yaml rows (append-skill-disposition + refined rationales)
- skills/using-agentops/SKILL.md Expert Skills catalog entries (heal.sh CATALOG_MISSING)
- skills-codex/<name> parity_only wrappers + register-new-codex-skill.sh
  (manifest + overrides catalog), refresh-codex-artifacts for using-agentops
- skills/SKILL-TIERS.md: 4 user-facing rows + security-suite internal row
  (pre-existing tables!=directories gap: dir tracked on main with no row)
- sync-skill-counts.sh doc patches incl. hand-fixed ASCII diagrams (162->167)

All local gates green: heal --strict clean, frontmatter 166/166,
codex override coverage + generated artifacts pass, counts in sync.
2026-06-09 19:45:48 -04:00
Boden Fuller e0932310df feat(skills): 4 coverage-gap skills + 20 sidecars onto current main (cp-z1s5) 2026-06-07 22:34:51 -04:00
Bo 413e04ad14 merge: Claude/Gemini/Codex image bundles onto distilled corpus
Squash merge image consolidation after CI repair.\n\nValidated by GitHub Actions: changes, lint, codex-parity, skills-integrity, skill-gates, contracts-sync, correctness on Ubuntu and Windows, security, eval, skill-eval, doctrine-proof, process-hygiene, and summary. Cursor Bugbot was pending/advisory; main has no branch protection/rules requiring it.
2026-06-07 18:22:34 -04:00
Bo e2964625c1 feat(agy): migrate Gemini lane → AGY (Antigravity); retire deprecated gemini-cli skills (#831)
## What
Google is deprecating the **gemini CLI** in favor of **Antigravity
(AGY)**. This migrates the vendor lane: retire the 4 legacy `gemini-*`
skills (built for gemini-cli affordances) and build out the real **AGY
lane**.

## Skills
- **Retired:** `gemini-native`, `gemini-mcp-hooks`,
`gemini-headless-evidence`, `gemini-skills-extensions` (both `skills/`
and `skills-codex/`).
- **AGY lane (4, dual-form):** `agy-native` + `agy-rules-workflows`
(enhanced — folded in the still-relevant intent, added
`/goal`+`/schedule`), `agy-mcp-plugins` + `agy-headless-evidence` (new).
Targeted at AGY's real affordances (Antigravity plugins/MCP/hooks,
agentapi headless, scoped worktrees) — **not** a 1:1 rename of
gemini-cli surface.

## Derived surfaces
Regenerated registry (171 skills), codex catalog/manifest,
skill-domain-map, SKILL-TIERS, context-map, narrative docs. `~/.gemini`
*paths* preserved (AGY's real config root).

## Validation
- Door-9 (no `claude -p`) PASS across all skills.
- `scripts/regen-all.sh --check` → ALL GATES GREEN.
- 0 references to dead `gemini-*` skill names. JSON valid.

## Not in this PR (follow-up: fork-and-own)
Binary-tool AGY support — `caam` (add `agy` tool) and `ntm` (add `--agy`
pane). Auth is already shared via `~/.gemini`; these are launch/spawn
wiring gaps tracked separately.
2026-06-07 13:48:01 +00:00
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 f4f991bbda docs: fix broken intra-repo links in docs/ (ag-28dp #docs-link-rot) (#781)
## What

Fix 44 broken intra-repo links across 7 files under `docs/`, surfaced by
a `docs/` markdown link audit. `mkdocs.yml` has `strict: false`, so the
broken links slipped past CI — but they break GitHub-raw viewing and
agent file-reading (the repo treats pointer rot in base docs as a
defect).

## Two pointer-rot classes

1. **41× `](skills/<name>.md)` → `](../skills/<name>/SKILL.md)`** —
skills live at `skills/<name>/SKILL.md`, never `skills/<name>.md`, and
`docs/` is one level deep so the target needs `../`. Several links
already had the **correct link text** (e.g.
`[skills/pre-mortem/SKILL.md](skills/pre-mortem.md)`) — only the href
was wrong, confirming intent. Special case: `skills/catalog.md` →
`SKILLS.md` (`docs/SKILLS.md` = the complete 82-skill reference).
2. **3× `](cli/commands.md)` → `](../cli/docs/COMMANDS.md)`** — the
generated CLI command doc.

Files: `GLOSSARY.md`, `index.md`, `context-lifecycle.md`,
`behavioral-discipline.md`, `create-your-first-skill.md`,
`context-packet.md`, `software-factory.md`.

**Not touched:** the intentional placeholder links in
`docs/standards/markdown-style-guide.md` (syntax demos: `url`,
`image.png`, `./other-doc.md`, etc.).

## Verification

- `docs/` broken-link scan: **44 → 0** outside the style-guide
placeholders.
- `markdownlint-cli2` on all 7 files: **0 errors**.
- Pure link-href changes (44 insertions / 44 deletions); no prose or
behavior change.

Closes-scenario: ag-28dp#docs-link-rot
Bounded-context: BC1-Corpus
Evidence: ag-28dp
2026-06-06 10:17:39 -04:00
Bo 02659e7b44 docs: fix GLOSSARY skill count (66→82, gated) + portable test-debt path (ag-j4tw #counts) (#709)
## What

Verified-clean subset of the second-wave counts/misc bead (ag-j4tw).

- **GLOSSARY.md:170** "ships 66 shared skills" → 82, and **extended
`sync-skill-counts.sh`** to cover the call-site so it self-heals and CI
catches future drift (same gate pattern as ag-bcl4).
- **test-architecture-debt-analysis.md:3** hardcoded Mac path
`/Users/fullerbt/…/cli/cmd/ao/` → repo-relative `cli/cmd/ao/`.

## Verify-first dropped FALSE POSITIVES
Applying the session's recurring lesson (audit agents over-flag):
- ENV-VARS `COUNCIL_EXPLORER_MODEL/TIMEOUT`, `COUNCIL_R2_TIMEOUT` are
**live** (consumed by `skills/council/`, not `cli/` — the audit only
grepped cli/).
- `MEMRL_MODE` exists (3 files); `rg-optimized.md:70` is blank; ROADMAP
"hookless S2–S5" is a real follow-on; `ao inject` is live.

## Still open (ag-j4tw stays open)
- agentops-brief.md / agentops-system-map.md counts are entangled in
**hook-diagram lines** → handle with ag-t1ca.
- TESTING.md `tests/hooks/` (hooks) + testing-skills.md
`tests/_quarantine/claude-code` → `tests/claude-code` (larger path
rework).

## Verification
- `scripts/sync-skill-counts.sh --check` → clean (GLOSSARY now covered)

Closes-scenario: ag-j4tw#counts-glossary
Bounded-context: BC2-Validation
Evidence: docs/GLOSSARY.md
2026-06-03 21:44:22 -04:00
Bo e431339c40 feat(hookless)!: remove all hooks — skills + CLI only (soc-57b7f #remove-all-hooks) (#511)
## What

AgentOps 3.0 goes **fully hookless**. This removes the entire hook
product surface — the product is now skills + the `ao` CLI with **zero
hooks**. CI is the authoritative gate.

## Deleted

- `hooks/` — 46 hook scripts + `hooks.json` + examples (whole directory)
- `cli/embedded/hooks/` + embedded `hooks.json` +
`embedded/lib/hook-helpers.sh`
- `lib/hook-helpers.sh`
- `ao hooks` CLI command: `cli/cmd/ao/hooks.go`, `hooks_run.go` + 5 hook
test files; `cli/internal/bridge/hooks.go`;
`cli/internal/doctor/fix_hooks.go` + test
- Codex hook manifest (`hooks/codex-hooks.json`) + handler/audit scripts
(`scripts/audit-codex-hooks.sh`, `install-dev-hooks.sh`,
`test-hooks-output.sh`, `test-codex-hookless-lifecycle.sh`,
`test-hookless-rpi-phased.sh`)
- Hook lease surface: `docs/contracts/hook-lease-*`,
`schemas/hook-lease.v1.schema.json`,
`scripts/check-hook-lease-inventory.sh`,
`check-hook-port-replacements.sh`, `generate-hook-lease-inventory.py`
- Hook docs: `docs/HOOKS.md`, `cli/docs/HOOKS.md`,
`docs/architecture/hook-noise-audit.md`,
`docs/contracts/hook-runtime-contract.md`
- `tests/hooks/` (whole dir) + hook test scripts; 5 hook eval suites +
fixtures

## CI gates removed

`hook-preflight`, `validate-hooks-doc-parity`, `hook-output-schema-lint`
(+ scripts/bats), the hook eval suites, the `test-runtime-codex-smoke` /
`test-codex-native-install` / `test-codex-plugin-install` hook-handler
assertions, the cli-integration hook-lifecycle steps, the bats
`tests/hooks/*` glob + orphan-hooks audit, and the `--with-hooks`
install path. `embedded-sync` now validates only lib/skills. Both
summary `needs:` lists + the summary echo +
`docs/contracts/ci-jobs.yaml` updated; `validate-ci-policy-parity`
passes (66 rows). `.codex-plugin/plugin.json` drops the "Hooks"
capability.

## Load-bearing PRESERVED (reported, not forced)

- **`cli/cmd/ao/codex_runtime.go`** — the codex runtime *lifecycle
profile* (`HookCapable`/`HookConfigured` detection) is a
runtime-capability abstraction used by 6 `validate-codex-*` CI gates,
distinct from the hook product. Deleting it is a separate refactor.
- **`hooks-authoring` skill** + `schemas/hooks-manifest.v1.schema.json`
— reframed as an opt-in "author your own hooks" guide. Deleting the
skill cascades into catalog/domain-map/dispositions/context-map golden
files (skill-count sync), out of scope for the hook-product removal.
- **`scripts/pre-push-gate.sh`** — retired local gate (not in CI);
self-skips deleted hook scripts via `[[ -x ]]` guards; its 55 bats tests
still pass.
- Domain-enforcement audit keeps the `enforced`-mode schema for
backward-compatible JSON readers, but the hookless resolver only returns
`audited`/`unavailable`.

## Verification

`go build` / `go vet` clean; `go test ./...` = **11849 passed, 0
failed** (68 pkgs). gofmt clean on all touched files. Green: registry
`--check` (0 hooks), `regen-codex-hashes --check`,
`validate-ci-policy-parity`, `check-wiring-closure`,
`validate-embedded-sync`, `validate-manifests`, `validate-agents-split`,
`doc-release` (0 broken links), `generate-cli-reference --check`,
`heal.sh --strict`, codex/claude/plugin smoke tests, baseline-audit (0
stale). Diff: 231 files, +354 / −39803.

Closes-scenario: soc-57b7f#remove-all-hooks
Bounded-context: BC5-Runtime
Evidence: .github/workflows/validate.yml
2026-05-24 11:19:37 -04:00
Bo cca8fc6731 Drain open next-work.jsonl: 6 PRs in one branch (epic soc-xlw8) (#266)
* docs(mkdocs): fix 5 anchor mismatches + 1 unresolvable relative link (soc-2yx9)

mkdocs slugify collapses em-dash spacing in headings to a single hyphen, so
'## A — B' produces id="a-b", not 'a--b'. Five doc cross-references encoded
the visual double-dash and were silently flagged INFO by `mkdocs build --strict`.

Fixes (slugs verified against built site/ HTML):
- docs/GLOSSARY.md       → how-it-works.md#ralph-wiggum-pattern-fresh-context-every-wave
- docs/cdlc.md (×2)      → the-science.md#part-6-the-convergence-cdlc-as-the-unifying-spine
- docs/context-lifecycle.md (×2) → #the-knowledge-ledger-session-to-session-flow
- docs/releases/2026-03-21-v2.28.0-notes.md → ../CHANGELOG.md#2280-2026-03-21

Plus one structural fix:
- docs/documentation-index.md → ../evals/workbench/ replaced with the
  github.com URL pattern used by every other extra-docs link in this file.
  evals/ lives outside docs_dir so mkdocs cannot resolve relative links there.

Acceptance: zero INFO/WARN/ERROR mentioning these 5 files in
`mkdocs build --strict`. Pre-existing INFO lines on templates/ and L*-*/
README directory links are out of scope (research §U4 / pre-mortem L3).

Closes soc-2yx9 from epic soc-xlw8.

* fix(goals): anchor cwd to GOALS.md repo root for `ao goals measure` (soc-crzz)

Reproduction: from /tmp, `ao goals measure --file <abs>/GOALS.md` returned
21/22 fails with "bash: scripts/check-*.sh: No such file or directory".
Goal Check strings are relative paths; bash inherited the caller's cwd.

Fix: at RunMeasure entry, derive the repo root from the absolute GoalsFile
path and chdir to it for the duration of the measurement; restore the prior
cwd via deferred no-op-safe restorer (`withGoalFileCwd`). When GoalsFile is
not inside a git repo, the helper returns a no-op so today's behavior is
preserved outside repos.

Also expose `Paths.RepoRoot` from cli/internal/paths so future callers can
detect the resolved repo top without re-shelling git. The field is empty
when the resolver was given a directory not inside a repo, mirroring
`git rev-parse --show-toplevel` semantics.

Smoke (post-fix): `cd /tmp && ao goals measure --file <abs>/GOALS.md --json`
returns 22/22 pass, zero "No such file" errors.

Tests:
- TestRunMeasure_RelativeScripts_FromExternalCwd exercises the bug path
  end-to-end (fake git repo + relative-script goal + chdir to outside).
- TestWithGoalFileCwd_NoRepoFallback verifies the no-repo no-op.
- TestWithGoalFileCwd_EmptyPath verifies the empty-input no-op.

Per pre-mortem H1 (.agents/council/2026-05-07-pre-mortem-drain-open-next-work-items.md).
Closes soc-crzz from epic soc-xlw8.

* feat(eval): add stdout_contains_auto_detect ratchet for live test counts (soc-bvhn)

Two eval pins drifted silently when tests were added:
  - evals/agentops-core/hook-lifecycle-behavior.json    "Total: 226"
  - evals/agentops-core/pre-push-gate-governance.json   "1..51"
The 226-pin only counted tests/hooks/test-hooks.sh and missed the 86-test
test-hooks.bats suite entirely; the 1..51-pin was a manually-bumped
plan line (commit bd104270 was 50→51 after PR #263 added a test).

Replace both with a new expectation type stdout_contains_auto_detect that:
  1. Re-executes a source-of-truth command (e.g. `bash tests/hooks/test-hooks.sh`)
  2. Captures a regex group from its combined stdout+stderr
  3. Verifies the case stdout contains the FULL match (drift = fail loud)
  4. Honors tolerance_pct (default 0; strict-by-default)
  5. Pre-checks the command's binary on PATH so missing `bats` etc. fails
     with an explicit "not found on PATH" message instead of regex miss
  6. Inherits the case's cwd / suite-dir + timeout policy

Drift surfaces a `BUMP the pinned value to "Total: N"` one-liner so the
operator can react in one edit. Migrated both pins to use the new type.

Pre-mortem M3 (.agents/council/2026-05-07-pre-mortem-drain-open-next-work-items.md)
patch is enforced indirectly: validExpectationType registers the new kind,
and the parser rejects empty command/pattern at load time.

Tests: 8 new in expectations_auto_detect_test.go covering pass-on-match,
fail-loud-on-drift, missing-binary-fails-loud, pattern-no-match, the
bats `1..N` plan-line shape, missing-command rejection, tolerance allowing
numeric drift, and registry membership.

Closes soc-bvhn from epic soc-xlw8.

* feat(reconcile): observation-log aggregator unblocks Wave 1E (soc-ejq2)

Wave 1E (soc-f42z9) of the Reconciliation Engine epic cannot promote the
factory-claim-ledger validator from advisory to blocking until ≥20 advisory
runs are aggregated to .agents/reconcile/observation-log.jsonl. The CI job
(`factory-claim-ledger-strict (advisory)` at validate.yml:450-565) already
emits per-run observation JSON as a workflow artifact; nothing aggregated
them. This builds the missing pull-mode aggregator.

scripts/aggregate-observation-log.sh:
  1. `gh run list --workflow validate.yml ...` for recent runs
  2. `gh run download <run-id> -n factory-claim-ledger-observation` per run
     (silently skips runs that predate the advisory job)
  3. Schema-validates EVERY observation BEFORE dedup (pre-mortem M3 patch:
     `jq unique_by(.run_id)` silently collapses null-key entries — we reject
     malformed observations up front with `jq -e all(.run_id and ...)`)
  4. Dedups on run_id, atomic write to .agents/reconcile/observation-log.jsonl
  5. Backfills merged_anyway and ledger_updated:
     - pr_number=null (push-to-main): both false. Push-to-main observations
       satisfy the no-silent-merge criterion by definition.
     - else: `gh pr view` for state + `git log` for ledger-touch detection
  Empty-output case (no runs yet): produces valid empty JSONL, exits 0.
  Idempotent: re-running does not duplicate; verified by L2 test.

Skeleton .agents/reconcile/promotion-decision.md (gitignored, not in repo)
seeded by the script for operator to fill in false-positive baseline.

L1+L2 fixture-driven tests (9/9 pass): empty-input, dedup, schema rejection
of null run_id, push-to-main backfill semantics, --dry-run no-write,
idempotent byte-identical re-runs.

Adds `reconcile` to docs/contracts/agents-write-surfaces.md (prose table
and BEGIN/END allowlist) — required for `check-agents-write-surfaces.sh`
to pass after the new write surface lands.

NOT in scope (deferred to follow-up issues):
  - Scheduled .github/workflows/aggregate-observations.yml workflow
  - Operator-filled promotion-decision.md baseline
  - Wave 1E gate flip itself (soc-f42z9)

Per pre-mortem M3 (.agents/council/2026-05-07-pre-mortem-drain-open-next-work-items.md).
Closes soc-ejq2 from epic soc-xlw8.

* feat(crank): wire CI-policy parity gate into wave acceptance (soc-il9k)

Prevents recurrence of c587b361-style manual fixes. Wave 1C of soc-e4ulx
added factory-claim-ledger-strict (advisory) to .github/workflows/validate.yml
without updating AGENTS.md or `summary.needs:`. Codex-team caught and fixed
the drift manually. This PR formalizes that recovery as a conditional
crank wave-acceptance gate, so the next wave that touches workflow YAML
fails loud at acceptance instead of slipping through.

Insertion (canonical and codex-mirrored):
  - skills/crank/SKILL.md Step 5.5: new "CI-Policy Parity Gate (conditional)"
    sub-section pointing to the worked example.
  - skills/crank/references/wave-patterns.md: appended worked example with
    drift→fix transcript referencing commit c587b361.
  - skills/swarm/references/local-mode.md (worker prompt template): added
    section 4 to CONDITIONAL PREFLIGHT CHECKS so workers run the gate
    proactively, not only at acceptance.
  - skills-codex/* parity copies + regenerated codex hashes.

Trigger (narrow grep — yaml workflow files only):
  if git diff --name-only HEAD~1 -- | grep -qE '^\.github/workflows/.*\.ya?ml$'; then
      bash scripts/validate-ci-policy-parity.sh || exit 1
  fi

CODEOWNERS-only or markdown-only changes do not trip the gate. The
validator (scripts/validate-ci-policy-parity.sh, 186 LOC, unchanged) is a
read-only dependency.

Golden fixture tests/integration/test-ci-policy-parity-wave-gate.sh
(9/9 pass): SKILL doc presence, trigger-pattern shape, worked-example
linkage, worker-template wiring, codex parity, validator presence,
drifted-fixture exits 1, aligned-fixture exits 0, live-repo PASS.

Per planning rule finding-2026-05-07-ci-parity-as-wave-acceptance — this
PR IS the formalization of that rule (self-referential by design).

Closes soc-il9k from epic soc-xlw8.

* feat(reconcile): thesis-stability gate + Wave 0 snapshot (soc-mt50)

Gates the Reconciliation Engine arc transition from Wave 1 to Wave 2
(soc-r3y8b) by diffing current README/PRODUCT/GOALS hero sections against
the snapshot frozen at Wave 0 close (commit ab479e26 — "docs(positioning):
wiki-framing sweep across all surface docs (soc-9xn0)").

scripts/check-thesis-stability.sh:
  Hero extractor anchored to '^## ' (with trailing space) per pre-mortem M2
  patch — code-fence-safe, excludes the H2 boundary line itself:
    awk 'NR==1, /^## / {if (!/^## /) print}' <file>
  Per-file diff against the snapshot's fenced ```...``` block. Operator
  decides accept/re-brainstorm/incidental on FAIL.
  Exit codes: 0 = no drift, 1 = drift (operator decision required), 2 =
  precondition error (snapshot missing, source files missing, or snapshot
  carries a literal `^<!-- WAVE_0_TODO -->$` line — anchored regex prevents
  prose mentions of the marker from triggering the precondition gate, per
  pre-mortem L6).
  --json mode emits {verdict, drifted, decision_template} for tooling.

Snapshot artifact (.agents/reconcile/wave-0-thesis-snapshot.md):
  Frozen verbatim hero blocks for README.md / PRODUCT.md / GOALS.md at
  closure SHA ab479e26. Header documents extraction contract + regen path.

Decision template (.agents/reconcile/thesis-stability-decision.md):
  Operator-fillable record. Three explicit options (accept / re-brainstorm
  / incidental). Re-validation matrix for Waves 2-4 acceptance criteria
  on accept-drift path.

.gitignore:
  Adds the snapshot + decision-template paths to the .agents/ allowlist
  alongside existing exceptions (rpi/next-work.jsonl, nightly/, evolve/,
  goals/, findings/registry.jsonl). observation-log.jsonl and
  promotion-decision.md remain runtime state (generated by aggregator and
  operator fill-in respectively) and stay ignored.

Smoke (run during implementation):
  - bash scripts/check-thesis-stability.sh        → exit 0 (no drift today)
  - bash scripts/check-thesis-stability.sh --help → usage emitted, exit 0
  - inject SMOKE-DRIFT into README hero, re-run   → exit 1 with diff
  - revert, re-run                                → exit 0

Per pre-mortem M2 + L6 (.agents/council/2026-05-07-pre-mortem-drain-open-next-work-items.md).
Closes soc-mt50 from epic soc-xlw8.

* ci(reconcile): allowlist thesis-stability snapshot + decision artifacts (soc-mt50 follow-up)

PR-E (06f416e1) added two static contract artifacts under .agents/reconcile/
that need to be tracked: wave-0-thesis-snapshot.md (frozen at Wave 0 SHA
ab479e26) and thesis-stability-decision.md (operator-fillable template).

The .gitignore exception alone is not sufficient — scripts/check-no-tracked-agents.sh
maintains a narrow audit-truth allowlist of paths under .agents/ that may
be tracked. Without an allowlist update, the pre-push-gate's "tracked
.agents state" check fails on these two new files.

Extends ALLOWED_PATHS_REGEX and ALLOWED_REINCLUDES_REGEX to include the
two reconcile paths. observation-log.jsonl + promotion-decision.md
intentionally remain runtime state (generated by the aggregator and
operator fill-in respectively) and are NOT added to the allowlist.

Updates the file's header comment to document the new reconcile entry
in the audit-truth allowlist surface.

Acceptance:
  - bash scripts/check-no-tracked-agents.sh → "no disallowed tracked repo-root .agents state"
  - bash scripts/pre-push-gate.sh --fast    → exit 0 (46 skipped, 0 failed)

Per CLAUDE.md "All exceptions require a coordinated update of .gitignore +
this allowlist + CLAUDE.md/PROGRAM.md guidance." (Reconciliation Engine
arc context covered in PR-E commit message.)

* chore(rpi): mark soc-9xn0 + soc-e4ulx next-work entries consumed (soc-ot2m)

Closes the housekeeping tail of epic soc-xlw8. Both unconsumed entries in
.agents/rpi/next-work.jsonl flip to consumed=true, claim_status=consumed,
consumed_by=soc-xlw8, consumed_at=2026-05-08T09:30:00-04:00.

Mapping (10 raw items → 7 work units → 6 PRs; U1 already resolved by
Wave 1A pre-session, no PR needed):
  U2 BATS count audit gap            → PR-C f75201f5 (soc-bvhn)
  U3 ao goals measure cwd            → PR-B 04e585e8 (soc-crzz)
  U4 mkdocs link rot + anchors       → PR-A cf584671 (soc-2yx9)
  U5 observation-log aggregator      → PR-D af681e9c (soc-ejq2)
  U6 thesis-stability gate           → PR-E 06f416e1 (+93e4cf05)
  U7 CI-policy parity in crank       → PR-F a2fb6a2f (soc-il9k)

Closure note (gitignored, local provenance):
  .agents/rpi/closure-2026-05-07-next-work-items.md

Also adds .agents/findings/registry.jsonl with three reusable findings
generated during this session (the file was untracked due to .agents/
gitignore precedence; the audit-truth allowlist already permits it):
  - finding-2026-05-07-mkdocs-slug-observed-not-asserted
  - finding-2026-05-07-sed-range-includes-boundary-line
  - finding-2026-05-07-jq-unique-by-collapses-null-keys

Acceptance:
  - bash scripts/validate-next-work-contract-parity.sh → exit 0
  - jq -c . < .agents/rpi/next-work.jsonl              → valid JSONL, 2 entries
  - bash scripts/check-no-tracked-agents.sh            → no disallowed paths
  - bash scripts/pre-push-gate.sh --fast               → exit 0 (46 skipped)

Per pre-mortem L5 (.agents/council/2026-05-07-pre-mortem-drain-open-next-work-items.md):
the validator was already passing pre-PR (the phase-2-summary's claim of
broken parity was stale). Acceptance is steady-state ("validator continues
to exit 0 after marking entries consumed"), not transition.

Closes soc-ot2m and epic soc-xlw8.

* chore(reconcile): record Wave 1E promotion-decision baseline (Option B defer)

Filled .agents/reconcile/promotion-decision.md from skeleton with computed
baseline from observation-log.jsonl: 3 obs / 0 fail / 2 PRs / vacuous FP
rate. Sample 3 < 20 threshold and PRs 2 < 3 threshold do not justify
promotion to blocking; first-day post-aggregator data is also clustered
within ~4h. Selected Option B (defer/extend sampling) with explicit
re-evaluation trigger documented (>=20 runs, >=3 PRs, >=1 fail).

validate.yml gate stays advisory (continue-on-error: true intact). No
behavior change to CI. Re-evaluation tracked under bd soc-nsuq, which
blocks Wave 1E parent soc-f42z9.

Audit-truth allowlist extended in both .gitignore and
scripts/check-no-tracked-agents.sh to track the decision artifact, mirroring
the thesis-stability-decision.md allowlist pattern from 93e4cf05. The
promotion-decision is committed input to the Wave 1E gate-flip workflow,
not runtime state.

Refs: soc-xlw8 (RPI follow-up), soc-f42z9 (Wave 1E parent), soc-nsuq
(re-evaluation), soc-ejq2 (aggregator that produced the baseline).
2026-05-08 14:08:40 -04:00
Boden Fuller 08edbc84a8 docs: align vocabulary to three-layer product model across docs and README
Replace "bookkeeping, validation, primitives, and flows" with the three
product layers (Context Compiler, Validation Gates, Knowledge Flywheel) in
core docs, README skills table, and comparison docs. Adds three-layer
comparison tables to all 5 vs-*.md files and a navigation section to
documentation-index.md.
2026-05-04 15:08:33 -04:00
Boden Fuller 3f1566fdf0 fix(git): stop tracking agents runtime state 2026-05-03 10:30:49 -04:00
Claude c4166a5c51 docs: fix broken CLI links, add HOOKS/SCHEMAS/UPGRADING pages, expand GLOSSARY
Addresses a batch of documentation improvements identified in a full-docs
audit. The goal is to reduce newcomer friction from dead links and missing
canonical references, and to give skill/plugin authors explicit pages for
hooks, schemas, and version migration that were previously implied only by
source code.

Navigation fixes:
- docs/INDEX.md and docs/newcomer-guide.md pointed to the wrong path for
  the CLI reference (cli/commands.md vs. the real cli/docs/COMMANDS.md).
  Replace with the canonical github URL so both mkdocs and raw-GitHub
  readers land on the file.
- INDEX.md Getting Started section now opens with a "pick your path"
  router so evaluators, installers, contributors, and upgraders don't
  have to triangulate across three overlapping entry points.
- Link docs/getting-started/index.md from INDEX.md (was previously
  orphaned) and add an "Install verification" block pointing at ao doctor.

New pages:
- docs/HOOKS.md: user-facing orientation covering lifecycle events,
  install/uninstall, customization env vars, and common failure modes,
  pointing to cli/docs/HOOKS.md for the deep technical reference.
- docs/SCHEMAS.md: catalog of every JSON Schema under schemas/ and
  lib/schemas/, grouped by manifest vs. runtime artifact vs. internal
  contract, with validation commands.
- docs/UPGRADING.md: action-required version migration guide. Seeds
  Unreleased (2.38.x) and 2.37.x sections covering strict delegation,
  --no-lifecycle -> --no-scaffold rename, Olympus bridge removal,
  swarm-evidence schema enforcement, and pre-mortem gate tightening.

Reference quality:
- GLOSSARY.md: 11 new terms (.agents/, MEMORY.md, Compact/PreCompact,
  Compile, Context Window, Discovery, Dream/Overnight Run alias,
  Flywheel Health, Harvest, Holdout, RPI Phase, Session Lifecycle).
- troubleshooting.md: three new failure-mode sections (pre-mortem gate,
  go-test-precommit block, context-window compaction recovery).
- CONTRIBUTING.md: escalates the sync-skill-counts.sh requirement from
  an easily-missed sentence to a bold callout with CI-failure rationale.

mkdocs.yml: registers the three new pages in nav so they're reachable
from the published site and pass strict build.

Validation:
- tests/docs/validate-links.sh: 1553 links checked, 0 broken.
- tests/docs/validate-doc-release.sh: PASS.
- scripts/docs-build.sh --check: new docs introduce 0 warnings (the
  single remaining preexisting warning about index.md is out of scope).
2026-04-22 05:01:02 +00:00
Boden Fuller cc6750c4e8 feat(docs,skills): rebuild Pages site with MkDocs Material + harden RPI orchestrator delegation contract
## Docs site — boshu2.github.io/agentops

- Replace Jekyll minima with MkDocs Material (slate dark palette default)
- Landing hero scoped to .landing-hero (no gradient bleed on inner pages)
- Section landings (getting-started, architecture, reference, contracts, levels) with narrative ledes
- Generate skill catalog + per-skill pages from skills/*/SKILL.md at build
- Generate CLI reference from cli/docs/ at build (fails build on missing source)
- Fix every internal link via one-shot migration (scripts/migrations/2026-04-19-fix-docs-links.py)
- Wire mkdocs build --strict into pre-push gate (Check 25a)
- Replace .github/workflows/pages.yml with .github/workflows/docs.yml (actions/deploy-pages)
- README + docs/CONTRIBUTING updated with docs-build toolchain on-ramp
- tests/docs/validate-links.sh patched to understand mkdocs-generated paths

## RPI orchestrator strict-delegation contract

- Strict sub-skill delegation is now the default for /rpi, /discovery, /validation. No --full flag — always on.
- Canonical contract in skills/shared/references/strict-delegation-contract.md (plus Codex mirror)
- Forged learning with detection phrases + corrective actions (ao-inject-ready)
- Rename --no-lifecycle -> --no-scaffold in /discovery (Claude + Codex) with deprecation alias through v2.40.0
- Harden inline-work hotspots with orchestrator-owned markers in /crank STEPS 3a.3, 6.5, 8.7 + Inline Work Policy footer
- Flag consistency: --auto and --interactive scopes documented; --complexity syntax formalized
- CHANGELOG [Unreleased] documents + scaffolds; runtime hook enforcement explicitly deferred

## fix(hooks): go-test-precommit skips when no Go files staged

- Previously ran go vet + go build unconditionally, blocking non-Go commits when Go toolchain was missing or at a different version
- Now checks staged diff and exits cleanly if no *.go or go.{mod,sum,work} files are staged
- Applied to both hooks/ (source) and cli/embedded/hooks/ (synced)

Provenance: full RPI lifecycle with strict delegation at every phase boundary (Phase 1 Skill(discovery) -> Phase 2 Skill(crank) -> Phase 3 Skill(validation) -> Skill(vibe), Skill(post-mortem), Skill(retro)).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-19 10:37:58 -04:00
Boden Fuller 6d80baf689 docs: align product framing across onboarding surfaces 2026-04-09 15:45:04 -04:00
Boshu2 029f3ecb08 docs: fix broken links and orphaned docs from README restructure
- GLOSSARY: fix broken anchor #knowledge-flywheel → #pillar-4-knowledge-flywheel
- GLOSSARY: update #the-rpi-workflow → #the-phased-lifecycle
- ARCHITECTURE: rename "The RPI Workflow" → "The Phased Lifecycle"
- INDEX: add evolve-setup.md, ENV-VARS.md, SKILL-ROUTER.md, and 5 other orphaned docs
- context-lifecycle: fix source column to self-reference instead of README
2026-03-11 17:47:54 -04:00
Boshu2 0c1d4f6308 docs: align lifecycle docs with primitive chain audit 2026-03-11 12:37:24 -04:00
Boden Fuller 4fd2512c87 refactor: flatten CLI namespace and liquidate debt
Remove 5 namespace parent commands (know, work, quality, settings, start)
and register all 49 leaf commands directly on rootCmd. Flat namespace is
simpler for users; GroupID-based help provides visual grouping without
requiring namespace tokens.

Namespace flattening (184 files):
- Delete know.go, work.go, quality.go, settings.go, start.go
- Invert deprecatedCommands map (old namespace paths → flat paths)
- Update 127 consumer files (hooks, skills, docs, scripts, tests)

Debt liquidation (7 items from post-mortem):
- Fix 62 broken smoke test invocations
- Delete 118 LOC dead deprecatedAlias code
- Widen doctor scan to docs/, scripts/, and subdirectories
- Expand expectedCmds test to all 49 commands (floor 45)
- Add bidirectional expectedCmds sync check
- Create sweep-namespace-references.sh automation
- Fix EXPECTED_COMMANDS array to list flat commands
- Escape sed variables in sweep script

All Go tests pass (36s). All conformance checks pass.
2026-02-26 09:27:38 -05:00
Boden Fuller a539546d33 codex installer: ship no-clone install flow and docs sync 2026-02-26 06:24:21 -05:00
Boden Fuller a852ce1d45 fix(docs): sync skill counts and fix broken links after consolidation
Wave 3 of ag-lhb: Remove deleted skill entries from SKILL-TIERS.md,
sync counts to 49 total (40 user-facing, 9 internal), fix broken
GLOSSARY.md link to deleted extract skill, fix heal.sh dead xrefs.
2026-02-25 21:56:10 -05:00
Boden Fuller 37d4b5b2ae Merge branch 'codex/rpi-supervisor-cli' into main 2026-02-21 19:41:50 -05:00