todo: plan mode is built and needs the owner to run it

This commit is contained in:
2026-08-17 22:14:42 +00:00
parent 4125949468
commit 63f866750b
+32
View File
@@ -400,6 +400,38 @@ outside the example's new README:
- [ ] A plugin's `assets/icon.png` is only published while installed, so its real icon is invisible in the
store before install. The catalogue's `iconUrl` works around it, and an author has to know to add one.
## Waiting on the owner to run it
- [ ] **Plan mode is built and has never executed.** Landed `1b811dfa` on 2026-08-17, typechecks, unit
tested at the translation layer — and not one line of it has run on a machine. The owner was away
when it was finished and asked to be reminded, which is what this entry is.
**Restart BOTH:** `pm2 restart officer` and `pm2 restart officer-claude-code`. The sidecar holds
every interesting part (the gate, the pending-plan map, the mode control request); restarting only
the server leaves the old sidecar running with no `canUseTool` at all, and the toggle would then
appear to work while changing nothing. Note the server is ALSO carrying two earlier unrestarted
changes — the tier-less-model fix (`773f0e1c`) and the sessions-list work.
**Then, in `/chat`, in this order:**
1. The clipboard icon by the model picker lights up, and `pm2 logs officer-claude-code` says
`[claude:plan:<key>] plan mode on`.
2. Ask for something that needs a plan. The agent researches and does NOT edit — a `Write` in plan
mode should reach neither the disk nor the gate.
3. The plan card renders with Approve / Reject, and **the turn is genuinely parked** while it sits
there (the spinner stays; that is correct, an agent is blocked on a promise in the sidecar).
4. Approve → the agent continues *in the same turn*, and `plan mode off` follows immediately rather
than at turn end. Reject with a reason → it revises and asks again.
5. Refresh mid-plan → the card replays with its decision, rather than a conversation that stops dead.
6. Pick `claude-code/opusplan` with plan mode OFF → the toggle's tooltip says it is resting on Sonnet.
**The one failure worth watching for** is a turn that never ends after a plan is answered. That would
mean a `canUseTool` promise was left unresolved — the agent waits forever and the stall watchdog
eventually tears the session down. `settleAllPlans` runs on every teardown path plus a 20-minute
timeout to make it impossible, and it is the part with no test behind it.
Design decisions and the verification they came from: `docs/chat-plan-mode.md`.
## Known bugs
- [ ] **Background job logs appeared INSIDE an open file in the code editor.** Reported 2026-08-16 by the