Changes touching this path
- a skipped gate leaves a mark, and landed main gets a canary: the single test gate stops being silent (#642)
Three questions, decided.
1. A test/lint CI workflow — YES, but exactly one, and it runs on landed main
rather than on PRs. The pre-land gate IS the design real gate (loot is the merge
authority, git main is a projection), so a job re-running the same suite on every
review round duplicates it, adds latency, and covers only paths nobody takes.
What it covers instead is SILENCE. The ticket named three ways past the gate that
leave no test run behind; a fourth appeared today and cost a morning — #920 and
#921 each passed their own gate and together left main red, and nobody learned
until the NEXT land failed on a breakage it had not caused. #939 closed that
window; this says so in minutes if anything reopens it. It uploads no artifacts,
so it does not touch the quota blocking releases (#835, #909), and docs-only
pushes are skipped, which is what --skip-tests is documented for.
2. clippy — NO, not yet. ~30 pre-existing warnings mean -D warnings lands
permanently red and warn-only lands permanently yellow, which teaches everyone to
ignore the one signal the workflow exists to make trustworthy. Same argument that
kept an audit gate out of site/ (#916). It wants a cleanup pass and then its own
decision.
3. --skip-tests recording itself — YES, on the verdict line, as tests=ran or
tests=SKIPPED. Shouted like relay=FAILED and branch=FAILED (#519, #625), because
the field is saying the change above it was never proved to build, plus a block
below that cannot be scrolled past. The block also names the thing that is easy
to forget: the perf gate skips WITH it, so such a land writes no point and the
previous one stays the baseline. Before this the only trace of a skip was one
line minutes earlier, above everything anyone was watching for.
Not the commit trailer the ticket offered as the alternative: the projected
commit trailer set is part of the ferry ingest contract, and adding to it is a
wire-adjacent change that wants its own ticket rather than riding this one.
49e4554a · dbf3dbe6…
Renames are not followed. loot's tree maps a path to an address, so a rename is a delete and an add. This list is the history of the name, not of the bytes.