Skip to content

The vendored draughtsman stamp names the commit that landed, 0898967 - #669

Merged
syncytium2 merged 1 commit into
tune-bench-comparisonfrom
restamp-draughtsman-0898967
Sep 19, 2026
Merged

syncytium2 merged 1 commit into
tune-bench-comparisonfrom
restamp-draughtsman-0898967

Conversation

@syncytium2

@syncytium2 syncytium2 commented Sep 19, 2026

Copy link
Copy Markdown
Owner

Stamp only, in three lines. draughtsman #1 was squash-merged as 0898967, so 18b4453, the commit #660 vendored at, is not on draughtsman's main. The vendored package is byte-identical to 0898967.

Not on main: this targets tune-bench-comparison, like #660.

Correction, 2026-09-19. An earlier version of this description said tools/check_vendor_freshness.sh compares each family file with the last upstream commit touching that file, and that the family therefore reads stale permanently. That was wrong. The gate compares the family's one stamp with upstream HEAD (gh api repos/<slug>/commits/main) and reports any family file whose stamp disagrees with the first. The upstream: 5705c46 I saw was a cached answer: .git/murderboard-head.syncytium2-draughtsman.cache, with a 12-hour expiry, was written before draughtsman #1 merged. Live upstream HEAD was 91d5bf5. What holds is narrower: nothing runs the gate. It is referenced only in prose, and not in .github/, tests/ or .githooks/.

🤖 Generated with Claude Code

draughtsman #1 was squash-merged, so 18b4453 (what #660 vendored) is on no branch
but the source one. The package is byte-identical at 0898967; only the stamp moves.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@syncytium2
syncytium2 merged commit 9befe9b into tune-bench-comparison Sep 19, 2026
3 checks passed
@syncytium2
syncytium2 deleted the restamp-draughtsman-0898967 branch September 19, 2026 21:44
syncytium2 pushed a commit that referenced this pull request Sep 19, 2026
… report does not say so

Found by the session that wrote #669, tracing where its own wrong claim came from —
the useful half of that story.

murderboard_freshness.sh caches the resolved upstream HEAD per family in the git common
dir for TTL seconds, default 43200. --refresh is the only bypass. The verdict line names
the cached sha as "upstream" without marking it as cached, so a session can reason about
a repository state that stopped existing hours ago. That is what happened: the cache held
a draughtsman sha written before draughtsman #1 merged.

The gate guards the behind-cache direction and self-tests it, so a consumer stamped at or
after the cached sha is not accused. But "provably at-or-ahead of a twelve-hour-old sha"
is weaker than "current", and nothing in the output separates them. The window is exactly
the one the gate exists for: upstream merges, a session re-vendors the same day and checks.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017hQX6iESxBsQk7Jan875e3
syncytium2 added a commit that referenced this pull request Sep 19, 2026
…eam answer can be twelve hours old (#670)

* The vendor freshness gate is advisory and nothing runs it — and #669 describes it wrongly

Two things, one subject.

The gate: tools/check_vendor_freshness.sh checks four vendored families against their
upstreams, and a grep of the tree finds it named only in prose — CLAUDE.md, the boards,
DEPLOY_HOLD, four todos, a sapper note — and in no workflow, test or hook. It runs when
a session remembers to type it. That is worth naming because the failure it exists to
catch already happened: third_party/draughtsman/ sat pinned at cb7fc2a for three days
while the upstream had fixed a mis-routed edge, and the front page published the bad
figure with nothing red. The todo records why wiring it into CI is not a one-liner —
two private upstreams and a machine-local clone path — and lists the candidates.

The misreading: #669, merged today, says in its body that the gate compares each family
file with the last upstream commit touching that file, and concludes the draughtsman
family will read stale permanently. Neither holds. There is no per-file history lookup
in murderboard_freshness.sh; the first listed file supplies one stamp for the family,
the others are reported only when they disagree with it, and that stamp is compared
against upstream HEAD. A family going stale when its upstream moves is the gate working.
A merged PR body cannot be unpublished, so the correction is filed where a later session
reading #669 will meet it.

Also recorded: #669 was opened and merged two minutes apart, before CI finished on a
branch whose suite takes two hours. Three stamp lines over a byte-identical package, so
nothing broke — but merge_when_green.sh exists to refuse exactly that, and the API route
goes around it.

An INDEX row now points at the gate, because there was none.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017hQX6iESxBsQk7Jan875e3

* The freshness gate's upstream answer can be twelve hours old, and the report does not say so

Found by the session that wrote #669, tracing where its own wrong claim came from —
the useful half of that story.

murderboard_freshness.sh caches the resolved upstream HEAD per family in the git common
dir for TTL seconds, default 43200. --refresh is the only bypass. The verdict line names
the cached sha as "upstream" without marking it as cached, so a session can reason about
a repository state that stopped existing hours ago. That is what happened: the cache held
a draughtsman sha written before draughtsman #1 merged.

The gate guards the behind-cache direction and self-tests it, so a consumer stamped at or
after the cached sha is not accused. But "provably at-or-ahead of a twelve-hour-old sha"
is weaker than "current", and nothing in the output separates them. The window is exactly
the one the gate exists for: upstream merges, a session re-vendors the same day and checks.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017hQX6iESxBsQk7Jan875e3

---------

Co-authored-by: Claude <noreply@anthropic.com>
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.

2 participants