From 51a2d01fe836fc7f32abf9d65e98f29523380c2e Mon Sep 17 00:00:00 2001 From: Nils Lehnen <30603423+iderex@users.noreply.github.com> Date: Thu, 17 Sep 2026 19:02:29 +0200 Subject: [PATCH] Say what these two empty registers are worth, not what the tree used to lack .github/lint/excluded-lints and .github/thread-detector/suppressions each say they hold no entry and give a reason: that there is almost no code here, and that the suite holds nothing that takes a lock or shares a value across threads. Both registers are still empty and both refusals still hold; the reasons are what have gone. Read at a194071f3207d3903f6b40e27feef80aa1ad3d9a, src/ carries 46 files and 17,200 lines that are neither blank nor a whole-line comment, and seventeen files under src/ and tests/ take a lock, hold an atomic or spawn a thread. Each paragraph now gives the reading the tree answers with, anchored to a commit the way .github/codeql/excluded-rules already anchors its own, so the next file to land does not make either of them wrong again. Each also says what it claimed before, and the two say it differently because the two defects are different. The lint sentence was true on 2026-08-25, when src/ held nine files and 238 lines, and drifted. The detector sentence never held: at the commit before the one that wrote it, src/measurement/mod.rs already declared a shared AtomicU64 and its test module already took a Mutex, and the change that wrote the paragraph did not open that file. Those are different defects and a register header is the only place the distinction survives, so it is named rather than flattened into the other one. It prevents an empty debt register reading as worthless. Each file says of itself that a line in it is a debt rather than a dispensation, so what its emptiness is evidence of matters. Empty beside "there is almost no code here" is something a reader discounts; empty over 17,200 lines is a statement about the gate, and both files were giving that statement away. Found by re-reading the paragraph in each register against the tree it describes. No rule, fixture, threshold or setting of either leg changes, and both registers stay empty. Closes #406 Signed-off-by: Nils Lehnen <30603423+iderex@users.noreply.github.com> --- .github/lint/excluded-lints | 18 ++++++++++++++---- .github/thread-detector/suppressions | 17 ++++++++++++++--- 2 files changed, 28 insertions(+), 7 deletions(-) diff --git a/.github/lint/excluded-lints b/.github/lint/excluded-lints index 330f3fe..ff0b739 100644 --- a/.github/lint/excluded-lints +++ b/.github/lint/excluded-lints @@ -10,10 +10,20 @@ # retire it. # # THIS REGISTER IS EMPTY OF ENTRIES TODAY, AND THAT IS A FACT ABOUT THE TREE -# RATHER THAN ABOUT THE RULE. There is almost no code here yet, so nothing has -# had a chance to need an exclusion. The refusal above is proven by the fixtures -# in .github/lint/lint.sh rather than by anything in this file, which is the only -# way a rule with no live subject can be proven at all. +# RATHER THAN ABOUT THE RULE. Read at `a194071f3207d3903f6b40e27feef80aa1ad3d9a`, +# `src/` carries 46 files and 17,200 lines that are neither blank nor a whole-line +# comment, and no lint on them has needed an exclusion. The refusal above is +# proven by the fixtures in .github/lint/lint.sh rather than by anything in this +# file, which is the only way a rule with no live subject can be proven at all. +# +# THIS PARAGRAPH GAVE THE REASON AS "there is almost no code here yet", WHICH WAS +# TRUE WHEN IT WAS WRITTEN ON 2026-08-25 AND HAD STOPPED BEING TRUE. `src/` held +# nine files and 238 lines at the commit that wrote it. A reader met a reason they +# could discount, and an empty register with a discountable reason says nothing +# about the gate, while an empty one over the tree above says something. The +# reading is anchored to a commit now for the same reason that +# .github/codeql/excluded-rules anchors its own, so the next file to land does +# not make this paragraph wrong again. #406 is where it was found. # # The name is written the way the analyser writes it, `clippy::` and the lint, # because that is the string the run passes back to the analyser and a second diff --git a/.github/thread-detector/suppressions b/.github/thread-detector/suppressions index df51360..fedbce1 100644 --- a/.github/thread-detector/suppressions +++ b/.github/thread-detector/suppressions @@ -17,8 +17,19 @@ # step with it. # # THIS REGISTER IS EMPTY OF ENTRIES TODAY, AND THAT IS A FACT ABOUT THE TREE -# RATHER THAN ABOUT THE RULE. The suite this leg runs holds no code that takes a -# lock or shares a value across threads yet, so nothing has had a chance to need -# an entry. The refusal above is proven by the fixtures in +# RATHER THAN ABOUT THE RULE. Read at `a194071f3207d3903f6b40e27feef80aa1ad3d9a`, +# seventeen files under `src/` and `tests/` take a lock, hold an atomic or spawn +# a thread, and the detector has reported nothing against them that needed +# suppressing. The refusal above is proven by the fixtures in # .github/thread-detector/thread-detector.sh rather than by anything in this # file, which is the only way a rule with no live subject can be proven at all. +# +# THIS PARAGRAPH GAVE THE REASON AS "the suite this leg runs holds no code that +# takes a lock or shares a value across threads yet", AND THAT NEVER HELD RATHER +# THAN HAVING STOPPED HOLDING. At the commit before the one that wrote it on +# 2026-08-26, src/measurement/mod.rs already declared a shared `AtomicU64` and its +# test module already took a `Mutex`, and the change that wrote this paragraph did +# not open that file. The two are different defects and this is the only place the +# distinction survives, so it is named rather than repaired into the other one. +# The reading is anchored to a commit for the same reason that +# .github/codeql/excluded-rules anchors its own. #406 is where it was found.