- Default loop statement is wassname's 2026-09-24 text, spelling fixed only.
- Planning prompt states the aim: the agent starts uncertain and reduces that uncertainty.
- Planning now allows normal tools (bash, subagent scouts); only file edits outside the goals
file and CompleteGoal are blocked.
- README: design intent quote, and what the agent versus the user sees at each step.
Co-Authored-By: Claude <288921227+claudypoo@users.noreply.github.com>
- One goals file per /goals new, planning is read-only except that file, Ready starts work.
- Ready creates a session-scoped pi-scheduler prompt task with an owned marker. Each owned wake is
transformed into the user's Loop statement plus the current goals read from disk. Wakes from an
older Ready or another session are dropped. Pause, clear or no remaining goals remove the task.
- Whole goals file is re-sent once after compaction or resume.
- CompleteGoal delegates to a fresh read-only pi-subagents runtime agent. Accept with quoted checks
marks [✓]. Reject, malformed output or judge failure leaves the goal open (the old version
accepted on judge failure). /goals judge off records [x] self-verification.
- Tests: fake Pi harness plus contract tests against real scheduler core and pi-subagents parsers.
Mutation check: 7 deliberate bugs each failed at least one test.
- Removes the old subprocess judge, private auto-continue timer, historical docs and scripts.
Co-Authored-By: Claude <288921227+claudypoo@users.noreply.github.com>
Updated the planDrafting prompt to improve clarity and user engagement. Added details on user interaction and refined language for better understanding.
Both round-1 findings were withdrawn once the reviewer had the plan-mode
facts. Comment the state-flip order, which is the part that reads like a bug
and is not.
Co-Authored-By: Claudypoo <288921227+claudypoo@users.noreply.github.com>
"Ready?" over an unread file is not a review -- the only copy of the plan was
inside a collapsed edit tool call. Print the working set before the menu.
The 4th option compacts the planning conversation before the work turn starts.
session_compact already re-sends the whole plan file, so the exploration is
summarized away and the agreed goals are not.
Co-Authored-By: Claudypoo <288921227+claudypoo@users.noreply.github.com>
A subagent runs pi -p --no-session with extensions on, so it loaded pi-goals, got the
parent's plan injected, and could sign off the parent's goals. Two windows on one checkout
also stomped each other's file. The session id in the name fixes both, and doubles as the
on switch: no /goals means no file at this session's path, so nothing fires.
Drops the v1 goals.md rename, and /goals clear now deletes the file.
Co-Authored-By: Claudypoo <288921227+claudypoo@users.noreply.github.com>
~/.pi/skills is a symlink to ~/.claude/skills, so a pi session loads the plan-format skill and this
prompt at once. A dogfooding agent merged the two by hand on every redraft.
Co-Authored-By: Claudypoo <288921227+claudypoo@users.noreply.github.com>
The judge has been read-only with no bash since the rewrite, but the README still said it runs the
goal's verify command. That is the exact thing a dogfooding agent got wrong out loud.
Co-Authored-By: Claudypoo <288921227+claudypoo@users.noreply.github.com>
v2 injected the entire plan.md on every turn. pi-tasks tried that and deleted it -- "wallpaper
noise that trains the model to ignore the task block" (CHANGELOG.md:149) -- so follow them: one
transient user message via the context hook, never persisted, and only when the plan went untouched
for 2 turns. Editing the plan resets the clock, the way a task tool call resets theirs. Session
start and session_compact push the WHOLE file back instead, which is where the settled context is
actually needed (pi-goal-x does the same with its post-compaction resync).
That makes an unlimited appendix free: everything under ## Log is durable memory, not working set.
Also: the drafting prompt is sent once with the /goals seed instead of every turn (that re-arming
is why plan mode read as never-ending), the review menu gains "Open in $EDITOR" and loops like
pi-plan's, and the widget shows the active goal's open subtasks so the plan is visibly the task
list. Drops the stale-copy stripping hook, which a non-persisted injection doesn't need.
Co-Authored-By: Claudypoo <288921227+claudypoo@users.noreply.github.com>
Re-running verify was fine for 'npm test' but a footgun for ML workflows where verify may be a
10-hour training run -- and bash made 'read-only' nominal anyway (it could mutate). The agent now
runs verify itself and saves the output as evidence. The judge checks, in order: anything here /
quoted+attributed / provenance / quotes match disk / substance. Matches the cooperative-but-
confused threat model: reading real artifacts catches confusion; execution only defended against
deliberate forgery, which is out of scope.
Co-Authored-By: Claudypoo <288921227+claudypoo@users.noreply.github.com>
Dogfood: an agent with blank tool output back-filled plausible test counts into evidence and
the judge accepted (the numbers happened to be true). Norm now stated agent-side (verbatim
quotes, honest gaps beat plausible fabrication) and enforced judge-side (mismatched quotes =>
reject even when the goal looks met).
Co-Authored-By: Claudypoo <288921227+claudypoo@users.noreply.github.com>
'Did the judge really re-run verify?' was unanswerable post-hoc; now every sign-off's full
judge output survives on disk.
Co-Authored-By: Claudypoo <288921227+claudypoo@users.noreply.github.com>