initial: pi-setup workspace with skill + extension plan

This commit is contained in:
张宗平
2026-06-10 17:30:43 +08:00
commit 49e581247b
158 changed files with 28777 additions and 0 deletions
@@ -0,0 +1,47 @@
# How Compounding Works
Two mechanisms feed the loop:
**1. Knowledge flywheel (each cycle is smarter):**
```
Session 1:
ao lookup --query "recent learnings" (nothing yet) → cycle runs blind
/rpi fixes test-pass-rate → post-mortem runs ao forge
Learnings extracted: "tests/skills/run-all.sh validates frontmatter"
Session 2:
ao lookup --query "recent learnings" (loads Session 1 learnings) → cycle knows about frontmatter validation
/rpi fixes doc-coverage → approach informed by prior learning
Learnings extracted: "references/ dirs need at least one .md file"
```
**2. Work harvesting (each cycle discovers the next):**
```
Cycle 1: /rpi fixes test-pass-rate
→ post-mortem harvests: "add missing smoke test for /evolve" → next-work.jsonl
Cycle 2: all GOALS.yaml goals pass
→ /evolve reads next-work.jsonl (exact repo first, then cross-repo '*', then legacy)
→ picks "add missing smoke test"
→ /rpi fixes it → post-mortem harvests: "update SKILL-TIERS count"
Cycle 3: reads next-work.jsonl → picks "update SKILL-TIERS count" → ...
```
The loop keeps running as long as post-mortem keeps finding follow-up work. Each /rpi cycle generates next-work items from its own post-mortem. The system feeds itself.
**Priority cascade:**
```
next-work.jsonl (harvested / queued work) → exact repo first, then `*`, then legacy
Open beads (bd ready) → durable tracked backlog
GOALS.yaml directives and failing goals → explicit fitness gaps
Testing improvements → synthesize coverage / regression-test work
Validation + bug-hunt passes → tighten gates, discover real defects
Hotspots / TODO / drift / stale docs → mine weak signals into work
Feature suggestions → propose new product work when remediation dries up
multiple empty queue + generator passes → last-resort dormancy
60-minute circuit breaker → stop if no productive cycle in 60 min
kill switch → immediate stop
```
The loop does NOT stop just because goals are met or the current queue is empty. It re-reads harvested work after every `/rpi` cycle, runs generator layers when queues are empty, and only stops after repeated empty queue + generator passes. Idle cycles are NOT committed to git — only appended locally. The idle streak is re-derived from disk at each session start, while `session-state.json` carries pending claim/generator resume state. Use the kill switch for intentional stops.