Noticed while implementing option C on #12824 (PR #13738). ⛔ Observation only — nothing was changed for it, and it is not a defect in affected-docs.mjs.
What happened
#12824 closes with a ### Reproduction block, which is exactly the discipline this repo asks for:
git worktree add --detach /tmp/wt 4482c848ab605ee200d1a364e3f1d7b3112c7215
cd /tmp/wt && git checkout c4be8da2f
node scripts/docs-audit/affected-docs.mjs 15bf9e859e56862e6ebe7b5c42404de103362457 --json
Two of the three SHAs are not in a fresh clone today:
| sha |
git cat-file -t |
4482c848ab605ee200d1a364e3f1d7b3112c7215 |
could not get object info |
c4be8da2f |
Not a valid object name |
15bf9e859e56862e6ebe7b5c42404de103362457 |
commit ✅ |
The two dead ones are PR-branch commits. The branch was squash-merged and deleted, so the objects are unreachable — the surviving one is the main commit used as the diff base. The block reads as replayable and is not.
Why it is worth a card
The measurement it reproduces is the eighth precision finding on this machinery, and its numbers (25 anchors / 25 rows, 16 of 25 from three data properties) are cited by the ruling on #12824. #13306 exists because a figure evaporated; #11434 was closed with a measurement stranded in it. Both are the same failure — a number that cannot be re-derived becomes a number nobody can check — and a repro pinned to a deleted branch is that failure with a green-looking command block on top.
This is general, not specific to #12824: any card recording a repro at its own PR head has the same expiry, and there is no signal at write time.
The cheap remedy, if it is judged worth one
State the replay against commits that survive: the main merge commit (or the base + the PR number), never the PR head. Where the PR head genuinely is the subject, say so and record the inputs — the diff, or the changed hunks — beside it, so the run can be rebuilt without the object.
⛔ Not proposing a gate. Whether this is worth mechanising, worth a line in AGENTS.md, or worth nothing is a triage call — filing it so the observation does not evaporate the way the measurements it is about did.
Noticed while implementing option C on #12824 (PR #13738). ⛔ Observation only — nothing was changed for it, and it is not a defect in
affected-docs.mjs.What happened
#12824 closes with a
### Reproductionblock, which is exactly the discipline this repo asks for:Two of the three SHAs are not in a fresh clone today:
git cat-file -t4482c848ab605ee200d1a364e3f1d7b3112c7215could not get object infoc4be8da2fNot a valid object name15bf9e859e56862e6ebe7b5c42404de103362457commit✅The two dead ones are PR-branch commits. The branch was squash-merged and deleted, so the objects are unreachable — the surviving one is the
maincommit used as the diff base. The block reads as replayable and is not.Why it is worth a card
The measurement it reproduces is the eighth precision finding on this machinery, and its numbers (25 anchors / 25 rows, 16 of 25 from three data properties) are cited by the ruling on #12824. #13306 exists because a figure evaporated; #11434 was closed with a measurement stranded in it. Both are the same failure — a number that cannot be re-derived becomes a number nobody can check — and a repro pinned to a deleted branch is that failure with a green-looking command block on top.
This is general, not specific to #12824: any card recording a repro at its own PR head has the same expiry, and there is no signal at write time.
The cheap remedy, if it is judged worth one
State the replay against commits that survive: the
mainmerge commit (or the base + the PR number), never the PR head. Where the PR head genuinely is the subject, say so and record the inputs — the diff, or the changed hunks — beside it, so the run can be rebuilt without the object.⛔ Not proposing a gate. Whether this is worth mechanising, worth a line in AGENTS.md, or worth nothing is a triage call — filing it so the observation does not evaporate the way the measurements it is about did.