Skip to content

On a shallow checkout git log -1 -- <path> names a commit that never touched the path — measured: the seating charter reading returned a real sha from an unrelated driver-test commit #18180

Description

@claude

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

  1. 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.
  2. 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.
  3. 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

  1. The mechanism is established (or the repair is written to be correct without depending on it, and says so).
  2. 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.
  3. 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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions