Skip to content

components C2: resume picker wired end-to-end - #293

Merged
ericleepi314 merged 1 commit into
mainfrom
components/c2-resume-picker
Jun 11, 2026
Merged

components C2: resume picker wired end-to-end#293
ericleepi314 merged 1 commit into
mainfrom
components/c2-resume-picker

Conversation

@ericleepi314

Copy link
Copy Markdown
Collaborator

Summary

  • Phase C2 of the components/ folder parity plan: /resume (alias /continue) lists persisted sessions; selection swaps the live conversation (TS LogSelector/ResumeConversation degraded scope)
  • Listing/filtering in UI-neutral services/session_listing (headless /resume loads zero Textual modules); metadata-only sessions filtered with an honest hidden count (standing critic condition §5 Q2)
  • AgentBridge.resume_session: busy-gated swap via the TS-parity reader (orphan repair, snip boundaries, path adjustment) → switch_session + restore_cost_state_for_session in TS lockstep → advisor scan cursor pinned to tail → persister re-target (title/counters preserved)
  • Degraded replay handles dict AND dataclass content blocks; skipped tool blocks counted honestly; preview pane explicitly parked

Test plan

  • 19 resume/doctor tests incl. a production-pipeline replay test (would have caught the review's B1) and the persister round-trip (title survives, message_count doesn't double-bump)
  • Full suite BASELINE-IDENTICAL (12 known pre-existing failures, diff-verified)
  • Impl-critic: REQUEST CHANGES round (dataclass-block render, dependency direction, advisor replay, cost restore) → all fixed → APPROVE

🤖 Generated with Claude Code

The dormant resume screen becomes real: /resume (alias /continue)
lists persisted sessions and selection swaps the live conversation.

- listing/filtering live in UI-neutral services/session_listing
  (headless /resume loads zero Textual modules); metadata-only
  sessions (message_count==0) are filtered with an honest hidden
  count per the standing critic condition; duplicate ids deduped
- AgentBridge.resume_session: busy-gated swap using the TS-parity
  reader (orphan repair, snip boundaries, path adjustment), then
  switch_session + restore_cost_state_for_session in TS lockstep
  (ResumeConversation.tsx:224-227), advisor scan cursor pinned to
  the list tail (index 0 would replay historical advisor events),
  persister re-targeted (title/counters preserved); unreadable
  transcripts refuse instead of crashing the callback chain
- degraded replay renders dict AND dataclass text blocks (the
  reader yields TextBlock dataclasses) and counts skipped
  tool/attachment blocks honestly; session-preview pane explicitly
  parked in the module docstring
- registry command: TS-verbatim metadata incl. aliases=[continue],
  substring search-term filter, output-style pattern (no ctx.ui)

19 resume/doctor tests (incl. a production-pipeline replay test and
the persister round-trip asserting title survival + no count
double-bump); full suite baseline-identical (12 known failures).
Critic-approved after one REQUEST CHANGES round (B1 dataclass-block
render bug, dependency direction, advisor replay, cost restore).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@ericleepi314
ericleepi314 merged commit d7290ad into main Jun 11, 2026
singlaamitesh pushed a commit to singlaamitesh/clawcodex that referenced this pull request Jul 7, 2026
…-resume-picker

components C2: resume picker wired end-to-end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant