From 3db2bf98a8f524353891d2e87208a590fa63eef5 Mon Sep 17 00:00:00 2001 From: Drew T <50529377+Druthulu@users.noreply.github.com> Date: Fri, 11 Sep 2026 13:28:58 -0600 Subject: [PATCH] =?UTF-8?q?phase-36:=20S105=20=E2=80=94=20f4=20+=20f5=20la?= =?UTF-8?q?nded=2012/12=20plain=20C,=20R45/R46=20harvested=20(regen=200=20?= =?UTF-8?q?free),=20R22=20218/218,=20census=204,077=20/=200=20unmarked=20(?= =?UTF-8?q?exit=200);=20METHOD=20step=2019;=20checkpoint=20refreshed=20|?= =?UTF-8?q?=20=F0=9F=9B=91=20T7=20RUNNING?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .run/P36/agents/METHOD_S103.md | 30 +++++++++ .run/P36/census/lever_census.json | 102 +++++++++++++++--------------- .run/P36/census/lever_census.txt | 20 +++--- docs/lever-progress.tsv | 1 + docs/levers.md | 5 +- phase-ends/CURRENT_PHASE.md | 39 +++++++++--- 6 files changed, 127 insertions(+), 70 deletions(-) diff --git a/.run/P36/agents/METHOD_S103.md b/.run/P36/agents/METHOD_S103.md index 875f89fb2..bde6607bf 100644 --- a/.run/P36/agents/METHOD_S103.md +++ b/.run/P36/agents/METHOD_S103.md @@ -241,3 +241,33 @@ (every 4-subset of five levers scored 2, every 3-subset ≥ 4, ~470 bodies) → bank minimum-lever with the markers carrying the pass. Structs lead: 4-byte `(x, y)` locals would make those constants SUBREG stores (no boost). - `tools/localalloc_sim.py` raises IndexError when the uid is not inside the block — feed it an insn uid from the block. +19. **S105 f4 (`ov_SC04_011_jr_8017D494`, 5 of 5 plain C) and f5 (`ov_SC02_005_jr_8018EA04`, 7 of 7 plain C):** + - (f4) **`lh` + `move vX,vY` in the target = combine's narrow-load + sign-extend PARALLEL split** (`combine.c:1893-1918`, "we + need both registers … split into a load followed by a register-register copy"), reached only when the `s16` local is loaded + DIRECTLY from memory and set ONCE (a multi-set local is refused, `combine.c:1905-1911`, `reg_nonzero_bits` under LOAD_EXTEND_OP; + a `u = t` copy hits cse's paradoxical-SUBREG fold `cse.c:4836-4870`). One single-set `s16` per axis. Three of five packs; and + the tree's `frame_pad[N]` / "§333 aggregate" fillers were the dead shift temps' slots (8 bytes per site, `combine.c:2306` + + `reload1.c:2331`) — DELETE the pad whenever this rule applies. A `$0` pin faking the copy (`v1 = v0 + zr`) is the same shape. + - (f4) a `u16` counter TIED in `qty_compare_1` with a symbol (two tied pseudos HI+SI, 7 refs) wins by qty number where the + target's symbol takes `v0` → re-declare the counter `s32` (one pseudo, 5 refs); `localalloc_sim.py` shows the tie. + - (f4) a `$aN` pin on a global loaded right before an UNPROTOTYPED call = a missing call argument: read the callee's definition + (`grep -n 'fn(' src -r`) and pass it through a body-local cast (R19); the tail `j; li v0,1` vs `move v0,zero` residual follows + from it (reorg fills the slot from the fall-through's `lw a0`, `reorg.c:3320-3420`). A barrier between a store fed by an if/else + and its reload → one store per arm (the reload lands in a new cse block; cross-jump re-merges the two `sh` in jump2). + - (f4) a `$4–$7` "pre-copy" pin on a parameter used early and copied late → `s16` copies of the parameters at the top and the + early result computed on the copy (cse's paradoxical-SUBREG fold routes `-y` to the parameter pseudo, which then keeps `a1`; + the `s16` result is a SUBREG destination `birthing_insn_p` rejects, so the neg lands in the `bnez` slot). + - (f5) **derived-pointer store (generator R45):** `s0[K] = 0` with `s0 = &SYM` known to cse → `lui $at; sw $zero,K($at)` — cse + pass 1 FOLDS `(plus s0 K)` to the constant first (`find_best_addr`, `cse.c:2622-2740`, `:2653`); the pointer the function + already passes to the call, `p = &s0[K]`, born BEFORE the store and stored through: zero instructions added; the `$s0/$s1` swaps + beside the count hunks are the base's ref count (`alloc_table` 5 refs / 1785 → 7 / 2413, `global.c:594-610`) and vanish with it. + - (f5) **set-once chain (generator R46):** `v &= 0x1F; v -= K; DST = v;` sets ONE pseudo several times → no `birthing_insn_p` + boost → the chain is emitted at the block TOP ahead of the boosted `la`/`li`; `DST = (v & 0x1F) - K;` gives every temp one set + and the LUID tie-break (`sched.c:2428`) puts it after the independent setups. The exact INVERSE of step 18's multi-set trick: + the `.sched` priority column (`7f000001` vs `1`) says which direction a body needs. + - (f5) a `$2` pin on a result local assigned a ternary/if-else of constants → two `return ;` statements + (`expand_value_return` `stmt.c:2505-2528` writes the hard `$v0`; the taken arm's constant is the delay slot — try both orders). + - (f5) `neighbours.txt` empty ≠ no neighbour: read the TU around the function — a lever-free sibling of the same byte shape + (func_8018FAE0, func_8018FC38 which even spells the record as a struct) closed packs 4–7 on the first `--try` each. + - The strip must not leave a READ of the pinned variable (`-a1v` after `register a1v __asm__("$5")` is gone): the free body's + score is garbage until the argument is restored (f4 pack 5's "best 13" was measured on an uninitialised local). diff --git a/.run/P36/census/lever_census.json b/.run/P36/census/lever_census.json index 5d66fde90..ccbd1b126 100644 --- a/.run/P36/census/lever_census.json +++ b/.run/P36/census/lever_census.json @@ -38,9 +38,9 @@ ".section": 7, "RTP_SND": 22, "addiu": 22, - "addu": 23, + "addu": 22, "and": 2, - "la": 139, + "la": 136, "lh": 3, "li": 1, "lui": 3, @@ -53,16 +53,16 @@ }, "kinds": { "asm-body/direct": 13, - "barrier/direct": 257, + "barrier/direct": 248, "gte-lever/direct": 357, "gte-lever/via-macro": 94, "gte-unsigned/direct": 270, "gte/direct": 197, "gte/via-macro": 6158, - "instruction/direct": 206, + "instruction/direct": 202, "instruction/via-macro": 22, "keepalive/direct": 333, - "launder/direct": 584, + "launder/direct": 578, "launder/via-macro": 42, "verbatim-body/direct": 2682 } @@ -99,9 +99,9 @@ "src/ov_SC04_002/ov_SC04_002_jr_8017BEBC.c:10069", "src/ov_SC04_005/ov_SC04_005_jr_8017BEBC.c:9325", "src/ov_SC04_007/ov_SC04_007_jr_8017BEBC.c:6630", - "src/ov_SC04_011/ov_SC04_011_jr_8017D494.c:7486", - "src/ov_SC04_011/ov_SC04_011_jr_8017D494.c:10290", - "src/ov_SC04_011/ov_SC04_011_jr_8017D494.c:13431", + "src/ov_SC04_011/ov_SC04_011_jr_8017D494.c:7470", + "src/ov_SC04_011/ov_SC04_011_jr_8017D494.c:10273", + "src/ov_SC04_011/ov_SC04_011_jr_8017D494.c:13414", "src/ov_SC05_001/ov_SC05_001_jr_8017BEBC.c:5814", "src/ov_SC05_003/ov_SC05_003_jr_8017BEBC.c:4815", "src/ov_SC05_005/ov_SC05_005_jr_8017D898.c:4026", @@ -115,37 +115,37 @@ }, "classes": { "A": { - "bodies": 1360, - "distinct_bodies": 529, + "bodies": 1349, + "distinct_bodies": 518, "file_scope": 0, - "in_bodies": 2203, + "in_bodies": 2188, "kinds": { - "pin": 2203 + "pin": 2188 }, - "marked": 2203, - "sites": 2203, - "tus": 1077, + "marked": 2188, + "sites": 2188, + "tus": 1076, "unmarked": 0 }, "B": { - "bodies": 4617, - "distinct_bodies": 683, + "bodies": 4609, + "distinct_bodies": 675, "file_scope": 13, - "in_bodies": 11202, + "in_bodies": 11183, "kinds": { "asm-body": 13, - "barrier": 257, + "barrier": 248, "gte": 6355, "gte-lever": 451, "gte-unsigned": 270, - "instruction": 228, + "instruction": 224, "keepalive": 333, - "launder": 626, + "launder": 620, "verbatim-body": 2682 }, - "marked": 2392, - "sites": 11215, - "tus": 1426, + "marked": 2373, + "sites": 11196, + "tus": 1425, "unmarked": 8823 }, "C": { @@ -250,9 +250,9 @@ "coverage": { "asm": { "comment_dead": 6781, - "live": 15062, + "live": 15028, "macro_block": 194, - "raw": 22037 + "raw": 22003 }, "attribute": { "comment_dead": 0, @@ -268,9 +268,9 @@ }, "register": { "comment_dead": 8574, - "live": 2253, + "live": 2238, "macro_block": 18, - "raw": 10845 + "raw": 10830 }, "volatile": { "comment_dead": 2607, @@ -280,7 +280,7 @@ } }, "coverage_ok": true, - "elapsed_s": 22.3, + "elapsed_s": 22.5, "generated": "2026-09-11", "gte_levers": { "direct": 357, @@ -291,15 +291,15 @@ "via_macro": 94, "what": "GTE ops whose clobbers exceed the canonical macro's (a scheduling steer): class-B levers INSIDE the headline number since T5 (2026-09-09), marked, 0 at the close" }, - "head": "cadb6cacc", + "head": "4a503fce1", "headers": 3181, "levers_AB": { - "asm": 1908, - "bodies": 2021, - "distinct_bodies": 715, - "marked": 4111, - "pins": 2203, - "sites": 4111, + "asm": 1889, + "bodies": 2009, + "distinct_bodies": 703, + "marked": 4077, + "pins": 2188, + "sites": 4077, "unmarked": 0, "what": "register pins + asm statements excluding GTE ops: the classes the phase drives to 0" }, @@ -432,10 +432,10 @@ "what": "asm-bearing #define blocks outside the GTE header: 0 at the close (T5 deletes the canonical duplicates, T7 the variants)" }, "pins": { - "bare_name": 9, - "init": 204, + "bare_name": 8, + "init": 203, "registers": { - "$0": 55, + "$0": 54, "$10": 10, "$11": 5, "$12": 9, @@ -446,47 +446,47 @@ "$17": 29, "$18": 26, "$19": 17, - "$2": 763, + "$2": 761, "$20": 7, "$21": 5, "$22": 3, "$23": 6, "$25": 1, - "$3": 162, - "$4": 497, - "$5": 379, + "$3": 159, + "$4": 491, + "$5": 377, "$6": 60, "$7": 26, "$8": 23, "$9": 21, "7": 1, - "a0": 4, + "a0": 3, "a1": 2, "v0": 2 }, - "sites": 2203, + "sites": 2188, "sp": 0, "spelling": { - "__asm__": 2180, + "__asm__": 2165, "asm": 23 }, "volatile_qualified": 0, - "zero": 55 + "zero": 54 }, - "src_stamp": "2d70f3c71cf4dfdf", + "src_stamp": "b40650c8497ee9fa", "tus": 4121, "unclassified": 0, "union_AD": { - "bodies": 5786, + "bodies": 5774, "by_kind": { "main": 124, "md": 105, - "ov": 5391, + "ov": 5379, "resident": 6, "shared": 160 }, "copies_in_multi": 4849, - "distinct_bodies": 1047, + "distinct_bodies": 1035, "multi_copy_classes": 110 }, "verbatim_excluded": { diff --git a/.run/P36/census/lever_census.txt b/.run/P36/census/lever_census.txt index e53323249..da78d81fa 100644 --- a/.run/P36/census/lever_census.txt +++ b/.run/P36/census/lever_census.txt @@ -1,27 +1,27 @@ lever_census: 218 binaries · 4,121 TUs + 3,181 headers · coverage OK · unclassified 0 · verbatim excluded 13 fn / 14 sites (manifest 13) - coverage asm raw 22037 = live 15062 + macro-block 194 + comment/dead 6781 - coverage register raw 10845 = live 2253 + macro-block 18 + comment/dead 8574 + coverage asm raw 22003 = live 15028 + macro-block 194 + comment/dead 6781 + coverage register raw 10830 = live 2238 + macro-block 18 + comment/dead 8574 coverage volatile raw 4372 = live 1683 + macro-block 82 + comment/dead 2607 coverage builtin raw 599 = live 445 + macro-block 0 + comment/dead 154 coverage attribute raw 76 = live 76 + macro-block 0 + comment/dead 0 class sites in-bodies file-scope bodies distinct TUs marked unmarked kinds - A pins 2203 2203 0 1360 529 1077 2203 0 {'pin': 2203} - B asm 11215 11202 13 4617 683 1426 2392 8823 {'gte': 6355, 'gte-lever': 451, 'gte-unsigned': 270, 'barrier': 257, 'launder': 626, 'instruction': 228, 'asm-body': 13, 'keepalive': 333, 'verbatim-body': 2682} + A pins 2188 2188 0 1349 518 1076 2188 0 {'pin': 2188} + B asm 11196 11183 13 4609 675 1425 2373 8823 {'gte': 6355, 'gte-lever': 451, 'gte-unsigned': 270, 'barrier': 248, 'launder': 620, 'instruction': 224, 'asm-body': 13, 'keepalive': 333, 'verbatim-body': 2682} C volatile 1589 1437 152 495 94 609 14 1575 {'decl-body': 58, 'decl-file': 152, 'cast': 1377, 'param': 2} D register 50 50 0 47 47 6 0 50 {'register': 50} E asm-label 7800 1368 6432 1099 160 2090 0 7800 {'asm-label': 7800} F builtin 445 445 0 428 27 302 0 445 {'builtin': 445} G attribute 76 1 75 1 1 40 0 76 {'attribute': 76} - UNION A–D: 5,786 bodies · 1,047 distinct (addresses normalized) · 110 multi-copy classes holding 4,849 bodies · by kind {'ov': 5391, 'md': 105, 'main': 124, 'shared': 160, 'resident': 6} - THE PHASE'S NUMBER (pins + asm statements, GTE excluded): 4,111 sites in 2,021 bodies (715 distinct) · marked !FAKE 4,111 · UNMARKED 0 + UNION A–D: 5,774 bodies · 1,035 distinct (addresses normalized) · 110 multi-copy classes holding 4,849 bodies · by kind {'ov': 5379, 'main': 124, 'shared': 160, 'md': 105, 'resident': 6} + THE PHASE'S NUMBER (pins + asm statements, GTE excluded): 4,077 sites in 2,009 bodies (703 distinct) · marked !FAKE 4,077 · UNMARKED 0 orphan !FAKE markers (no pin/asm site on the line nor below): 0 marked ordinary-C fakes kept by Drew's S104 ruling (a) (`do { } while (0)`, dead initialisers; NOT levers): 50 GTE levers (clobbers beyond the canonical macro's): 451 sites (94 via a variant macro, 357 direct) · marked 451 · UNMARKED 0 · unsigned GTE statements 270 per-TU asm macro definitions outside the GTE header: 314 {'gte': 150, 'launder': 154, 'instruction': 9, 'barrier': 1} (GTE variants 64) - pins: 2,203 · $0 55 · $sp 0 · with initializer 204 · volatile-qualified 0 · bare-name 9 · spellings {'__asm__': 2180, 'asm': 23} + pins: 2,188 · $0 54 · $sp 0 · with initializer 203 · volatile-qualified 0 · bare-name 8 · spellings {'__asm__': 2165, 'asm': 23} whole-body asm routines in C shells, manifest PERMANENT (hand asm, NOT levers): 22 routines · 2,682 sites (2,660 private copies + 22 shared headers); asm-bodies NOT permanent (levers): 13 site(s) ['func_8001E378:DECOMPILE-NOW', 'func_80020F34:DECOMPILE-NOW', 'func_800249F0:DECOMPILE-NOW', 'func_80025CBC:DECOMPILE-NOW', 'func_80026514:UNCERTAIN', 'func_800268D0:UNCERTAIN', 'func_80027058:DECOMPILE-NOW', 'func_80027200:DECOMPILE-NOW', 'func_800CBA44:DECOMPILE-NOW', 'func_8017D810:DECOMPILE-NOW', 'func_8017E26C:UNCERTAIN', 'func_80184440:DECOMPILE-NOW', 'func_801A3BCC:DECOMPILE-NOW'] - asm kinds: {'asm-body/direct': 13, 'barrier/direct': 257, 'gte/direct': 197, 'gte/via-macro': 6158, 'gte-lever/direct': 357, 'gte-lever/via-macro': 94, 'gte-unsigned/direct': 270, 'instruction/direct': 206, 'instruction/via-macro': 22, 'keepalive/direct': 333, 'launder/direct': 584, 'launder/via-macro': 42, 'verbatim-body/direct': 2682} - instruction mnemonics: {'la': 139, 'addu': 23, 'addiu': 22, 'RTP_SND': 22, '.section': 7, 'lui': 3, 'lh': 3, 'and': 2, 'mult': 1, 'mfhi': 1, 'sll': 1, 'li': 1, 'lw': 1, 'nop': 1, 'srl': 1} + asm kinds: {'asm-body/direct': 13, 'barrier/direct': 248, 'gte/direct': 197, 'gte/via-macro': 6158, 'gte-lever/direct': 357, 'gte-lever/via-macro': 94, 'gte-unsigned/direct': 270, 'instruction/direct': 202, 'instruction/via-macro': 22, 'keepalive/direct': 333, 'launder/direct': 578, 'launder/via-macro': 42, 'verbatim-body/direct': 2682} + instruction mnemonics: {'la': 136, 'addiu': 22, 'addu': 22, 'RTP_SND': 22, '.section': 7, 'lui': 3, 'lh': 3, 'and': 2, 'mult': 1, 'mfhi': 1, 'sll': 1, 'li': 1, 'lw': 1, 'nop': 1, 'srl': 1} gte mnemonics: {'gte_ldv0': 758, 'gte_stlvnl': 593, 'gte_stsxy': 448, 'gte_rtps': 439, 'gte_stflg': 415, 'gte_rtpt': 352, 'gte_SetRotMatrix': 253, 'gte_stsxy3': 236, 'gte_SetTransMatrix': 231, 'gte_rtv0tr': 228, 'gte_ldv3c': 184, 'gte_ldv3': 177, 'gte_stsv': 161, 'lwc2': 158, 'gte_stsz4': 149, 'gte_stsz3': 147, 'gte_stszotz': 134, 'gte_dpcl': 134, 'gte_stclmv': 114, 'gte_stsxy3_f3': 111, 'gte_nclip': 108, 'gte_stopz': 108, 'gte_stsxy3c': 108, 'gte_rtir': 81, 'gte_stsxy3_ft3': 79, 'gte_ldclmv': 78, 'gte_avsz4': 56, 'gte_stotz': 52, 'gte_ldrgb': 30, 'gte_nccs': 25} asm-bearing macro definitions: 314 (20 names, 3 with >1 text) kinds {'gte': 150, 'launder': 154, 'instruction': 9, 'barrier': 1} controls (R39): @@ -29,4 +29,4 @@ lever_census: 218 binaries · 4,121 TUs + 3,181 headers · coverage OK · unclas src/shared/ov/func_80178004.h pins got 8 expected 26 N-A ov_SC03_006 func_80184034 bare-name pins got 0 expected 3 N-A engine_prelude.h asm sites (a macro definition only) got 0 expected 0 OK - elapsed 22.3 s + elapsed 22.5 s diff --git a/docs/lever-progress.tsv b/docs/lever-progress.tsv index b34ff5603..1263b2ab9 100644 --- a/docs/lever-progress.tsv +++ b/docs/lever-progress.tsv @@ -68,3 +68,4 @@ date milestone head sites_AB pins asm bodies_AB distinct_AB marked unmarked gte_ 2026-09-11 S105 f2 (4) + R44/R22 regen (3) 0076a9d2e 4132 2217 1915 2027 721 4132 0 451 314 1589 50 7800 445 76 2026-09-11 S105 f1 (4) 389373f6d 4125 2212 1913 2025 719 4125 0 451 314 1589 50 7800 445 76 2026-09-11 S105 f3 (4 + 1 proven) cadb6cacc 4111 2203 1908 2021 715 4111 0 451 314 1589 50 7800 445 76 +2026-09-11 S105 f4 (5) + f5 (7) 4a503fce1 4077 2188 1889 2009 703 4077 0 451 314 1589 50 7800 445 76 diff --git a/docs/levers.md b/docs/levers.md index 1b9f5acde..0f25b6c56 100644 --- a/docs/levers.md +++ b/docs/levers.md @@ -114,6 +114,7 @@ counted, not marked). E, F and G belong to the canonical type layer and are the | 2026-09-11 | S105 f2 (4) + R44/R22 regen (3) | 2217 | 1915 | **4132** | 2027 | 721 | 451 | 314 | 1589 | 50 | 7800 | 445 | 76 | `0076a9d2e` | | 2026-09-11 | S105 f1 (4) | 2212 | 1913 | **4125** | 2025 | 719 | 451 | 314 | 1589 | 50 | 7800 | 445 | 76 | `389373f6d` | | 2026-09-11 | S105 f3 (4 + 1 proven) | 2203 | 1908 | **4111** | 2021 | 715 | 451 | 314 | 1589 | 50 | 7800 | 445 | 76 | `cadb6cacc` | +| 2026-09-11 | S105 f4 (5) + f5 (7) | 2188 | 1889 | **4077** | 2009 | 703 | 451 | 314 | 1589 | 50 | 7800 | 445 | 76 | `4a503fce1` | ### The campaign — every batch, from the ledger (derived on every render) @@ -415,7 +416,9 @@ counted, not marked). E, F and G belong to the canonical type layer and are the | `s105_f1` | 2026-09-11 | E | 0 | 0 | 0 | 4 | 2 | | `s105_f1_minlever` | 2026-09-11 | E | 0 | 0 | 0 | 3 | 0 | | `s105_f3` | 2026-09-11 | E | 0 | 0 | 0 | 14 | 4 | -| **total** | | | **17,122** | **20,778** | **283** | **30,315** | **10,725** | +| `s105_f4` | 2026-09-11 | E | 0 | 0 | 0 | 13 | 5 | +| `s105_f5` | 2026-09-11 | E | 0 | 0 | 0 | 20 | 7 | +| **total** | | | **17,122** | **20,778** | **283** | **30,348** | **10,737** | *Generated by `tools/lever_progress.py --render` from `.run/P36/census/lever_census.json` and `.run/P36/delever/ledger.jsonl`; the series lives in `docs/lever-progress.tsv` (R75: published numbers are generated, never typed).* diff --git a/phase-ends/CURRENT_PHASE.md b/phase-ends/CURRENT_PHASE.md index 369bbd511..e0d7128b1 100644 --- a/phase-ends/CURRENT_PHASE.md +++ b/phase-ends/CURRENT_PHASE.md @@ -1999,18 +1999,41 @@ accumulate here as the phase produces them.** cannot reach — not a new generator. R22 (`.run/P36/s105/r22_c.log`) **`check-all: 218 passed, 0 failed of 218`** (83 s) → baseline at `cadb6cacc` → `lever_census --check: 4,111 pin/asm sites, 4,111 marked !FAKE, 0 UNMARKED — OK` (exit 0) → snapshot (4,125 → **4,111**). -## 🛑 SESSION CHECKPOINT — S105 (2026-09-11, LIVE — refreshed at every landing): T0–T6 ☑, **T7 RUNNING at Drew's cap of TWO agents**. 4,152 → **4,111 sites** so far; f1–f3 landed (13/13), f4 + f5 IN FLIGHT; generator **R44** + the R22 `&&` blind-spot fix; R22 `check-all: 218 passed, 0 failed of 218` at `cadb6cacc` | `lever_census --check` exit 0 (4,111 marked, 0 UNMARKED, 0 orphans) +- **S105 — f4 and f5 landed: 12 of 12 at 0, ALL plain C, zero levers; generators R45 + R46; R22 218/218; 4,111 → 4,077 sites.** + f4 (`ov_SC04_011_jr_8017D494`, ≈366k tokens, 42 min): `func_801835B0` 3 → 0, `func_8018315C` 5 → 0, `func_80183058` 15 → 0 — three + of five by **combine's narrow-load + sign-extend split** (`combine.c:1893-1918`: an `s16` local loaded DIRECTLY and set ONCE gives the + target's `lh` + `move`; the tree's `frame_pad[N]`/"§333 aggregate" fillers were the dead shift temps' slots, deleted); `func_80182BBC` + 7 → 0 (a `u16` counter tied in `qty_compare_1` with a symbol → `s32`; `localalloc_sim` 0 mismatches); `func_80183058` also carried a + `$4` pin that was a MISSING CALL ARGUMENT (the callee `func_80189410(void *)` defined in the same TU); `func_8018489C` 19 → 0 (`s16` + parameter copies at the top, the early result on the copy; the sweep's "best 13" had been measured on a free body reading the + stripped `a1v` uninitialised — a strip that leaves a read of the pinned variable is an instrument gap, noted). f5 (`ov_SC02_005_jr_8018EA04`, + ≈152k tokens, 10 min — the cheapest batch of the session): two mechanisms cover the whole TU — **the derived-pointer store** (cse + pass 1 folds `(plus s0 K)` to the constant, `find_best_addr` `cse.c:2622-2740`; `p = &s0[K]` born before the store, stored through, + passed to the call — four bodies, the `$s0/$s1` swaps were the base's ref count) and **the set-once chain** (`DST = (v & 0x1F) - K;` + — a multi-set temp loses sched1's birthing boost, `sched.c:2468-2546`; the INVERSE of f3's multi-set trick, the `.sched` priority + column decides — three bodies); `func_801900B0` by two `return ;`; packs 4–7 each closed on the first `--try` from the TU's + lever-free sibling `func_8018FAE0`. `bank_list.sh`: `IDENTICAL … KEPT` ×12 (`a59914878`…`d49b4fc37`, `855743df1`…`bbe6bee42`). f6 + (`ov_SC07_007`, 6 classes) and f7 (`ov_SC01_077`, 6) launched into the slots first. **Harvest (R16): generators R45 + `derived_pointer_store`** (known-true ALONE 0 on func_8018F944 from 4; the ALL form 0 on func_8018FEA0 from 16 — an index-regex + defect caught by the selftest on the way: `_INT` matched the digit in `s0`) **and R46 `set_once_chain`** (the ALL form 0 on + func_8018FA34 from 6; the singles 2 / 4 = the agent's own numbers; a refusal when the temp is read after the store); selftest cases + with a negative control, `delever --selftest: OK`, SETUP rows, `FAMILIES` (R45 in COUNT, R46 in ORDER first). Regen `s105_r45r46`: + `604 of 604 classes judged in 27 s — MATCH 0, BEST 44` — the shapes were TU-local; 0 free banks, honestly. METHOD step 19 + (f4/f5's nine readings). R22 (`.run/P36/s105/r22_d.log`) **`check-all: 218 passed, 0 failed of 218`** (82 s) → baseline at + `4a503fce1` → `lever_census --check: 4,077 pin/asm sites, 4,077 marked !FAKE, 0 UNMARKED — OK` (exit 0) → snapshot (4,111 → **4,077**; + 2,188 pins + 1,889 asm in 2,009 bodies). **Session so far: 25 of 25 drawn classes at 0 (21 plain C, 4 minimum-lever), 4,152 → 4,077.** + +## 🛑 SESSION CHECKPOINT — S105 (2026-09-11, LIVE — refreshed at every landing): T0–T6 ☑, **T7 RUNNING at Drew's cap of TWO agents**. 4,152 → **4,077 sites** so far; f1–f5 landed (25/25), f6 + f7 IN FLIGHT; generators **R44–R46** + the R22 `&&` blind-spot fix; R22 `check-all: 218 passed, 0 failed of 218` at `4a503fce1` | `lever_census --check` exit 0 (4,077 marked, 0 UNMARKED, 0 orphans) ### 0. How to use this block — READ THIS FIRST A fresh session reads CLAUDE.md's load order, replays this block verbatim, confirms the effort (S105 runs at `/effort high` on Opus 5 1M; every agent on Opus) and executes §2. **Drew's cap is TWO concurrent agents (S105 open).** What may be in flight when this is read: -**f4** (`src/ov_SC04_011/ov_SC04_011_jr_8017D494.c`: func_801835B0, func_8018315C, func_80182BBC, func_80183058, func_8018489C) and -**f5** (`src/ov_SC02_005/ov_SC02_005_jr_8018EA04.c`: func_8018F944, func_801900B0, func_8018FA34, func_8018FB8C, func_8018FCE4, -func_8018FEA0, func_8018F72C). A dead session's agents leave `body.c` + `mechanism.md` in +**f6** (`src/ov_SC07_007/ov_SC07_007_jr_8017BEBC.c`: func_8018122C, func_80180FA4, func_8017F584, func_80181F4C, func_80182184, +func_8017DFB8) and **f7** (`src/ov_SC01_077/ov_SC01_077_jr_8017AE2C.c`: func_8017EB2C, func_8017EF50, func_8017F5BC, func_80180590, +func_8017FD14, func_8017F114). A dead session's agents leave `body.c` + `mechanism.md` in `.run/P36/agents/__/` (R67): `--try` each `body.c`; a 0 banks via `.run/P36/s105/bank_list.sh` (one line per body `TU FN FILE LABEL MSG`; a `*minlever*` label adds `--allow-residue`); anything else is a reading to record. Briefs for the NEXT draws are -written and their packs built: `.run/P36/s105/BRIEF_f6.md` (ov_SC07_007, 6 classes), `BRIEF_f7.md` (ov_SC01_077, 6), `BRIEF_f8.md` -(ov_SC02_005_jr_80185E80, 5); `.run/P36/s105/mkbrief.py ` builds the packs + brief for any TU of `pick.json` — launch each as a general-purpose Agent whose prompt names the brief file (the f1/f3 prompts are the +written and their packs built: `.run/P36/s105/BRIEF_f8.md` (ov_SC02_005_jr_80185E80, 5 classes); `.run/P36/s105/mkbrief.py ` builds the packs + brief for any TU of `pick.json` — launch each as a general-purpose Agent whose prompt names the brief file (the f1/f3 prompts are the pattern). First commands: ``` git log --oneline -1 && git status --short | grep -v '^??' | wc -l @@ -2023,10 +2046,10 @@ git log --oneline -1 && git status --short | grep -v '^??' | wc -l `.run/P36/s105/bank_list.sh` → harvest (generator + known-true on the agent's start text + selftest + SETUP row + `FAMILIES`) → regen pass of the new family (`--exclude` every fn an agent holds) → `--bank` → commit → R22 → `--snapshot-baseline` → census (EXIT CODE) → `lever_progress --snapshot` → log entry → commit. -- The free sweep is SPENT: every residue class has been judged by every family R2–R44 (S105 `s105_r43_*`, `s105_r44r22`). +- The free sweep is SPENT: every residue class has been judged by every family R2–R46 (S105 `s105_r43_*`, `s105_r44r22`, `s105_r45r46`). ### 2. NEXT -1. Land f4/f5 (§0) → launch f6, f7, f8 in turn (two at a time) → then draw the next TUs from `pick.py` (ov_SC01_077 6 cls, then the +1. Land f6/f7 (§0) → launch f8, then `mkbrief.py f9 ` … (two at a time) → then draw the next TUs from `pick.py` (ov_SC01_077 6 cls, then the 5-class TUs), one brief per TU, 4–7 classes each, skipping ARG-ONLY (`$4`–`$7`-only pins = the missing-parameter shape → structs phase) and the park list (S104 §2.4 + f2's func_800385C0 signature change). 2. The 21 UNSTRIPPABLE classes (`.run/P36/s105/unstrippable.json`: 6 comment-boundary strips, 6 macro-carried launders, 5 instructions