Measured by the domain:devx execution seat while seating this shift, and it corrupted a reading the seat-post protocol requires every incoming seat to take. ⛔ Unlabelled for domain:* and ungraded — routing is triage's (the fact table lives under .claude/skills/**, so likely domain:skills). ⛔ The seat did not dedupe; dedupe words at the bottom.
The defect: on a shallow checkout, git log -1 -- <path> names a commit that never touched that path
Not a truncation, ⛔ not an error, ⛔ not a non-zero exit. It returns a real, plausible commit sha, and nothing says the answer is fabricated.
Measured, on this container
At seating, the seat ran the reading its own protocol asks for — the charter files' latest touch on origin/main:
git log -1 --format='%h %cI' origin/main -- .claude/skills/pm-dispatch/references/lanes/devx.md
→ 47e6601 2026-09-13T13:21:01+00:00
That sha was then recorded in the seat post as the lane charter's provenance. It is false:
git show --stat 47e6601c5
→ test(drivers): collapse ContainsAny's distributivity so union-shaped doors assert (#18029)
packages/drivers/**/sql-driver-doors-declared-types.test.ts
packages/drivers/**/turso-driver-doors-declared-types.test.ts
⇒ zero `.claude/**` paths in the commit
State of the checkout minutes later, same session:
test -f .git/shallow → YES
git rev-list --count HEAD → 50
After the clone was deepened (incidentally, by scripts/pm/git-history.mjs log --days=30, which fetches --shallow-since), the same command on the same path answers:
→ d5125f223 2026-09-10T11:43:53+00:00 ← the true last touch
⚠️ Note the direction: the false answer was newer than the true one, so "it looks recent" is ⛔ not a sanity check.
⛔ Stated as inference, not measurement: the presumed mechanism is the shallow graft boundary — git treats the boundary commit as a root at which the whole tree appears, so a pathspec walk stops there and attributes the path to it. The seat did not isolate that, and whoever takes this card should establish the mechanism rather than inherit this sentence.
Why it matters more than an ordinary stale reading
- Every incoming seat is exposed. A fresh container clone is shallow, and 〈开轮互斥〉 requires the seating seat to read the three charter files' latest-touch shas and compare them against the previous round marker. That comparison is the mutual-exclusion check — ⇒ it can be made against fabricated shas, and a seat could conclude the charter moved (or did not) on a lie.
- It is the second instance of one root this shift. The same seat earlier read a 30-day window as 429 commits when the true figure is 2020 — its
git-history.mjs log --days=30 call was itself performing the deepening fetch, and the output it captured was short. ⇒ Same root (shallow checkout + git answering anyway), two different symptoms: truncated output there, a fabricated-but-plausible sha here. The second is worse because there is nothing to notice.
scripts/pm/git-history.mjs already exists precisely because 「浅 clone 对窗口化 git log/rev-list 以 exit 0 无警告答错」 — but its guard covers windowed counting, ⛔ not -1 -- <path> provenance lookups, which is how the charter reading is spelled.
Suggested repair (⛔ a proposal, not a prescription)
One line in references/platform-readings.md: on a shallow checkout git log -1 -- <path> can name a commit that does not touch the path, so a provenance sha must be taken after historyHorizon() clears, or verified with git show --stat <sha> -- <path> producing a non-empty result.
⭐ The verification leg is cheap and self-controlling — a sha that truly touched the path prints a stat line; a fabricated one prints nothing — so it may be worth naming it as the standing spelling rather than relying on the checkout's depth.
Acceptance
- The mechanism is established (or the repair is written to be correct without depending on it, and says so).
- The repaired spelling is demonstrated on a genuinely shallow checkout, with a firing control: a sha that did touch the path, so the check is shown to discriminate rather than always refuse.
- Consider whether
scripts/pm/git-history.mjs should grow a provenance mode, or whether a documented spelling is enough — ⛔ that judgement is the taker's, not asserted here.
Dedupe words
shallow clone git log · provenance sha · charter touch sha · historyHorizon · git-history.mjs
Generated by Claude Code
Measured by the
domain:devxexecution seat while seating this shift, and it corrupted a reading the seat-post protocol requires every incoming seat to take. ⛔ Unlabelled fordomain:*and ungraded — routing is triage's (the fact table lives under.claude/skills/**, so likelydomain:skills). ⛔ The seat did not dedupe; dedupe words at the bottom.The defect: on a shallow checkout,
git log -1 -- <path>names a commit that never touched that pathNot a truncation, ⛔ not an error, ⛔ not a non-zero exit. It returns a real, plausible commit sha, and nothing says the answer is fabricated.
Measured, on this container
At seating, the seat ran the reading its own protocol asks for — the charter files' latest touch on
origin/main:That sha was then recorded in the seat post as the lane charter's provenance. It is false:
State of the checkout minutes later, same session:
After the clone was deepened (incidentally, by
scripts/pm/git-history.mjs log --days=30, which fetches--shallow-since), the same command on the same path answers:⛔ Stated as inference, not measurement: the presumed mechanism is the shallow graft boundary — git treats the boundary commit as a root at which the whole tree appears, so a pathspec walk stops there and attributes the path to it. The seat did not isolate that, and whoever takes this card should establish the mechanism rather than inherit this sentence.
Why it matters more than an ordinary stale reading
git-history.mjs log --days=30call was itself performing the deepening fetch, and the output it captured was short. ⇒ Same root (shallow checkout + git answering anyway), two different symptoms: truncated output there, a fabricated-but-plausible sha here. The second is worse because there is nothing to notice.scripts/pm/git-history.mjsalready exists precisely because 「浅 clone 对窗口化git log/rev-list以 exit 0 无警告答错」 — but its guard covers windowed counting, ⛔ not-1 -- <path>provenance lookups, which is how the charter reading is spelled.Suggested repair (⛔ a proposal, not a prescription)
One line in
references/platform-readings.md: on a shallow checkoutgit log -1 -- <path>can name a commit that does not touch the path, so a provenance sha must be taken afterhistoryHorizon()clears, or verified withgit show --stat <sha> -- <path>producing a non-empty result.⭐ The verification leg is cheap and self-controlling — a sha that truly touched the path prints a stat line; a fabricated one prints nothing — so it may be worth naming it as the standing spelling rather than relying on the checkout's depth.
Acceptance
scripts/pm/git-history.mjsshould grow a provenance mode, or whether a documented spelling is enough — ⛔ that judgement is the taker's, not asserted here.Dedupe words
shallow clone git log·provenance sha·charter touch sha·historyHorizon·git-history.mjsGenerated by Claude Code