- Notifications
You must be signed in to change notification settings - Fork 0
docs(issues): record four session findings and close the Dev Drive fleet inventory#2284
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Closed
Uh oh!
There was an error while loading. Please reload this page.
Closed
Changes from all commits
Commits
Show all changes
8 commits
Select commit
Hold shift + click to select a range
13e62ef
docs(issues): record four findings from the #2270 Part A session, and…
BigSimmo 1894711
Merge branch 'main' into claude/session-findings-2270-a
BigSimmo b32a8be
Regenerate outstanding-issues snapshot for the 5 new inbox requests
claude 636ba26
Merge remote-tracking branch 'origin/claude/session-findings-2270-a' …
claude 18da457
chore: preserve content
BigSimmo 44b1e71
fix(issues): correct worktree recovery command
BigSimmo 67f1538
fix(issues): reconcile worktree recovery counts
BigSimmo 5b1c116
chore(issues): refresh outstanding issues snapshot
BigSimmo File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Uh oh!
There was an error while loading. Please reload this page.
Jump to
Jump to file
Failed to load files.
Loading
Uh oh!
There was an error while loading. Please reload this page.
Diff view
Diff view
There are no files selected for viewing
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
14 changes: 14 additions & 0 deletions
14 docs/outstanding-issues-inbox/2a4e6a53-2fc9-4142-8d8f-e259cb985593.json
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,14 @@ | ||
| { | ||
| "version": 2, | ||
| "id": "2a4e6a53-2fc9-4142-8d8f-e259cb985593", | ||
| "createdOn": "2026-08-22", | ||
| "action": "add", | ||
| "payload": { | ||
| "pri": "P3", | ||
| "type": "issue", | ||
| "summary": "tests/gate-receipts.test.ts has two file-mode assertions that can never pass on the Windows workstation, so npm run test is permanently 2-red locally", | ||
| "detail": "Measured 2026-08-22. 'gate receipts - file modes (Codex review, PR #2216)' has two cases that call chmodSync(path, 0o755) and then assert the computed input signature changed: 'changes the signature when only the WORKING-TREE mode changes' (line 160) and 'keeps both modes, so one cannot cancel the other' (line 170). The primary workstation is a Windows ReFS Dev Drive with core.fileMode=false, where chmod is a silent no-op, so the working-tree mode never changes and the signatures collide. Reproduced on an unmodified main at 73b1e71a0 with a clean working tree for those files: Tests 2 failed | 32 passed (34). Also seen inside a full local suite run as Tests 2 failed | 7728 passed | 72 skipped (7802). CI is Linux so it stays green there, which is why this has not surfaced before. Cost: every local npm run test and every verify:pr-local exits non-zero on this machine, which both hides real regressions in the noise and stops verify:pr-local before it reaches build, bundle-budget and the RAG fixture checks. Suggested fix: skip the two cases when the filesystem cannot represent an exec bit (probe once by chmod-ing a temp file and re-statting, rather than testing process.platform), keeping the index-mode half of the coverage which does work. See also the related exec-bit trap already documented in AGENTS.md under 'Claude Code hook scripts'.", | ||
| "source": "session 2026-08-22, GitHub issue #2270 Part A", | ||
| "issueUlid": "01M0MN541C8RWZSM07NEPHT2E1" | ||
| } | ||
| } | ||
14 changes: 14 additions & 0 deletions
14 docs/outstanding-issues-inbox/7f369171-54d4-4076-92b8-bf44aab3511d.json
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,14 @@ | ||
| { | ||
| "version": 2, | ||
| "id": "7f369171-54d4-4076-92b8-bf44aab3511d", | ||
| "createdOn": "2026-08-22", | ||
| "action": "add", | ||
| "payload": { | ||
| "pri": "P3", | ||
| "type": "issue", | ||
| "summary": "The Claude push-format-guard hook blocks every push from a linked worktree, because it compares core.hooksPath against the worktree root instead of the common git dir", | ||
| "detail": "Measured 2026-08-22 pushing from D:/Repos/Database/.claude/worktrees/. .claude/hooks/push-format-guard.sh only intends to act when the repository pre-push hook is NOT wired. It computes repo_root from CLAUDE_PROJECT_DIR (the linked worktree) and compares the resolved core.hooksPath against repo_root/.githooks. In a linked worktree core.hooksPath is the absolute path of the MAIN checkout's .githooks (D:/Repos/Database/.githooks), which never equals <worktree>/.githooks, so the guard concludes the push is unguarded even though .githooks/pre-push is present and executable and does in fact run. It then performs a whole-tree prettier --check, which additionally flags git-IGNORED files: the only offender was .claude/settings.local.json, untracked and matched by a global gitignore, so it could not possibly be part of any push. Net effect: pushes from worktrees are blocked on a file that cannot be committed, and the documented CLAUDE_ALLOW_UNFORMATTED_PUSH=1 escape only works as the LEADING token of the whole shell command, so the natural 'cd <dir> && CLAUDE_ALLOW_... git push' form silently fails to unlock it. Two fixes, both small: resolve the repo root with git rev-parse --path-format=absolute --git-common-dir (or compare against the common dir's parent) so a linked worktree is recognised as guarded; and restrict the fallback prettier check to tracked files (git ls-files) so ignored local state can never block a push. Related but distinct from the already-merged claude/push-guard-hookspath-relative work, which fixed relative and case-folded hooksPath values but not the worktree case.", | ||
| "source": "session 2026-08-22, GitHub issue #2270 Part A", | ||
| "issueUlid": "01M0MN5THMCXS06TK1K80367VM" | ||
| } | ||
| } |
14 changes: 14 additions & 0 deletions
14 docs/outstanding-issues-inbox/a5310065-4f20-4036-8992-bc94f7e7e7d2.json
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,14 @@ | ||
| { | ||
| "version": 2, | ||
| "id": "a5310065-4f20-4036-8992-bc94f7e7e7d2", | ||
| "createdOn": "2026-08-22", | ||
| "action": "add", | ||
| "payload": { | ||
| "pri": "P2", | ||
| "type": "issue", | ||
| "summary": "verify:phone-chrome can report a green pass having run zero browser tests when its changed-file selector finds no phone-chrome-affecting path", | ||
| "detail": "Measured 2026-08-22 while running the A2 browser gates for issue #2270. Invoked bare on a clean main checkout, verify:phone-chrome derived its inputs from the working-tree diff, found only one untracked docs/outstanding-issues-inbox JSON, printed 'Note: No phone-chrome-affecting file was detected; only prerequisite checks were selected', ran docs:check-index and docs:check-links, and exited 0. Nothing browser-related executed, yet the exit code is indistinguishable from a full pass. This is the exact false-green class that AGENTS.md's evidence rule exists to catch: exit 0 alone is not proof. Reporting that run as 'verify:phone-chrome green' would have been wrong. The real gate only engaged after passing an explicit --files list of the merged Dictionary scope (git diff --name-only 66594ddc1^1..main filtered to src/ and tests/ui-), which then selected lock-parity, runtime, contracts, focused-browser and full-ui and produced 133 contract tests, 12 focused phone journeys and 473 Chromium tests, all green. Suggested fix: when the selector resolves to zero phone-chrome-affecting inputs, print the conclusion as a distinct non-proof outcome (a named skip, or a non-zero advisory code) rather than an unqualified exit 0, so a caller cannot mistake 'nothing selected' for 'everything passed'.", | ||
| "source": "session 2026-08-22, GitHub issue #2270 Part A", | ||
| "issueUlid": "01M0MN4HFYX76T8AQWNK5EJ75G" | ||
| } | ||
| } |
13 changes: 13 additions & 0 deletions
13 docs/outstanding-issues-inbox/b7b5fb83-303c-43d4-89dd-228c03bb820e.json
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,13 @@ | ||
| { | ||
| "version": 2, | ||
| "id": "b7b5fb83-303c-43d4-89dd-228c03bb820e", | ||
| "createdOn": "2026-08-22", | ||
| "action": "update", | ||
| "payload": { | ||
| "id": "#6GW95D", | ||
| "pri": "P3", | ||
| "detail": "UPDATE 2026-08-22 (fleet inventory COMPLETE; cleanup deliberately DEFERRED by the owner). The inventory this row asked for is done and the 253 figure is superseded by a measured one. Scanning eight roots (.claude/worktrees, D:/Worktrees, .codex/worktrees, .gemini/antigravity/worktrees, .copilot/repos/copilot-worktrees, .local/share/opencode/worktree, Documents/Codex, AppData/Local/Temp) found 208 checkouts of this repository. Of those, 92 are registered git worktrees of D:/Repos/Database and 116 are SEPARATE FULL CLONES with their own object databases (76 under .codex, 26 under .copilot, 13 under Documents/Codex, 1 under Temp). Zero unregistered worktrees and zero stale gitdir pointers - every checkout pointing at the main repo is properly registered, so scripts/clean-worktree.mjs sees all of them. 54 carry node_modules. 18 non-checkout leftover directories sit under .claude/worktrees; 12 of them held zero files and were removed. Separately, seven registered empty worktree directories could not be removed because a live process holds them (filed separately). npm run clean:worktree --merged --squashed --dry-run identified 23 landed candidates totalling 9.30 GB (C: 4.74 GB across 11, D: 4.56 GB across 12), of which 12 are proven-or-corroborated and 11 are 'NOT fully corroborated' and are skipped by the tool's own safety re-verification. CAPACITY IS NOT THE ISSUE: D: is 80 GB with 53 GB free (35% used). DECISION 2026-08-22: the owner halted the removal mid-run and all 13 removed worktrees were restored (branch, head and clean tree verified individually; dependencies restored by byte-identical copy). Five live chats had had their working directory deleted underneath them. Cleanup is therefore DEFERRED indefinitely - do not resume it without an explicit fresh instruction naming the exact paths. Two process lessons for whoever does: a 'git refused' or EPERM removal means a live process holds that directory and is a STOP, never something to retry on a later pass; and the candidate list must be shown and approved before any deletion, not after. The 116 separate clones, not the worktrees, are the real disk mass and none of them is covered by clean-worktree.mjs at all.", | ||
| "source": "session 2026-08-22, GitHub issue #2270 Part A", | ||
| "baseRowFingerprint": "8f90caf18d6739560ea60b190fe0154ce1c0e955737ff3eb5fbf3b54d697d799" | ||
| } | ||
| } |
14 changes: 14 additions & 0 deletions
14 docs/outstanding-issues-inbox/b7d514e3-a9e4-4178-a210-53ee730de680.json
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,14 @@ | ||
| { | ||
| "version": 2, | ||
| "id": "b7d514e3-a9e4-4178-a210-53ee730de680", | ||
| "createdOn": "2026-08-22", | ||
| "action": "add", | ||
| "payload": { | ||
| "pri": "P3", | ||
| "type": "issue", | ||
| "summary": "Seven live Claude Code sessions point at worktree directories that are completely empty, so those chats have no working copy to act on", | ||
| "detail": "Measured 2026-08-22 while taking the fleet worktree inventory for #6GW95D. Seven registered worktree directories under .claude/worktrees contain zero regular files: caring-contacts-phase-2a-a4f69a, database-test-queue-contention-6baedb, developer-button-settings-fb9b51, ed-care-plans-impl-7f44cd, phase-4-index-restoration-b0f4ea, vibrant-diffie-c93450 and wave-1-canary-s2-unlock-17d673. Each is the recorded cwd of an existing session in the session registry, titled respectively Suicide, Dev Drive, Developer, Care Plan, Database, Ward Flow and RAG; the Database one was still marked running. They were already empty before this session touched anything (the inventory counted files first and only then attempted removal, and all seven then refused with EPERM because a live process holds the directory handle open, so nothing was deleted from them here). No git history is at risk: every branch still exists at its recorded head. Impact is that resuming any of those chats operates on an empty directory. Cheap fix per directory once the holding process is closed: git -C D:/Repos/Database worktree add -f <path> <branch> (the forced add restores a path that remains registered to that branch), then node scripts/setup-codex-worktree.mjs inside it to restore dependencies by byte-identical copy (about 90 seconds, not an hour-long npm ci). Worth understanding the cause before repairing them - something is emptying worktree contents while leaving the directory registered and locked, which is the same failure family as the 2026-08-21 data-loss incident recorded against #XCAX01.", | ||
| "source": "session 2026-08-22, GitHub issue #2270 Part A", | ||
| "issueUlid": "01M0MN6FQHRDBT2SDVK5GDRBBP" | ||
| } | ||
| } |
Oops, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
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.
Uh oh!
There was an error while loading. Please reload this page.