2.8 KiB
Knowledge Loop Integration
Compile Warmup (--compile only)
Skip if --compile was not passed or if --dry-run.
Run the mechanical half of the Compile cycle to surface fresh signal before the first evolve cycle:
mkdir -p .agents/mine .agents/defrag
echo "Compile warmup: mining signal..."
ao mine --since 26h --quiet 2>/dev/null || echo "(ao mine unavailable — skipping)"
echo "Compile warmup: defrag sweep..."
ao defrag --prune --dedup --quiet 2>/dev/null || echo "(ao defrag unavailable — skipping)"
Then read .agents/mine/latest.json and .agents/defrag/latest.json and note (in 1-2 sentences each):
- Any orphaned research files that look relevant to current goals
- Any code hotspots (high-CC functions with recent edits) that may be the root cause of failing goals
- Any duplicate learnings merged by defrag — context on what's been cleaned up
These notes inform work selection throughout the evolve session. Store them in a session variable (in-memory), not a file.
Harvested Work Selection (Step 3.1)
Read .agents/rpi/next-work.jsonl and pick the highest-value unconsumed item for this repo. Prefer:
- exact repo match before
*, then legacy unscoped entries - already-harvested concrete implementation work before process work
- higher severity before lower severity
When evolve picks a queue item, claim it first:
- set
claim_status: "in_progress" - set
claimed_by: "evolve:cycle-N" - set
claimed_at: "<timestamp>" - keep
consumed: falseuntil the/rpicycle and regression gate both succeed
If the cycle fails, regresses, or is interrupted before success, release the claim and leave the item available for the next cycle.
Queue Finalization After Regression Gate
- success: finalize any claimed queue item with
consumed: true,consumed_by, andconsumed_at; clear transient claim fields - failure/regression: clear
claim_status,claimed_by, andclaimed_at; keepconsumed: false; record the release insession-state.json
After the cycle's /post-mortem finishes, immediately re-read .agents/rpi/next-work.jsonl before selecting the next item. Never assume the queue state from before the cycle.
Teardown Learning Extraction
- Commit any staged but uncommitted
cycle-history.jsonl:
if git diff --cached --name-only | grep -q cycle-history.jsonl; then
git commit -m "evolve: session teardown -- artifact-only cycles logged"
fi
-
Run
/post-mortem "evolve session: ${CYCLE} cycles"to harvest learnings. -
Push only if unpushed commits exist:
UNPUSHED=$(git log origin/main..HEAD --oneline 2>/dev/null | wc -l)
[ "$UNPUSHED" -gt 0 ] && git push
- Report summary: cycles, productive/regressed/idle counts, stop reason. Quality mode adds quality score + remaining findings.