Files
pi-skills/.agents/skills/evolve/references/teardown.md
T

110 lines
3.3 KiB
Markdown

# Teardown Procedure
**Auto-run /post-mortem on the full evolution session:**
```
/post-mortem "evolve session: $CYCLE cycles, goals improved: X, harvested: Y"
```
This captures learnings from the ENTIRE evolution run (all cycles, all /rpi invocations) in one council review. The post-mortem harvests follow-up items into `next-work.jsonl`, feeding the next `/evolve` session.
**Compute session fitness trajectory:**
```bash
# Check if both current-era baseline and final snapshot exist
GOALS_FILE=""
if [ -f GOALS.md ]; then
GOALS_FILE="GOALS.md"
elif [ -f GOALS.yaml ]; then
GOALS_FILE="GOALS.yaml"
fi
ACTIVE_BASELINE_PATH=""
if [ -n "$GOALS_FILE" ]; then
ERA_ID="goals-$(shasum -a 256 "$GOALS_FILE" | awk '{print substr($1, 1, 12)}')"
ACTIVE_BASELINE_PATH="$(ls -t ".agents/evolve/fitness-baselines/$ERA_ID"/*.json 2>/dev/null | head -1 || true)"
fi
if [ -n "$ACTIVE_BASELINE_PATH" ] && [ -f "$ACTIVE_BASELINE_PATH" ] && [ -f .agents/evolve/fitness-latest.json ]; then
baseline = load("$ACTIVE_BASELINE_PATH")
final = load(".agents/evolve/fitness-latest.json")
# Compute delta — goals that flipped between baseline and final
improved_count = 0
regressed_count = 0
unchanged_count = 0
delta_rows = []
for final_goal in final.goals:
baseline_goal = baseline.goals.find(g => g.id == final_goal.id)
baseline_result = baseline_goal ? baseline_goal.result : "unknown"
final_result = final_goal.result
if baseline_result == "fail" and final_result == "pass":
delta = "improved"
improved_count += 1
elif baseline_result == "pass" and final_result == "fail":
delta = "regressed"
regressed_count += 1
else:
delta = "unchanged"
unchanged_count += 1
delta_rows.append({goal_id: final_goal.id, baseline_result, final_result, delta})
# Write session-fitness-delta.md with trajectory table
cat > .agents/evolve/session-fitness-delta.md << EOF
# Session Fitness Trajectory
| goal_id | baseline_result | final_result | delta |
|---------|-----------------|--------------|-------|
$(for row in delta_rows: "| ${row.goal_id} | ${row.baseline_result} | ${row.final_result} | ${row.delta} |")
**Summary:** ${improved_count} improved, ${regressed_count} regressed, ${unchanged_count} unchanged
EOF
# Include delta summary in user-facing teardown report
log "Fitness trajectory: ${improved_count} improved, ${regressed_count} regressed, ${unchanged_count} unchanged"
fi
```
**Then write session summary:**
```bash
cat > .agents/evolve/session-summary.md << EOF
# /evolve Session Summary
**Date:** $(date -Iseconds)
**Cycles:** $CYCLE of $MAX_CYCLES
**Goals measured:** $(wc -l < GOALS.yaml goals)
## Cycle History
$(cat .agents/evolve/cycle-history.jsonl)
## Final Fitness
$(cat .agents/evolve/fitness-latest.json)
## Post-Mortem
<path to post-mortem report from above>
## Next Steps
- Run \`/evolve\` again to continue improving
- Run \`/evolve --dry-run\` to check current fitness without executing
- Create \`~/.config/evolve/KILL\` to prevent future runs
- Create \`.agents/evolve/STOP\` for a one-time local stop
EOF
```
Report to user:
```
## /evolve Complete
Cycles: N of M
Goals improved: X
Goals regressed: Y (reverted)
Goals unchanged: Z
Post-mortem: <verdict> (see <report-path>)
Run `/evolve` again to continue improving.
```