Skip to content
32 changes: 31 additions & 1 deletion data/outstanding-issues-snapshot.json
Original file line numberDiff line numberDiff line change
Expand Up@@ -10,7 +10,7 @@
"p2": 43,
"p3": 33,
"queued": 11,
"pending": 32,
"pending": 37,
"resolved": 359
},
"queue": [
Expand DownExpand Up@@ -877,6 +877,12 @@
"summary": "#1YPV51: detail → PARTIAL PROGRESS 2026-08-22, NOT a clinical sign-off. The sign-off block in docs/medication-interaction-lexicon-review.md is deliberately still empty and the document still reads Status: UNREVIEWED, because a Clinical Lead read of the 37-term sheet has still not happened. What DID happen: the owner reviewed seven specific questions raised from the report and one real defect was found and fixed. FIXED: loperamide was resolving as a member of the opioids term because the selector matches the substring Opioid and the catalogue classifies it Peripheral Opioid Agonist. It is P-gp-restricted at therapeutic doses and does not contribute to the sedation and respiratory-depression rows that term drives (35 of 36 rows CRITICAL or HIGH). It is now deny-listed alongside naltrexone and naloxone, which were already excluded for the same class of reason. Proven, not asserted: regenerating the index with and without the change alters 35 medications, removes loperamide as a counterparty from every one of them, adds nothing anywhere, and leaves resolvedRows/unresolvedRows/rowsWithCatalogueTarget unchanged at 392/133/440. FOUR OTHER CHANGES WERE PROPOSED AND WITHDRAWN after reading the implementation: adding moclobemide to maois, removing atomoxetine from snris, folding the Z-drugs into benzodiazepines, and splitting antihistamines by sedation. All four would have overridden deliberate catalogue classifications (moclobemide is subclass RIMA not MAOI; atomoxetine is subclass SNRI (Non-stimulant); zolpidem and zopiclone are class Sedative subclass Z-Drug) or broken a term's meaning. The sedation concern they were aimed at is carried by the cns-depressants term, which is kind: mechanism and deliberately unenumerable, so it warns on no specific drug by design. TWO QUESTIONS REMAIN FOR THE OWNER, both catalogue-level rather than lexicon-level: (1) should moclobemide's RIMA classification make it fire serotonergic interaction warnings alongside the irreversible MAOIs; (2) is atomoxetine correctly classed SNRI for interaction purposes. STILL OPEN: the full clinical read. Do not close this row without explicit owner confirmation that the review was actually carried out.",
"created_at": "2026-08-22"
},
{
"request_id": "2a4e6a53-2fc9-4142-8d8f-e259cb985593",
"action": "add",
"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",
"created_at": "2026-08-22"
},
{
"request_id": "2b98cd3b-a7be-454b-a819-9d6a42d52423",
"action": "done",
Expand DownExpand Up@@ -961,6 +967,12 @@
"summary": "No gate can detect a React Server Component boundary violation: a component with an event handler and no \"use client\" throws only at request time",
"created_at": "2026-08-21"
},
{
"request_id": "7f369171-54d4-4076-92b8-bf44aab3511d",
"action": "add",
"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",
"created_at": "2026-08-22"
},
{
"request_id": "993f7ca7-5277-4399-82fc-19ff981823e4",
"action": "update",
Expand All@@ -979,6 +991,12 @@
"summary": "Cancel request 3552c196-bf4f-49c8-a39b-28f8876d8caf: Duplicate done request created by overlapping command completion; retain 4bc642e9-5fba-4b43-90e8-407fe2c11408.",
"created_at": "2026-08-21"
},
{
"request_id": "a5310065-4f20-4036-8992-bc94f7e7e7d2",
"action": "add",
"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",
"created_at": "2026-08-22"
},
{
"request_id": "afaa753b-41ae-4bee-8c63-89c649cdcfd5",
"action": "done",
Expand All@@ -991,6 +1009,18 @@
"summary": "Cancel request 4f754fec-20c4-4ca8-8e07-0d948089eaf1: Duplicate done request created by overlapping command completion; retain eeac3580-2340-415d-824f-e31c23d8e2f7.",
"created_at": "2026-08-21"
},
{
"request_id": "b7b5fb83-303c-43d4-89dd-228c03bb820e",
"action": "update",
"summary": "#6GW95D: 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.; priority → P3; source → session 2026-08-22, GitHub issue #2270 Part A",
"created_at": "2026-08-22"
},
{
"request_id": "b7d514e3-a9e4-4178-a210-53ee730de680",
"action": "add",
"summary": "Seven live Claude Code sessions point at worktree directories that are completely empty, so those chats have no working copy to act on",
"created_at": "2026-08-22"
},
{
"request_id": "c4984226-e979-4e43-842e-0ff4f6cd006a",
"action": "done",
Expand Down
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
{
"version": 2,
"id": "2a4e6a53-2fc9-4142-8d8f-e259cb985593",
"createdOn": "2026-08-22",
"action": "add",
Comment thread
BigSimmo marked this conversation as resolved.
"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"
}
}
Original file line numberDiff line numberDiff 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"
}
}
Original file line numberDiff line numberDiff 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"
}
}
Original file line numberDiff line numberDiff 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"
}
}
Original file line numberDiff line numberDiff 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"
}
}
Loading