note: You are running `vp test` as a Vite+ built-in command. If you meant to run the test npm script, use `vpr test` instead. RUN v5.0.1 /tmp/worktree-git-11/implementation-r3-probes ↓ probes.test.ts > V2 storage cleanup eligibility > allows an idle worktree and rejects the project checkout ↓ probes.test.ts > V2 storage cleanup eligibility > retains a worktree while its thread is running ↓ probes.test.ts > V2 storage cleanup eligibility > retains a worktree while its thread is starting ↓ probes.test.ts > V2 storage cleanup eligibility > retains a worktree while its thread is preparing ↓ probes.test.ts > V2 storage cleanup eligibility > retains a worktree while its thread is waiting ↓ probes.test.ts > V2 storage cleanup eligibility > retains a worktree while its thread is queued ↓ probes.test.ts > V2 storage cleanup eligibility > allows cleanup once its thread is idle ↓ probes.test.ts > V2 storage cleanup eligibility > allows cleanup once its thread is completed ↓ probes.test.ts > V2 storage cleanup eligibility > allows cleanup once its thread is interrupted ↓ probes.test.ts > V2 storage cleanup eligibility > allows cleanup once its thread is failed ↓ probes.test.ts > V2 storage cleanup eligibility > allows cleanup once its thread is cancelled ↓ probes.test.ts > V2 storage cleanup eligibility > allows cleanup once its thread is rolled_back ↓ probes.test.ts > V2 storage cleanup eligibility > retains completed while background work is pending ↓ probes.test.ts > V2 storage cleanup eligibility > retains interrupted while background work is pending ↓ probes.test.ts > V2 storage cleanup eligibility > retains cancelled while background work is pending ↓ probes.test.ts > V2 storage cleanup eligibility > retains rolled_back while background work is pending ↓ probes.test.ts > V2 storage cleanup eligibility > retains completed while a runtime request is pending ↓ probes.test.ts > V2 storage cleanup eligibility > retains interrupted while a runtime request is pending ↓ probes.test.ts > V2 storage cleanup eligibility > retains cancelled while a runtime request is pending ↓ probes.test.ts > V2 storage cleanup eligibility > retains rolled_back while a runtime request is pending ↓ probes.test.ts > V2 storage cleanup eligibility > retains an active run even if the shell status is idle ↓ probes.test.ts > V2 storage cleanup eligibility > retains a queued prompt before the new run has been projected ↓ probes.test.ts > V2 storage cleanup eligibility > uses V2 run activity instead of metadata refreshes for retention ↓ probes.test.ts > merged pull request cleanup > removes a worktree whose head reached the default branch through a merged pull request ↓ probes.test.ts > merged pull request cleanup > removes a squash-merged worktree when the pull request names its exact head ↓ probes.test.ts > merged pull request cleanup > keeps a squash worktree whose pull request has a later commit than the merged head ↓ probes.test.ts > merged pull request cleanup > keeps a squash worktree whose pull request was merged into a release branch ↓ probes.test.ts > merged pull request cleanup > keeps a squash worktree whose pull request was merged into its stack parent ↓ probes.test.ts > merged pull request cleanup > keeps a squash worktree whose pull request was merged without a reported head commit ↓ probes.test.ts > merged pull request cleanup > keeps a squash worktree whose pull request belongs to a different branch ↓ probes.test.ts > merged pull request cleanup > keeps a squash worktree whose pull request is still open ↓ probes.test.ts > merged pull request cleanup > keeps a squash worktree whose pull request was closed without merging ↓ probes.test.ts > merged pull request cleanup > keeps a worktree with no pull request, or one that is not merged ↓ probes.test.ts > removes clean submodules recursively, including deinitialized repositories ↓ probes.test.ts > keeps nested submodule files protected by the current keep rule ↓ probes.test.ts > keeps unpushed submodule history after checkout and deinitialization ↓ probes.test.ts > keeps submodules when stored repository metadata is malformed ↓ probes.test.ts > preserves late tracked edits when submodules were never initialized ↓ probes.test.ts > subagent worktree ownership > checks the whole owner group (idle) ↓ probes.test.ts > subagent worktree ownership > checks the whole owner group (grandchild) ↓ probes.test.ts > subagent worktree ownership > checks the whole owner group (null-branch) ↓ probes.test.ts > subagent worktree ownership > checks the whole owner group (stale-branch) ↓ probes.test.ts > subagent worktree ownership > checks the whole owner group (isolated-owner) ↓ probes.test.ts > subagent worktree ownership > checks the whole owner group (fork-owner) ↓ probes.test.ts > subagent worktree ownership > checks the whole owner group (missing-parent) ↓ probes.test.ts > subagent worktree ownership > checks the whole owner group (cycle) ↓ probes.test.ts > subagent worktree ownership > checks the whole owner group (two-tops) ↓ probes.test.ts > subagent worktree ownership > checks the whole owner group (wrong-root) ↓ probes.test.ts > subagent worktree ownership > checks the whole owner group (running) ↓ probes.test.ts > subagent worktree ownership > checks the whole owner group (pending) ↓ probes.test.ts > subagent worktree ownership > checks the whole owner group (unrelated) ↓ probes.test.ts > subagent worktree ownership > checks the whole owner group (fork) ↓ probes.test.ts > subagent worktree ownership > checks the whole owner group (recent-activity) ↓ probes.test.ts > subagent worktree ownership > checks the whole owner group (recent-inactive) ↓ probes.test.ts > subagent worktree ownership > checks the whole owner group (recent-grace) ↓ probes.test.ts > subagent worktree ownership > checks the whole owner group (recent-settle) ↓ probes.test.ts > subagent worktree ownership > checks the whole owner group (child-settled-now) ↓ probes.test.ts > subagent worktree ownership > checks the whole owner group (child-settled-only) ↓ probes.test.ts > subagent worktree ownership > cancels removal when a child changes during measurement (running) ↓ probes.test.ts > subagent worktree ownership > cancels removal when a child changes during measurement (pending) ↓ probes.test.ts > subagent worktree ownership > cancels removal when a child changes during measurement (activity) ↓ probes.test.ts > subagent worktree ownership > cancels removal when a child changes during measurement (unrelated) ↓ probes.test.ts > subagent worktree ownership > cancels removal when a child changes during measurement (settled) ↓ probes.test.ts > subagent worktree ownership > cancels removal when a child changes during measurement (resettled) ↓ probes.test.ts > subagent worktree ownership > cancels removal when a child changes during measurement (null-branch) ↓ probes.test.ts > subagent worktree ownership > cancels removal when a child changes during measurement (stale-branch) ↓ probes.test.ts > orphan worktree reports > keeps orphan results visible when thread results fill the report ↓ probes.test.ts > orphan worktree reports > skips an ancestor of a referenced thread worktree (canonical) ↓ probes.test.ts > orphan worktree reports > skips an ancestor of a referenced thread worktree (win32) ↓ probes.test.ts > orphan worktree reports > skips an ancestor of a referenced thread worktree (linux) ↓ probes.test.ts > orphan worktree reports > waits an hour before reporting a folder without a thread row ↓ probes.test.ts > orphan worktree reports > continues reporting when a project root cannot be probed ↓ probes.test.ts > orphan worktree reports > caches walk timeouts and retries budget-cut orphan sizes (walk-timeout) ↓ probes.test.ts > orphan worktree reports > caches walk timeouts and retries budget-cut orphan sizes (sweep-budget) ↓ probes.test.ts > orphan worktree reports > reports a linked orphan's size without removing its files (nested) ↓ probes.test.ts > orphan worktree reports > reports a linked orphan's size without removing its files (direct) ↓ probes.test.ts > orphan worktree reports > does not report a folder referenced by a thread (active) ↓ probes.test.ts > orphan worktree reports > does not report a folder referenced by a thread (outside-active-snapshot) ↓ probes.test.ts > orphan worktree reports > does not report a folder containing a project checkout (exact) ↓ probes.test.ts > orphan worktree reports > does not report a folder containing a project checkout (nested) ↓ probes.test.ts > orphan worktree reports > does not report a folder containing a project checkout (symlink) ↓ probes.test.ts > orphan worktree reports > does not report project internals under a custom managed root (exact) ↓ probes.test.ts > orphan worktree reports > does not report project internals under a custom managed root (contains) ↓ probes.test.ts > orphan worktree reports > does not report project internals under a custom managed root (symlink) ↓ probes.test.ts > orphan worktree reports > reports an orphan under a managed root inside a project (direct) ↓ probes.test.ts > orphan worktree reports > reports an orphan under a managed root inside a project (symlink) ↓ probes.test.ts > orphan worktree reports > reports an orphan containing a removed project checkout ↓ probes.test.ts > orphan worktree reports > skips project workspace internals while reporting a real orphan sibling ↓ probes.test.ts > orphan worktree reports > skips symbolic links at both directory levels and disabled cleanup ↓ probes.test.ts > orphan worktree reports > reports ordinary folders with an honest reason and keeps their files ↓ probes.test.ts > orphan worktree reports > continues after an inaccessible directory's git probe ↓ probes.test.ts > orphan worktree reports > compares thread paths with host casing rules and excludes existing projects (win32) ↓ probes.test.ts > orphan worktree reports > compares thread paths with host casing rules and excludes existing projects (linux) ↓ probes.test.ts > orphan worktree reports > caps orphan entries while preserving kept totals ↓ probes.test.ts > storage cleanup reports and local file policies > keeps a worktree protected by a missing project root (before-check) ↓ probes.test.ts > storage cleanup reports and local file policies > keeps a worktree protected by a missing project root (while-measuring) ↓ probes.test.ts > storage cleanup reports and local file policies > measures nested regular files without following symlinks ↓ probes.test.ts > storage cleanup reports and local file policies > still removes a worktree when measuring its size fails ↓ probes.test.ts > storage cleanup reports and local file policies > keeps a worktree when its owner's branch is cleared during size measurement ↓ probes.test.ts > storage cleanup reports and local file policies > keeps a worktree when its owner's branch changes during size measurement ↓ probes.test.ts > storage cleanup reports and local file policies > keeps a worktree when its thread starts during size measurement ↓ probes.test.ts > storage cleanup reports and local file policies > keeps a worktree when another thread starts using it during size measurement ↓ probes.test.ts > storage cleanup reports and local file policies > reads the thread snapshot once per sweep, not per worktree ↓ probes.test.ts > storage cleanup reports and local file policies > session updates to running or ready during a sweep make 1 sweep(s) in total ↓ probes.test.ts > storage cleanup reports and local file policies > session updates to stopped or error during a sweep make 2 sweep(s) in total ↓ probes.test.ts > storage cleanup reports and local file policies > does not measure a worktree kept for an open provider session ↓ probes.test.ts > storage cleanup reports and local file policies > compares the checked-out branch without a full status ↓ probes.test.ts > storage cleanup reports and local file policies > decodes reports from servers without size fields ↓ probes.test.ts > storage cleanup reports and local file policies > applies "any-local-files" ↓ probes.test.ts > storage cleanup reports and local file policies > applies "uncommitted-changes" ↓ probes.test.ts > storage cleanup reports and local file policies > applies "tracked-changes" ↓ probes.test.ts > storage cleanup reports and local file policies > applies "any-local-files" ↓ probes.test.ts > storage cleanup reports and local file policies > applies "uncommitted-changes" ↓ probes.test.ts > storage cleanup reports and local file policies > applies "tracked-changes" ↓ probes.test.ts > storage cleanup reports and local file policies > applies "any-local-files" ↓ probes.test.ts > storage cleanup reports and local file policies > applies "uncommitted-changes" ↓ probes.test.ts > storage cleanup reports and local file policies > applies "tracked-changes" ↓ probes.test.ts > storage cleanup reports and local file policies > preserves tracked edits written after the final status check ↓ probes.test.ts > storage cleanup reports and local file policies > streams the current report and subsequent runs ↓ probes.test.ts > storage cleanup reports and local file policies > caps entries while preserving totals and prioritizing removals ↓ probes.test.ts > storage cleanup reports and local file policies > keeps staged edits in tracked-only mode ↓ probes.test.ts > storage cleanup reports and local file policies > reports shared and running worktrees but omits disabled rules and missing directories ↓ probes.test.ts > storage cleanup reports and local file policies > serializes concurrent requests and returns each run's report ↓ probes.test.ts > storage cleanup reports and local file policies > aggregates expired artifacts and rotated logs while retaining current logs ↓ probes.test.ts > storage cleanup reports and local file policies > reports git failures without aborting the remaining categories ↓ probes.test.ts > settled worktree retention > applies retention and safety checks (immediate) ↓ probes.test.ts > settled worktree retention > applies retention and safety checks (settle-script) ↓ probes.test.ts > settled worktree retention > applies retention and safety checks (expired) ↓ probes.test.ts > settled worktree retention > applies retention and safety checks (boundary) ↓ probes.test.ts > settled worktree retention > applies retention and safety checks (wait) ↓ probes.test.ts > settled worktree retention > applies retention and safety checks (recent-update) ↓ probes.test.ts > settled worktree retention > applies retention and safety checks (active) ↓ probes.test.ts > settled worktree retention > applies retention and safety checks (dirty) ↓ probes.test.ts > settled worktree retention > applies retention and safety checks (project-off) ↓ probes.test.ts > settled worktree retention > applies retention and safety checks (project-custom) ↓ probes.test.ts > settled worktree retention > applies retention and safety checks (inactive-settling) ↓ probes.test.ts > settled worktree rechecks > keeps a checkout changed during measurement ({"settledAt":null}) ↓ probes.test.ts > settled worktree rechecks > keeps a checkout changed during measurement ({"settledAt":"2026-06-11T12:00:00.000Z"}) ↓ probes.test.ts > keeps saved usage data when removing a settled checkout ↓ probes.test.ts > leaves settled cleanup to the regular sweeps after thread.settled ↓ probes.test.ts > leaves settled cleanup to the regular sweeps after stopped ↓ probes.test.ts > leaves settled cleanup to the regular sweeps after ready stdout | probes.test.ts > claude-r2 repro > R2B symlinked worktree parent with clean submodules (any-local-files) [09:11:52.063] INFO (#45): storage cleanup removed worktree { threadId: 'thread-1' } stdout | probes.test.ts > claude-r2 repro > R2B symlinked worktree parent with clean submodules (any-local-files) R2B any-local-files {"entries":[["/tmp/cleanup-link-MlFpmq/linked/feature","removed","Inactive for 160 days"]],"exists":false} ✓ probes.test.ts > claude-r2 repro > R2B symlinked worktree parent with clean submodules (any-local-files) 714ms stdout | probes.test.ts > claude-r2 repro > R2B symlinked worktree parent with clean submodules (uncommitted-changes) [09:11:52.685] INFO (#275): storage cleanup removed worktree { threadId: 'thread-1' } stdout | probes.test.ts > claude-r2 repro > R2B symlinked worktree parent with clean submodules (uncommitted-changes) R2B uncommitted-changes {"entries":[["/tmp/cleanup-link-AAK2TL/linked/feature","removed","Inactive for 160 days"]],"exists":false} ✓ probes.test.ts > claude-r2 repro > R2B symlinked worktree parent with clean submodules (uncommitted-changes) 618ms stdout | probes.test.ts > claude-r2 repro > R2C any-local-files with a large root index [09:11:54.234] INFO (#480): storage cleanup removed worktree { threadId: 'thread-1' } stdout | probes.test.ts > claude-r2 repro > R2C any-local-files with a large root index R2C {"indexBytes":77132,"outcome":"removed","reason":"Inactive for 160 days"} ✓ probes.test.ts > claude-r2 repro > R2C any-local-files with a large root index 1592ms Test Files 1 passed (1) Tests 3 passed | 142 skipped (145) Start at 09:11:41 Duration 13.20s (transform 53%, import 24%, tests 22%, setup 1%) Transform transforming modules took 6.92s · 53% of tracked time, re-done on every run persist transforms across runs with fsModuleCache: true learn more: https://vitest.dev/guide/improving-performance#caching-between-reruns JSON report written to /tmp/worktree-git-11/20368-implementation-r3-probes.json