docs(issues): close #TK9GH7 as a duplicate of #1M0J6D - #2604
Conversation
The shallow-clone defect occupies two rows in the canonical ledger. Two sessions hit it independently and each filed an `add` request: - `4478f605` -> `#TK9GH7` (P3) - `b11bdfdd` -> `#1M0J6D` (P2) Both name the same two specs (`tests/clinical-hazard-controls.test.ts`, `tests/rag-plan-package-parity.test.ts`) and the same two commits (`883f1007`, `f3d1a3cc`) as the truncated-history cause. `add` requests carry no `baseRowFingerprint`, so nothing made them conflict and both landed as separate rows. This closes the P3 and keeps the P2, which carries the fuller reproduction and the more accurate severity. The closure is explicit that it is a DUPLICATE RECORD being retired, not a defect being fixed: web-container sessions still start on a shallow clone and still see two spurious test failures, tracked under `#1M0J6D`. Raised by Codex review on PR #2575. That PR queued a `cancel` against `4478f605` instead, which could not work: an intervening reconciliation had already applied that request, and `planRequestBatch` classifies a cancel whose target is already applied as ineffective — recorded, but changing nothing. Once the row exists, only a `done` or `update` can retire it. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014Mn8yfo1bQzk4kDEiG1TEn
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: trueThanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
This pull request has been ignored for the connected project Preview Branches by Supabase. |
Closing: this duplicates a
|
Already on main (4b9739a8) |
This PR (61fdc9a1) |
|
|---|---|---|
| action | done |
done |
| target | #TK9GH7 |
#TK9GH7 |
baseRowFingerprint |
present | present |
| reasoning | duplicate of #1M0J6D, same two specs, same two truncated-history commits |
identical |
Landing both would put two pending done mutations on one row — which is the exact hazard this whole line of work has been about, and which the reconciler refuses outright (it did so earlier in this sequence on #XHADPV). Merging this would recreate the problem it was written to fix.
How this PR came to be opened, stated plainly rather than glossed. I checked main for an existing fix before queueing, and found none — but I checked against 4995b7994, and #2575's merge had not yet propagated into what I fetched. So the check was real but the base was stale, and I queued a second request for work already done. The lesson is the one already recorded on #2560: re-fetch immediately before queueing a ledger request, because this inbox changes under you in minutes.
Nothing is lost by closing. 4b9739a8 is pending on main and the next reconciliation will apply it, closing #TK9GH7 as a duplicate of #1M0J6D.
Still true and still open: the underlying defect is not fixed. Web-container sessions start on a shallow clone and see two spurious failures in tests/clinical-hazard-controls.test.ts and tests/rag-plan-package-parity.test.ts. That remains tracked under #1M0J6D — only the duplicate record is being retired.
Generated by Claude Code
Summary
addrequest:4478f605→#TK9GH7(P3) andb11bdfdd→#1M0J6D(P2). Verified as the same defect, not merely adjacent — both nametests/clinical-hazard-controls.test.tsandtests/rag-plan-package-parity.test.ts, and both name commits883f1007andf3d1a3ccas the truncated-history cause.addrequests carry nobaseRowFingerprint, so they cannot conflict with each other, and no row existed for either to look like a duplicate of. Both landed.The closure is explicit that a duplicate record is being retired, not a defect fixed. Web-container sessions still start on a shallow clone and still see two spurious test failures; that stays open and tracked under
#1M0J6D. Getting this wrong would read as "the bug is fixed" when it is not, which is why the outcome text says so in terms.Why a
doneand not thecancelthat #2575 tried#2575 queued a
cancelagainst4478f605. That could not work, and the tooling says so itself. An intervening reconciliation had already applied that request, andplanRequestBatch(scripts/ledger-inbox.mjs, theineffectivepath) classifies a cancel whose target is already applied as recorded but changing nothing, warning:Once the row exists, only a
doneorupdateretires it. #2575 was closed unmerged, so the inert file never landed — this PR is the correction, not a second attempt alongside it.Raised by Codex review on #2575 and verified independently: every claim in that review checked out against the tree.
Verification
npm run verify:pr-local— 13 gates completed,failed: (none),not reached: (none). Build correctly skipped:Skipping build: no build-affecting source, config, package, or container changes detected.npm run check:ledger-write-discipline—Ledger write discipline passed for 4995b79942e7..HEAD.Run after committing; it compares two committed refs, so a pass beforehand would have meant nothing.node scripts/ledger-inbox.mjs check—Ledger inbox check passed: 32 pending request(s), 944 applied.npm run check:outstanding-issues—[snapshot] in step with data/outstanding-issues-snapshot.json (73 open, 0 pending). The committed snapshot is untouched, which is the point: a queued request must not reach the committed artefact.action: done | id: #TK9GH7 | baseRowFingerprint: present— the fingerprint pins it to the row's current content, so it is rejected rather than misapplied if that row changes before reconciliation.origin/mainbefore queueing: both rows still present and open, and no pending request targets either one.npm run format(whole tree), committedeval:*,verify:release) — nothing here reaches a provider.Risk and rollout
issues:reconcile, and the request is reviewable before then.Notes
origin/mainat4995b7994. The previous branch was deleted when docs(issues): cancel the duplicate shallow-clone request before it becomes a second row #2575 closed, so this is fresh work rather than a continuation.🤖 Generated with Claude Code
https://claude.ai/code/session_014Mn8yfo1bQzk4kDEiG1TEn
Generated by Claude Code