diff --git a/.run/P36/census/lever_census.json b/.run/P36/census/lever_census.json index de53969ba..5d66fde90 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": 258, + "barrier/direct": 257, "gte-lever/direct": 357, "gte-lever/via-macro": 94, "gte-unsigned/direct": 270, @@ -62,7 +62,7 @@ "instruction/direct": 206, "instruction/via-macro": 22, "keepalive/direct": 333, - "launder/direct": 588, + "launder/direct": 584, "launder/via-macro": 42, "verbatim-body/direct": 2682 } @@ -115,36 +115,36 @@ }, "classes": { "A": { - "bodies": 1363, - "distinct_bodies": 532, + "bodies": 1360, + "distinct_bodies": 529, "file_scope": 0, - "in_bodies": 2212, + "in_bodies": 2203, "kinds": { - "pin": 2212 + "pin": 2203 }, - "marked": 2212, - "sites": 2212, + "marked": 2203, + "sites": 2203, "tus": 1077, "unmarked": 0 }, "B": { - "bodies": 4621, - "distinct_bodies": 687, + "bodies": 4617, + "distinct_bodies": 683, "file_scope": 13, - "in_bodies": 11207, + "in_bodies": 11202, "kinds": { "asm-body": 13, - "barrier": 258, + "barrier": 257, "gte": 6355, "gte-lever": 451, "gte-unsigned": 270, "instruction": 228, "keepalive": 333, - "launder": 630, + "launder": 626, "verbatim-body": 2682 }, - "marked": 2397, - "sites": 11220, + "marked": 2392, + "sites": 11215, "tus": 1426, "unmarked": 8823 }, @@ -250,9 +250,9 @@ "coverage": { "asm": { "comment_dead": 6781, - "live": 15076, + "live": 15062, "macro_block": 194, - "raw": 22051 + "raw": 22037 }, "attribute": { "comment_dead": 0, @@ -268,9 +268,9 @@ }, "register": { "comment_dead": 8574, - "live": 2262, + "live": 2253, "macro_block": 18, - "raw": 10854 + "raw": 10845 }, "volatile": { "comment_dead": 2607, @@ -280,7 +280,7 @@ } }, "coverage_ok": true, - "elapsed_s": 22.6, + "elapsed_s": 22.3, "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": "389373f6d", + "head": "cadb6cacc", "headers": 3181, "levers_AB": { - "asm": 1913, - "bodies": 2025, - "distinct_bodies": 719, - "marked": 4125, - "pins": 2212, - "sites": 4125, + "asm": 1908, + "bodies": 2021, + "distinct_bodies": 715, + "marked": 4111, + "pins": 2203, + "sites": 4111, "unmarked": 0, "what": "register pins + asm statements excluding GTE ops: the classes the phase drives to 0" }, @@ -433,29 +433,29 @@ }, "pins": { "bare_name": 9, - "init": 205, + "init": 204, "registers": { - "$0": 56, + "$0": 55, "$10": 10, "$11": 5, "$12": 9, "$13": 6, "$14": 5, "$15": 1, - "$16": 79, + "$16": 78, "$17": 29, "$18": 26, "$19": 17, - "$2": 764, + "$2": 763, "$20": 7, "$21": 5, "$22": 3, "$23": 6, "$25": 1, - "$3": 164, - "$4": 500, + "$3": 162, + "$4": 497, "$5": 379, - "$6": 61, + "$6": 60, "$7": 26, "$8": 23, "$9": 21, @@ -464,29 +464,29 @@ "a1": 2, "v0": 2 }, - "sites": 2212, + "sites": 2203, "sp": 0, "spelling": { - "__asm__": 2189, + "__asm__": 2180, "asm": 23 }, "volatile_qualified": 0, - "zero": 56 + "zero": 55 }, - "src_stamp": "c520d7e0bc97f00f", + "src_stamp": "2d70f3c71cf4dfdf", "tus": 4121, "unclassified": 0, "union_AD": { - "bodies": 5790, + "bodies": 5786, "by_kind": { "main": 124, - "md": 109, + "md": 105, "ov": 5391, "resident": 6, "shared": 160 }, "copies_in_multi": 4849, - "distinct_bodies": 1051, + "distinct_bodies": 1047, "multi_copy_classes": 110 }, "verbatim_excluded": { diff --git a/.run/P36/census/lever_census.txt b/.run/P36/census/lever_census.txt index 3274da21b..e53323249 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 22051 = live 15076 + macro-block 194 + comment/dead 6781 - coverage register raw 10854 = live 2262 + macro-block 18 + comment/dead 8574 + 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 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 2212 2212 0 1363 532 1077 2212 0 {'pin': 2212} - B asm 11220 11207 13 4621 687 1426 2397 8823 {'gte': 6355, 'gte-lever': 451, 'gte-unsigned': 270, 'barrier': 258, 'launder': 630, 'instruction': 228, 'asm-body': 13, 'keepalive': 333, 'verbatim-body': 2682} + 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} 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,790 bodies · 1,051 distinct (addresses normalized) · 110 multi-copy classes holding 4,849 bodies · by kind {'ov': 5391, 'shared': 160, 'main': 124, 'md': 109, 'resident': 6} - THE PHASE'S NUMBER (pins + asm statements, GTE excluded): 4,125 sites in 2,025 bodies (719 distinct) · marked !FAKE 4,125 · UNMARKED 0 + 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 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,212 · $0 56 · $sp 0 · with initializer 205 · volatile-qualified 0 · bare-name 9 · spellings {'__asm__': 2189, 'asm': 23} + pins: 2,203 · $0 55 · $sp 0 · with initializer 204 · volatile-qualified 0 · bare-name 9 · spellings {'__asm__': 2180, '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': 258, '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': 588, 'launder/via-macro': 42, 'verbatim-body/direct': 2682} + 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} 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} @@ -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.6 s + elapsed 22.3 s diff --git a/docs/lever-progress.tsv b/docs/lever-progress.tsv index fea9fbc0e..b34ff5603 100644 --- a/docs/lever-progress.tsv +++ b/docs/lever-progress.tsv @@ -67,3 +67,4 @@ date milestone head sites_AB pins asm bodies_AB distinct_AB marked unmarked gte_ 2026-09-11 S104 T7 close: e35–e38 resumed after the usage limit 765704ca5 4152 2227 1925 2033 727 4152 0 451 314 1589 50 7800 445 76 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 diff --git a/docs/levers.md b/docs/levers.md index 98941f227..1b9f5acde 100644 --- a/docs/levers.md +++ b/docs/levers.md @@ -113,6 +113,7 @@ counted, not marked). E, F and G belong to the canonical type layer and are the | 2026-09-11 | S104 T7 close: e35–e38 resumed after the usage limit | 2227 | 1925 | **4152** | 2033 | 727 | 451 | 314 | 1589 | 50 | 7800 | 445 | 76 | `765704ca5` | | 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` | ### The campaign — every batch, from the ledger (derived on every render) @@ -413,7 +414,8 @@ counted, not marked). E, F and G belong to the canonical type layer and are the | `s105_r44r22` | 2026-09-11 | E | 0 | 0 | 0 | 13 | 3 | | `s105_f1` | 2026-09-11 | E | 0 | 0 | 0 | 4 | 2 | | `s105_f1_minlever` | 2026-09-11 | E | 0 | 0 | 0 | 3 | 0 | -| **total** | | | **17,122** | **20,778** | **283** | **30,301** | **10,721** | +| `s105_f3` | 2026-09-11 | E | 0 | 0 | 0 | 14 | 4 | +| **total** | | | **17,122** | **20,778** | **283** | **30,315** | **10,725** | *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 7102039c3..369bbd511 100644 --- a/phase-ends/CURRENT_PHASE.md +++ b/phase-ends/CURRENT_PHASE.md @@ -1983,16 +1983,34 @@ accumulate here as the phase produces them.** **`check-all: 218 passed, 0 failed of 218`** (85 s) → baseline at `389373f6d` → `lever_census --check: 4,125 pin/asm sites, 4,125 marked !FAKE, 0 UNMARKED — OK` (exit 0) → snapshot (4,132 → **4,125**). -## 🛑 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,125 sites** so far; f1 + f2 landed (8/8), f3 + f4 IN FLIGHT; generator **R44** + the R22 `&&` blind-spot fix; R22 `check-all: 218 passed, 0 failed of 218` at `389373f6d` | `lever_census --check` exit 0 (4,125 marked, 0 UNMARKED, 0 orphans) +- **S105 — f3 landed: 5 of 5 at 0 (4 plain C, 1 minimum-lever PROVEN at its five), R22 218/218; 4,125 → 4,111 sites.** f3 + (`md_SC07_004`, ≈515k tokens, 77 min): `func_801AEB94` 5 → 0 (the loop inits moved after the preceding call as a `for`, sched1's LUID + tie-break `sched.c:2384-2428`; 2 launders → 0), `func_801A4258` 11 → 0 (`if (F != G) { F += (u16)S; D[i] = F >> 7; }` on the field — e8's + rule, third body in this TU; 4 pins + barrier + a dead `pad[6]` → 0; a structs finding: `s16 *p = D_801F8870; p[0..2]` reproduces the + target's addressing asymmetry with link-time-identical relocations — the three globals are one `s16[3]`), `func_801AADA8` 29 → 0 and + `func_801AB21C` 44 → 0 (**the multi-set chain**: a load-once/use-once RMW value as compound updates on ONE variable declared in the + innermost block — no birthing boost `sched.c:2477-2490` → an early load → a longer life → a lower `qty_compare_1` rank; `localalloc_sim` + 0 mismatches; 3 + 4 levers → 0), `func_801ADF5C` 41 → 25 in plain C and **0 only with the tree's five levers** (every 4-subset scores 2, + every 3-subset ≥ 4, ~470 bodies: the original reused its constant holders) — banked with the markers carrying the pass (5 → 5, no + site change; the milestone's item 2 attribution). The agent spliced all five into one TU copy and proved the joint object equal to the + baseline (`.text`, `.rodata`, 2,863 relocations, the symbol table). `bank_list.sh`: `IDENTICAL … KEPT` ×5 (`f4521a077`, `e16cb5d6f`, + `6aabe1905`, `71e32fed0`, `5bc2951d8`). f5 (`ov_SC02_005_jr_8018EA04`, 7 classes) launched into the slot first. **Harvest:** METHOD + step 18 (`cadb6cacc`); the compound-update move is a COMPOSITION of R6 + R32 + a block-scope declaration that the single-move regen + 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) ### 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: -**f3** (`src/md_SC07_004/md_SC07_004.c`: func_801AEB94, func_801A4258, func_801AADA8, func_801ADF5C, func_801AB21C) and **f4** -(`src/ov_SC04_011/ov_SC04_011_jr_8017D494.c`: func_801835B0, func_8018315C, func_80182BBC, func_80183058, func_8018489C). A dead session's agents leave `body.c` + `mechanism.md` in +**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 `.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_f5.md` (ov_SC02_005, 7 classes), `BRIEF_f6.md` (ov_SC07_007, 6) — 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_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 pattern). First commands: ``` git log --oneline -1 && git status --short | grep -v '^??' | wc -l @@ -2008,7 +2026,7 @@ 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–R44 (S105 `s105_r43_*`, `s105_r44r22`). ### 2. NEXT -1. Land f3/f4 (§0) → launch f5, f6 in turn (two at a time) → then draw the next TUs from `pick.py` (ov_SC01_077 6 cls, then the +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 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