Drew: we do want C correctness on all funcs, and log it for the story and the chart. - decl_repair --apply rewrote 3,439 units and repaired 16,759 declarations. check-all: 218 passed, 0 failed of 218. lever_census --check: 26,456 pin/asm sites, 0 UNMARKED — unchanged, as expected: this pass fixed TRUTH, not levers. - only the free set was touched: a declaration is repaired when every call to that function in the unit already passes the arguments, so the code was right and only the promise was wrong. Calls that pass too few remain R19's population, where the argument must be chosen and the bytes decide. - tools/readability_progress.py: the Gen3 series beside docs/levers.md, because levers are only one way the source is untrue. It counts lying call declarations (split by the K&R-empty and (void) forms, and how many sit in a body still holding an argument-register pin) and raw cast dereferences against struct member reads — the struct debt. Each row carries its date and commit so the chart is generated, never typed (R75). docs/readability.md renders it. First row after the repair: 94,001 lying declarations over 1,564 callees (86,701 (), 7,300 (void)), 461 in 314 pinned bodies; 414,148 raw cast dereferences against 173,286 struct member reads. - dictionary rows for decl_repair and readability_progress; kit corpus regenerated; tool_census --check OK.
1.2 KiB
Readability of the matched C — the Gen3 series
Generated by
tools/readability_progress.py --snapshot; never typed (R75). Companion todocs/levers.md, which counts the compiler-forcing levers. This one counts the two things that are wrong with the source even where no lever remains: call declarations that are FALSE, and memory read through raw pointer casts where the original had a struct.
| date | label | commit | lying declarations | of which () |
of which (void) |
in a pinned body | raw cast derefs | struct member reads |
|---|---|---|---|---|---|---|---|---|
| 2026-09-10 | P36 S102 — after the 16,759 free declaration repairs | 51028a78d |
94001 | 86701 | 7300 | 461 | 414148 | 173286 |
How to read it. A lying declaration is a call site whose in-scope declaration names fewer parameters than the callee's own definition. It is not a style problem: on this processor an argument travels in a register, so a dropped argument removes an instruction, and Phase 36 found register pins inserted to fake exactly that instruction. Raw cast derefs is the struct debt — a struct cannot be recovered from the binary, only inferred from consistent base+offset+width evidence, so this figure falls as that work lands.