## What Drops dead `ao evolve` command references from agent-facing docs. The `ao evolve` CLI was deleted in #724 (ag-llni); these docs still pointed agents at it. - `AGENTS.md` / `CLAUDE.md` / `README.md` / `docs/dependencies.md`: the substrate-loop line `` `ao rpi`/`ao evolve` loop `` → keeps the **live** `` `ao rpi` `` and drops the **dead** `` `ao evolve` ``. - `README.md` quickstart: removed the dead `ao evolve --max-cycles 1` example (loop is now the `/evolve` skill; `ao rpi phased` already covers terminal lifecycle). - In-session skill refs (`/rpi`, `/evolve`) preserved — those exist. ## Scope (ag-354d slice 1 of N) Agent-facing docs only. **Excluded:** gate-protected plan docs (`docs/reference/agentops-domain-evolution-{bdd,plan}.md`, hexagonal-map — `check-agentops-domain-evolution-plan.sh` requires the literal); obsolete runner scripts (coupled, separate slice); cron-template (already done in #724). ## Gate `markdownlint`: 0 errors on all 4 files. The 5 local pre-push-gate reds (`test-fixture parity gc-stale-worktrees`, `worktree disposition`/canonical-root-dirty, `corpus freshness` 7d snapshot, goals-validate, CMDAO-surface) are **pre-existing/non-diff** — same set SageHarbor classified in PR #730/#69; a docs-only change touches none of those surfaces. CHANGELOG-sync + link-integrity passed. Closes-scenario: ag-354d#doc-refs Bounded-context: BC5-Runtime Evidence: README.md
2.4 KiB
Setting Up /evolve
Bootstrap with ao goals init — it interviews you about your repo and generates mechanically verifiable goals. Or write them by hand:
# GOALS.md
## test-pass-rate
- **check:** `make test`
- **weight:** 10
All tests pass.
## code-complexity
- **check:** `gocyclo -over 15 ./...`
- **weight:** 6
No function exceeds cyclomatic complexity 15.
Migrating from GOALS.yaml? Run ao goals migrate --to-md. Manage goals with ao goals steer add/remove/prioritize and prune stale ones with ao goals prune.
/evolve measures them, picks the worst gap by weight, runs /rpi to fix it, re-measures ALL goals (regressed commits auto-revert), and loops. It commits locally — you control when to push. Kill switch: echo "stop" > ~/.config/evolve/KILL
Built for overnight runs. Cycle state lives on disk, not in LLM memory — survives context compaction. Every cycle writes to cycle-history.jsonl with verified writes, a regression gate that refuses to proceed without a valid fitness snapshot, and a watchdog heartbeat for external monitoring. If anything breaks the tracking invariant, the loop stops rather than continuing ungated. See skills/SKILL-TIERS.md for the two-tier execution model that keeps the orchestrator visible while workers fork.
Maintain over time: /goals shows pass/fail status, /goals prune finds stale or broken checks.
Pairing GOALS.md with PROGRAM.md
Use GOALS.md for strategic fitness and PROGRAM.md for operational control.
GOALS.mdanswers what good looks like.PROGRAM.mdanswers what the autonomous loop may touch, how one experiment is bounded, which validations decide success, and when to stop or escalate./evolvenow loadsPROGRAM.mdbefore cycle 1, filters out-of-scope work, and uses the program's validation and decision policy in its cycle keep/revert gate.
Initialize the operational contract with:
ao autodev init
ao autodev validate
This split keeps repo goals stable while allowing the autonomous runtime policy to evolve independently. See Autodev Program Contract for the required sections and semantics.
See Also
- README.md — repo overview and
/evolvedemo - How It Works — runtime mechanics
- The Science — decay model behind fitness scoring