From f592a5c07cfb3c36be416cb6d7252413273d1fc1 Mon Sep 17 00:00:00 2001 From: Vasilev Dmitrii Date: Sun, 30 Aug 2026 07:35:30 +0700 Subject: [PATCH] skill(ci-gates) 370: correcting 366 -- the family I called noise is the largest lever Section 366 says the top first-error family in the C backlog was worth zero. It is wrong, and the way it is wrong is the rule that same section teaches. I counted files whose every error message mentioned `default_input` or `valid_input`: 0 of 166, so every such file looked independently broken. But one emitted template produces three errors and only the first carries the name: __auto_type input = default_input(); // call to undeclared function __auto_type result = f(input); // incomplete type 'void' assert((result != {0})); // expected expression Same construct. Grouping by message text is precisely what the census discipline forbids, and I wrote that rule into the audit prompt before breaking it in my own count an hour later. Corrected, on 581 specs that generate C: cc accepts as emitted 174 ... with scaffold bodies emptied 265 (+91, upper bound) ... with the fix the sibling backends made 242 (+68, honest) 68 of a 404-spec gap -- the largest single lever in the project, called noise by a census that looked rigorous. What survives from 366 is the general claim: first-error ranking ranks by position in the file, and single-family counting is the right instrument. What fails is the worked example, because the instrument was fed message texts instead of constructs. The section adds the test that would have caught it: compile ONE construct alone and count distinct messages. Greater than one means message-text grouping will scatter it. Four lines gave three messages here. Refs #2931 --- .claude/skills/ci-gates/SKILL.md | 52 +++++++++++++++++++ ...30-i-broke-my-own-rule-in-the-same-hour.md | 10 ++++ 2 files changed, 62 insertions(+) create mode 100644 docs/now/2026-08-30-i-broke-my-own-rule-in-the-same-hour.md diff --git a/.claude/skills/ci-gates/SKILL.md b/.claude/skills/ci-gates/SKILL.md index 53384f681a..b0281cfd22 100644 --- a/.claude/skills/ci-gates/SKILL.md +++ b/.claude/skills/ci-gates/SKILL.md @@ -9204,3 +9204,55 @@ noise and the least-blocked one was a real defect in the type checker.** agreed here and all three were wrong; the outlier was right. When the outlier is the one with an independent standard behind it -- a C compiler, a proof assistant, a linker -- weigh it above the majority rather than below it. + +## 370. Correcting 366 -- the family I called noise is the largest lever + +Section 366 says the top first-error family in the C backlog was worth zero. That +is wrong, and the way it is wrong is the rule the same section teaches. + +**What I measured.** For each rejected file I collected every error message and +asked whether they ALL mentioned `default_input` or `valid_input`. None did: +0 of 166. I concluded every such file had other independent defects. + +**What is actually there.** One emitted template, four lines, three errors: + +```c +void test_f_basic_case(void) { + __auto_type input = default_input(); // call to undeclared function + __auto_type result = f(input); // incomplete type 'void' + assert((result != {0})); // expected expression +} +``` + +Errors two and three mention neither helper, so my filter counted them as other +families. **They are the same construct.** Grouping by message text is precisely +what the census discipline forbids, and I wrote that rule into the audit prompt +before breaking it in my own count an hour later. + +**The corrected numbers**, on 581 specs that generate C: + + cc accepts as emitted 174 + ... with scaffold bodies emptied 265 (+91, upper bound) + ... with the fix the sibling backends made 242 (+68, honest) + +68 of a 404-spec gap. The largest single lever in the project, called noise by a +census that looked rigorous. + +**What survives from 366.** The general claim: first-error ranking ranks by +position in the file, and single-family counting is the right instrument. What +fails is the worked example, because the instrument was fed message texts instead +of constructs. A correct census would have collapsed all three messages into one +row and found 68 immediately. + +**The test for whether your grouping is by construct.** Take one emitted +construct, compile it alone, and count how many DISTINCT messages it produces. If +that number is greater than one, message-text grouping will scatter it, and every +file containing it will look independently broken. Four lines produced three +messages here; the ratio is not unusual. + +**And the class was already closed twice.** `grep default_input compiler.rs` hits +the Zig path (W585) and the Verilog path (W660) and nothing in the C emitter +range. W660's own comment names its sibling -- "The Zig backend has resolved them +since W585 ... The VERILOG backend never did" -- and stops there. A defect class +is not shut until every call-site of the risky primitive has been grepped, which +this repository knows and which two waves of the same fix did not do. diff --git a/docs/now/2026-08-30-i-broke-my-own-rule-in-the-same-hour.md b/docs/now/2026-08-30-i-broke-my-own-rule-in-the-same-hour.md new file mode 100644 index 0000000000..7307366e4d --- /dev/null +++ b/docs/now/2026-08-30-i-broke-my-own-rule-in-the-same-hour.md @@ -0,0 +1,10 @@ +# NOW -- I broke my own rule in the same hour (2026-08-30) + +## I broke my own rule in the same hour (Refs #2931) + +- skill 366 says the top first-error family in the C backlog was worth zero; that is wrong and ยง370 corrects it +- one emitted template, four lines, THREE cc errors: `call to undeclared function`, `variable has incomplete type 'void'`, `expected expression` +- errors two and three mention neither helper name, so a filter keyed on the name counted them as other families -- 0 of 166, when all three are the same construct +- grouping by message text is exactly what the census discipline forbids, and I wrote that rule into the audit prompt before breaking it in my own count +- corrected: cc accepts 174 as emitted, **265** with scaffold bodies emptied (+91 upper bound), **242** with the fix the sibling backends made (+68 honest) -- the largest single lever in the project +- the class was closed twice already, Zig in W585 and Verilog in W660, and W660's comment names its sibling and stops there; nobody grepped the C path