← board

T: present() compares existence, not the commit the corpus was pinned to

The alarming version is FALSE — say that first

Raised by frank-rust as a provenance hole: "three copies of the corpus on this box, -Fu pointing at a sibling lane's tree, a measurement whose input nobody names." Reasonable from where it stood, and measured wrong. Every layer it could not see turns out to exist:

worry reality
nothing versions the corpus tools/install_lib_candidates.sh is tracked and pins every fetch — FPC_COMMIT="0d122c49534b480be9284c21bd60b53d99904346" (release_3_2_2) for rtl-generics, LUA_SHA256, ZLIB_COMMIT, ~20 more
the copies could drift each fetched tree carries a PROVENANCE.md naming its commit
they might already have drifted all three rtl-generics copies stamp the same commit; frank-rust separately measured generics.collections.pas byte-identical (sha256 5a3402725ab53181) across them — two independent mechanisms agreeing, with no shared upstream
"three copies" four~/pxx (9 corpora), ~/frankB (5), ~/frankA (2), ~/trackt-watch (20). They differ in which corpora are installed, not in version

The narrow version is TRUE, and it is this ticket

present() (tools/install_lib_candidates.sh:114-116) is:

present() {  # $1 = subdir; true if a non-empty tree already exists and not FORCE
  [ "$FORCE" != "1" ] && [ -d "$DEST/$1" ] && [ -n "$(ls -A "$DEST/$1" 2>/dev/null)" ]
}

It asks whether a directory is non-empty. It never reads the PROVENANCE.md that the same script wrote. So when a *_COMMIT is bumped, every existing copy silently keeps the old tree and reports present (FORCE=1 to re-fetch) — skip, which reads as up to date. The stamp and the pin then disagree, and nothing in the repo compares them — the one artefact that would catch it is written by this script and read by nobody.

The failure is quiet in the direction that matters: a lane measures a corpus line number, cites the pinned commit because that is what the installer says, and the tree on disk is an older one. Line numbers are exactly the kind of figure a stale corpus changes.

Fix

Have present() (or the caller) compare the stamped Commit: against the variable and re-fetch on mismatch — the data is already on disk in the format needed. Print the stamped commit in the skip line so a human sees which tree was used. Add a --verify mode that checks every installed corpus against its pin and exits non-zero, so it can be a gate step rather than a habit.

Do not make a mismatch fatal by default — a lane deliberately holding an older corpus to reproduce an old figure is legitimate, and turning that into a hard stop during a bisect is worse than the bug.

Provenance of this ticket

Filed by the coordinator, 2026-08-30, during the pre-merge pause — recorded rather than fixed, because the fleet is stopped for a re-pin and this is not in the pin path. Found while checking a flag from frank-rust, which was worth raising and wrong in its strong form; the check that settled it cost four commands and is written above so the next person does not re-run them.

Deprioritised 2026-09-02 — the Track T tooling backlog was cut as a pile

This ticket is not being called wrong. It was moved as part of a pile, not judged individually, and nothing here disputes its finding.

Owner decision. 73 of the 74 open track: T tickets were filed between 2026-08-31 and 2026-09-02, 58 on one day. The pile was too large to work through and returned almost nothing, and a ticket nobody will fix does not sit neutrally — it stays in the ranker forever at zero value, which is the argument CLAUDE.md already makes for a terminal folder over a low prio.

Four were kept in the ranker on a purely structural test — an active umbrella or a hard blocked-by: edge from live work: umbrella-one-full-tier-run-with-no-red-tier, feature-t-freebsd-image-and-runner, and the two regression-test-core-* reds that block the umbrella.

Kept, not deleted, for two reasons: so the finding is not rediscovered and refiled from scratch by the next agent who trips over it, and so it can be pulled back if what it touches becomes load-bearing.

To revive it: move it to the owning lane's backlog, set status: backlog, and say in the ticket WHAT CHANGED to make it matter now. Restoring it because it reads well is how the pile comes back.