$ node scripts/prove-scenario.ts scripts/scenarios/annex-worktree-cleanup.e2e.ts --base dde53b11f3141e8cf9995d23234d00b04421f655 --head cd42683c6a8a33a932fe7742982cfe0edff3cfbc ⊘ cache disabled Scope: all 42 workspace projects ✓ Lockfile passes supply-chain policies (verified 1h ago) Lockfile is up to date, resolution step is skipped Packages are hard linked from the content-addressable store to the virtual store. Content-addressable store is at: /.local/share/pnpm/store/v11 Virtual store is at: node_modules/.pnpm Progress: resolved 1266, reused 1266, downloaded 0, added 1251 Progress: resolved 1775, reused 1775, downloaded 0, added 1769 Packages: +1780 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Progress: resolved 1780, reused 1776, downloaded 0, added 1780, done Agent skills awaiting approval: e2e. Run "pnpm approve" to review them. . prepare$ vp config --no-agent . prepare: Done devDependencies: + @coderabbitai/config 1.2.0 + @effect/tsgo 0.67.1 + @shadcn/lint 0.1.5 + @types/node 24.12.4 + knip 6.34.0 + vite-plus 1.4.0 Done in 3.5s using pnpm v12.14.0 RUN e2e v0.23.0 /scripts run 01a1dd7c-df19-7cd7-be4f-f8b938c9e133 · targets: web, ios ✓ target "web" command at http://127.0.0.1:34461/.well-known/t3/environment ready 5.88s stderr | |web| scenarios/annex-worktree-cleanup.e2e.ts > git-annex removal, cleanup, orphan reporting and retained links Preparing worktree (new branch 'orphan-annex') Preparing worktree (new branch 'orphan-plain') × |web| scenarios/annex-worktree-cleanup.e2e.ts > git-annex removal, cleanup, orphan reporting and retained links 95.41s → expected {"manualExists":true,"manualRegistered":true,"cleanupExists":tr… ❯ |web| scenarios/annex-worktree-cleanup.e2e.ts (1 test | 1 failed) 95.41s ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Failed Tests 1 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ FAIL |web| scenarios/annex-worktree-cleanup.e2e.ts > git-annex removal, cleanup, orphan reporting and retained links ASSERTION_FAILED: expected {"manualExists":true,"manualRegistered":true,"cleanupExists":true,"cleanupRegistered":true,"cleanupOutcome":"kept","plainOrphanReason":"No thread uses this worktree","dirtyRefused":true,"dirtyLinked":true,"dirtyContent":"Annex content is readable","lockedRefused":true,"lockedLinked":true,"lockedContent":"Annex content is readable"} to equal {"manualExists":false,"manualRegistered":false,"cleanupExists":false,"cleanupRegistered":false,"cleanupOutcome":"removed","orphanReason":"No thread uses this worktree","plainOrphanReason":"No thread uses this worktree","dirtyRefused":true,"dirtyLinked":true,"dirtyContent":"Annex content is readable","lockedRefused":true,"lockedLinked":true,"lockedContent":"Annex content is readable"} ❯ scenarios/annex-worktree-cleanup.e2e.ts:210:110 208| orphanReason: annexOrphan?.reason, plainOrphanReason: plainOrphan… 209| dirtyRefused:dirtyCheck.refused, dirtyLinked:dirtyCheck.symlink, … 210| lockedRefused:lockedCheck.refused, lockedLinked:lockedCheck.symli… 211| manualExists:false,manualRegistered:false,cleanupExists:false,c… 212| orphanReason:'No thread uses this worktree',plainOrphanReason:'… ❯ at http://127.0.0.1:34461/632f7f16-0e1b-4c0d-b94d-4c69d165df8f/mcp:d9c34c2a-8b43-4a57-8172-d3b3f0942605 ❯ app 1 error, 5 warnings logged × console error: Worktree cleanup failed after thread deletion {threadId: mcp:d0a0535d-aad7-4aa5-8895-e11856d3e27e, projectCwd: /public-fixture/workspaces/w-t8f3Ee/annex-demo, worktreePath: /publi…/worktrees/annex-demo/t3-annex-… ❯ trace .e2e/prove/base/results/annex-worktree-cleanup-git-annex-removal-cleanup-orphan-e42120b7a0b6c1d3/trace.md ❯ video .e2e/prove/base/results/annex-worktree-cleanup-git-annex-removal-cleanup-orphan-e42120b7a0b6c1d3/attempt-1/video/video.webm ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[1/1]⎯ Test Files 1 failed | 0 passed (1) Tests 1 failed | 0 passed (1) Start at 04:35:11 Duration 102.02s (1m 42s, startup 5.88s) Traces .e2e/prove/base/results/ (1 page, trace.md in each test's directory) Screenshots .e2e/prove/base/results/annex-worktree-cleanup-git-annex-removal-cleanup-orphan-e42120b7a0b6c1d3/attempt-1/screenshots/001-cleanup-rule.png .e2e/prove/base/results/annex-worktree-cleanup-git-annex-removal-cleanup-orphan-e42120b7a0b6c1d3/attempt-1/screenshots/002-refusal-restores-annex.png .e2e/prove/base/results/annex-worktree-cleanup-git-annex-removal-cleanup-orphan-e42120b7a0b6c1d3/attempt-1/screenshots/003-manual-removal.png .e2e/prove/base/results/annex-worktree-cleanup-git-annex-removal-cleanup-orphan-e42120b7a0b6c1d3/attempt-1/screenshots/004-manual-registration.png .e2e/prove/base/results/annex-worktree-cleanup-git-annex-removal-cleanup-orphan-e42120b7a0b6c1d3/attempt-1/screenshots/005-maintenance-cleanup.png .e2e/prove/base/results/annex-worktree-cleanup-git-annex-removal-cleanup-orphan-e42120b7a0b6c1d3/attempt-1/screenshots/006-cleanup-native-results.png .e2e/prove/base/results/annex-worktree-cleanup-git-annex-removal-cleanup-orphan-e42120b7a0b6c1d3/attempt-1/screenshots/007-orphan-native-results.png .e2e/prove/base/results/annex-worktree-cleanup-git-annex-removal-cleanup-orphan-e42120b7a0b6c1d3/attempt-1/screenshots/008-cleanup-and-orphans.png Markdown .e2e/prove/base/summary.md Failed × |web| scenarios/annex-worktree-cleanup.e2e.ts:210 > git-annex removal, cleanup, orphan reporting and retained links ASSERTION_FAILED: expected {"manualExists":true,"manualRegistered":true,"cleanupExists":true,"cleanupRegistered":true,"cleanupOutcome":"kept","plainOrphanReason":"No thread uses this worktree","dirtyRefused":true,"dirtyLinked":true,"dirtyContent":"Annex content is readable","lockedRefused":true,"lockedLinked":true,"lockedContent":"Annex content is readable"} to equal {"manualExists":false,"manualRegistered":false,"cleanupExists":false,"cleanupRegistered":false,"cleanupOutcome":"removed","orphanReason":"No thread uses this worktree","plainOrphanReason":"No thread uses this worktree","dirtyRefused":true,"dirtyLinked":true,"dirtyContent":"Annex content is readable","lockedRefused":true,"lockedLinked":true,"lockedContent":"Annex content is readable"} trace .e2e/prove/base/results/annex-worktree-cleanup-git-annex-removal-cleanup-orphan-e42120b7a0b6c1d3/trace.md Scope: all 42 workspace projects ✓ Lockfile passes supply-chain policies (verified 1h ago) Lockfile is up to date, resolution step is skipped Packages are hard linked from the content-addressable store to the virtual store. Content-addressable store is at: /.local/share/pnpm/store/v11 Virtual store is at: node_modules/.pnpm Progress: resolved 1301, reused 1301, downloaded 0, added 1287 Packages: +1780 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Progress: resolved 1780, reused 1776, downloaded 0, added 1780, done Agent skills awaiting approval: e2e. Run "pnpm approve" to review them. . prepare$ vp config --no-agent . prepare: Done devDependencies: + @coderabbitai/config 1.2.0 + @effect/tsgo 0.67.1 + @shadcn/lint 0.1.5 + @types/node 24.12.4 + knip 6.34.0 + vite-plus 1.4.0 Done in 2.7s using pnpm v12.14.0 RUN e2e v0.23.0 /scripts run 01a1dd7e-984b-72f2-b81b-58d88137ddfe · targets: web, ios ✓ target "web" command at http://127.0.0.1:42405/.well-known/t3/environment ready 3.88s stderr | |web| scenarios/annex-worktree-cleanup.e2e.ts > git-annex removal, cleanup, orphan reporting and retained links Preparing worktree (new branch 'orphan-annex') Preparing worktree (new branch 'orphan-plain') ✓ |web| scenarios/annex-worktree-cleanup.e2e.ts > git-annex removal, cleanup, orphan reporting and retained links 89.79s ✓ |web| scenarios/annex-worktree-cleanup.e2e.ts (1 test) 89.79s Test Files 1 passed (1) Tests 1 passed (1) Start at 04:37:04 Duration 94.30s (1m 34s, startup 3.88s) Traces .e2e/prove/head/results/ (1 page, trace.md in each test's directory) Screenshots .e2e/prove/head/results/annex-worktree-cleanup-git-annex-removal-cleanup-orphan-e42120b7a0b6c1d3/attempt-1/screenshots/001-cleanup-rule.png .e2e/prove/head/results/annex-worktree-cleanup-git-annex-removal-cleanup-orphan-e42120b7a0b6c1d3/attempt-1/screenshots/002-refusal-restores-annex.png .e2e/prove/head/results/annex-worktree-cleanup-git-annex-removal-cleanup-orphan-e42120b7a0b6c1d3/attempt-1/screenshots/003-manual-removal.png .e2e/prove/head/results/annex-worktree-cleanup-git-annex-removal-cleanup-orphan-e42120b7a0b6c1d3/attempt-1/screenshots/004-manual-registration.png .e2e/prove/head/results/annex-worktree-cleanup-git-annex-removal-cleanup-orphan-e42120b7a0b6c1d3/attempt-1/screenshots/005-maintenance-cleanup.png .e2e/prove/head/results/annex-worktree-cleanup-git-annex-removal-cleanup-orphan-e42120b7a0b6c1d3/attempt-1/screenshots/006-cleanup-native-results.png .e2e/prove/head/results/annex-worktree-cleanup-git-annex-removal-cleanup-orphan-e42120b7a0b6c1d3/attempt-1/screenshots/007-orphan-native-results.png .e2e/prove/head/results/annex-worktree-cleanup-git-annex-removal-cleanup-orphan-e42120b7a0b6c1d3/attempt-1/screenshots/008-cleanup-and-orphans.png Markdown .e2e/prove/head/summary.md { "scenario": "git-annex removal, cleanup, orphan reporting and retained links", "failsOnBase": true, "passesOnHead": true, "couldNotRun": null, "baseSha": "dde53b11f3141e8cf9995d23234d00b04421f655", "headSha": "cd42683c6a8a33a932fe7742982cfe0edff3cfbc", "verdict": "Proven: the scenario fails on base `dde53b11f3` and passes on head `cd42683c6a`.", "steps": { "base": [ { "step": "app.open ", "status": "passed" }, { "step": "expect.not.toHaveURL /\\/pair(?:[?#]|$)/", "status": "passed" }, { "step": "app.open /632f7f16-0e1b-4c0d-b94d-4c69d165df8f/mcp:6247f0f2-865f-40a4-8836-166ac4c5bd2b", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "locator.secondaryTap getByRole(\"button\", name: \"Cleanup unchanged\").first()", "status": "passed" }, { "step": "locator.tap getByRole(\"menuitem\", name: \"Settle thread\")", "status": "passed" }, { "step": "app.open ", "status": "passed" }, { "step": "expect.not.toHaveURL /\\/pair(?:[?#]|$)/", "status": "passed" }, { "step": "app.open /settings/worktrees", "status": "passed" }, { "step": "locator.tap getByRole(\"button\", name: \"Advanced\").last()", "status": "passed" }, { "step": "locator.check getByRole(\"switch\", name: \"Delete unchanged worktrees\")", "status": "passed" }, { "step": "app.screenshot cleanup-rule", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "app.open ", "status": "passed" }, { "step": "expect.not.toHaveURL /\\/pair(?:[?#]|$)/", "status": "passed" }, { "step": "app.open /632f7f16-0e1b-4c0d-b94d-4c69d165df8f/mcp:d9c34c2a-8b43-4a57-8172-d3b3f0942605", "status": "passed" }, { "step": "locator.waitFor getByRole(\"button\", name: \"Attach files\") → visible", "status": "passed" }, { "step": "browser.keyboard.press Control+p", "status": "passed" }, { "step": "locator.fill getByPlaceholder(\"Search files…\")", "status": "passed" }, { "step": "locator.tap getByRole(\"option\", name: \"refusal-restores-annex.txt\")", "status": "passed" }, { "step": "locator.waitFor getByText(\"RUNTIME CHECK: refused removals preserve annex links\").first() → visible", "status": "passed" }, { "step": "locator.tap getByRole(\"button\", name: \"Maximize panel\")", "status": "passed" }, { "step": "app.screenshot refusal-restores-annex", "status": "passed" }, { "step": "browser.keyboard.press Escape", "status": "passed" }, { "step": "app.open ", "status": "passed" }, { "step": "expect.not.toHaveURL /\\/pair(?:[?#]|$)/", "status": "passed" }, { "step": "app.open /632f7f16-0e1b-4c0d-b94d-4c69d165df8f/mcp:d0a0535d-aad7-4aa5-8895-e11856d3e27e", "status": "passed" }, { "step": "locator.secondaryTap getByRole(\"button\", name: \"Manual removal\").first()", "status": "passed" }, { "step": "locator.tap getByRole(\"menuitem\", name: \"Delete\")", "status": "passed" }, { "step": "locator.tap getByRole(\"button\", name: \"Confirm\")", "status": "passed" }, { "step": "locator.tap getByRole(\"button\", name: \"Confirm\")", "status": "passed" }, { "step": "locator.waitFor getByRole(\"dialog\") → hidden", "status": "passed" }, { "step": "app.screenshot manual-removal", "status": "passed" }, { "step": "app.open ", "status": "passed" }, { "step": "expect.not.toHaveURL /\\/pair(?:[?#]|$)/", "status": "passed" }, { "step": "app.open /632f7f16-0e1b-4c0d-b94d-4c69d165df8f/mcp:d9c34c2a-8b43-4a57-8172-d3b3f0942605", "status": "passed" }, { "step": "locator.waitFor getByRole(\"button\", name: \"Attach files\") → visible", "status": "passed" }, { "step": "browser.keyboard.press Control+p", "status": "passed" }, { "step": "locator.fill getByPlaceholder(\"Search files…\")", "status": "passed" }, { "step": "locator.tap getByRole(\"option\", name: \"manual-registration.txt\")", "status": "passed" }, { "step": "locator.waitFor getByText(\"RUNTIME CHECK: manual worktree removal\").first() → visible", "status": "passed" }, { "step": "app.screenshot manual-registration", "status": "passed" }, { "step": "browser.keyboard.press Escape", "status": "passed" }, { "step": "app.open ", "status": "passed" }, { "step": "expect.not.toHaveURL /\\/pair(?:[?#]|$)/", "status": "passed" }, { "step": "app.open /settings/maintenance", "status": "passed" }, { "step": "locator.tap getByRole(\"button\", name: \"Delete now\")", "status": "passed" }, { "step": "locator.waitFor getByRole(\"button\", name: \"Delete now\") → visible", "status": "passed" }, { "step": "app.screenshot maintenance-cleanup", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "locator.tap getByRole(\"button\", name: \"Last run\")", "status": "passed" }, { "step": "locator.scrollIntoView locator(\"[data-slot=\\\"settings-row\\\"]\").filter({ hasText: \"t3-annex-b-c888d912229bb5ff\" })", "status": "passed" }, { "step": "app.screenshot cleanup-native-results", "status": "passed" }, { "step": "locator.scrollIntoView locator(\"[data-slot=\\\"settings-row\\\"]\").filter({ hasText: \"/public-fixture/worktrees/orphan-plain\" })", "status": "passed" }, { "step": "app.screenshot orphan-native-results", "status": "passed" }, { "step": "app.open ", "status": "passed" }, { "step": "expect.not.toHaveURL /\\/pair(?:[?#]|$)/", "status": "passed" }, { "step": "app.open /632f7f16-0e1b-4c0d-b94d-4c69d165df8f/mcp:d9c34c2a-8b43-4a57-8172-d3b3f0942605", "status": "passed" }, { "step": "locator.waitFor getByRole(\"button\", name: \"Attach files\") → visible", "status": "passed" }, { "step": "browser.keyboard.press Control+p", "status": "passed" }, { "step": "locator.fill getByPlaceholder(\"Search files…\")", "status": "passed" }, { "step": "locator.tap getByRole(\"option\", name: \"cleanup-and-orphans.txt\")", "status": "passed" }, { "step": "locator.waitFor getByText(\"RUNTIME CHECK: storage cleanup and orphan report\").first() → visible", "status": "passed" }, { "step": "app.screenshot cleanup-and-orphans", "status": "passed" }, { "step": "browser.keyboard.press Escape", "status": "passed" } ], "head": [ { "step": "app.open ", "status": "passed" }, { "step": "expect.not.toHaveURL /\\/pair(?:[?#]|$)/", "status": "passed" }, { "step": "app.open /3848c347-5676-4b96-a2dc-2793a5b074e4/mcp:996d07da-56fa-49f5-b2f9-eb38291e084d", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "locator.secondaryTap getByRole(\"button\", name: \"Cleanup unchanged\").first()", "status": "passed" }, { "step": "locator.tap getByRole(\"menuitem\", name: \"Settle thread\")", "status": "passed" }, { "step": "app.open ", "status": "passed" }, { "step": "expect.not.toHaveURL /\\/pair(?:[?#]|$)/", "status": "passed" }, { "step": "app.open /settings/worktrees", "status": "passed" }, { "step": "locator.tap getByRole(\"button\", name: \"Advanced\").last()", "status": "passed" }, { "step": "locator.check getByRole(\"switch\", name: \"Delete unchanged worktrees\")", "status": "passed" }, { "step": "app.screenshot cleanup-rule", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "app.open ", "status": "passed" }, { "step": "expect.not.toHaveURL /\\/pair(?:[?#]|$)/", "status": "passed" }, { "step": "app.open /3848c347-5676-4b96-a2dc-2793a5b074e4/mcp:9d9b1b1a-5088-42f4-b268-1d13a8bca129", "status": "passed" }, { "step": "locator.waitFor getByRole(\"button\", name: \"Attach files\") → visible", "status": "passed" }, { "step": "browser.keyboard.press Control+p", "status": "passed" }, { "step": "locator.fill getByPlaceholder(\"Search files…\")", "status": "passed" }, { "step": "locator.tap getByRole(\"option\", name: \"refusal-restores-annex.txt\")", "status": "passed" }, { "step": "locator.waitFor getByText(\"RUNTIME CHECK: refused removals preserve annex links\").first() → visible", "status": "passed" }, { "step": "locator.tap getByRole(\"button\", name: \"Maximize panel\")", "status": "passed" }, { "step": "app.screenshot refusal-restores-annex", "status": "passed" }, { "step": "browser.keyboard.press Escape", "status": "passed" }, { "step": "app.open ", "status": "passed" }, { "step": "expect.not.toHaveURL /\\/pair(?:[?#]|$)/", "status": "passed" }, { "step": "app.open /3848c347-5676-4b96-a2dc-2793a5b074e4/mcp:d907d691-ab4c-40e3-bf09-a170b990d79a", "status": "passed" }, { "step": "locator.secondaryTap getByRole(\"button\", name: \"Manual removal\").first()", "status": "passed" }, { "step": "locator.tap getByRole(\"menuitem\", name: \"Delete\")", "status": "passed" }, { "step": "locator.tap getByRole(\"button\", name: \"Confirm\")", "status": "passed" }, { "step": "locator.tap getByRole(\"button\", name: \"Confirm\")", "status": "passed" }, { "step": "locator.waitFor getByRole(\"dialog\") → hidden", "status": "passed" }, { "step": "app.screenshot manual-removal", "status": "passed" }, { "step": "app.open ", "status": "passed" }, { "step": "expect.not.toHaveURL /\\/pair(?:[?#]|$)/", "status": "passed" }, { "step": "app.open /3848c347-5676-4b96-a2dc-2793a5b074e4/mcp:9d9b1b1a-5088-42f4-b268-1d13a8bca129", "status": "passed" }, { "step": "locator.waitFor getByRole(\"button\", name: \"Attach files\") → visible", "status": "passed" }, { "step": "browser.keyboard.press Control+p", "status": "passed" }, { "step": "locator.fill getByPlaceholder(\"Search files…\")", "status": "passed" }, { "step": "locator.tap getByRole(\"option\", name: \"manual-registration.txt\")", "status": "passed" }, { "step": "locator.waitFor getByText(\"RUNTIME CHECK: manual worktree removal\").first() → visible", "status": "passed" }, { "step": "app.screenshot manual-registration", "status": "passed" }, { "step": "browser.keyboard.press Escape", "status": "passed" }, { "step": "app.open ", "status": "passed" }, { "step": "expect.not.toHaveURL /\\/pair(?:[?#]|$)/", "status": "passed" }, { "step": "app.open /settings/maintenance", "status": "passed" }, { "step": "locator.tap getByRole(\"button\", name: \"Delete now\")", "status": "passed" }, { "step": "locator.waitFor getByRole(\"button\", name: \"Delete now\") → visible", "status": "passed" }, { "step": "app.screenshot maintenance-cleanup", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "locator.tap getByRole(\"button\", name: \"Last run\")", "status": "passed" }, { "step": "locator.scrollIntoView locator(\"[data-slot=\\\"settings-row\\\"]\").filter({ hasText: \"t3-annex-b-548449c99a3146d3\" })", "status": "passed" }, { "step": "app.screenshot cleanup-native-results", "status": "passed" }, { "step": "locator.scrollIntoView locator(\"[data-slot=\\\"settings-row\\\"]\").filter({ hasText: \"/public-fixture/worktrees/orphan-plain\" })", "status": "passed" }, { "step": "app.screenshot orphan-native-results", "status": "passed" }, { "step": "app.open ", "status": "passed" }, { "step": "expect.not.toHaveURL /\\/pair(?:[?#]|$)/", "status": "passed" }, { "step": "app.open /3848c347-5676-4b96-a2dc-2793a5b074e4/mcp:9d9b1b1a-5088-42f4-b268-1d13a8bca129", "status": "passed" }, { "step": "locator.waitFor getByRole(\"button\", name: \"Attach files\") → visible", "status": "passed" }, { "step": "browser.keyboard.press Control+p", "status": "passed" }, { "step": "locator.fill getByPlaceholder(\"Search files…\")", "status": "passed" }, { "step": "locator.tap getByRole(\"option\", name: \"cleanup-and-orphans.txt\")", "status": "passed" }, { "step": "locator.waitFor getByText(\"RUNTIME CHECK: storage cleanup and orphan report\").first() → visible", "status": "passed" }, { "step": "app.screenshot cleanup-and-orphans", "status": "passed" }, { "step": "browser.keyboard.press Escape", "status": "passed" } ] }, "captures": [ "/scripts/.e2e/prove/base/results/annex-worktree-cleanup-git-annex-removal-cleanup-orphan-e42120b7a0b6c1d3/attempt-1/screenshots/001-cleanup-rule.png", "/scripts/.e2e/prove/base/results/annex-worktree-cleanup-git-annex-removal-cleanup-orphan-e42120b7a0b6c1d3/attempt-1/screenshots/002-refusal-restores-annex.png", "/scripts/.e2e/prove/base/results/annex-worktree-cleanup-git-annex-removal-cleanup-orphan-e42120b7a0b6c1d3/attempt-1/screenshots/003-manual-removal.png", "/scripts/.e2e/prove/base/results/annex-worktree-cleanup-git-annex-removal-cleanup-orphan-e42120b7a0b6c1d3/attempt-1/screenshots/004-manual-registration.png", "/scripts/.e2e/prove/base/results/annex-worktree-cleanup-git-annex-removal-cleanup-orphan-e42120b7a0b6c1d3/attempt-1/screenshots/005-maintenance-cleanup.png", "/scripts/.e2e/prove/base/results/annex-worktree-cleanup-git-annex-removal-cleanup-orphan-e42120b7a0b6c1d3/attempt-1/screenshots/006-cleanup-native-results.png", "/scripts/.e2e/prove/base/results/annex-worktree-cleanup-git-annex-removal-cleanup-orphan-e42120b7a0b6c1d3/attempt-1/screenshots/007-orphan-native-results.png", "/scripts/.e2e/prove/base/results/annex-worktree-cleanup-git-annex-removal-cleanup-orphan-e42120b7a0b6c1d3/attempt-1/screenshots/008-cleanup-and-orphans.png", "/scripts/.e2e/prove/base/results/annex-worktree-cleanup-git-annex-removal-cleanup-orphan-e42120b7a0b6c1d3/attempt-1/screenshots/009-failure.png", "/scripts/.e2e/prove/head/results/annex-worktree-cleanup-git-annex-removal-cleanup-orphan-e42120b7a0b6c1d3/attempt-1/screenshots/001-cleanup-rule.png", "/scripts/.e2e/prove/head/results/annex-worktree-cleanup-git-annex-removal-cleanup-orphan-e42120b7a0b6c1d3/attempt-1/screenshots/002-refusal-restores-annex.png", "/scripts/.e2e/prove/head/results/annex-worktree-cleanup-git-annex-removal-cleanup-orphan-e42120b7a0b6c1d3/attempt-1/screenshots/003-manual-removal.png", "/scripts/.e2e/prove/head/results/annex-worktree-cleanup-git-annex-removal-cleanup-orphan-e42120b7a0b6c1d3/attempt-1/screenshots/004-manual-registration.png", "/scripts/.e2e/prove/head/results/annex-worktree-cleanup-git-annex-removal-cleanup-orphan-e42120b7a0b6c1d3/attempt-1/screenshots/005-maintenance-cleanup.png", "/scripts/.e2e/prove/head/results/annex-worktree-cleanup-git-annex-removal-cleanup-orphan-e42120b7a0b6c1d3/attempt-1/screenshots/006-cleanup-native-results.png", "/scripts/.e2e/prove/head/results/annex-worktree-cleanup-git-annex-removal-cleanup-orphan-e42120b7a0b6c1d3/attempt-1/screenshots/007-orphan-native-results.png", "/scripts/.e2e/prove/head/results/annex-worktree-cleanup-git-annex-removal-cleanup-orphan-e42120b7a0b6c1d3/attempt-1/screenshots/008-cleanup-and-orphans.png" ], "videos": [ "/scripts/.e2e/prove/base/results/annex-worktree-cleanup-git-annex-removal-cleanup-orphan-e42120b7a0b6c1d3/attempt-1/video/video.webm", "/scripts/.e2e/prove/head/results/annex-worktree-cleanup-git-annex-removal-cleanup-orphan-e42120b7a0b6c1d3/attempt-1/video/video.webm" ], "markdown": "### Scenario: git-annex removal, cleanup, orphan reporting and retained links\n\n**Proven: the scenario fails on base `dde53b11f3` and passes on head `cd42683c6a`.**\n\n| | Base `dde53b11f3` | Head `cd42683c6a` |\n| --- | --- | --- |\n| Result | ❌ failed
ASSERTION_FAILED: expected {\"manualExists\":true,\"manualRegistered\":true,\"cleanupExists\":true,\"cleanupRegistered\":true,\"cleanupOutcome\":\"kept\",\"plainOrphanReason\":\"No thread uses this worktree\",\"dirtyRefused\":true,\"dirtyLinked\":true,\"dirtyContent\":\"Annex content is readable\",\"lockedRefused\":true,\"lockedLinked\":true,\"lockedContent\":\"Annex content is readable\"} to equal {\"manualExists\":false,\"manualRegistered\":false,\"cleanupExists\":false,\"cleanupRegistered\":false,\"cleanupOutcome\":\"removed\",\"orphanReason\":\"No thread uses this worktree\",\"plainOrphanReason\":\"No thread uses this worktree\",\"dirtyRefused\":true,\"dirtyLinked\":true,\"dirtyContent\":\"Annex content is readable\",\"lockedRefused\":true,\"lockedLinked\":true,\"lockedContent\":\"Annex content is readable\"} | ✅ passed |\n| cleanup rule | ![Base dde53b11f3: cleanup rule](base/results/annex-worktree-cleanup-git-annex-removal-cleanup-orphan-e42120b7a0b6c1d3/attempt-1/screenshots/001-cleanup-rule.png) | ![Head cd42683c6a: cleanup rule](head/results/annex-worktree-cleanup-git-annex-removal-cleanup-orphan-e42120b7a0b6c1d3/attempt-1/screenshots/001-cleanup-rule.png) |\n| refusal restores annex | ![Base dde53b11f3: refusal restores annex](base/results/annex-worktree-cleanup-git-annex-removal-cleanup-orphan-e42120b7a0b6c1d3/attempt-1/screenshots/002-refusal-restores-annex.png) | ![Head cd42683c6a: refusal restores annex](head/results/annex-worktree-cleanup-git-annex-removal-cleanup-orphan-e42120b7a0b6c1d3/attempt-1/screenshots/002-refusal-restores-annex.png) |\n| manual removal | ![Base dde53b11f3: manual removal](base/results/annex-worktree-cleanup-git-annex-removal-cleanup-orphan-e42120b7a0b6c1d3/attempt-1/screenshots/003-manual-removal.png) | ![Head cd42683c6a: manual removal](head/results/annex-worktree-cleanup-git-annex-removal-cleanup-orphan-e42120b7a0b6c1d3/attempt-1/screenshots/003-manual-removal.png) |\n| manual registration | ![Base dde53b11f3: manual registration](base/results/annex-worktree-cleanup-git-annex-removal-cleanup-orphan-e42120b7a0b6c1d3/attempt-1/screenshots/004-manual-registration.png) | ![Head cd42683c6a: manual registration](head/results/annex-worktree-cleanup-git-annex-removal-cleanup-orphan-e42120b7a0b6c1d3/attempt-1/screenshots/004-manual-registration.png) |\n| maintenance cleanup | ![Base dde53b11f3: maintenance cleanup](base/results/annex-worktree-cleanup-git-annex-removal-cleanup-orphan-e42120b7a0b6c1d3/attempt-1/screenshots/005-maintenance-cleanup.png) | ![Head cd42683c6a: maintenance cleanup](head/results/annex-worktree-cleanup-git-annex-removal-cleanup-orphan-e42120b7a0b6c1d3/attempt-1/screenshots/005-maintenance-cleanup.png) |\n| cleanup native results | ![Base dde53b11f3: cleanup native results](base/results/annex-worktree-cleanup-git-annex-removal-cleanup-orphan-e42120b7a0b6c1d3/attempt-1/screenshots/006-cleanup-native-results.png) | ![Head cd42683c6a: cleanup native results](head/results/annex-worktree-cleanup-git-annex-removal-cleanup-orphan-e42120b7a0b6c1d3/attempt-1/screenshots/006-cleanup-native-results.png) |\n| orphan native results | ![Base dde53b11f3: orphan native results](base/results/annex-worktree-cleanup-git-annex-removal-cleanup-orphan-e42120b7a0b6c1d3/attempt-1/screenshots/007-orphan-native-results.png) | ![Head cd42683c6a: orphan native results](head/results/annex-worktree-cleanup-git-annex-removal-cleanup-orphan-e42120b7a0b6c1d3/attempt-1/screenshots/007-orphan-native-results.png) |\n| cleanup and orphans | ![Base dde53b11f3: cleanup and orphans](base/results/annex-worktree-cleanup-git-annex-removal-cleanup-orphan-e42120b7a0b6c1d3/attempt-1/screenshots/008-cleanup-and-orphans.png) | ![Head cd42683c6a: cleanup and orphans](head/results/annex-worktree-cleanup-git-annex-removal-cleanup-orphan-e42120b7a0b6c1d3/attempt-1/screenshots/008-cleanup-and-orphans.png) |\n| failure | ![Base dde53b11f3: failure](base/results/annex-worktree-cleanup-git-annex-removal-cleanup-orphan-e42120b7a0b6c1d3/attempt-1/screenshots/009-failure.png) | |\n", "base": { "sha": "dde53b11f3141e8cf9995d23234d00b04421f655", "status": "failed", "title": "git-annex removal, cleanup, orphan reporting and retained links", "message": "ASSERTION_FAILED: expected {\"manualExists\":true,\"manualRegistered\":true,\"cleanupExists\":true,\"cleanupRegistered\":true,\"cleanupOutcome\":\"kept\",\"plainOrphanReason\":\"No thread uses this worktree\",\"dirtyRefused\":true,\"dirtyLinked\":true,\"dirtyContent\":\"Annex content is readable\",\"lockedRefused\":true,\"lockedLinked\":true,\"lockedContent\":\"Annex content is readable\"} to equal {\"manualExists\":false,\"manualRegistered\":false,\"cleanupExists\":false,\"cleanupRegistered\":false,\"cleanupOutcome\":\"removed\",\"orphanReason\":\"No thread uses this worktree\",\"plainOrphanReason\":\"No thread uses this worktree\",\"dirtyRefused\":true,\"dirtyLinked\":true,\"dirtyContent\":\"Annex content is readable\",\"lockedRefused\":true,\"lockedLinked\":true,\"lockedContent\":\"Annex content is readable\"}", "steps": [ { "step": "app.open ", "status": "passed" }, { "step": "expect.not.toHaveURL /\\/pair(?:[?#]|$)/", "status": "passed" }, { "step": "app.open /632f7f16-0e1b-4c0d-b94d-4c69d165df8f/mcp:6247f0f2-865f-40a4-8836-166ac4c5bd2b", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "locator.secondaryTap getByRole(\"button\", name: \"Cleanup unchanged\").first()", "status": "passed" }, { "step": "locator.tap getByRole(\"menuitem\", name: \"Settle thread\")", "status": "passed" }, { "step": "app.open ", "status": "passed" }, { "step": "expect.not.toHaveURL /\\/pair(?:[?#]|$)/", "status": "passed" }, { "step": "app.open /settings/worktrees", "status": "passed" }, { "step": "locator.tap getByRole(\"button\", name: \"Advanced\").last()", "status": "passed" }, { "step": "locator.check getByRole(\"switch\", name: \"Delete unchanged worktrees\")", "status": "passed" }, { "step": "app.screenshot cleanup-rule", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "app.open ", "status": "passed" }, { "step": "expect.not.toHaveURL /\\/pair(?:[?#]|$)/", "status": "passed" }, { "step": "app.open /632f7f16-0e1b-4c0d-b94d-4c69d165df8f/mcp:d9c34c2a-8b43-4a57-8172-d3b3f0942605", "status": "passed" }, { "step": "locator.waitFor getByRole(\"button\", name: \"Attach files\") → visible", "status": "passed" }, { "step": "browser.keyboard.press Control+p", "status": "passed" }, { "step": "locator.fill getByPlaceholder(\"Search files…\")", "status": "passed" }, { "step": "locator.tap getByRole(\"option\", name: \"refusal-restores-annex.txt\")", "status": "passed" }, { "step": "locator.waitFor getByText(\"RUNTIME CHECK: refused removals preserve annex links\").first() → visible", "status": "passed" }, { "step": "locator.tap getByRole(\"button\", name: \"Maximize panel\")", "status": "passed" }, { "step": "app.screenshot refusal-restores-annex", "status": "passed" }, { "step": "browser.keyboard.press Escape", "status": "passed" }, { "step": "app.open ", "status": "passed" }, { "step": "expect.not.toHaveURL /\\/pair(?:[?#]|$)/", "status": "passed" }, { "step": "app.open /632f7f16-0e1b-4c0d-b94d-4c69d165df8f/mcp:d0a0535d-aad7-4aa5-8895-e11856d3e27e", "status": "passed" }, { "step": "locator.secondaryTap getByRole(\"button\", name: \"Manual removal\").first()", "status": "passed" }, { "step": "locator.tap getByRole(\"menuitem\", name: \"Delete\")", "status": "passed" }, { "step": "locator.tap getByRole(\"button\", name: \"Confirm\")", "status": "passed" }, { "step": "locator.tap getByRole(\"button\", name: \"Confirm\")", "status": "passed" }, { "step": "locator.waitFor getByRole(\"dialog\") → hidden", "status": "passed" }, { "step": "app.screenshot manual-removal", "status": "passed" }, { "step": "app.open ", "status": "passed" }, { "step": "expect.not.toHaveURL /\\/pair(?:[?#]|$)/", "status": "passed" }, { "step": "app.open /632f7f16-0e1b-4c0d-b94d-4c69d165df8f/mcp:d9c34c2a-8b43-4a57-8172-d3b3f0942605", "status": "passed" }, { "step": "locator.waitFor getByRole(\"button\", name: \"Attach files\") → visible", "status": "passed" }, { "step": "browser.keyboard.press Control+p", "status": "passed" }, { "step": "locator.fill getByPlaceholder(\"Search files…\")", "status": "passed" }, { "step": "locator.tap getByRole(\"option\", name: \"manual-registration.txt\")", "status": "passed" }, { "step": "locator.waitFor getByText(\"RUNTIME CHECK: manual worktree removal\").first() → visible", "status": "passed" }, { "step": "app.screenshot manual-registration", "status": "passed" }, { "step": "browser.keyboard.press Escape", "status": "passed" }, { "step": "app.open ", "status": "passed" }, { "step": "expect.not.toHaveURL /\\/pair(?:[?#]|$)/", "status": "passed" }, { "step": "app.open /settings/maintenance", "status": "passed" }, { "step": "locator.tap getByRole(\"button\", name: \"Delete now\")", "status": "passed" }, { "step": "locator.waitFor getByRole(\"button\", name: \"Delete now\") → visible", "status": "passed" }, { "step": "app.screenshot maintenance-cleanup", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "locator.tap getByRole(\"button\", name: \"Last run\")", "status": "passed" }, { "step": "locator.scrollIntoView locator(\"[data-slot=\\\"settings-row\\\"]\").filter({ hasText: \"t3-annex-b-c888d912229bb5ff\" })", "status": "passed" }, { "step": "app.screenshot cleanup-native-results", "status": "passed" }, { "step": "locator.scrollIntoView locator(\"[data-slot=\\\"settings-row\\\"]\").filter({ hasText: \"/public-fixture/worktrees/orphan-plain\" })", "status": "passed" }, { "step": "app.screenshot orphan-native-results", "status": "passed" }, { "step": "app.open ", "status": "passed" }, { "step": "expect.not.toHaveURL /\\/pair(?:[?#]|$)/", "status": "passed" }, { "step": "app.open /632f7f16-0e1b-4c0d-b94d-4c69d165df8f/mcp:d9c34c2a-8b43-4a57-8172-d3b3f0942605", "status": "passed" }, { "step": "locator.waitFor getByRole(\"button\", name: \"Attach files\") → visible", "status": "passed" }, { "step": "browser.keyboard.press Control+p", "status": "passed" }, { "step": "locator.fill getByPlaceholder(\"Search files…\")", "status": "passed" }, { "step": "locator.tap getByRole(\"option\", name: \"cleanup-and-orphans.txt\")", "status": "passed" }, { "step": "locator.waitFor getByText(\"RUNTIME CHECK: storage cleanup and orphan report\").first() → visible", "status": "passed" }, { "step": "app.screenshot cleanup-and-orphans", "status": "passed" }, { "step": "browser.keyboard.press Escape", "status": "passed" } ], "captures": [ "/scripts/.e2e/prove/base/results/annex-worktree-cleanup-git-annex-removal-cleanup-orphan-e42120b7a0b6c1d3/attempt-1/screenshots/001-cleanup-rule.png", "/scripts/.e2e/prove/base/results/annex-worktree-cleanup-git-annex-removal-cleanup-orphan-e42120b7a0b6c1d3/attempt-1/screenshots/002-refusal-restores-annex.png", "/scripts/.e2e/prove/base/results/annex-worktree-cleanup-git-annex-removal-cleanup-orphan-e42120b7a0b6c1d3/attempt-1/screenshots/003-manual-removal.png", "/scripts/.e2e/prove/base/results/annex-worktree-cleanup-git-annex-removal-cleanup-orphan-e42120b7a0b6c1d3/attempt-1/screenshots/004-manual-registration.png", "/scripts/.e2e/prove/base/results/annex-worktree-cleanup-git-annex-removal-cleanup-orphan-e42120b7a0b6c1d3/attempt-1/screenshots/005-maintenance-cleanup.png", "/scripts/.e2e/prove/base/results/annex-worktree-cleanup-git-annex-removal-cleanup-orphan-e42120b7a0b6c1d3/attempt-1/screenshots/006-cleanup-native-results.png", "/scripts/.e2e/prove/base/results/annex-worktree-cleanup-git-annex-removal-cleanup-orphan-e42120b7a0b6c1d3/attempt-1/screenshots/007-orphan-native-results.png", "/scripts/.e2e/prove/base/results/annex-worktree-cleanup-git-annex-removal-cleanup-orphan-e42120b7a0b6c1d3/attempt-1/screenshots/008-cleanup-and-orphans.png", "/scripts/.e2e/prove/base/results/annex-worktree-cleanup-git-annex-removal-cleanup-orphan-e42120b7a0b6c1d3/attempt-1/screenshots/009-failure.png" ], "videos": [ "/scripts/.e2e/prove/base/results/annex-worktree-cleanup-git-annex-removal-cleanup-orphan-e42120b7a0b6c1d3/attempt-1/video/video.webm" ] }, "head": { "sha": "cd42683c6a8a33a932fe7742982cfe0edff3cfbc", "status": "passed", "title": "git-annex removal, cleanup, orphan reporting and retained links", "steps": [ { "step": "app.open ", "status": "passed" }, { "step": "expect.not.toHaveURL /\\/pair(?:[?#]|$)/", "status": "passed" }, { "step": "app.open /3848c347-5676-4b96-a2dc-2793a5b074e4/mcp:996d07da-56fa-49f5-b2f9-eb38291e084d", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "locator.secondaryTap getByRole(\"button\", name: \"Cleanup unchanged\").first()", "status": "passed" }, { "step": "locator.tap getByRole(\"menuitem\", name: \"Settle thread\")", "status": "passed" }, { "step": "app.open ", "status": "passed" }, { "step": "expect.not.toHaveURL /\\/pair(?:[?#]|$)/", "status": "passed" }, { "step": "app.open /settings/worktrees", "status": "passed" }, { "step": "locator.tap getByRole(\"button\", name: \"Advanced\").last()", "status": "passed" }, { "step": "locator.check getByRole(\"switch\", name: \"Delete unchanged worktrees\")", "status": "passed" }, { "step": "app.screenshot cleanup-rule", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "app.open ", "status": "passed" }, { "step": "expect.not.toHaveURL /\\/pair(?:[?#]|$)/", "status": "passed" }, { "step": "app.open /3848c347-5676-4b96-a2dc-2793a5b074e4/mcp:9d9b1b1a-5088-42f4-b268-1d13a8bca129", "status": "passed" }, { "step": "locator.waitFor getByRole(\"button\", name: \"Attach files\") → visible", "status": "passed" }, { "step": "browser.keyboard.press Control+p", "status": "passed" }, { "step": "locator.fill getByPlaceholder(\"Search files…\")", "status": "passed" }, { "step": "locator.tap getByRole(\"option\", name: \"refusal-restores-annex.txt\")", "status": "passed" }, { "step": "locator.waitFor getByText(\"RUNTIME CHECK: refused removals preserve annex links\").first() → visible", "status": "passed" }, { "step": "locator.tap getByRole(\"button\", name: \"Maximize panel\")", "status": "passed" }, { "step": "app.screenshot refusal-restores-annex", "status": "passed" }, { "step": "browser.keyboard.press Escape", "status": "passed" }, { "step": "app.open ", "status": "passed" }, { "step": "expect.not.toHaveURL /\\/pair(?:[?#]|$)/", "status": "passed" }, { "step": "app.open /3848c347-5676-4b96-a2dc-2793a5b074e4/mcp:d907d691-ab4c-40e3-bf09-a170b990d79a", "status": "passed" }, { "step": "locator.secondaryTap getByRole(\"button\", name: \"Manual removal\").first()", "status": "passed" }, { "step": "locator.tap getByRole(\"menuitem\", name: \"Delete\")", "status": "passed" }, { "step": "locator.tap getByRole(\"button\", name: \"Confirm\")", "status": "passed" }, { "step": "locator.tap getByRole(\"button\", name: \"Confirm\")", "status": "passed" }, { "step": "locator.waitFor getByRole(\"dialog\") → hidden", "status": "passed" }, { "step": "app.screenshot manual-removal", "status": "passed" }, { "step": "app.open ", "status": "passed" }, { "step": "expect.not.toHaveURL /\\/pair(?:[?#]|$)/", "status": "passed" }, { "step": "app.open /3848c347-5676-4b96-a2dc-2793a5b074e4/mcp:9d9b1b1a-5088-42f4-b268-1d13a8bca129", "status": "passed" }, { "step": "locator.waitFor getByRole(\"button\", name: \"Attach files\") → visible", "status": "passed" }, { "step": "browser.keyboard.press Control+p", "status": "passed" }, { "step": "locator.fill getByPlaceholder(\"Search files…\")", "status": "passed" }, { "step": "locator.tap getByRole(\"option\", name: \"manual-registration.txt\")", "status": "passed" }, { "step": "locator.waitFor getByText(\"RUNTIME CHECK: manual worktree removal\").first() → visible", "status": "passed" }, { "step": "app.screenshot manual-registration", "status": "passed" }, { "step": "browser.keyboard.press Escape", "status": "passed" }, { "step": "app.open ", "status": "passed" }, { "step": "expect.not.toHaveURL /\\/pair(?:[?#]|$)/", "status": "passed" }, { "step": "app.open /settings/maintenance", "status": "passed" }, { "step": "locator.tap getByRole(\"button\", name: \"Delete now\")", "status": "passed" }, { "step": "locator.waitFor getByRole(\"button\", name: \"Delete now\") → visible", "status": "passed" }, { "step": "app.screenshot maintenance-cleanup", "status": "passed" }, { "step": "browser.evaluate ", "status": "passed" }, { "step": "locator.tap getByRole(\"button\", name: \"Last run\")", "status": "passed" }, { "step": "locator.scrollIntoView locator(\"[data-slot=\\\"settings-row\\\"]\").filter({ hasText: \"t3-annex-b-548449c99a3146d3\" })", "status": "passed" }, { "step": "app.screenshot cleanup-native-results", "status": "passed" }, { "step": "locator.scrollIntoView locator(\"[data-slot=\\\"settings-row\\\"]\").filter({ hasText: \"/public-fixture/worktrees/orphan-plain\" })", "status": "passed" }, { "step": "app.screenshot orphan-native-results", "status": "passed" }, { "step": "app.open ", "status": "passed" }, { "step": "expect.not.toHaveURL /\\/pair(?:[?#]|$)/", "status": "passed" }, { "step": "app.open /3848c347-5676-4b96-a2dc-2793a5b074e4/mcp:9d9b1b1a-5088-42f4-b268-1d13a8bca129", "status": "passed" }, { "step": "locator.waitFor getByRole(\"button\", name: \"Attach files\") → visible", "status": "passed" }, { "step": "browser.keyboard.press Control+p", "status": "passed" }, { "step": "locator.fill getByPlaceholder(\"Search files…\")", "status": "passed" }, { "step": "locator.tap getByRole(\"option\", name: \"cleanup-and-orphans.txt\")", "status": "passed" }, { "step": "locator.waitFor getByText(\"RUNTIME CHECK: storage cleanup and orphan report\").first() → visible", "status": "passed" }, { "step": "app.screenshot cleanup-and-orphans", "status": "passed" }, { "step": "browser.keyboard.press Escape", "status": "passed" } ], "captures": [ "/scripts/.e2e/prove/head/results/annex-worktree-cleanup-git-annex-removal-cleanup-orphan-e42120b7a0b6c1d3/attempt-1/screenshots/001-cleanup-rule.png", "/scripts/.e2e/prove/head/results/annex-worktree-cleanup-git-annex-removal-cleanup-orphan-e42120b7a0b6c1d3/attempt-1/screenshots/002-refusal-restores-annex.png", "/scripts/.e2e/prove/head/results/annex-worktree-cleanup-git-annex-removal-cleanup-orphan-e42120b7a0b6c1d3/attempt-1/screenshots/003-manual-removal.png", "/scripts/.e2e/prove/head/results/annex-worktree-cleanup-git-annex-removal-cleanup-orphan-e42120b7a0b6c1d3/attempt-1/screenshots/004-manual-registration.png", "/scripts/.e2e/prove/head/results/annex-worktree-cleanup-git-annex-removal-cleanup-orphan-e42120b7a0b6c1d3/attempt-1/screenshots/005-maintenance-cleanup.png", "/scripts/.e2e/prove/head/results/annex-worktree-cleanup-git-annex-removal-cleanup-orphan-e42120b7a0b6c1d3/attempt-1/screenshots/006-cleanup-native-results.png", "/scripts/.e2e/prove/head/results/annex-worktree-cleanup-git-annex-removal-cleanup-orphan-e42120b7a0b6c1d3/attempt-1/screenshots/007-orphan-native-results.png", "/scripts/.e2e/prove/head/results/annex-worktree-cleanup-git-annex-removal-cleanup-orphan-e42120b7a0b6c1d3/attempt-1/screenshots/008-cleanup-and-orphans.png" ], "videos": [ "/scripts/.e2e/prove/head/results/annex-worktree-cleanup-git-annex-removal-cleanup-orphan-e42120b7a0b6c1d3/attempt-1/video/video.webm" ] } }