Commit Graph

42 Commits

Author SHA1 Message Date
Drew T d702f389ca T5.1.c3b: fold 79 clean tier-1 classes (no member respell); R22 green 2026-09-30 11:59:48 -06:00
Drew T b0b9c4c465 T5.1.c2b: lift_types --census: batch md moved (297 groups, 359 defs) 2026-09-30 10:37:58 -06:00
Drew T 446161539c T5.1.c2: lift_types --census: batch ov-file moved (83 groups, 1374 defs; 39 canon defs to struct_types.h) 2026-09-30 10:16:18 -06:00
Drew T 6869f8f26d T5.1.c2: lift_types --census: rename pass, one text per name (17 renames, 68 defs) 2026-09-30 10:08:14 -06:00
Drew T e5ba087390 T5.c2: variants - rename 543 divergent-layout defs to <Name>_<suffix> (scope-aware) 2026-09-30 00:21:07 -06:00
Drew T 22915a6972 src(phase-37): T4 batch t4_D58 — restruct: batch t4_D58 rung D — 145 files (TUs; 145 drawable) · 50 declaration units: 14 canonical / 0 promoted / 36 K&R marked / 0 aliases typed / 0 __builtin_abs → abs / 36 kept · compiles 128 in 131 s wall · final 145/145 identical · written 32 files | R22 check-all: 218 passed, 0 failed of 218 | (census skipped) (restruct_cycle) 2026-09-12 21:50:43 -06:00
Drew T 69bd934deb src(phase-37): T4 batch t4_D32 — restruct: batch t4_D32 rung D — 300 files (TUs; 1701 drawable) · 3273 declaration units: 2962 canonical / 0 promoted / 4 K&R marked / 126 aliases typed / 1 __builtin_abs → abs / 184 kept · compiles 1933 in 215 s wall · final 300/300 identical · written 268 files | R22 check-all: 218 passed, 0 failed of 218 | (census skipped) (restruct_cycle) 2026-09-12 16:30:41 -06:00
Drew T fe4a624206 phase-36: T9 — 30,138 stale @stuck: header notes above now lever-free functions retagged @unstuck(P36): in 2,693 files (comment-only; R22 218/218; census 4,010 unchanged) 2026-09-11 21:28:33 -06:00
Drew T 72153b4af1 phase-36: S104 sweep banks part 2 — 39 of 44 MATCH rows (R27 ports 21, R7 do-while marked 7, R8/R18/R12/R19/R20/R9) + 35 siblings, each IDENTICAL through the whole-object gate; R22 follows 2026-09-10 22:11:30 -06:00
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
Drew T 7b2200edad phase-36: the tail pass g6 + g6b (47 + 63 of 400 small classes; 186/191 siblings propagated), R22 218/218; 30,806 → 30,358 sites; --try (a candidate scored without a tree write), delever_pack.py (the 57 T7 packs + PROMPT.md), --restore refuses an empty snapshot; the checkpoint: T7 as one agent at a time, approved, starts in the fresh session 2026-09-09 23:32:57 -06:00
Drew T 145ab77194 src(phase-36): T5 batch gte1 — gte_consolidate: batch gte1 — 400 files: 400 consolidated, 0 defs-only, 0 unchanged, 0 refused, 0 no-recipe · definitions deleted 8056 / renamed as lever variants 5 (variant trials: 416 freed, 5 kept) · header-bound definitions kept 80 · use renames 930 · direct statements → calls 460 / lever 252 / unmatched 185 · markers 276 · compiles 1146 · final 400/400 identical | R22 check-all: 218 passed, 0 failed of 218 | census: THE PHASE'S NUMBER (pins + asm statements, GTE excluded): 33,901 sites in 12,601 bodies (1,756 distinct) · marked !FAKE 33,665 · UNMARKED 236 (delever_cycle) 2026-09-09 05:55:45 -06:00
Drew T cb2fb5e6db src(phase-36): T4 batch tus10 — delever: batch tus10 — 83 files (TUs; 83 drawable) · 362 bodies: 99 lever-free, 258 residue, 2 refused · sites removed 411 / needed 483 / refused 37 / deferred 3 · replays 4 (0 disagreed) · compiles 1171 in 25 s wall · final 83/83 identical · written 83 files | R22 check-all: 218 passed, 0 failed of 218 | census: THE PHASE'S NUMBER (pins + asm statements, GTE excluded): 34,100 sites in 12,570 bodies (1,823 distinct) · marked !FAKE 32,973 · UNMARKED 1,127 (delever_cycle) 2026-09-09 04:18:13 -06:00
Drew T 0109f5bc92 feat(decomp): parallel gate — 1 fns across 1 binaries (2 workers)
md_SC07_003    func_801A09C8
2026-09-02 19:05:04 -06:00
Drew T f2f3103691 feat(decomp): parallel gate — 7 fns across 7 binaries (10 workers)
ov_SC05_001    func_8017FE0C
  md_SC07_003    func_801A1120
  ov_SC03_013    func_8017FAA8
  ov_SC03_011    func_80180B68
  ov_SC02_000    func_80187B40
  md_SC07_004    func_801A94A0
  ov_SC07_000    func_8017ECB4
2026-09-02 18:34:03 -06:00
Drew T f778dd3f6a feat(decomp): parallel gate — 3 fns across 3 binaries (10 workers)
md_SC07_003    func_801A293C
  ov_SC01_001    func_8017FEE0
  ov_SC03_105    func_80187A30
2026-09-02 05:50:05 -06:00
Drew T 9df00e71f8 feat(decomp): parallel gate — 11 fns across 9 binaries (10 workers)
md_SC07_003    func_801A2EC8
  ov_SC02_003    func_80185840
  ov_SC01_077    func_8017DAEC
  ov_SC01_080    func_8017E724 func_8018230C
  ov_SC03_029    func_80180B84
  ov_SC03_030    func_80180054
  ov_SC03_105    func_80183DA0
  ov_SC06_030    func_8017DF70
  ov_SC07_002    func_8017D920 func_8017E7E8
2026-09-01 23:23:02 -06:00
Drew T 027f4f2d2b feat(decomp): parallel gate — 31 fns across 23 binaries (10 workers)
md_MAIN_044    func_800CD2EC
  ov_SC02_026    func_8017D508
  md_SC07_003    func_801A079C
  ov_SC01_084    func_80180000
  ov_SC02_005    func_8017F898
  ov_SC01_080    func_80181410 func_80181D98
  ov_SC03_007    func_801850B4
  ov_SC03_117    func_8017FED8
  ov_SC03_105    func_8017E180 func_8018423C
  ov_SC04_012    func_8017D4CC
  ov_SC05_005    func_8017EAEC
  ov_SC05_008    func_8017E6A4 func_8017F288
  ov_SC04_011    func_80186020
  ov_SC05_011    func_8017D610
  ov_SC05_018    func_801810B0
  ov_SC06_006    func_8017EEA4
  ov_SC06_008    func_8017E37C
  ov_SC07_001    func_8018088C
  ov_SC07_000    func_8017E658 func_8018006C func_801805C0
  ov_SC07_006    func_801826E0
  ov_SC06_032    func_8017DABC func_80183940 func_8018FB5C
  ov_SC07_007    func_801827E0
  ov_SC07_010    func_8017E5B8 func_8017F860
2026-09-01 23:11:26 -06:00
Drew T 69d6c76a3b feat(decomp): parallel gate — 23 fns across 21 binaries (10 workers)
md_MAIN_034    func_800CAE88
  md_SC07_004    func_801A2F34
  ov_SC02_016    func_80181AE8
  ov_SC02_011    func_80187E08
  ov_SC02_017    func_80182FD0
  ov_SC01_000    func_8017E210
  ov_SC02_003    func_80183FC8 func_80186AE4
  md_SC07_003    func_801A4268
  ov_SC02_028    func_80180C04
  ov_SC02_035    func_8017D3F4
  ov_SC03_112    func_8017E160 func_8017EE48
  ov_SC03_092    func_8017F8D8
  ov_SC03_001    func_801859AC
  ov_SC03_010    func_8017EB58
  ov_SC04_011    func_80190264
  ov_SC04_020    func_8017EE50
  ov_SC05_010    func_8017EFC8
  ov_SC06_011    func_8017FAB4
  ov_SC06_024    func_80180594
  ov_SC06_029    func_8017DDE0
  ov_SC06_033    func_8017E224
2026-09-01 23:01:37 -06:00
Drew T d989ed08ae feat(decomp): parallel gate — 14 fns across 11 binaries (6 workers)
md_SC07_003    func_801A38E4
  md_MAIN_027    func_800CB4A4
  ov_SC02_037    func_8013DD68
  ov_SC02_003    func_8018046C
  ov_SC01_084    func_8017EA98 func_80181F80 func_80184138
  ov_SC03_107    func_8013DD68
  ov_SC05_003    func_8017E380
  ov_SC05_008    func_8017DF68 func_8017EBB8
  ov_SC05_010    func_8017FAF4
  ov_SC06_032    func_80190D70
  ov_SC06_025    func_8017EA74
2026-08-31 13:43:44 -06:00
Drew T 8fcd05965e feat(decomp): O1 wave gate — 16 fns, clean-R22 verified 213/213
parallel_gate merged 17 drafts across 16 binaries then aborted on "check-all: 212 passed, 1 failed".
The red was REAL: ov_SC06_022 still failed from a fully clean rebuild. Reverted that one file
(func_80181664, back to the drafting queue); the remaining 16 verify green with
make clean && make extract-all && make check-all.

CORRECTION to what I claimed while diagnosing the earlier x1 abort: parallel_gate's R22 IS a proper
clean rebuild — it calls sh(["make","clean"]) at tools/parallel_gate.py:257 before extract-all and
check-all. I had grepped for the string "make clean", which cannot match the arg-list form, and
wrongly concluded the tool was reading incrementally. The x1 red was real too; my revert of its two
bad drafts is what made the fleet green. The genuinely stale read was MY OWN bare `make check-all`
run after that revert, which still reported the old 211/213 from leftover objects and nearly led me
to discard 21 good banks. R40 (exonerate the instrument) applies to the instrument's SOURCE, not
just its output: read the code before blaming it.
2026-08-30 14:49:09 -06:00
Drew T 56542b18d5 feat(decomp): integration-resolver pass — 54 banked of 90 staged (zero model tokens)
Drafts the ledgers already recorded as byte-correct (closeness 0 / reloc shape MATCH), re-judged against today's tree by rtu_match + reloc_identity, staged, and gated on the whole-binary SHA. Ledger: .run/resolver/verdicts.jsonl
2026-08-26 15:02:09 -06:00
Drew T 44ad7040d0 feat(decomp): ox wave fc overlays — 9 banked
Committed before the main batch: gate_main reverts on failure and would take these with it.
2026-08-26 00:34:15 -06:00
Drew T 6645e625d9 feat(decomp): serial idiom lane — func_8017FCAC (138 ins, seeded-crack, group worth 138) 2026-08-25 21:49:22 -06:00
Drew T eebe792a0b feat(decomp): ox wave eh overlays — 129 banked
Committed before the main batch: gate_main reverts on failure and would take these with it.
2026-08-25 17:10:42 -06:00
Drew T 317d31d18a feat(decomp): ox wave dw overlays — 33 banked
Committed before the main batch: gate_main reverts on failure and would take these with it.
2026-08-25 15:04:19 -06:00
Drew T 2fea549c53 feat(decomp): ox wave dr overlays — 28 banked
Committed before the main batch: gate_main reverts on failure and would take these with it.
2026-08-25 13:55:25 -06:00
Drew T ca5fd2e225 feat(decomp): ox wave di overlays — 81 banked
Committed before the main batch: gate_main reverts on failure and would take these with it.
2026-08-25 12:13:33 -06:00
Drew T 7e1f554a05 feat(decomp): ox wave df overlays — 124 banked
Committed before the main batch: gate_main reverts on failure and would take these with it.
2026-08-25 11:27:56 -06:00
Drew T 5357c8b448 feat(decomp): ox wave de overlays — 192 banked
Committed before the main batch: gate_main reverts on failure and would take these with it.
2026-08-25 11:17:00 -06:00
Drew T 27a9c118ef feat(decomp): ox wave dd overlays — 217 banked
Committed before the main batch: gate_main reverts on failure and would take these with it.
2026-08-25 11:00:28 -06:00
Drew T 3eb8056f22 feat(decomp): ox wave ck overlays — 69 banked
Committed before the main batch: gate_main reverts on failure and would take these with it.
2026-08-25 03:57:39 -06:00
Drew T 8b2a1e5f1f feat(decomp): ox wave ca overlays — 42 banked
Committed before the main batch: gate_main reverts on failure and would take these with it.
2026-08-24 21:40:22 -06:00
Drew T 9841c16e66 feat(decomp): ox wave ax overlays — 5 banked
Committed before the main batch: gate_main reverts on failure and would take these with it.
2026-08-24 13:22:18 -06:00
Drew T 1103cdeaed feat(decomp): ox wave bm overlays — 103 banked
Committed before the main batch: gate_main reverts on failure and would take these with it.
2026-08-24 13:12:23 -06:00
Drew T 7c674dc63d feat(decomp): ox wave av overlays — 428 banked
Committed before the main batch: gate_main reverts on failure and would take these with it.
2026-08-24 05:09:47 -06:00
Drew T 4f95a4cc4c feat(decomp): worker gate — +1 fns x0 propagated (fleet 96.1%) 2026-08-23 00:31:37 -06:00
Drew T 57d0e4fa37 feat(decomp): worker gate — +24 fns x0 propagated (fleet 96.0%) 2026-08-18 04:01:20 -06:00
Drew T 6f975634c6 feat(decomp): worker gate — +1 fns x0 propagated (fleet 95.2%) 2026-08-14 02:02:57 -06:00
Drew T fd80bd7007 feat(phase-30 S47-0a.1): the symbol-KIND fix banks 205 members; the residue crosses over to DIFF
Stage 0a's first defect, and the largest single zero-token bank of the session.

family_remap's kind test asked ONE question — is this address a function in the SIBLING'S OWN sig?
— and defaulted to `D_` on "no". But a body calls outside its image constantly: an overlay calls
resident helpers, an md_* module calls the overlay-range engine. Those addresses are absent from
the sibling's sig, so the test fell through and emitted a DATA NAME FOR A FUNCTION —
`D_800183E0`, `D_800D1EBC`, `D_80171A1C`. None exist anywhere in src/ or config/symbols.us.txt,
while `func_80171A1C` alone has 1,061 references. Measured: 611 member-rows across 45 symbols,
the largest named residue class. "Not in MY sig" means "not mine", not "is data".

Fix — three oracles, strongest first, never a blanket fallback:
 1. the sibling's own sig (authoritative for its image; this is what preserves the Phase-29 T82
    case where a slot is a function in the exemplar and DATA in the member — unioning every sig
    would have re-broken the 251 members T82 fixed),
 2. the always-linked images via extern_fn_addrs() — resident + main, 2,146 addresses whose ranges
    cannot collide with an overlay's,
 3. the exemplar reached it by `jal` — a call target is a function BY DEFINITION, which covers an
    external address neither sig claims (0x80171A1C from an md_* module, 112 rows).
Only a non-call reloc no oracle claims still falls to `D_`.

Result: BANKED 205 member-matches, failures 670 -> 575, derived net = report = 205.
R22 clean-fleet 213 passed / 0 failed of 213.
Fleet 94.4% instr / 88.3% distinct / 96.27 -> 96.33% fn-count; stubs 13,563 -> 13,345.

THE RESIDUE HAS CROSSED OVER: DIFF is now the LARGEST class at 143 of 575 — real byte divergence
outranks plumbing for the first time this session (undefined-ref 611 -> ~8, PLUMBING-other
231 -> 81). The ~5:1 plumbing:DIFF ratio that justified "tooling beats volume" has inverted in this
queue, exactly as the frontier analysis predicted: the declaration-axis vein was one-time.
The new head class is `conflicting types for func_80175414` (27) — the same addresses this fix
started naming correctly, now surfacing the NEXT layer (the symbol resolves; its declared signature
disagrees). That is the conform axis, not the remap axis.

Note for anyone auditing this class: rtu_match MASKS HI16/LO16, so a wrong %hi/%lo symbol still
reports MATCH (the T82 comment records `MATCH (10 ins)` on a member the fleet gate refused). This
defect is invisible to the per-function tool by construction — only the whole-binary gate sees it.
2026-08-11 14:02:38 -06:00
Drew T 4cadac4e11 feat(phase-30 S45 II.1c): module batch dedup-banked + verified — 408 banks, R22 183/183, audit-disc 75->34 (parked-only)
- dedup measure (R37 probe): 69/1,113 module fns h_exact-match matched corpus (~6%, LOW as
  planned — modules are novel frontier); dedup_extend inapplicable (same-vram group model) ->
  family_sweep --hseq --band all over the 57 matched-exemplar families: 408 member-matches
  banked (182 into modules, 226 into the big 3 — families Part I's --only scoping missed),
  169 failed + 77 STRUCT = genuine per-member frontier
- R22 clean-fleet 183/183 BYTE-IDENTICAL; audit-disc UNCLAIMED 75->34 residue 0 (34 = 31
  parked-for-L3 + SC03/53,54,56 — 3 rows Discovery-3 never tiered, now parked with evidence)
- three instrument fixes, each negative-control-proven:
  - family_sweep --hseq stub map derives ov_*+md_*+resident (was sig.ov_* glob -> module
    members silently 'not-stub', R32 class) [committed earlier as commit:1506]
  - sig-modules seeds from the built ELF's func_* symbols (bootstrap GLUES adjacent fns
    around jtbl dispatch -> 24 false TRUNCATED; perturbed-sig control still bites)
  - corpus.audit counts CODE lines only (module .s carries its header jtbl as .word lines);
    progress.py buckets INCLUDE_RODATA symbols as blobs (unbucketed R32 hole)
- NEW HONEST BASELINE (183 binaries): 94.0% instr / 95.96% fn-count / 87.6% distinct;
  tools-health OK, audit-digest OK
2026-08-06 13:14:03 -06:00
Drew T b15dae1077 feat(phase-30 S45 II.1b): SC07 module pair onboarded byte-identical at 0x801A00D8
- md_SC07_003 (345,132 B, text-lo 0xFC, 100 fns) + md_SC07_004 (365,152 B, text-lo 0x158,
  315 fns) — both BYTE-IDENTICAL on first build at the header-derived own slot
- independent first-prologue scan reproduced the plan's documented TLOs exactly
2026-08-06 12:37:24 -06:00