diff --git a/.run/P36/census/lever_census.json b/.run/P36/census/lever_census.json index c61ec3d76..8ac232150 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": 272, + "barrier/direct": 267, "gte-lever/direct": 357, "gte-lever/via-macro": 94, "gte-unsigned/direct": 270, @@ -61,8 +61,8 @@ "gte/via-macro": 6158, "instruction/direct": 206, "instruction/via-macro": 22, - "keepalive/direct": 337, - "launder/direct": 624, + "keepalive/direct": 333, + "launder/direct": 591, "launder/via-macro": 42, "verbatim-body/direct": 2682 } @@ -71,6 +71,16 @@ "cfake_markers": { "count": 50, "sample": [ + "src/ov_SC02_028/ov_SC02_028_jr_8017D898.c:5461", + "src/ov_SC03_014/ov_SC03_014_jr_801848E4.c:5025", + "src/ov_SC03_014/ov_SC03_014_jr_801848E4.c:5073", + "src/ov_SC03_024/ov_SC03_024_jr_80183BF8.c:3108", + "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_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/800.c:12578", "src/800_b_2.c:2948", "src/800_b_2.c:2965", @@ -83,14 +93,10 @@ "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_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", - "src/ov_SC03_014/ov_SC03_014_jr_801848E4.c:5073", "src/ov_SC03_024/ov_SC03_024_jr_8017DF84.c:5475", "src/ov_SC03_024/ov_SC03_024_jr_8017DF84.c:5527", "src/ov_SC03_024/ov_SC03_024_jr_8017DF84.c:5866", - "src/ov_SC03_024/ov_SC03_024_jr_80183BF8.c:3108", "src/ov_SC03_118/ov_SC03_118_jr_8017FB84.c:3796", "src/ov_SC03_118/ov_SC03_118_jr_8017FB84.c:4112", "src/ov_SC03_121/ov_SC03_121_jr_8017E1D0.c:4568", @@ -99,52 +105,46 @@ "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_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", "src/ov_SC05_007/ov_SC05_007_jr_8017BEBC.c:3335", "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" ] }, "classes": { "A": { - "bodies": 1397, - "distinct_bodies": 564, + "bodies": 1371, + "distinct_bodies": 540, "file_scope": 0, - "in_bodies": 2256, + "in_bodies": 2227, "kinds": { - "pin": 2256 + "pin": 2227 }, - "marked": 2256, - "sites": 2256, + "marked": 2227, + "sites": 2227, "tus": 1078, "unmarked": 0 }, "B": { - "bodies": 4648, - "distinct_bodies": 711, + "bodies": 4624, + "distinct_bodies": 690, "file_scope": 13, - "in_bodies": 11261, + "in_bodies": 11219, "kinds": { "asm-body": 13, - "barrier": 272, + "barrier": 267, "gte": 6355, "gte-lever": 451, "gte-unsigned": 270, "instruction": 228, - "keepalive": 337, - "launder": 666, + "keepalive": 333, + "launder": 633, "verbatim-body": 2682 }, - "marked": 2451, - "sites": 11274, + "marked": 2409, + "sites": 11232, "tus": 1426, "unmarked": 8823 }, @@ -180,15 +180,15 @@ "E": { "bodies": 1099, "distinct_bodies": 160, - "file_scope": 6425, + "file_scope": 6432, "in_bodies": 1368, "kinds": { - "asm-label": 7793 + "asm-label": 7800 }, "marked": 0, - "sites": 7793, + "sites": 7800, "tus": 2090, - "unmarked": 7793 + "unmarked": 7800 }, "F": { "bodies": 428, @@ -250,9 +250,9 @@ "coverage": { "asm": { "comment_dead": 6781, - "live": 15169, + "live": 15103, "macro_block": 194, - "raw": 22144 + "raw": 22078 }, "attribute": { "comment_dead": 0, @@ -268,9 +268,9 @@ }, "register": { "comment_dead": 8574, - "live": 2306, + "live": 2277, "macro_block": 18, - "raw": 10898 + "raw": 10869 }, "volatile": { "comment_dead": 2607, @@ -280,7 +280,7 @@ } }, "coverage_ok": true, - "elapsed_s": 22.1, + "elapsed_s": 23.0, "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": "4c7f60154", + "head": "765704ca5", "headers": 3181, "levers_AB": { - "asm": 1967, - "bodies": 2066, - "distinct_bodies": 756, - "marked": 4223, - "pins": 2256, - "sites": 4223, + "asm": 1925, + "bodies": 2033, + "distinct_bodies": 727, + "marked": 4152, + "pins": 2227, + "sites": 4152, "unmarked": 0, "what": "register pins + asm statements excluding GTE ops: the classes the phase drives to 0" }, @@ -433,7 +433,7 @@ }, "pins": { "bare_name": 9, - "init": 208, + "init": 207, "registers": { "$0": 56, "$10": 10, @@ -442,18 +442,17 @@ "$13": 6, "$14": 5, "$15": 1, - "$16": 83, - "$17": 33, + "$16": 82, + "$17": 30, "$18": 27, "$19": 18, - "$2": 777, + "$2": 766, "$20": 7, "$21": 5, "$22": 3, "$23": 6, "$25": 1, - "$29": 13, - "$3": 167, + "$3": 166, "$4": 503, "$5": 380, "$6": 62, @@ -465,30 +464,30 @@ "a1": 2, "v0": 2 }, - "sites": 2256, - "sp": 13, + "sites": 2227, + "sp": 0, "spelling": { - "__asm__": 2231, + "__asm__": 2202, "asm": 25 }, "volatile_qualified": 0, "zero": 56 }, - "src_stamp": "c6d641655ae61886", + "src_stamp": "2b9202a7d9bde37d", "tus": 4121, "unclassified": 0, "union_AD": { - "bodies": 5830, + "bodies": 5797, "by_kind": { "main": 128, - "md": 114, - "ov": 5421, + "md": 110, + "ov": 5392, "resident": 6, "shared": 161 }, - "copies_in_multi": 4857, - "distinct_bodies": 1087, - "multi_copy_classes": 114 + "copies_in_multi": 4849, + "distinct_bodies": 1058, + "multi_copy_classes": 110 }, "verbatim_excluded": { "functions": 13, diff --git a/.run/P36/census/lever_census.txt b/.run/P36/census/lever_census.txt index 823cdcc74..9072c76ea 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 22144 = live 15169 + macro-block 194 + comment/dead 6781 - coverage register raw 10898 = live 2306 + macro-block 18 + comment/dead 8574 + coverage asm raw 22078 = live 15103 + macro-block 194 + comment/dead 6781 + coverage register raw 10869 = live 2277 + 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 2256 2256 0 1397 564 1078 2256 0 {'pin': 2256} - B asm 11274 11261 13 4648 711 1426 2451 8823 {'gte-lever': 451, 'launder': 666, 'keepalive': 337, 'gte': 6355, 'gte-unsigned': 270, 'barrier': 272, 'instruction': 228, 'asm-body': 13, 'verbatim-body': 2682} - C volatile 1589 1437 152 495 94 609 14 1575 {'decl-body': 58, 'decl-file': 152, 'cast': 1377, 'param': 2} + A pins 2227 2227 0 1371 540 1078 2227 0 {'pin': 2227} + B asm 11232 11219 13 4624 690 1426 2409 8823 {'launder': 633, 'gte': 6355, 'keepalive': 333, 'gte-lever': 451, 'barrier': 267, 'instruction': 228, 'gte-unsigned': 270, 'asm-body': 13, 'verbatim-body': 2682} + C volatile 1589 1437 152 495 94 609 14 1575 {'decl-body': 58, 'cast': 1377, 'decl-file': 152, 'param': 2} D register 50 50 0 47 47 6 0 50 {'register': 50} - E asm-label 7793 1368 6425 1099 160 2090 0 7793 {'asm-label': 7793} + 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,830 bodies · 1,087 distinct (addresses normalized) · 114 multi-copy classes holding 4,857 bodies · by kind {'ov': 5421, 'shared': 161, 'main': 128, 'md': 114, 'resident': 6} - THE PHASE'S NUMBER (pins + asm statements, GTE excluded): 4,223 sites in 2,066 bodies (756 distinct) · marked !FAKE 4,223 · UNMARKED 0 + UNION A–D: 5,797 bodies · 1,058 distinct (addresses normalized) · 110 multi-copy classes holding 4,849 bodies · by kind {'ov': 5392, 'main': 128, 'md': 110, 'shared': 161, 'resident': 6} + THE PHASE'S NUMBER (pins + asm statements, GTE excluded): 4,152 sites in 2,033 bodies (727 distinct) · marked !FAKE 4,152 · 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,256 · $0 56 · $sp 13 · with initializer 208 · volatile-qualified 0 · bare-name 9 · spellings {'__asm__': 2231, 'asm': 25} + pins: 2,227 · $0 56 · $sp 0 · with initializer 207 · volatile-qualified 0 · bare-name 9 · spellings {'__asm__': 2202, 'asm': 25} 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': 272, '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': 337, 'launder/direct': 624, 'launder/via-macro': 42, 'verbatim-body/direct': 2682} + asm kinds: {'asm-body/direct': 13, 'barrier/direct': 267, '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': 591, '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.1 s + elapsed 23.0 s diff --git a/docs/lever-progress.tsv b/docs/lever-progress.tsv index 87af80e38..5e9650d5c 100644 --- a/docs/lever-progress.tsv +++ b/docs/lever-progress.tsv @@ -64,3 +64,4 @@ date milestone head sites_AB pins asm bodies_AB distinct_AB marked unmarked gte_ 2026-09-11 S104 T7: TU batches e14–e25 b5b701750 4340 2317 2023 2118 806 4340 0 451 314 1589 50 7788 445 76 2026-09-11 S104 T7: TU batches e18–e29 + R39b/R42 passes edd427861 4272 2279 1993 2090 780 4272 0 451 314 1589 50 7790 445 76 2026-09-11 S104 T7: e30–e34 batches a4f043bc3 4227 2257 1970 2068 758 4227 0 451 314 1589 50 7792 445 76 +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 diff --git a/docs/levers.md b/docs/levers.md index e1e50875a..038213f2c 100644 --- a/docs/levers.md +++ b/docs/levers.md @@ -110,6 +110,7 @@ counted, not marked). E, F and G belong to the canonical type layer and are the | 2026-09-11 | S104 T7: TU batches e14–e25 | 2317 | 2023 | **4340** | 2118 | 806 | 451 | 314 | 1589 | 50 | 7788 | 445 | 76 | `b5b701750` | | 2026-09-11 | S104 T7: TU batches e18–e29 + R39b/R42 passes | 2279 | 1993 | **4272** | 2090 | 780 | 451 | 314 | 1589 | 50 | 7790 | 445 | 76 | `edd427861` | | 2026-09-11 | S104 T7: e30–e34 batches | 2257 | 1970 | **4227** | 2068 | 758 | 451 | 314 | 1589 | 50 | 7792 | 445 | 76 | `a4f043bc3` | +| 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` | ### The campaign — every batch, from the ledger (derived on every render) @@ -401,7 +402,11 @@ counted, not marked). E, F and G belong to the canonical type layer and are the | `s104_e30` | 2026-09-11 | E | 0 | 0 | 0 | 8 | 3 | | `s104_e31` | 2026-09-11 | E | 0 | 0 | 0 | 13 | 5 | | `s104_e32` | 2026-09-11 | E | 0 | 0 | 0 | 9 | 5 | -| **total** | | | **17,122** | **20,778** | **283** | **30,199** | **10,678** | +| `s104_e36` | 2026-09-11 | E | 0 | 0 | 0 | 15 | 8 | +| `s104_e35` | 2026-09-11 | E | 0 | 0 | 0 | 6 | 3 | +| `s104_e38` | 2026-09-11 | E | 0 | 0 | 0 | 1 | 1 | +| `s104_e37` | 2026-09-11 | E | 0 | 0 | 0 | 53 | 23 | +| **total** | | | **17,122** | **20,778** | **283** | **30,274** | **10,713** | *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 ddcf74b7a..a6d875d73 100644 --- a/phase-ends/CURRENT_PHASE.md +++ b/phase-ends/CURRENT_PHASE.md @@ -1920,25 +1920,16 @@ accumulate here as the phase produces them.** struct close (link-only; banked with a marked do-while), func_80185D44 / func_80015608 / func_8001BBBC (near-misses, one lever or lever-free at 2/6). R22 after every batch (r22_h…l): `check-all: 218 passed, 0 failed of 218`; census **4,272** (exit 0). -## 🛑 SESSION CHECKPOINT — S104 (2026-09-11, FINAL, written at 86% context after the weekly usage limit killed the four running agents): T0–T6 ☑, **T7 RUNNING**. 5,097 → **4,227 sites** this session (−870); ~105 agent draws (d1–d39, e1–e38), ~205 classes closed at 0 — nearly all with ZERO levers; generators **R27–R43**; R22 `check-all: 218 passed, 0 failed of 218` at `046e84600` after every batch | `lever_census --check` exit 0 (4,227 marked, 0 UNMARKED, 0 orphans) +## 🛑 SESSION CHECKPOINT — S104 (2026-09-11, FINAL — the session's last commit follows this): T0–T6 ☑, **T7 RUNNING**. 5,097 → **4,152 sites** this session (−945); ~105 agent draws (d1–d39, e1–e38, ALL landed and banked — nothing in flight); ~220 classes closed at 0, nearly all with ZERO levers; generators **R27–R43**; R22 `check-all: 218 passed, 0 failed of 218` at `765704ca5` | `lever_census --check` exit 0 (4,152 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 (S104 ran at `/effort high` on -Opus 5 1M; every agent on Opus) and executes §2. **The weekly usage limit hit at ~09:30 on 2026-09-11 (resets Sep 14, 5 am -America/Denver)**: agents e35–e38 died mid-work with HTTP 429. **RESUME THEM in the fresh session with SendMessage to these -agent ids** (the harness resumes an agent from its transcript; each holds its packs and its own reading so far): -- **e35** `md_SC07_004` batch 4 (func_801A3594 func_801A395C func_801ABEE0 func_801A4ACC): agent id `a27df0b41311e4c0f` - — it left `md_SC07_004__func_801A3594/body.c` at score 11 (lever-free), nothing else. -- **e36** `ov_SC03_091` batch 2 (func_80185730 func_80188B64 func_8018632C func_801880E8): agent id `abfceafedb4d9cd83` - — it FINISHED two: `ov_SC03_091__func_8018632C/body.c` scores 0, zero levers (d39's casts ported); `ov_SC03_091__func_80185730/body.c` - scores 0 with the TU's existing def-side asm-label alias `aF80185730 … __asm__("func_80185730")` (the function returns a0 — - the same class-E form e9's func_8018209C was banked with). **Both UNBANKED** (the bank was interrupted at the pause) — bank - them first (§3), then resume the agent for the other two. -- **e37** `ov_SC03_097` (func_80180D54 func_8017FEA0 func_8017F7E4 func_80182498): agent id `a1cf3ce7d4576633f` — nothing written yet. -- **e38** `md_MAIN_003` (func_800D24D0 func_800D2A24 func_800D1E9C func_800D30D0): agent id `a77a7a2aa19ac3262` — nothing written yet. -Message each: "The session was cut by the usage limit; continue exactly where you were, same rules, same PACKs; report per function." -If a resume fails (the ids are session-local and may not survive), relaunch from the same briefs — the packs are committed; the -brief pattern is in the S104 log (a TU batch: 3–4 classes of one TU + that TU's closed mechanisms + METHOD steps 8–16). +Opus 5 1M; every agent on Opus) and executes §2. **NOTHING IS IN FLIGHT.** The weekly usage limit hit at ~09:30 on 2026-09-11 +(it resets **Sep 14, 5 am America/Denver**); Drew's limit then reset and the four dead agents (e35–e38) were RESUMED by +SendMessage to their ids and all four finished — every one of their closes is banked (or parked by name in §2.4). An +agent id survives a limit cut within a session; whether it survives a NEW session is untested — relaunch from the packs if not. +No new agents were drawn after the resume (Drew's instruction). Docs are current: SETUP rows for every tool change, METHOD +steps 8–16, decision log P36 S104, cookbook §456, the kit corpus regenerated (`tool_census --check: OK`). First commands: ``` git log --oneline -1 && git status --short | grep -v '^??' | wc -l @@ -1960,7 +1951,7 @@ git log --oneline -1 && git status --short | grep -v '^??' | wc -l the pack. Tell each agent what every pass already did and which same-name donors are NOT the same function. ### 2. NEXT -1. Bank e36's two finished bodies (§3's bank_list line shape; labels `s104_e36`), census, commit. Resume e35–e38 (§0). +1. (done) e35–e38 banked. Start the lane fresh: the residue is ~330 drawable classes (the picker in the log), the biggest TUs `ov_SC04_011_jr_8017D494` (~16), `src/800.c` (~6). 2. Keep the TU-batch lane at FIVE agents: `.venv/bin/python` the drawable-class picker in the log (group residue classes by TU, skip `$4`–`$7` pins = the missing-parameter shape, skip the park list, skip drawn packs), `delever_pack --build --min-copies 1 --only `, brief with the TU's closed mechanisms (their `mechanism.md` under `.run/P36/agents/__/`). ~345