Commit Graph
53 Commits
Author SHA1 Message Date
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
wassname 386305afd3 Ground supervisor judgments in sourced evidence and competing explanations 2026-09-08 15:58:54 +08:00
wassname 94102524b6 Make supervisor investigate blockers and drive authorized progress 2026-09-08 15:36:07 +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] 6b641c7d17 Keep unanswered planning questions nonblocking
Co-Authored-By: PI[Kimi K3] <288921227+claudypoo@users.noreply.github.com>
2026-09-07 22:32:47 +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] ee1ab3ec26 Start supervisors from loaded extension
Co-Authored-By: PI[Kimi K3] <288921227+claudypoo@users.noreply.github.com>
2026-09-07 21:16:05 +08:00
wassnameandPI[Kimi K3] ba2799a1d9 Pair supervisors before starting their model
Co-Authored-By: PI[Kimi K3] <288921227+claudypoo@users.noreply.github.com>
2026-09-07 19:35:05 +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[gpt-5.6-sol] 294fe80564 Use pi-supervise acknowledgement for visible workers
Co-Authored-By: PI[gpt-5.6-sol] <288921227+claudypoo@users.noreply.github.com>
2026-09-06 22:36:37 +08:00
wassnameandPI[gpt-5.6-sol] 1dc6146874 Allow a local pi-supervise extension for development
Co-Authored-By: PI[gpt-5.6-sol] <288921227+claudypoo@users.noreply.github.com>
2026-09-06 19:54:43 +08:00
wassnameandPI[gpt-5.6-sol] 7eb8b1f46b Treat stale pane close as successful cleanup
Co-Authored-By: PI[gpt-5.6-sol] <288921227+claudypoo@users.noreply.github.com>
2026-09-06 19:08:27 +08:00
wassnameandPI[gpt-5.6-sol] c5782ee2aa Finish visible supervisor pairing handshake
Co-Authored-By: PI[gpt-5.6-sol] <288921227+claudypoo@users.noreply.github.com>
2026-09-06 19:06:34 +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] 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 d0070d18b8 Correct planning prompt assertion 2026-08-26 14:03:59 +08:00
wassname 7f274a691c Ask questions that discover the plan 2026-08-26 14:03:23 +08:00
wassname 17a3b25a82 Batch high-impact planning questions 2026-08-26 13:43:42 +08:00
wassname 2362073d04 Make planning research conditional 2026-08-26 13:42:44 +08:00
wassname c1bf91f3db Resolve planning uncertainty before approval 2026-08-26 13:32:06 +08:00
wassname 389af540d1 Test review flow through Pi RPC 2026-08-26 12:12:05 +08:00
wassname fa7195eafb Make planning goals concrete 2026-08-26 12:05:04 +08:00
wassname 0d972e81c3 Align planning state with review flow 2026-08-26 10:46:05 +08:00
wassname 1426877817 Test Keep planning stays idle 2026-08-26 10:00:51 +08:00
wassname 6bb34f18cf Show plans after agent settles 2026-08-26 09:58:01 +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
wassnameandClaudypoo 7c36c119c6 plan file is per session: .pi/plan/<session_id>.md
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>
2026-08-14 16:07:26 +08:00
wassnameandClaudypoo 07510d96bd fold the plan at ## Log: re-send the working set on a stale cadence, the whole file only on resync
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>
2026-08-05 12:08:16 +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 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
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
wassname acb04dbfa2 Merge branch 'main' of https://github.com/wassname/pi-goals 2026-07-02 06:29:20 +08:00
wassnameandClaudypoo 87c6c4d440 goals widget: fold path into header + add 'prune completed goals'
Two space-savers for a display that grows across sessions:
- widget header now carries the clickable .pi/goals.md path (with title),
  dropping the separate muted footer -- one vertical line instead of two.
- /goals clear now offers 'Prune completed goals' (pure pruneCompleted:
  drops done+cancelled goal blocks, keeps active/open, title, and the log)
  alongside the existing full clear. Gives a way to shed old goals without
  losing the audit trail.

Co-Authored-By: Claudypoo <288921227+claudypoo@users.noreply.github.com>
2026-07-02 06:26:46 +08:00
wassname 9a4da96d56 Fail forward when goal judge is inconclusive 2026-06-29 05:14:23 +08:00
wassnameandClaudypoo 838c42d7bd pi-goals: discriminator/failure-mode format + visible sign-off judge
Replace done_when with a discriminator + subtle-failure-mode pair as the
heart of each goal. The discriminator is the POSITIVE success observation
that no failure mode could fake, not just failure-avoidance: a run can
dodge every trap and still produce nothing. Carried through planDrafting,
the sign-off judge, README, and the parser doc.

Format migration: flat numbered markdown goals (`1. [/] goal: ...`),
keyword-anchored parsing (indentation cosmetic), goals matched by text,
subtask states [ ]/[/]/[x]/[-] plus ~~strike~~. Evidence empty at
planning, filled at sign-off, multi-line supported.

CompleteGoal now returns the judge's reasoning under a
`--- sign-off judge ---` block (was just "Signed off"), so the verdict is
visible. Plan mode is read-only: edit/write (except goals.md) and
mutating bash are blocked by a tool hook.

17 parser tests, typecheck + biome clean.

Co-Authored-By: Claudypoo <288921227+claudypoo@users.noreply.github.com>
2026-06-16 11:45:08 +08:00