Files
BFM-decomp/docs/readability.md
T
Drew T 69d83f7b61 phase-36: 16,759 lying call declarations repaired across 3,439 units, byte-identical (R22 218/218) + the Gen3 readability series
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.
2026-09-10 12:11:22 -06:00

1.2 KiB

Readability of the matched C — the Gen3 series

Generated by tools/readability_progress.py --snapshot; never typed (R75). Companion to docs/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.