Commit Graph
57 Commits
Author SHA1 Message Date
wassname 2b61440c73 Allow reasoned approval of an exact dirty worktree state
Force overrides only cleanliness. Bind approval to Git HEAD/tree, index and dirty/untracked content fingerprints; recheck at CompleteGoal. Require investigative read-only supervision instead of accepting gate errors as experiment blockers.
2026-09-09 06:19:06 +08:00
wassname 88bfcc1c42 Fix symmetric supervision reconnect and cancel stale Ready attempts
Use explicit hello requests and replies, keep workers unready until model restoration succeeds, distinguish paused peers, and align all goal readers at the Log boundary. Add two-real-adapter handshake and failed-Ready/clear-during-wait regressions; warn once for unavailable supervisor context usage.
2026-09-08 19:27:09 +08:00
wassname 325b93983f Recover paused supervision and tighten approval boundaries
Restore bindings before model availability checks, require explicit reconnect/restart recovery, detach inactive plans, remove the general Intercom actuator, and reject placeholder evidence without hashing the plan log. Preserve synchronous handoff-before-ack; document that the void SDK cannot confirm durable message delivery.
2026-09-08 18:57:43 +08:00
wassname ddd552b1a5 Remember project model choices for planning worker and supervisor
Keep choices separate by role, ignore automatic restores, and fail when a remembered model is unavailable. Restore the worker model only after the planning fork is ready.
2026-09-08 16:49:46 +08:00
wassname 47cc054582 Send incremental worker views with direction and tracked job state
Borrow the provider tracker queries from cecb1e9. Keep unavailable state unknown, bind incremental views to acknowledged source entries, reset after compaction, bound serialized payloads, and recheck tracked work at sign-off.
2026-09-08 16:41:47 +08:00
wassname 489298d58b Replace supervision mailbox polling with pi-intercom
Scope messages to each pairing, wait for supervisor readiness, retain instructions in session history until acknowledgment, and rejoin after disconnect. Reuse installed Intercom or load the package dependency. Validate over an isolated real broker; existing user panes are untouched.
2026-09-08 16:31:58 +08:00
wassnameandPi/OpenAI a4ed6cfbaa Show supervisor advice and restore reliable review lifecycle
Render exact instructions, restore monitoring/read-only tools on resume, report actual Pi idle state, reject stale approval views, and stop completed-plan timers. Ask for brief evidence-based judgment. Add real TUI rendering and lifecycle regressions; retain explicit limits on background state and unmeasured cost benefit.

Co-Authored-By: Pi/OpenAI <288921227+claudypoo@users.noreply.github.com>
2026-09-08 10:50:18 +08:00
wassnameandPI[Kimi K3] 19fa8d7a7b Own visible supervision in pi-goals
Co-Authored-By: PI[Kimi K3] <288921227+claudypoo@users.noreply.github.com>
2026-09-07 21:41:26 +08:00
wassnameandPI[Kimi K3] 2b620a0334 Revert bundled supervisor extensions
Co-Authored-By: PI[Kimi K3] <288921227+claudypoo@users.noreply.github.com>
2026-09-07 19:06:07 +08:00
wassnameandPI[Kimi K3] 9ee18c93f3 Bundle supervision and harden goal approval
Co-Authored-By: PI[Kimi K3] <288921227+claudypoo@users.noreply.github.com>
2026-09-07 19:02:08 +08:00
wassnameandPi d56fc55242 Replace nested workers with visible supervisor session
Co-Authored-By: Pi <288921227+claudypoo@users.noreply.github.com>
2026-09-06 17:56:06 +08:00
wassnameandPI[gpt-5.6-sol] 48e2247c00 Simplify nested goal supervision
Co-Authored-By: PI[gpt-5.6-sol] <288921227+claudypoo@users.noreply.github.com>
2026-09-06 13:36:12 +08:00
wassnameandPI[gpt-5.6-sol] 844099bdf0 Reconcile stale retained goal workers
Co-Authored-By: PI[gpt-5.6-sol] <288921227+claudypoo@users.noreply.github.com>
2026-09-06 12:28:17 +08:00
wassnameandPI[gpt-5.6-sol] 6cfeaf44ee Compact the supervisor fork before work
Co-Authored-By: PI[gpt-5.6-sol] <288921227+claudypoo@users.noreply.github.com>
2026-09-05 21:31:46 +08:00
wassnameandPI[gpt-5.6-sol] 3eaaec9f5a Reduce supervisor context and recover terminal workers
Co-Authored-By: PI[gpt-5.6-sol] <288921227+claudypoo@users.noreply.github.com>
2026-09-05 21:22:17 +08:00
wassnameandPI[gpt-5.6-sol] 96399ec3e4 Load the packaged worker in local runs
Co-Authored-By: PI[gpt-5.6-sol] <288921227+claudypoo@users.noreply.github.com>
2026-09-05 19:34:01 +08:00
wassnameandPI[gpt-5.6-sol] 96290c553b Fix nested supervisor lifecycle
Co-Authored-By: PI[gpt-5.6-sol] <288921227+claudypoo@users.noreply.github.com>
2026-09-05 19:32:43 +08:00
wassnameandPi/Codex 2852432d44 fix: package goal worker for nested discovery
Co-Authored-By: Pi/Codex <288921227+claudypoo@users.noreply.github.com>
2026-09-05 18:43:00 +08:00
wassnameandPI[goal-worker] 9fbc156860 Implement retained nested goal supervisor
Main coordinates a retained supervisor that manages the nested implementation worker and writes the only approval checkpoint.

Signed-off-by: PI[goal-worker] <288921227+claudypoo@users.noreply.github.com>
Co-authored-by: PI[goal-worker] <288921227+claudypoo@users.noreply.github.com>
2026-09-05 18:17:27 +08:00
wassnameandPi Codex f87b8aac2f Make the main session supervise a retained worker
Co-Authored-By: Pi Codex <288921227+claudypoo@users.noreply.github.com>
2026-09-05 17:12:24 +08:00
wassnameandPi Codex bf50d9bbc8 Use TUI-style goals subcommands
Stop steward checkpoints after all goals close.

Co-Authored-By: Pi Codex <288921227+claudypoo@users.noreply.github.com>
2026-09-05 15:17:27 +08:00
wassnameandPi Codex 46cfd537f0 Add persistent pi-subagents goal steward
Co-Authored-By: Pi Codex <288921227+claudypoo@users.noreply.github.com>
2026-09-05 12:20:17 +08:00
wassname f09d443d88 Improve goal reminder cadence and auto continuation 2026-09-01 18:29:00 +08:00
wassnameandPI/OpenAI a45cc7d9c6 Anchor goals to the user-visible result
Co-Authored-By: PI/OpenAI <288921227+claudypoo@users.noreply.github.com>
2026-08-30 18:44:36 +08:00
wassname 3dd0668963 Document Pi test workflow 2026-08-26 13:28:54 +08:00
wassname 389af540d1 Test review flow through Pi RPC 2026-08-26 12:12:05 +08:00
wassname 0d972e81c3 Align planning state with review flow 2026-08-26 10:46:05 +08:00
wassname 36b0d98c2a Record plan interview replies 2026-08-26 09:54:12 +08:00
wassname b173d145db Version plans and expose judge review 2026-08-24 21:38:45 +08:00
wassname (Michael J Clark) 8de5c35248 Update README.md 2026-08-24 21:35:56 +08:00
wassname (Michael J Clark) a778480fec Update README.md 2026-08-24 21:34:38 +08:00
wassname (Michael J Clark) 45d59e1edc Update README.md 2026-08-24 21:32:49 +08:00
wassname (Michael J Clark) d026e06b41 Update README.md 2026-08-24 21:31:45 +08:00
wassname (Michael J Clark) 9ebcd3f4a6 Update README.md 2026-08-24 21:28:56 +08:00
wassnameandClaudypoo 3a1afd4c8e ready menu: print the plan, add "Ready + compact"
"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>
2026-08-21 08:14:29 +08:00
wassnameandClaudypoo e6af6db3d9 release 0.2.0: docs and description follow the per-session plan path
Co-Authored-By: Claudypoo <288921227+claudypoo@users.noreply.github.com>
2026-08-14 16:07:26 +08:00
wassnameandClaudypoo 7d4fc32cc9 gallery preview: widget screenshot + pi.image (jsDelivr serves it with an image content-type)
Co-Authored-By: Claudypoo <288921227+claudypoo@users.noreply.github.com>
2026-08-12 08:45:10 +08:00
wassname 6df9390d2f drop pi-lgtm references from description, README and spec 2026-08-10 18:07:04 +08:00
wassname 230b7bd343 package: publishable as @wassname2/pi-goals 0.1.0 (files, public access, prepublish checks); README install from npm 2026-08-10 18:06:27 +08:00
wassnameandClaudypoo 1cd6e04e05 README: the fold, user voice, learnings, unlimited appendix; the judge never runs verify
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>
2026-08-05 12:09:24 +08:00
wassnameandClaudypoo 16827de45d judge goes strictly read-only: no bash, never re-runs verify; reviews evidence discipline instead
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>
2026-07-03 12:13:14 +08:00
wassnameandClaudypoo 924910e942 persist judge transcript to .pi/judge/<stamp>.md and reference it from the sign-off log line
'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>
2026-07-03 11:59:00 +08:00
wassnameandClaudypoo 92d3f6d725 sign-off ticks the goal [x] itself + document that the judge reads the working tree, not HEAD
Dogfood exit interview: agent bookkeeping is the drift point (tick after accept was the
step most likely forgotten), and 'committed artifact' language implied the judge sees HEAD.
Tick is exact-subject match via the existing GOAL_LINE regex; on drift the result explicitly
asks the agent to tick, so neither path is silent.

Co-Authored-By: Claudypoo <288921227+claudypoo@users.noreply.github.com>
2026-07-03 11:49:31 +08:00
wassnameandClaudypoo 03e88d34ad README: fix stale install (never published to npm), test list, and goal-regex scope
Co-Authored-By: Claudypoo <288921227+claudypoo@users.noreply.github.com>
2026-07-03 11:22:14 +08:00
wassnameandClaudypoo 4b622a22fa README: note the v1 goals.md auto-rename
Co-Authored-By: Claudypoo <288921227+claudypoo@users.noreply.github.com>
2026-07-03 11:17:11 +08:00
wassnameandClaudypoo 67daed312f docs: evidence should cite committed artifacts; .pi/ is gitignored so it's judge-time proof only
Co-Authored-By: Claudypoo <288921227+claudypoo@users.noreply.github.com>
2026-07-03 11:12:42 +08:00
wassname 632012cc6e judge: extract decideSignOff so inconclusive always means 'ran but failed'
CompleteGoal.execute now delegates to a pure decideSignOff(input, signal,
runJudgeFn) that takes an injected judge runner. judgeModel is never checked
pre-emptively: null just omits --model (buildJudgeArgs), so pi's configured
default runs the judge. The only producers of accepted_inconclusive are now the
judge-error and no-VERDICT paths -- i.e. 'the judge ran but failed', never 'no
model'. Wording (log/result/docstring/README) updated to say 'ran but failed'.

Adds test/decide-signoff.test.ts: null judgeModel still reaches runJudge (no
pre-emptive return); judge error/timeout/no-VERDICT -> accepted_inconclusive
with a 'ran but failed' reason. 11 tests pass, typecheck + lint clean.
2026-07-03 10:55:45 +08:00
wassnameandClaudypoo c0f80b869e v2: delete the parser -- plan.md is for LLMs, the judge subsumes the machinery
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>
2026-07-03 10:24:35 +08:00
wassnameandClaudypoo 5d88502e4d judge: omit --model when unset so pi default runs (no more inconclusive-by-default)
Co-Authored-By: Claudypoo <288921227+claudypoo@users.noreply.github.com>
2026-07-03 10:16:40 +08:00
wassname 14e757cfe1 Make goal judge use explicit session model 2026-06-29 05:28:17 +08:00