docs: dev/v0.2.0/STATUS.md as session-continuation context (#23)

Single source of truth for the v0.2.0 iteration:
- what shipped per rc (rc.1/rc.2/rc.3), with links to PRs/commits
- live DB snapshot from 2026-05-27 ~15:30
- 7 known issues / followups ranked by impact (rc.4 candidates)
- quick-start checklist for the next session

Also:
- docs/v0.2.0-self-learning.md: phase checklist updated to reflect
  shipped state and points at dev/v0.2.0/STATUS.md for live data
- README status bullet refreshed with rc.1/2/3 summary

Folder convention: dev/v<version>/ for per-version development notes.
Anything still in flight or candidate for the next iteration lives
here; design docs that pre-date the iteration stay in docs/.

Co-authored-by: Yuriy Mayatnikov <mayatnikov@me.com>
Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
This commit was merged in pull request #23.
This commit is contained in:
Yuriy Mayatnikov
2026-05-27 19:37:33 +03:00
committed by GitHub
co-authored by mayatnikov Claude Opus 4.7
parent 865aae1213
commit 85f7ad90c8
3 changed files with 298 additions and 25 deletions
+61 -24
View File
@@ -153,37 +153,74 @@ This is the loop that closes "I died yesterday in this exact spot
attacking a creeper with fists" → "tonight I avoid attack and dig
shelter instead".
## Phases — what ships in which rc
## Phases — what shipped
### v0.2.0-rc.1 (this branch)
> Live status, observed metrics, and rc.4 followups: [`dev/v0.2.0/STATUS.md`](../dev/v0.2.0/STATUS.md).
### v0.2.0-rc.1 — substrate (merged 2026-05-27)
- [x] WIP baseline commit (pathfinder/reflex/metrics fixes).
- [ ] This design doc.
- [ ] `better-sqlite3` dep + `runtime/knowledge/{store,schema,seed,index,lessons}.js`.
- [ ] Seed knowledge DB from `docs/minecraft-recipes.json` + the
mob/biome/food/recipe tables in `docs/minecraft-knowledge.md`.
- [ ] `runtime/coach/postmortem.js` — death event capture, deaths table,
Pi-extracted lessons (initial version uses async one-shot, no batch).
- [ ] `runtime/persona/chatter.js` — narration on death/respawn,
gather-start, threat-spotted (templates only, no Pi yet).
- [ ] Wire-in: `bot.js` calls `coach.attach(bot)` and
`persona.attach(bot)` once on connect.
- [ ] Tests for store, lessons, postmortem context capture, persona
cooldowns.
- [x] This design doc.
- [x] `better-sqlite3` dep + `runtime/knowledge/{store,schema,seed,index,lessons}.js`.
- [x] Seed knowledge DB from `docs/minecraft-recipes.json` + inline
starter tables: 38 recipes, 15 mobs, 30 blocks, 12 starter lessons.
- [x] `runtime/coach/postmortem.js` — death event capture, deaths table,
Pi-extracted lessons (5 min drain, ≤3 Pi calls/h, 12 min cooldown).
- [x] `runtime/persona/chatter.js` — narration on death/respawn, gather
start, threat spotted, dusk/dawn, milestone done (templates).
- [x] Wire-in: `bot.js` calls `coach.attach`, `reflect.attach`,
`persona.attach` once on connect.
- [x] Retrieval-augmented dispatch via `runtime/coach/advice.js`
`consult()` before curriculum + defend reflexes. SAFE_OVERRIDES
whitelist guards what skills lessons may dispatch into.
- [x] Auto-patch loop switched to PR-on-merge instead of direct
cherry-pick. Branch protection on `main`: 1 required approver.
- [x] Tests for store, lessons, postmortem context, advice
consultation, persona cooldowns.
### v0.2.0-rc.2
### v0.2.0-rc.2 — P0 hardening (merged 2026-05-27)
- [ ] Wiki crawler with cache + parser.
- [ ] Retrieval-augmented dispatch (curriculum + dispatch hooks).
- [ ] `runtime/persona/look.js` — head movement.
- [ ] `runtime/coach/index.js` — periodic batched Pi pass.
- [x] `PEPA_HEADLESS=1` guard in `extensions/mineflayer-bridge.ts` so
`pi -p` subprocesses don't open a second MC connection.
- [x] Test state isolation — `runtime/config.js` redirects `stateDir`
to `/tmp/pepa-test-state-<pid>/` under node test runner.
- [x] `defendReflex` outcome bug — `reportAdviceOutcome` now fires
AFTER the flee skill returns, not before.
- [x] Mode-name → skill-id translation (`night_shelter`
`survive.sleep`, etc.) in `coach/advice.js`.
- [x] **Self-reflection loop** (`runtime/coach/reflect.js`) — every
30 min Pi gets asked *"are you in a loop?"*. Verdict + summary
+ new lessons. Reflection written to
`state/<host>/reflections/<ts>.md`.
### v0.2.0 (final)
### v0.2.0-rc.3 — escape mechanics (merged 2026-05-27)
- [ ] Tune rate limits + thresholds with real data from the prior weeks.
- [ ] Cross-server lesson abstraction (raw → committed `skills/<name>.md`
when applied repeatedly across situations).
- [ ] Roadmap update.
- [x] `survive.pillar-up` — vertical pit escape, NO pickaxe required.
- [x] Wedged-emergency reflex — auto-fires pillar-up after 60s of no
horizontal progress + no hostile + placeable block.
- [x] `consult()` runs on curriculum's wander/explore.far fallback
path (closes the gap where Pi-coach lessons fired but were
ignored by the dispatcher's fallback).
- [x] `recordPOI(kind:"danger")` on every death — spatial memory.
- [x] `SAFE_OVERRIDES` extended with `survive.pillar-up`,
`village.choose-base`.
### rc.4 candidates — see [`dev/v0.2.0/STATUS.md §"Known issues"`](../dev/v0.2.0/STATUS.md)
1. Fix hallucinated `prefer_skill` from Pi (e.g. `choose.safe.surface`).
2. Tool-progression auto-craft: `gather.stone → missing_tool →
craft.wooden-pickaxe`.
3. `village.choose-base` ranking should penalise nearby danger POI.
4. Pillar-up perimeter sense — abort if ceiling above.
5. Persist persona cooldowns across restarts.
6. Populate `chat_log` table on every chat in/out.
### Wiki crawler — pushed to v0.2.1
`runtime/knowledge/wiki.js` still planned but isn't on the critical
path while the seeded intel + Pi-extracted lessons are sufficient.
Will land when the bot has stabilised enough that "learning new things
from the wiki" beats "applying things it already learned".
## Out of scope for v0.2.0