feat(resume): bare path resume — cross-harness session picker - #154
Open
od0 wants to merge 1 commit into
Open
Conversation
|
🔍 Preview deployed: https://2dc0742a.toolpath.pages.dev |
Author
|
Dogfooding note: the first bare |
This was referenced Aug 4, 2026
…n picker Closes #110. With no <input>, resume opens a picker over the newest 100 sessions from every installed harness (ranked cwd-first then newest), derives the pick (write-through cache with the freshness fast path, mirroring share), then flows into the existing harness-picker -> project -> exec pipeline. A tail row (N older sessions — load everything) runs the full sweep; --from narrows the source harness; --project always sweeps fully. Codex candidates rank stat-only and hydrate from the listing cache (counts included) or one cached streaming read. New SessionPicker seam (FixedPicker sequences + RecordingExec) drives 12 bare-mode integration tests headlessly. A scoped-to-project-first variant was built and reverted during dogfooding — see the spec addendum. path-cli 0.17.0; toolpath-codex 0.6.3 (peek_metadata + HeadHunt refactor).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #110. Top of the picker-performance stack (#156 → #157 → #159 → this) — one squashed feature commit whose tree is byte-identical to the build validated in dogfooding.
path resumewith no argument opens a recency-first cross-harness session picker: the newest 100 sessions from every installed harness, ranked cwd-matches-first then newest, hydrated in milliseconds regardless of history size. Picking a session derives it (write-through cache, mirroringshare), runs the harness picker (source pre-selected), projects, and execs.Surface
path resume <input>path resume(TTY)path resume(no TTY)no input provided and no TTY for interactive selection; …path resume --harness X--harnessstays the target, validated before the picker; harness picker skipped.path resume --from Ypath resume --project PA tail row —
… N older sessions — load everything— runs the full sweep on demand.How the picker stays fast
Codex candidates rank stat-only by mtime; each of the top 100 hydrates from the listing cache on a stamp hit (instant, message count included) or via one streaming read that's cached thereafter. Claude/opencode use the cache-backed collectors. Measured end-to-end on a 3.9 GB codex tree + 455-session claude project: first run ~2.3 s, then 0.03 s warm.
Design notes
--cache): write-through by default mirrorsshare, keeps--no-cachemeaning one thing everywhere, and feeds the freshness fast path plus latershare/query/sync.SessionPickerseam (mirrorsExecStrategy) makes the whole pipeline headless-testable —FixedPicker(with multi-round sequences) +RecordingExecdrive 12 bare-mode integration tests with zero TTY.toolpath-codex0.6.3 addspeek_metadata(O(1) head+tail, count-free) and factors the sharedHeadHuntused by both metadata paths.Rebase notes
ResumeArgsderivesDefaultand all test constructors use..Default::default()— feat(resume):path resume --remote <ssh-url>— resume a session on a remote host #145/feat(resume): remote persistence & transport picker (--persist / --via) #146's appended fields stop breaking every constructor. New flags sit mid-struct; noExecStrategy/RealExec/fuzzy.rschanges.project_into_harness, so Plugin /path:resume + /path:link-pr; fixes that make projected Claude sessions resumable #150'sClaudeProjectionchange is inherited cleanly.path resume --remote <ssh-url>— resume a session on a remote host #145 claim the same — whoever lands second renumbers.Validated by heavy dogfooding on real multi-gigabyte trees (this PR's picker is how its own review sessions get resumed).