Skip to content

backlog: file #1247 -- a gate install leaves no record, and its mtime actively lies - #371

Merged
wshallwshall merged 1 commit into
mainfrom
claude/asvs-1247-gate-install-attribution
Aug 13, 2026
Merged

backlog: file #1247 -- a gate install leaves no record, and its mtime actively lies#371
wshallwshall merged 1 commit into
mainfrom
claude/asvs-1247-gate-install-attribution

Conversation

@wshallwshall

Copy link
Copy Markdown
Collaborator

Files one backlog item. Docs-only: docs/BACKLOG.md, +28 -0, pure append. Base c2241cfe, current
main, ahead 1 / behind 0.

#1247 -- a gate install leaves no record, and its mtime actively lies.

What happened, measured

The machine-global worktree gate at C:\Users\Scott\.claude\hooks\worktree_gate.ps1 was replaced
mid-session by a writer nobody can identify.
Three sessions independently examined it and none of
them did it.

The hashes are decisive, because a historical release matches exactly:

590b68f6 gate as CRLF = 24c511ff75a0   <- what was installed at the baseline reading
dd90232e gate as CRLF = 4bd81a4df095   <- what is installed now

So the file moved forward, from the version reported as stale to the version that fixes rule 3d's
quote-aware victim read. The outcome was an upgrade. The governance gap is the finding, not the
content.

Why nothing caught it

mtime is not a witness here, and it actively misleads. The file reads 2026-08-12 13:55:22 --
earlier than the baseline that already showed different content. install-gate.ps1 installs with
Copy-Item, which carries the source's timestamp, so a fresh install produces new content with an old
mtime
. A session reasoning from the timestamp concluded "nothing wrote it today" and retracted a true
staleness finding on that basis.

Why this is worth an item rather than a shrug

A machine-global safety control governing every session on the box changed hands with no log, no
attribution, and a timestamp that argues against the change having happened.
That is the same shape as
#1244: a state changed and no instrument noticed. It is benign this time only because the change
happened to be correct.

Verification

  • unreplicated before this push -- git branch -r --contains 6e68a2b6 returned 0, so it existed in one
    worktree only
  • one commit, docs-only, +28 -0, base is current main
  • ledger gate and leak guard passed in the authoring worktree
  • the hash table above was computed independently by two sessions, which is how the retraction was
    itself retracted

Severity carries no deployment axis -- this is developer tooling on one workstation, not shipped engine
behaviour.

… actively lies

The installed machine-global worktree gate changed content on this box while
three sessions ran against it, and after all three looked, nobody can say who
wrote it. The change was benign -- it moved the gate forward -- so this is a
governance defect rather than an incident.

install-gate.ps1:420 is a bare Copy-Item -Force. Four mechanisms could have
recorded the write and none is present: no backup of the replaced bytes, no
receipt, no log line, and Copy-Item carries the source file's mtime so the
installed copy inherits a timestamp from whichever checkout it came from.

The mtime is worse than missing because it is misleading. A correct stale-gate
report was retracted on the strength of that timestamp and the retraction reached
three sessions and the owner before a builder's pre-change baseline hash reproved
the original claim. An absent record makes people say unknown; a wrong record
makes them say something false with confidence.

Records the technique that eventually bounded the write, because it is the only
one that worked: a record of the past taken before the change. A re-measurement
cannot distinguish a bad instrument from a changed artifact, since it sees only
the present.

Bounds itself: it is NOT established that install-gate.ps1 performed this write,
only that had it been used it would have left nothing either.
@wshallwshall
wshallwshall enabled auto-merge (squash) August 13, 2026 15:16
@wshallwshall
wshallwshall merged commit df1059f into main Aug 13, 2026
33 of 34 checks passed
@wshallwshall
wshallwshall deleted the claude/asvs-1247-gate-install-attribution branch August 13, 2026 15:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant