From 134abd5e04b119ada41a47b2a75df8175ebb1d16 Mon Sep 17 00:00:00 2001 From: Drew T <50529377+Druthulu@users.noreply.github.com> Date: Fri, 11 Sep 2026 19:17:22 -0600 Subject: [PATCH] =?UTF-8?q?phase-36:=20S105=20(cont.)=20=E2=80=94=20f9=20l?= =?UTF-8?q?anded=206/6=20(3=20plain=20C,=201=20do-while,=202=20proven=20+?= =?UTF-8?q?=20parked),=20R22=20218/218,=20census=204,032=20/=200=20unmarke?= =?UTF-8?q?d=20(exit=200);=20METHOD=20step=2023;=20checkpoint=20refreshed?= =?UTF-8?q?=20|=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 | 19 ++++++ .run/P36/census/lever_census.json | 106 +++++++++++++++--------------- .run/P36/census/lever_census.txt | 22 +++---- docs/lever-progress.tsv | 1 + docs/levers.md | 4 +- phase-ends/CURRENT_PHASE.md | 30 ++++++--- 6 files changed, 109 insertions(+), 73 deletions(-) diff --git a/.run/P36/agents/METHOD_S103.md b/.run/P36/agents/METHOD_S103.md index d7bcefe1e3..0959385fbb 100644 --- a/.run/P36/agents/METHOD_S103.md +++ b/.run/P36/agents/METHOD_S103.md @@ -335,3 +335,22 @@ the identical constant stores ABOVE the nearest preceding two-register-value store (`la|lui|or`) so the holder's live range overlaps v0/v1 and `find_free_reg` gives it `a1` (sched1 keeps equal-priority constant stores in source order); 240 adjacent permutations all scored 6 — R9/R18 are inert here, the straddle closed in every try. +23. **S105 f9 (`ov_SC02_027_jr_8017D898`, 6 of 6 at 0: 3 plain C, 1 do-while, 2 proven at their levers and parked):** + - **sched1 REWRITES `reg_live_length` on the final stream** (`sched.c:4911-4930`): only flow's loop-weighted refs (`flow.c:2067`) + can flip an `allocno_compare` gap — every "+1 flow-time insn" spelling changes bytes; a <10 % gap between a parameter and a + local consumed by the final call's arguments is the do-while's exact tell (the sibling copies spell it that way too). + - A constant holder set PER ARM and consumed by an identical expression in both arms → declare it per arm (a function-scope one + is a global allocno pushed to `v1` by pass-0 exclusions, `global.c:945-990`; per arm it is a block-local quantity, + `local-alloc.c:2101`, and cross-jump re-merges the tail) — R23's sibling-arm constant-holder form, and it must stay `s16`. + - N ascending-register word loads + N stores with a `lw; nop; sw` leftover = a STRUCT ASSIGNMENT (`expand_block_move`, + `mips.c:2331-2360`, `movstrsi_internal`; the temps are priority-0 scratch quantities; `.lreg`'s REG_UNUSED hard-reg notes on a + single `parallel` name it). If the words are consecutive CARVED symbols the plain spelling is identical only after linking → + park as a carve change with the struct spelling in scratch. + - `move v0,` in a j-to-epilogue slot + `move v0,zero` on the fall-through of a `void` function = a RETURN VALUE + (`expand_value_return`, `stmt.c:2505-2528`; a dead hard-reg set is deleted by flow) → signature change, patch parked. + - The narrow-load split (step 19) also empties the `beqz` delay slots that barriers had been faking (reorg's `opposite_needed` + changes with the allocation) — re-score WITHOUT the adjacent barriers after the split; shrink `pad[N]` by one 8-byte slot per + split site. + - Two of six closed by grepping the TU for a distinctive constant and porting the lever-free sibling's spelling verbatim + (`related.txt` had neither) — R71 first, tables second. `--try TU FN FILE` WITHOUT `--body` scores a spliced whole TU: that is + how a prototype/signature change is tested read-only. diff --git a/.run/P36/census/lever_census.json b/.run/P36/census/lever_census.json index 89c664802c..6356cee11e 100644 --- a/.run/P36/census/lever_census.json +++ b/.run/P36/census/lever_census.json @@ -53,7 +53,7 @@ }, "kinds": { "asm-body/direct": 13, - "barrier/direct": 243, + "barrier/direct": 241, "gte-lever/direct": 356, "gte-lever/via-macro": 94, "gte-unsigned/direct": 270, @@ -61,15 +61,15 @@ "gte/via-macro": 6160, "instruction/direct": 202, "instruction/via-macro": 22, - "keepalive/direct": 331, - "launder/direct": 578, + "keepalive/direct": 328, + "launder/direct": 577, "launder/via-macro": 42, "verbatim-body/direct": 2682 } }, "binaries": 218, "cfake_markers": { - "count": 52, + "count": 53, "sample": [ "src/800.c:12543", "src/800_b_2.c:2948", @@ -82,7 +82,8 @@ "src/ov_SC01_077/ov_SC01_077_jr_80183CF4.c:3979", "src/ov_SC01_080/ov_SC01_080_jr_8017AE2C.c:5178", "src/ov_SC02_011/ov_SC02_011_jr_80183178.c:2139", - "src/ov_SC02_027/ov_SC02_027_jr_8017D898.c:4534", + "src/ov_SC02_027/ov_SC02_027_jr_8017D898.c:4528", + "src/ov_SC02_027/ov_SC02_027_jr_8017D898.c:8370", "src/ov_SC02_028/ov_SC02_028_jr_8017D898.c:5461", "src/ov_SC02_041/ov_SC02_041_jr_8017BEBC.c:7554", "src/ov_SC03_014/ov_SC03_014_jr_801848E4.c:5025", @@ -109,42 +110,41 @@ "src/ov_SC05_018/ov_SC05_018_jr_8017D604.c:4942", "src/ov_SC06_000/ov_SC06_000_jr_8017AE2C.c:8444", "src/ov_SC06_000/ov_SC06_000_jr_8017AE2C.c:8484", - "src/ov_SC06_000/ov_SC06_000_jr_8017AE2C.c:8811", - "src/ov_SC06_018/ov_SC06_018_jr_80187AEC.c:3125" + "src/ov_SC06_000/ov_SC06_000_jr_8017AE2C.c:8811" ] }, "classes": { "A": { - "bodies": 1336, - "distinct_bodies": 505, + "bodies": 1332, + "distinct_bodies": 501, "file_scope": 0, - "in_bodies": 2163, + "in_bodies": 2157, "kinds": { - "pin": 2163 + "pin": 2157 }, - "marked": 2163, - "sites": 2163, + "marked": 2157, + "sites": 2157, "tus": 1075, "unmarked": 0 }, "B": { - "bodies": 4603, - "distinct_bodies": 670, + "bodies": 4599, + "distinct_bodies": 666, "file_scope": 13, - "in_bodies": 11177, + "in_bodies": 11171, "kinds": { "asm-body": 13, - "barrier": 243, + "barrier": 241, "gte": 6357, "gte-lever": 450, "gte-unsigned": 270, "instruction": 224, - "keepalive": 331, - "launder": 620, + "keepalive": 328, + "launder": 619, "verbatim-body": 2682 }, - "marked": 2365, - "sites": 11190, + "marked": 2359, + "sites": 11184, "tus": 1425, "unmarked": 8825 }, @@ -178,17 +178,17 @@ "unmarked": 50 }, "E": { - "bodies": 1099, - "distinct_bodies": 160, + "bodies": 1100, + "distinct_bodies": 161, "file_scope": 6432, - "in_bodies": 1369, + "in_bodies": 1370, "kinds": { - "asm-label": 7801 + "asm-label": 7802 }, "marked": 0, - "sites": 7801, + "sites": 7802, "tus": 2090, - "unmarked": 7801 + "unmarked": 7802 }, "F": { "bodies": 428, @@ -250,9 +250,9 @@ "coverage": { "asm": { "comment_dead": 6781, - "live": 14996, + "live": 14985, "macro_block": 194, - "raw": 21971 + "raw": 21960 }, "attribute": { "comment_dead": 0, @@ -267,10 +267,10 @@ "raw": 599 }, "register": { - "comment_dead": 8574, - "live": 2213, + "comment_dead": 8575, + "live": 2207, "macro_block": 18, - "raw": 10805 + "raw": 10800 }, "volatile": { "comment_dead": 2607, @@ -280,7 +280,7 @@ } }, "coverage_ok": true, - "elapsed_s": 22.4, + "elapsed_s": 22.5, "generated": "2026-09-11", "gte_levers": { "direct": 356, @@ -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": "3d6111828", + "head": "c2455f5d3", "headers": 3181, "levers_AB": { - "asm": 1881, - "bodies": 1993, - "distinct_bodies": 687, - "marked": 4044, - "pins": 2163, - "sites": 4044, + "asm": 1875, + "bodies": 1989, + "distinct_bodies": 683, + "marked": 4032, + "pins": 2157, + "sites": 4032, "unmarked": 0, "what": "register pins + asm statements excluding GTE ops: the classes the phase drives to 0" }, @@ -432,7 +432,7 @@ "what": "asm-bearing #define blocks outside the GTE header: 0 at the close (T5 deletes the canonical duplicates, T7 the variants)" }, "pins": { - "bare_name": 8, + "bare_name": 6, "init": 201, "registers": { "$0": 54, @@ -443,7 +443,7 @@ "$14": 5, "$15": 1, "$16": 74, - "$17": 27, + "$17": 26, "$18": 26, "$19": 16, "$2": 755, @@ -453,40 +453,40 @@ "$23": 6, "$25": 1, "$3": 157, - "$4": 490, - "$5": 372, + "$4": 489, + "$5": 370, "$6": 59, "$7": 25, "$8": 23, "$9": 21, "7": 1, - "a0": 3, + "a0": 2, "a1": 2, - "v0": 2 + "v0": 1 }, - "sites": 2163, + "sites": 2157, "sp": 0, "spelling": { - "__asm__": 2140, - "asm": 23 + "__asm__": 2136, + "asm": 21 }, "volatile_qualified": 0, "zero": 54 }, - "src_stamp": "b9f8d1314e8323d7", + "src_stamp": "2a1915c572d26c16", "tus": 4121, "unclassified": 0, "union_AD": { - "bodies": 5759, + "bodies": 5755, "by_kind": { "main": 124, "md": 105, - "ov": 5365, + "ov": 5361, "resident": 6, "shared": 159 }, "copies_in_multi": 4849, - "distinct_bodies": 1020, + "distinct_bodies": 1016, "multi_copy_classes": 110 }, "verbatim_excluded": { diff --git a/.run/P36/census/lever_census.txt b/.run/P36/census/lever_census.txt index 5ba8420896..ffa4870a53 100644 --- a/.run/P36/census/lever_census.txt +++ b/.run/P36/census/lever_census.txt @@ -1,26 +1,26 @@ 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 21971 = live 14996 + macro-block 194 + comment/dead 6781 - coverage register raw 10805 = live 2213 + macro-block 18 + comment/dead 8574 + coverage asm raw 21960 = live 14985 + macro-block 194 + comment/dead 6781 + coverage register raw 10800 = live 2207 + macro-block 18 + comment/dead 8575 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 2163 2163 0 1336 505 1075 2163 0 {'pin': 2163} - B asm 11190 11177 13 4603 670 1425 2365 8825 {'gte': 6357, 'gte-lever': 450, 'gte-unsigned': 270, 'barrier': 243, 'launder': 620, 'instruction': 224, 'asm-body': 13, 'keepalive': 331, 'verbatim-body': 2682} + A pins 2157 2157 0 1332 501 1075 2157 0 {'pin': 2157} + B asm 11184 11171 13 4599 666 1425 2359 8825 {'gte': 6357, 'gte-lever': 450, 'gte-unsigned': 270, 'barrier': 241, 'launder': 619, 'instruction': 224, 'asm-body': 13, 'keepalive': 328, '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 7801 1369 6432 1099 160 2090 0 7801 {'asm-label': 7801} + E asm-label 7802 1370 6432 1100 161 2090 0 7802 {'asm-label': 7802} 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,759 bodies · 1,020 distinct (addresses normalized) · 110 multi-copy classes holding 4,849 bodies · by kind {'ov': 5365, 'shared': 159, 'main': 124, 'md': 105, 'resident': 6} - THE PHASE'S NUMBER (pins + asm statements, GTE excluded): 4,044 sites in 1,993 bodies (687 distinct) · marked !FAKE 4,044 · UNMARKED 0 + UNION A–D: 5,755 bodies · 1,016 distinct (addresses normalized) · 110 multi-copy classes holding 4,849 bodies · by kind {'ov': 5361, 'main': 124, 'shared': 159, 'md': 105, 'resident': 6} + THE PHASE'S NUMBER (pins + asm statements, GTE excluded): 4,032 sites in 1,989 bodies (683 distinct) · marked !FAKE 4,032 · 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): 52 + marked ordinary-C fakes kept by Drew's S104 ruling (a) (`do { } while (0)`, dead initialisers; NOT levers): 53 GTE levers (clobbers beyond the canonical macro's): 450 sites (94 via a variant macro, 356 direct) · marked 450 · 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,163 · $0 54 · $sp 0 · with initializer 201 · volatile-qualified 0 · bare-name 8 · spellings {'__asm__': 2140, 'asm': 23} + pins: 2,157 · $0 54 · $sp 0 · with initializer 201 · volatile-qualified 0 · bare-name 6 · spellings {'__asm__': 2136, 'asm': 21} 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': 243, 'gte/direct': 197, 'gte/via-macro': 6160, 'gte-lever/direct': 356, 'gte-lever/via-macro': 94, 'gte-unsigned/direct': 270, 'instruction/direct': 202, 'instruction/via-macro': 22, 'keepalive/direct': 331, 'launder/direct': 578, 'launder/via-macro': 42, 'verbatim-body/direct': 2682} + asm kinds: {'asm-body/direct': 13, 'barrier/direct': 241, 'gte/direct': 197, 'gte/via-macro': 6160, 'gte-lever/direct': 356, 'gte-lever/via-macro': 94, 'gte-unsigned/direct': 270, 'instruction/direct': 202, 'instruction/via-macro': 22, 'keepalive/direct': 328, 'launder/direct': 577, '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': 759, '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': 229, '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} @@ -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.4 s + elapsed 22.5 s diff --git a/docs/lever-progress.tsv b/docs/lever-progress.tsv index 32098299d6..7d33a12575 100644 --- a/docs/lever-progress.tsv +++ b/docs/lever-progress.tsv @@ -73,3 +73,4 @@ date milestone head sites_AB pins asm bodies_AB distinct_AB marked unmarked gte_ 2026-09-11 S105 f6 (6) 4bca24866 4058 2172 1886 2000 694 4058 0 451 314 1589 50 7800 445 76 2026-09-11 S105 f8 (5) 36be9acef 4046 2163 1883 1995 689 4046 0 450 314 1589 50 7801 445 76 2026-09-11 S105 comment-strip regen (2) 3d6111828 4044 2163 1881 1993 687 4044 0 450 314 1589 50 7801 445 76 +2026-09-11 S105 f9 (6) c2455f5d3 4032 2157 1875 1989 683 4032 0 450 314 1589 50 7802 445 76 diff --git a/docs/levers.md b/docs/levers.md index 28e9733f4d..c857d80867 100644 --- a/docs/levers.md +++ b/docs/levers.md @@ -119,6 +119,7 @@ counted, not marked). E, F and G belong to the canonical type layer and are the | 2026-09-11 | S105 f6 (6) | 2172 | 1886 | **4058** | 2000 | 694 | 451 | 314 | 1589 | 50 | 7800 | 445 | 76 | `4bca24866` | | 2026-09-11 | S105 f8 (5) | 2163 | 1883 | **4046** | 1995 | 689 | 450 | 314 | 1589 | 50 | 7801 | 445 | 76 | `36be9acef` | | 2026-09-11 | S105 comment-strip regen (2) | 2163 | 1881 | **4044** | 1993 | 687 | 450 | 314 | 1589 | 50 | 7801 | 445 | 76 | `3d6111828` | +| 2026-09-11 | S105 f9 (6) | 2157 | 1875 | **4032** | 1989 | 683 | 450 | 314 | 1589 | 50 | 7802 | 445 | 76 | `c2455f5d3` | ### The campaign — every batch, from the ledger (derived on every render) @@ -429,7 +430,8 @@ counted, not marked). E, F and G belong to the canonical type layer and are the | `s105_f6_minlever` | 2026-09-11 | E | 0 | 0 | 0 | 2 | 0 | | `s105_f8` | 2026-09-11 | E | 0 | 0 | 0 | 11 | 5 | | `s105_comment6` | 2026-09-11 | E | 0 | 0 | 0 | 2 | 2 | -| **total** | | | **17,122** | **20,778** | **283** | **30,380** | **10,753** | +| `s105_f9` | 2026-09-11 | E | 0 | 0 | 0 | 12 | 4 | +| **total** | | | **17,122** | **20,778** | **283** | **30,392** | **10,757** | *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 b48fdad94e..ec7a758479 100644 --- a/phase-ends/CURRENT_PHASE.md +++ b/phase-ends/CURRENT_PHASE.md @@ -2093,17 +2093,31 @@ accumulate here as the phase produces them.** `3d6111828` → `lever_census --check: 4,044 pin/asm sites, 4,044 marked !FAKE, 0 UNMARKED — OK` (exit 0) → snapshot (4,046 → **4,044**). The other four (`func_8018F734`, `func_80185434`, `func_80181A30`, `func_80184BFC`) are now ordinary drawable classes. -## 🛑 SESSION CHECKPOINT — S105 (2026-09-11, FINAL — the session's last commit follows this): T0–T6 ☑, **T7 RUNNING at Drew's cap of ONE agent (was two)**. 4,152 → **4,044 sites** this session (−108); 8 TU batches f1–f8, **42 of 42 drawn classes at 0** (32 plain C, 2 do-while-only, 8 minimum-lever incl. 3 parked signature changes), ALL banked — **f9 (ov_SC02_027, 6 classes) IN FLIGHT**; generators **R44–R46** + R22 fixed three ways (4 free banks, 3 of them shared headers on 141 objects); R22 `check-all: 218 passed, 0 failed of 218` at `3d6111828` | `lever_census --check` exit 0 (4,044 marked, 0 UNMARKED, 0 orphans) +- **S105 (cont.) — f9 landed: 6 of 6 at 0 (3 plain C, 1 do-while, 2 proven at their levers + PARKED); R22 218/218; 4,044 → 4,032.** + f9 (`ov_SC02_027_jr_8017D898`, ≈318k tokens, 39 min): `func_801810A0` 14 → 0 (the narrow-load split; the two barrier-faked empty + delay slots followed from the allocation; pad 5 → 2 words; 5 levers → 0), `func_8017F498` 15 → 0 (the constant holder declared per + arm), `func_80187D18` 31 → 0 on the first `--try` (the same-TU sibling `func_8018830C`'s spelling found by grepping the volume + formula: an address alias + the multi-set abs chain), `func_80186C0C` 14 → 0 with one marked do-while (a 3076-vs-3000 `allocno_compare` + gap only flow's loop weight can flip — sched1 REWRITES live lengths on the final stream, `sched.c:4911`), `func_80180A54` 8 → 0 only + as `void *func(...)` returning the slot (the caller discards it; patch in the pack) → PROVEN at its 2 levers, PARKED (signature), + `func_80186CE0` 9 → 0 only as a 20-byte STRUCT COPY (`expand_block_move`, `mips.c:2331`; relocations `D_801AFBD8+4` vs the carved + `D_801AFBDC` — identical after linking) → PROVEN at its 3 levers, PARKED (a carve change). `bank_list.sh`: `IDENTICAL … KEPT` ×6 + (`41ab73ae6`…`c2455f5d3`). f10 (`ov_SC06_006`, 4 classes) launched into the single slot first. METHOD step 23. R22 + (`.run/P36/s105/r22_i.log`) **`check-all: 218 passed, 0 failed of 218`** (87 s) → baseline at `c2455f5d3` → `lever_census --check: + 4,032 pin/asm sites, 4,032 marked !FAKE, 0 UNMARKED — OK` (exit 0) → snapshot (4,044 → **4,032**). **Session: 48 of 48 drawn classes + at 0.** New parked-by-name: func_80180A54 (signature), func_80186CE0 (carve: one record table for `D_801AFBD8..EC`). + +## 🛑 SESSION CHECKPOINT — S105 (2026-09-11, FINAL — the session's last commit follows this): T0–T6 ☑, **T7 RUNNING at Drew's cap of ONE agent (was two)**. 4,152 → **4,032 sites** this session (−120); 9 TU batches f1–f9, **48 of 48 drawn classes at 0** (35 plain C, 3 do-while-only, 10 minimum-lever incl. 4 parked signature changes + 1 parked carve), ALL banked — **f10 (ov_SC06_006, 4 classes) IN FLIGHT**; generators **R44–R46** + R22 fixed three ways (4 free banks, 3 of them shared headers on 141 objects); R22 `check-all: 218 passed, 0 failed of 218` at `c2455f5d3` | `lever_census --check` exit 0 (4,032 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 ran at `/effort high` on Opus 5 1M; every agent on Opus) and executes §2. **Drew's cap is ONE agent at a time** (his last retune, after the S105 close: "continue here. max -concurrent agents of 1 now"). What may be in flight when this is read: **f9** (`src/ov_SC02_027/ov_SC02_027_jr_8017D898.c`: -func_80180A54, func_80186CE0, func_80186C0C, func_801810A0, func_8017F498, func_80187D18) — a dead session's agent leaves `body.c` + +concurrent agents of 1 now"). What may be in flight when this is read: **f10** (`src/ov_SC06_006/ov_SC06_006_jr_8017DB90.c`, 4 classes — +`BRIEF_f10.md` names them) — a dead session's agent leaves `body.c` + `mechanism.md` in its packs (R67): `--try` each, bank a 0, record the rest. The session limit cut two agents mid-run and Drew had them RESUMED by SendMessage to their ids (R67 held — every deliverable was on disk); an agent id survives a limit cut within a session, and an agent of a DEAD session is relaunched from -its pack. Briefs for the next draws are written and their packs built: `.run/P36/s105/BRIEF_f9.md` (ov_SC02_027_jr_8017D898, 6 -classes, 5 landed packs in that TU), `BRIEF_f10.md` (ov_SC06_006_jr_8017DB90, 4); `.run/P36/s105/mkbrief.py ` builds the +its pack. The next draws: `mkbrief.py f11 ` on the 6-class TUs of `pick.py` (ov_SC06_018, ov_SC07_002, ov_SC03_090, ov_SC06_032; `src/800.c` +still has 22 classes, most of them ARG-ONLY — draw its non-arg ones as one batch); `.run/P36/s105/mkbrief.py ` builds the packs + brief for any TU of `pick.json` (regenerate `pick.json` first: `.venv/bin/python .run/P36/s105/pick.py 12`). Launch each as a general-purpose Agent whose prompt names the brief file, the two method files, the read-only rules and the report format (the f1–f8 prompts in this session's transcript are the pattern; a paragraph of the previous landing's method notes goes in the prompt). @@ -2123,10 +2137,10 @@ git log --oneline -1 && git status --short | grep -v '^??' | wc -l - 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. On Drew's word: launch f9 and f10 (two at a time), then `mkbrief.py f11 ` from `pick.py`'s order (the 5-class TUs: +1. Cap ONE: after f10 lands, `mkbrief.py f11 ` from `pick.py`'s order (the 5-class TUs: ov_SC03_090, ov_SC06_018, ov_SC06_032, ov_SC07_002, then the 4-class ones), skipping ARG-ONLY (`$4`–`$7`-only pins = the - missing-parameter shape → structs phase) and the park list (S104 §2.4 + S105's three signature changes: func_800385C0, - func_80029D3C, func_80180FA4 — patches in their packs). + missing-parameter shape → structs phase) and the park list (S104 §2.4 + S105's four signature changes func_800385C0, func_80029D3C, func_80180FA4, func_80180A54 and + the carve change func_80186CE0 — patches in their packs; add them to `pick.py`'s PARK set). 2. Per landing: `--try` each body + `grep -c '__asm__\|register\|FAKE\|volatile'` → next brief → `.run/P36/s105/bank_list.sh` (one line per body `TU FN FILE LABEL MSG`; a `*minlever*` label adds `--allow-residue`; a do-while-only body banks plain) → harvest (a generator with a known-true run on the AGENT'S START TEXT — and run the EXISTING generators on it too when the move is one they