mirror of
https://github.com/wassname/pi-plan.git
synced 2026-08-01 12:50:08 +08:00
The v1 lesson: the parser existed so TypeScript could read goals.md, but every reader is a model. v2 injects .pi/plan.md verbatim each turn, teaches the format as a convention, and hands the whole file to the judge, which now does the goal matching (tolerates wording drift), evidence validation, verify execution, and format reading that v1 did in code. 1874 -> 530 lines. Deleted: plan-file.ts + tests, JSON-stream judge transport, custom tool rendering, review menu + $EDITOR + newSession dance, pruneCompleted, unwired continuation/loopJudge prompts, MUTATING_BASH_PATTERNS. CompleteGoal's only write is the ## Log sign-off line (the audit trail); the agent ticks [x] itself. Judge runs with --no-extensions so a broken global extension can't take down sign-offs (pi-hermes-memory currently does exactly that). File renamed goals.md -> plan.md. UAT (real judge subprocess on a toy repo, /tmp/claude-goals-uat/judge-*.log): accept with verify run + byte-check, reject on placeholder evidence + missing file, accept under drifted goal wording. Co-Authored-By: Claudypoo <288921227+claudypoo@users.noreply.github.com>