80 Commits

Author SHA1 Message Date
Drew T da26c05d67 phase-37: T1 ☑ — tools/type_census.py + the struct map: 7,261 struct definitions (525 layouts, 206 duplicate classes / 2,789 names, 39 VARIANT), 503,016 raw pointer-cast dereferences in four forms (coverage OK; + 18,912 address-of, 36,681 typed cast-member), 98,648 lying declarations / 1,609 callees, 18,760 evidence-clustered types explaining 99.2 % of sites, 24 parked P36 classes in parked.tsv, controls 4/4; lever_census controls re-keyed and --strict made literal (6,717 direct GTE statements in bodies); progress.py types block + README sentence + 2 corrections; the readability series read by column name with 16 census columns; docs/struct-map.md; SETUP §P37 S106; dictionary row; kit corpus | 🛑 T2 NEXT (the probe, Max) 2026-09-11 23:54:15 -06:00
Drew T db212f167b phase-36: close rows for both Gen3 series — levers 4,010 (78 milestones); readability: 33 lying declarations left in 25 pinned bodies (was 461 in 314 at S102), 98,648 over 1,609 callees now that argcheck reads K&R definitions 2026-09-11 21:47:22 -06:00
Drew T 676626afb3 phase-36: S105 — f11 landed 4/4 + 4 copies, R22 218/218, census 4,010 / 0 unmarked (exit 0); T7 ☑ ENDED (Drew) | 🛑 T8 NEXT 2026-09-11 20:48:00 -06:00
Drew T 295ef3fe4a phase-36: S105 (cont.) — f10 landed 4/4 plain C (three type changes), R22 218/218, census 4,026 / 0 unmarked (exit 0); METHOD step 24; checkpoint refreshed | 🛑 T7 RUNNING 2026-09-11 19:56:07 -06:00
Drew T 134abd5e04 phase-36: S105 (cont.) — f9 landed 6/6 (3 plain C, 1 do-while, 2 proven + parked), R22 218/218, census 4,032 / 0 unmarked (exit 0); METHOD step 23; checkpoint refreshed | 🛑 T7 RUNNING 2026-09-11 19:17:22 -06:00
Drew T ea05569512 phase-36: S105 (cont.) — comment-boundary strip fixed, 2 free banks, R22 218/218, census 4,044 / 0 unmarked (exit 0); checkpoint refreshed | 🛑 T7 RUNNING 2026-09-11 18:48:07 -06:00
Drew T 1feaff5390 phase-36: S105 FINAL — f8 landed 5/5 plain C, R22 218/218 at 36be9acef, census 4,046 / 0 unmarked (exit 0), nothing in flight; 42/42 drawn classes at 0 this session; cookbook §457, accelerators + decision log P36 S105, kit corpus; checkpoint final | 🛑 T7 RUNNING 2026-09-11 18:25:35 -06:00
Drew T f3e65cc426 phase-36: S105 — f6 landed 6/6 (1 plain C, 2 do-while, 3 minimum-lever), R22 218/218, census 4,058 / 0 unmarked (exit 0); METHOD step 21; checkpoint refreshed | 🛑 T7 RUNNING 2026-09-11 17:54:45 -06:00
Drew T d3ab56bbe0 phase-36: S105 — f7 landed 6/6 (5 plain C + 1 minimum-lever), R22's two more blind spots fixed (+1 header bank), R22 218/218, census 4,065 / 0 unmarked (exit 0); Drew: no new agents; METHOD step 20; checkpoint refreshed | 🛑 T7 RUNNING 2026-09-11 14:13:06 -06:00
Drew T 3db2bf98a8 phase-36: S105 — f4 + f5 landed 12/12 plain C, R45/R46 harvested (regen 0 free), R22 218/218, census 4,077 / 0 unmarked (exit 0); METHOD step 19; checkpoint refreshed | 🛑 T7 RUNNING 2026-09-11 13:28:58 -06:00
Drew T 310cea91fa phase-36: S105 — f3 landed 5/5 (4 plain C + 1 minimum-lever proven), R22 218/218, census 4,111 / 0 unmarked (exit 0); checkpoint refreshed | 🛑 T7 RUNNING 2026-09-11 13:10:57 -06:00
Drew T 3eec512315 phase-36: S105 — f1 landed 4/4 (2 plain C + 2 minimum-lever), R22 218/218, census 4,125 / 0 unmarked (exit 0); checkpoint refreshed | 🛑 T7 RUNNING 2026-09-11 12:38:12 -06:00
Drew T e859bac7af phase-36: S105 — f2 landed 4/4 (3 plain C + 1 minimum-lever), R44 harvested + R22's && blind spot fixed, 3 regen banks, R22 218/218, census 4,132 / 0 unmarked (exit 0) | 🛑 T7 RUNNING 2026-09-11 12:01:17 -06:00
Drew T a3a0044e38 phase-36: S104 FINAL — e35–e38 resumed and banked (e37's four closes + 19 copies), R22 218/218 at 765704ca5, census 4,152 / 0 unmarked (exit 0), nothing in flight; checkpoint final | 🛑 T7 RUNNING 2026-09-11 06:33:50 -06:00
Drew T 046e846007 phase-36: S104 R22 218/218 after e30–e34; census exit 0 | 🛑 T7 RUNNING 2026-09-11 04:54:50 -06:00
Drew T 47166c6d3f phase-36: S104 log + checkpoint refresh (~08:00) — ~175 closes, R27–R43, census 4,272 / 0 unmarked, e30–e34 in flight | 🛑 T7 RUNNING 2026-09-11 04:14:49 -06:00
Drew T 7205767275 phase-36: S104 R22 218/218 after e14–e25; census 4,340 / 0 unmarked (exit 0) | 🛑 T7 RUNNING 2026-09-11 03:31:01 -06:00
Drew T d9a6af0669 phase-36: S104 R22 218/218 after e6 (3 closes + 15 copies + a shared header) and the TU batches; census 4,473 / 0 unmarked (exit 0); R38 pass: 831 classes, 0 candidates (its population is spent) | 🛑 T7 RUNNING 2026-09-11 01:37:21 -06:00
Drew T 34db194a8a phase-36: S104 checkpoint refresh — R22 218/218, census 4,603 / 0 unmarked (exit 0); 32 agent closes; d20/d29 parked; d34–d38 in flight | 🛑 T7 RUNNING 2026-09-10 23:55:47 -06:00
Drew T 39d814fed2 phase-36: S104 — R22 218/218 after d21–d27; census 4,661 / 0 unmarked (exit 0); d29 parked for the structs phase (a void→s32 signature); METHOD step 15 | 🛑 T7 RUNNING 2026-09-10 23:25:28 -06:00
Drew T eadfa5977d phase-36: S104 checkpoint — d1–d19 all at 0, generators R27–R34, census 4,732 / 0 unmarked (exit 0), R22 218/218; d20–d24 in flight; METHOD step 14 | 🛑 T7 RUNNING 2026-09-10 22:51:40 -06:00
Drew T c48582300c phase-36: S104 R22 check-all 218/218 after d11–d19 + copies; census 4,753 sites, 0 unmarked, exit 0; lever_progress snapshot | 🛑 T7 RUNNING 2026-09-10 22:35:45 -06:00
Drew T 830650946c phase-36: S104 R22 check-all 218/218 after the d1–d9 + sweep banks; census 5,097 → 4,963 sites, 0 unmarked; lever_progress snapshot | 🛑 T7 RUNNING 2026-09-10 21:35:39 -06:00
Drew T b27c987ba9 phase-36: S103 ends — c51 func_8012E364 at two marked pins (134 bodies); 46 orphan markers scrubbed (one scrub false positive restored, the defect recorded); census 5,097 sites, 0 unmarked, exit 0; checkpoint final (R22 218/218) 2026-09-10 19:13:58 -06:00
Drew T 94520756e0 phase-36: the R26 regen closes 28 classes (71 bodies); c55 and c53 close five tier classes; census 5,231 sites, 0 unmarked — exit 1 on 45 orphan !FAKE markers, scrubbed next (R22 218/218) 2026-09-10 19:05:22 -06:00
Drew T baac1f851c phase-36: c56 ports the func_8013D9B0 minimum-lever text to ov_MAIN_012's 7-copy class; c54 ports func_8017B238 (8 bodies) (R22 218/218) 2026-09-10 18:48:23 -06:00
Drew T c02fc7cd55 phase-36: minimum-lever banks — func_8013D9B0 (2 marked GTE asm instead of 34 levers) and func_80140958 (2 marked levers), 266 bodies; c52 closes four ov_SC06_010 classes with the R26 alias (R22 218/218) 2026-09-10 18:44:29 -06:00
Drew T 433aa07018 phase-36: c50 closes func_80136824 with zero levers body-only (off the types-phase list, 130 bodies); c49 func_8013F350 at two marked head levers (133 bodies); delever_regen survives stale sites (R22 218/218) 2026-09-10 18:38:42 -06:00
Drew T aada3bdc2b phase-36: the first minimum-lever bank (func_80177B5C: 1 marked launder instead of 23 levers, 133 bodies); c43/c44/c45/c37 closes with their cross-address copies (delever --port-scan); generator R26 alias_repeated_addresses (known-true: c45's close from its start text) (R22 218/218) 2026-09-10 18:32:46 -06:00
Drew T 8bc06a2cb8 phase-36: T7 agent c42 — func_80186A8C and func_80182058 closed through cross-jump readings (10 bodies); related.txt requires evidence before calling a same-name body a variant (R22 218/218) 2026-09-10 18:17:41 -06:00
Drew T 54311fa359 phase-36: T7 agents c38 + c40 — func_80180EDC, func_8018431C, func_80185DD8, func_80184854 closed (30 bodies) (R22 218/218) 2026-09-10 18:11:17 -06:00
Drew T 321b540e7f phase-36: propagate ignores body-local externs (re-propagation: 97 siblings banked of 145 candidates); R19 cast-arity regen 8 classes; c39 ports two variants; c41, c34, c32 closes; related.txt lists the same function lever-free elsewhere; cc1_dumps_tu.sh -dd (R22 218/218) 2026-09-10 18:07:41 -06:00
Drew T 7d5964b279 phase-36: T7 agents c36 + c35 — four tier classes closed (func_8014305C, func_80141874, func_8017DBE4, func_80185994; 39 bodies); R19 reads the arity a call's own cast asserts (known-true: c35's close from its start text) (R22 218/218) 2026-09-10 17:49:55 -06:00
Drew T dd5e44c247 phase-36: T7 agent c33 — func_80169058 and func_80168D94 closed (per-arm call results, a load born last), 12 bodies; c31 proves func_80178970's pin irreducible in plain C (two passes each delete the copy; the milestone question raised) (R22 218/218) 2026-09-10 17:38:58 -06:00
Drew T a2a1fc1865 phase-36: re-draw c30 — func_8017B614 closed with no do-while (one pointer across both arms; struct/array spellings let sched2 restore the order), 125 bodies (R22 218/218) 2026-09-10 17:32:29 -06:00
Drew T 01f066923d phase-36: re-draw c21 — func_801397B0 closed (a do-while reference-weight wrapper, on the a4/c15 precedent), 125 bodies; c22's and c28's readings (func_8012E364 at 4, func_8013F350's head irreducible); --try parallel-safe per call with --keep (R22 218/218) 2026-09-10 17:14:30 -06:00
Drew T e984e5822f phase-36: re-draws c25 (func_80166F58, a narrowing copy) and c26 (func_80133CD4, split temps) closed, 254 bodies; tools/localalloc_sim.py (c26's local-alloc simulator, 0 mismatches over 150 blocks); propagate no longer trusts stale ledger hashes; R25 regen 3 classes; regen reports COMPILE-ERROR (14,xxx -> 13,083 sites, R22 218/218) 2026-09-10 16:58:01 -06:00
Drew T 96820256ce phase-36: re-draws c24 (func_8012956C: a phantom 4th argument + a switch) and c23 (func_80133784: the exit block inside a real loop, overturning b4's de-loop reading) closed, 252 bodies; R25 trim_arguments; argcheck reads K&R definitions (95 callees were invisible); the selftest asserts every dispatched family is registered (R22 218/218) 2026-09-10 16:45:14 -06:00
Drew T 970d88f386 phase-36: T7 agent c15 — func_80135EB0 closed (one if per case defeats jump2's cross-jump, struct-spelled stores keep the dependence; the register swap via a do-while, banked on the a4 precedent and raised with Drew), 128 bodies (R22 218/218) 2026-09-10 16:03:01 -06:00
Drew T a620e1880f phase-36: generator R24 (the addPrim copy read as a whole word, c20's move) + its regen pass (2 classes, the func_80140D68 header on 140 objects); c13's reading of func_80140958 (43 -> 4, not closed) (R22 218/218) 2026-09-10 15:57:16 -06:00
Drew T 5eb46b267f phase-36: T7 agent c20 — func_8013DD68 closed on a re-draw (the bit-field copy read as a whole word: a phantom flow-time mask reference), 128 bodies (16,273 → 16,015 sites, R22 218/218) 2026-09-10 15:49:51 -06:00
Drew T 750797a048 phase-36: T7 agent c18 — func_80176734 closed (one variable per role across blocks, s16 flag in a nested if, u8 copy), 128 bodies (R22 218/218) 2026-09-10 15:39:50 -06:00
Drew T 164825b5d8 phase-36: delever_regen — R22+R23 re-run over the whole residue closes 17 classes / 22 bodies with no agent; --try learns header TUs (24 classes had never been scorable) (17,715 → 17,692 sites, R22 218/218)
- tools/delever_regen.py: read-only pass (both starting texts, only the named families, delever_search --try --body,
  one worker per class) + --bank (re-score on the current tree, apply_body_core, propagate); dictionary + SETUP rows
- pass 1: 1169 classes in 127 s, 14 MATCH; the 25 UNSCORED read before banking: 24 were header-TU classes whose
  includer's ../shared include never resolved in --try (fixed; controlled: unchanged body 0, lever-free 32, mutated 1),
  1 a body-local #define (R22/R23 now refuse preprocessor lines); pass 2 over header TUs: 104 judged, 3 MATCH
- banked: 14/14 + 3/3 (two shared headers IDENTICAL on 141 objects each); R23 12 classes, R22 5
- check-all 218 passed 0 failed; lever_census 17,692 marked 0 UNMARKED
2026-09-10 15:36:01 -06:00
Drew T a060705725 phase-36: T7 agents c14 + c16 — func_801670E4 (all seven levers; its refuted @stuck note replaced in 136 copies) and func_8013D178 (one pointer per if-group), 261 bodies; R23 widened to one open block and now closes func_8013D178 alone; c9's reading of func_8013CF68 (38 -> 10, not closed) (18,776 → 17,715 sites, R22 218/218) 2026-09-10 15:24:01 -06:00
Drew T 6252516263 phase-36: T7 agent c11 — func_80175AB8 closed (derived-pointer reads, one temp for both $a1 values, a cast-wrapped table read), 124 bodies; cc1_dumps_tu.sh dumps .cse2 and .jump2 (R22 218/218) 2026-09-10 15:15:34 -06:00
Drew T e6a8f35052 phase-36: T7 agents c12 + c10 — the func_80148E54/D44 twins (implicit handler argument) and func_80135A4C (cross-jump tails, parameters passed through), 395 bodies; delever_pack writes related.txt (20,206 → 19,276 sites, R22 218/218)
- c12: c3's reading held on both twins — the angle as the handler's first argument + tmp reused as the later operand;
  the stale 'jalr with no args' comment corrected in the 135 files whose body now passes it
- c10: jump2 cross-jump merged two walk tails (exits now fall to the single final return), the s16 SUBREG gate, and
  func_80135480 called at its real arity; its answer was func_80135888 in another file
- delever_pack related.txt: lever-free bodies in the overlay sharing a func_/D_ symbol, ranked (known-true: top hit for
  func_80135A4C is func_80135888); METHOD_S103 +6 emitter entries; SETUP rows
- apply-body IDENTICAL x3, propagate 131/131 x2 + 133/133; check-all 218 passed 0 failed; lever_census 19,276 marked 0 UNMARKED
2026-09-10 15:03:27 -06:00
Drew T 2e61220bde phase-36: T7 wave c — seven agent closes (c4 c6 c1 c7 c3 c5 c8) + func_8017EEC0's parameter, ~1,000 bodies; generator R23; CI's verbatim_check fixed and wired into tools-health (23,988 → 20,206 sites, R22 218/218)
- closes, each --try 0 then apply-body IDENTICAL + propagate N/N 0 refused: func_80133AB0 (u16 width moves), func_80130D48
  (one call per goto-tail site), func_80135168 (reused temps split + H16 member store), func_80134A74 (widths + join
  statement in both arms), func_80148AFC (implicit handler argument + later operand), func_8015D738 (jump threading:
  re-read + a do-while on precedent, the class raised with Drew), func_80135004 (temp split + argument from its global)
- func_8017EEC0: the uninitialised a0v T4 tus10 left is the parameter (8/8, IDENTICAL)
- CI red since cb2fb5e6d: verbatim_check --strict saw the DECOMPILE-NOW row func_8017EEC0 converted; row removed (one
  row), --update keeps order + UTF-8 (proven equal to the hand fix), verbatim_check --strict now in make tools-health
- delever.split_reused_locals = family R23 (selftest + two refusals; known-true: joint split = the agents' measured 12/26)
- check-all 218 passed 0 failed (twice); lever_census 20,206 marked 0 UNMARKED; Drew: at most five concurrent agents
2026-09-10 14:56:17 -06:00
Drew T 205331765f phase-36: T7 agent c2 — func_8013D8FC closed (the walked-pointer merge), 131 bodies; harvested as generator R22 (24,119 → 23,988 sites, R22 218/218)
- agent c2 (Opus): a second pointer q = p + 5 stepped in lockstep with p kept a second biv alive (loop.c strength
  reduction, -dL 'Cannot eliminate biv'); one pointer lets combine_givs fold every field read onto one base
- bank: apply-body IDENTICAL, propagate 130/130, check-all 218 passed 0 failed, lever_census 23,988 marked 0 UNMARKED
- delever.merge_walked_pointers = family R22 (selftest + two refusal controls; known-true: the agent's start text's
  candidate is its closing body, --try score 0); leads the COUNT class after R19 in delever_search; SETUP row
- S103 opening: the method addendum .run/P36/agents/METHOD_S103.md; wave c launched (six agents); Fable out of credits,
  c5/c6 relaunched on Opus
2026-09-10 14:30:30 -06:00
Drew T 8a22254bfc phase-36: wave b close — the census and the series brought to this tree (24,119 sites, fleet 218/218) 2026-09-10 13:54:25 -06:00
Drew T d30ccc9a72 phase-36: T7 agent b8 — func_80135888, the largest class left, closed with all five levers gone (134 bodies; 24,789 → 24,119 sites, R22 218/218)
check-all: 218 passed, 0 failed of 218
  lever_census --check: 24,119 pin/asm sites, 24,119 marked !FAKE, 0 UNMARKED — OK

Three moves, each predicted from a dump before it was compiled:
- while -> a guarded do-while (29 to 22). Cross-jump (jump.c:1969 -> find_cross_jump :2371, from toplev.c:3142) had
  matched the load in front of the jump against the one in front of the bottom test and deleted three instructions; the
  guarded form makes the two tails differ.
- the duplicated pre-loop call block -> goto (22 to 6). This is an allocno_compare rank move (global.c:585-611): the
  priority is floor_log2(refs)*refs/live, reg_n_refs is loop-weighted (flow.c:2067), the in-loop copy of that call is
  worth two references, and deleting the out-of-loop copy takes exactly one off — 8 to 7 crosses a floor_log2 step and
  drops the pointer's priority from 3157.9 to 1891.9. The predicted allocation order matched the dump exactly. The
  rewrite is byte-neutral on its own: reorg steals the target's first insn into the delay slot and retargets.
- the two-arm mask temp inlined (6 to 0): set in two arms it has two deaths, fails local-alloc.c:472, and combine_regs
  bails at :1774, so it went to global allocation and took its copy preference.

Harvested as R21 second_consumer, from agents b2 and b6 together: give a computed value a second consumer before its
copy, either by chaining (v = slot = E) or by hoisting the store above it. cse deletes such a copy only when the
producer sits immediately before it (cse.c:7440-7501, guard :7454-7460), and flow links only the FIRST following use
(flow.c:2076-2091), so a store in between defeats both. R9 can never produce it — the two statements share the
identifier, so its independence guard refuses the swap. Known-true: the joint form scores 0 on b6's pre-bank text, and
the single-site forms do not, which is the third measured case this session of a joint edit no hill-climb can reach.

Also recorded from b8, worth a pre-check later: declaration-order moves are PROVABLY DEAD on a register residual whose
allocnos have distinct priorities, because global.c:604-610 compares priority first and only ties by allocno number —
4,811 compiles of those candidates sat flat because of it.
2026-09-10 13:31:47 -06:00