feat(resume): Resume in the kebab menu (A1) + harden the resume kickoff (A2)
A1 — SessionMenu gains a Resume item, gated to status!=="finalized" && !archived (matching the backend's 409 read-only guard), wired in AppShell to doResume -> POST /sessions/:id/resume. SessionMenu.test.tsx (3 tests); frontend 96/96, tsc clean. A2 — diagnosis-first clean-room repro driving `pi --mode rpc` with the backend's exact resume handshake shows the cold-start stall NO LONGER reproduces on pi 0.79.4 (8/8 chained into `tht session show` + `read SKILL.md` in-turn, fresh and partway sessions). The earlier narrate-and-stop predates the pi upgrade. Defense-in-depth anyway: RIPRENDI_KICKOFF hardened to force the in-turn tool call (gate_resume_kickoff.test.js + live regression 2/2). Gate JS 34/34. PROJECT_STATE open-item #1 (resume stall) flipped to RESOLVED; cross-model resume robustness folded into workstream G. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
+23
-14
@@ -81,8 +81,8 @@ Opens frontend at http://localhost:5173 → backend :8787.
|
||||
## UI/UX redesign + Resume — IN PROGRESS (2026-06-30, evening)
|
||||
|
||||
Approved multi-workstream plan: **`~/.claude/plans/foamy-forging-dahl.md`** (read it to resume).
|
||||
Memory: `thothii-ui-redesign-inprogress.md`. **D + E merged @ `0eeb3f7` (pushed); B + C @ `b056ff3`
|
||||
(live-verified); F implemented + committed (live check deferred to G). All on `main`, not yet pushed.**
|
||||
Memory: `thothii-ui-redesign-inprogress.md`. **D + E @ `0eeb3f7`, B + C @ `b056ff3`, F @ `cef9ae4`
|
||||
all pushed to origin. A (Resume menu + stall diagnosis/hardening) DONE, uncommitted. Only G remains.**
|
||||
|
||||
- **D — DONE** (`c12bdcd`): session display `name` = 3-5 Italian keywords via **YAKE** (no LLM),
|
||||
derived in `tht session new` (CLI layer); `create_session` core unchanged (`name=None` default).
|
||||
@@ -114,12 +114,20 @@ Memory: `thothii-ui-redesign-inprogress.md`. **D + E merged @ `0eeb3f7` (pushed)
|
||||
disciplines 2-3, Phase-1 single-pick) + the `CLAUDE.md` gate note. Gate JS **33/33**, harness 269.
|
||||
**Live verification (model actually uses `reviewer_select`+decision, no follow-up gate, decision in
|
||||
`review_decisions.jsonl`) deferred to G** — it is model-behavior-dependent.
|
||||
- **A (pending, riskiest):** Resume command + **FIX the resume cold-start stall** (open item #1).
|
||||
- **G (later):** cross-model behavior matrix (Qwen3.6 / GLM 5.2 / Deepseek V4 / others) — also the
|
||||
home for F's live verification.
|
||||
- **A — DONE** (uncommitted): **A1** — `SessionMenu` gains a **Resume** item (gated to
|
||||
`status!=="finalized" && !archived`), wired in `AppShell` to the existing `doResume` → `POST
|
||||
/sessions/:id/resume`. 3 tests (`SessionMenu.test.tsx`); frontend **96/96**, tsc clean. **A2** —
|
||||
diagnosis-first clean-room repro shows the **resume cold-start stall NO LONGER reproduces on pi
|
||||
0.79.4** (8/8 chained into the tool calls, fresh + partway; GLM 5.2 now narrates AND emits
|
||||
`tht session show`+`read SKILL.md` in-turn). The earlier narrate-and-stop predates the pi upgrade.
|
||||
Defense-in-depth applied: `RIPRENDI_KICKOFF` hardened to force the in-turn tool call (gate test +
|
||||
live regression 2/2). The cross-model angle (weaker/older models) lives in **G**.
|
||||
- **G (last, separate):** cross-model behavior matrix (Qwen3.6 / GLM 5.2 / Deepseek V4 / others) —
|
||||
also the home for **F's live check** and **A's cross-model resume robustness**.
|
||||
|
||||
**Next chunk:** **A** (Resume in the kebab + the resume cold-start stall fix, diagnosis-first).
|
||||
**G** (cross-model, incl. F's live check) later.
|
||||
**Status:** A-G core work done (D, E, B, C, F, A). **Remaining:** **G** (cross-model matrix,
|
||||
incl. F's live single-select check + A's resume-on-weaker-models), plus a one-off manual Playwright
|
||||
kebab→resume pass through the live UI (open item 2).
|
||||
|
||||
## Live verification + reviewer_select fix (2026-06-30, afternoon)
|
||||
|
||||
@@ -190,13 +198,14 @@ Full session management modeled on Claude's UI, all three layers:
|
||||
`docs/superpowers/plans/2026-06-29-session-management.md`.
|
||||
|
||||
### ⚠️ Open items / pending gates
|
||||
1. **Resume cold-start STALLS (root cause confirmed 2026-06-30) — NOT fixed.** On
|
||||
`/riprendi-sessione` GLM 5.2 narrates the bootstrap step ("esamino la sessione…") then ends
|
||||
the turn without the tool call → Pi idle, unrecoverable from the UI (steer doesn't revive an
|
||||
ended turn). The new-question path works, so it's resume-specific. Fix direction: harden the
|
||||
resume kickoff/SKILL so the model chains into the tool call. Memory:
|
||||
`thothii-resume-cold-start-stall.md`. **Do not advertise "Resume" as working until fixed.**
|
||||
*(Scheduled as workstream A of the redesign plan above.)*
|
||||
1. **Resume cold-start stall — RESOLVED on pi 0.79.4 (workstream A, 2026-06-30).** The earlier
|
||||
narrate-and-stop (GLM 5.2 narrating the bootstrap step then ending the turn without the tool
|
||||
call) **no longer reproduces**: a clean-room repro of the backend's exact resume handshake
|
||||
chained into `tht session show`+`read SKILL.md` in-turn **8/8** (fresh + partway sessions). The
|
||||
pi upgrade is the likely fix. Defense-in-depth: `RIPRENDI_KICKOFF` hardened to force the in-turn
|
||||
tool call (gate test + live 2/2). Memory: `thothii-resume-cold-start-stall.md`. **Remaining:**
|
||||
the cross-model angle (older/weaker models) is folded into **G**; a full Playwright kebab→resume
|
||||
pass through the live UI is still worth one manual run (item 2).
|
||||
2. **Full Playwright live-stack verification (MANUAL, not yet run).**
|
||||
3. **Minor backlog (non-blocking):** explicit id-traversal guard in `delete_session`
|
||||
(today gated by `load_session`); `close_session` could reuse `_save_touched` (DRY);
|
||||
|
||||
Reference in New Issue
Block a user