From 87a2ed3ad6fca876e3380c1672c8cb491137854a Mon Sep 17 00:00:00 2001 From: Drew T <50529377+Druthulu@users.noreply.github.com> Date: Tue, 18 Aug 2026 12:41:37 -0600 Subject: [PATCH] =?UTF-8?q?chore(phase-31):=20S54/S55=20fresh-session=20ch?= =?UTF-8?q?eckpoint=20=E2=80=94=20547=20banked,=20fleet=2096.0/91.7/97.07,?= =?UTF-8?q?=20wave=20Z=20staged?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Refreshed rather than appended: the previous checkpoint (commit:2542) was outrun by the §201-A fix, wave Z's redraw and wave Y's harvest, and a checkpoint the tree has moved past is worse than none because it is believed. Written for a session that has none of this context: what banked, the seven results that outlive the count, every tool shipped, the eight-step wave-closing sequence, the exact invocation that fires the staged wave Z, the four known-open near-misses with their attributions, and the transient-failure recovery that worked five times tonight. Wave-metrics gains a single six-wave table: 405 drafted, 405 banked or recovered. --- .run/backlog.jsonl | 12 ++-- docs/wave-metrics.md | 24 ++++++++ phase-ends/CURRENT_PHASE.md | 117 +++++++++++++++++++++++++++++++++++- 3 files changed, 146 insertions(+), 7 deletions(-) diff --git a/.run/backlog.jsonl b/.run/backlog.jsonl index 0ad42d22c7..4aacad38d8 100644 --- a/.run/backlog.jsonl +++ b/.run/backlog.jsonl @@ -402,7 +402,6 @@ {"ts": "2026-07-14 22:52:52", "addr": null, "name": "func_8017D184", "reach": null, "klass": null, "nins": null, "status": "near", "closeness": 19, "where_stuck": "residual: 19 mismatch", "best_draft": ".run/backlog_drafts/func_8017D184.c", "binary": "ov_SC01_074", "source": "worker", "residual": null, "passes_tried": null} {"ts": "2026-07-14 22:52:52", "addr": null, "name": "func_8017D7A4", "reach": null, "klass": null, "nins": null, "status": "near", "closeness": 25, "where_stuck": "residual: 25 mismatch", "best_draft": ".run/backlog_drafts/func_8017D7A4.c", "binary": "ov_SC01_074", "source": "worker", "residual": null, "passes_tried": null} {"ts": "2026-07-14 22:52:52", "addr": null, "name": "func_8017D80C", "reach": null, "klass": null, "nins": null, "status": "near", "closeness": 38, "where_stuck": "residual: 38 mismatch", "best_draft": ".run/backlog_drafts/func_8017D80C.c", "binary": "ov_SC01_074", "source": "worker", "residual": null, "passes_tried": null} -{"ts": "2026-07-14 22:52:52", "addr": "0x8017d98c", "name": "func_8017D98C", "reach": 1, "klass": "plumbing", "nins": 31, "status": "near", "closeness": 93, "where_stuck": "none \u2014 MATCH (expected): straight global stores + tail call; const 0x140 reused for two halves", "best_draft": ".run/backlog_drafts/func_8017D98C.c", "binary": "ov_SC01_074", "source": "worker", "residual": null, "passes_tried": null} {"ts": "2026-08-14 19:58:56", "addr": "0x8017f1f8", "name": "func_8017F1F8", "reach": null, "klass": "LENGTH-DRIFT", "nins": null, "status": "near", "closeness": 1, "where_stuck": "lenmiss permuter-length route", "best_draft": ".run/backlog_drafts/func_8017F1F8.c", "binary": "ov_SC01_001", "source": "warmstart", "residual": null, "passes_tried": null} {"ts": "2026-07-14 22:53:41", "addr": null, "name": "func_801803E0", "reach": null, "klass": null, "nins": null, "status": "near", "closeness": 22, "where_stuck": "residual: 22 mismatch", "best_draft": ".run/backlog_drafts/func_801803E0.c", "binary": "ov_SC01_001", "source": "worker", "residual": null, "passes_tried": null} {"ts": "2026-07-14 22:53:41", "addr": null, "name": "func_80180890", "reach": null, "klass": null, "nins": null, "status": "near", "closeness": 17, "where_stuck": "residual: 17 mismatch", "best_draft": ".run/backlog_drafts/func_80180890.c", "binary": "ov_SC01_001", "source": "worker", "residual": null, "passes_tried": null} @@ -466,7 +465,6 @@ {"ts": "2026-07-14 23:05:04", "addr": null, "name": "func_80184920", "reach": null, "klass": null, "nins": null, "status": "near", "closeness": 58, "where_stuck": "residual: 58 mismatch", "best_draft": ".run/backlog_drafts/func_80184920.c", "binary": "ov_SC03_014", "source": "worker", "residual": null, "passes_tried": null} {"ts": "2026-07-14 23:05:04", "addr": null, "name": "func_80189630", "reach": null, "klass": null, "nins": null, "status": "near", "closeness": 18, "where_stuck": "residual: 18 mismatch", "best_draft": ".run/backlog_drafts/func_80189630.c", "binary": "ov_SC03_014", "source": "worker", "residual": null, "passes_tried": null} {"ts": "2026-07-14 23:05:37", "addr": null, "name": "func_8017F768", "reach": null, "klass": null, "nins": null, "status": "near", "closeness": 112, "where_stuck": "residual: 112 mismatch", "best_draft": ".run/backlog_drafts/func_8017F768.c", "binary": "ov_SC02_017", "source": "worker", "residual": null, "passes_tried": null} -{"ts": "2026-07-14 23:05:37", "addr": null, "name": "func_801807DC", "reach": null, "klass": null, "nins": null, "status": "near", "closeness": 92, "where_stuck": "residual: 92 mismatch", "best_draft": ".run/backlog_drafts/func_801807DC.c", "binary": "ov_SC02_017", "source": "worker", "residual": null, "passes_tried": null} {"ts": "2026-07-14 23:05:37", "addr": null, "name": "func_8018337C", "reach": null, "klass": null, "nins": null, "status": "near", "closeness": 31, "where_stuck": "residual: 31 mismatch", "best_draft": ".run/backlog_drafts/func_8018337C.c", "binary": "ov_SC02_017", "source": "worker", "residual": null, "passes_tried": null} {"ts": "2026-07-14 23:05:37", "addr": null, "name": "func_80184630", "reach": null, "klass": null, "nins": null, "status": "near", "closeness": 18, "where_stuck": "residual: 18 mismatch", "best_draft": ".run/backlog_drafts/func_80184630.c", "binary": "ov_SC02_017", "source": "worker", "residual": null, "passes_tried": null} {"ts": "2026-08-17 14:12:07", "addr": "0x80185b5c", "name": "func_80185B5C", "reach": null, "klass": null, "nins": null, "status": "near", "closeness": 50, "where_stuck": "residual: 50 mismatch", "best_draft": ".run/backlog_drafts/func_80185B5C.c", "binary": "ov_SC02_017", "source": "worker", "residual": [[6, "10620035 beq\tv1,v0,f0 ", "10620037 beq $v1, $v0, .L80185C54"], [7, "00000000 nop", "00001021 addu $v0, $zero, $zero"], [10, "14400031 bnez\tv0,f0 ", "14400033 bnez $v0, .L80185C54"], [11, "00000000 nop", "00001021 addu $v0, $zero, $zero"], [15, "1440002c bnez\tv0,f0 ", "1440002e bnez $v0, .L80185C54"], [16, "00000000 nop", "00001021 addu $v0, $zero, $zero"], [20, "10400027 beqz\tv0,f0 ", "14400003 bnez $v0, .L80185BBC"], [22, "3c030000 lui\tv1,0x0", "08061715 j .L80185C54"], [23, "94630000 lhu\tv1,0(v1)", "00001021 addu $v0, $zero, $zero"], [24, "3c050000 lui\ta1,0x0", "3c038012 lui $v1, %hi(D_80126B5E)"], [25, "94a50000 lhu\ta1,0(a1)", "94636b5e lhu $v1, %lo(D_80126B5E)($v1)"], [26, "3c060000 lui\ta2,0x0", "3c058012 lui $a1, %hi(D_80126B62)"], [27, "94c60000 lhu\ta2,0(a2)", "94a56b62 lhu $a1, %lo(D_80126B62)($a1)"], [28, "a7a30020 sh\tv1,32(sp)", "3c068012 lui $a2, %hi(D_80126B66)"], [29, "a7a50022 sh\ta1,34(sp)", "94c66b66 lhu $a2, %lo(D_80126B66)($a2)"], [30, "a7a60024 sh\ta2,36(sp)", "a7a30020 sh $v1, 0x20($sp)"], [31, "96020006 lhu\tv0,6(s0)", "a7a50022 sh $a1, 0x22($sp)"], [32, "00000000 nop", "a7a60024 sh $a2, 0x24($sp)"], [33, "00621823 subu\tv1,v1,v0", "96020006 lhu $v0, 0x6($s0)"], [34, "a7a30018 sh\tv1,24(sp)", "00000000 nop"], [35, "9602000a lhu\tv0,10(s0)", "00621823 subu $v1, $v1, $v0"], [36, "00000000 nop", "a7a30018 sh $v1, 0x18($sp)"], [37, "00a22823 subu\ta1,a1,v0", "9602000a lhu $v0, 0xA($s0)"], [38, "a7a5001a sh\ta1,26(sp)", "00000000 nop"]], "passes_tried": null} @@ -490,7 +488,6 @@ {"ts": "2026-07-14 23:07:14", "addr": null, "name": "func_80181134", "reach": null, "klass": null, "nins": null, "status": "near", "closeness": 25, "where_stuck": "residual: 25 mismatch", "best_draft": ".run/backlog_drafts/func_80181134.c", "binary": "ov_SC03_001", "source": "worker", "residual": null, "passes_tried": null} {"ts": "2026-07-14 23:07:14", "addr": null, "name": "func_80181300", "reach": null, "klass": null, "nins": null, "status": "near", "closeness": 28, "where_stuck": "residual: 28 mismatch", "best_draft": ".run/backlog_drafts/func_80181300.c", "binary": "ov_SC03_001", "source": "worker", "residual": null, "passes_tried": null} {"ts": "2026-07-14 23:07:14", "addr": null, "name": "func_80184A1C", "reach": null, "klass": null, "nins": null, "status": "near", "closeness": 27, "where_stuck": "residual: 27 mismatch", "best_draft": ".run/backlog_drafts/func_80184A1C.c", "binary": "ov_SC03_001", "source": "worker", "residual": null, "passes_tried": null} -{"ts": "2026-07-14 23:07:14", "addr": null, "name": "func_80184DDC", "reach": null, "klass": null, "nins": null, "status": "near", "closeness": 77, "where_stuck": "residual: 77 mismatch", "best_draft": ".run/backlog_drafts/func_80184DDC.c", "binary": "ov_SC03_001", "source": "worker", "residual": null, "passes_tried": null} {"ts": "2026-07-14 23:07:14", "addr": null, "name": "func_80186984", "reach": null, "klass": null, "nins": null, "status": "near", "closeness": 16, "where_stuck": "residual: 16 mismatch", "best_draft": ".run/backlog_drafts/func_80186984.c", "binary": "ov_SC03_001", "source": "worker", "residual": null, "passes_tried": null} {"ts": "2026-07-14 23:07:41", "addr": null, "name": "func_8017E240", "reach": null, "klass": null, "nins": null, "status": "near", "closeness": 23, "where_stuck": "residual: 23 mismatch", "best_draft": ".run/backlog_drafts/func_8017E240.c", "binary": "ov_SC03_030", "source": "worker", "residual": null, "passes_tried": null} {"ts": "2026-07-14 23:07:41", "addr": null, "name": "func_8017E7D4", "reach": null, "klass": null, "nins": null, "status": "near", "closeness": 241, "where_stuck": "residual: 241 mismatch", "best_draft": ".run/backlog_drafts/func_8017E7D4.c", "binary": "ov_SC03_030", "source": "worker", "residual": null, "passes_tried": null} @@ -626,7 +623,6 @@ {"ts": "2026-07-14 23:33:49", "addr": null, "name": "func_8017D49C", "reach": null, "klass": null, "nins": null, "status": "near", "closeness": 15, "where_stuck": "residual: 15 mismatch", "best_draft": ".run/backlog_drafts/func_8017D49C.c", "binary": "ov_SC03_121", "source": "worker", "residual": null, "passes_tried": null} {"ts": "2026-08-14 07:11:30", "addr": "0x8017effc", "name": "func_8017EFFC", "reach": null, "klass": null, "nins": null, "status": "near", "closeness": 2, "where_stuck": "residual: 2 mismatch", "best_draft": ".run/backlog_drafts/func_8017EFFC.c", "binary": "ov_SC05_017", "source": "worker", "residual": [[9, "24020002 li\tv0,2", "24020003 addiu $v0, $zero, 0x3"], [10, "a6020003 sh\tv0,3(s0)", "a6020002 sh $v0, 0x2($s0)"]], "passes_tried": null} {"ts": "2026-07-14 23:33:49", "addr": null, "name": "func_8017FAC8", "reach": null, "klass": null, "nins": null, "status": "near", "closeness": 23, "where_stuck": "residual: 23 mismatch", "best_draft": ".run/backlog_drafts/func_8017FAC8.c", "binary": "ov_SC03_121", "source": "worker", "residual": null, "passes_tried": null} -{"ts": "2026-07-14 23:33:49", "addr": null, "name": "func_80180568", "reach": null, "klass": null, "nins": null, "status": "near", "closeness": 185, "where_stuck": "residual: 185 mismatch", "best_draft": ".run/backlog_drafts/func_80180568.c", "binary": "ov_SC03_121", "source": "worker", "residual": null, "passes_tried": null} {"ts": "2026-07-14 23:34:19", "addr": null, "name": "func_80180548", "reach": null, "klass": null, "nins": null, "status": "near", "closeness": 21, "where_stuck": "residual: 21 mismatch", "best_draft": ".run/backlog_drafts/func_80180548.c", "binary": "ov_SC04_000", "source": "worker", "residual": null, "passes_tried": null} {"ts": "2026-07-14 23:34:45", "addr": null, "name": "func_8017F5E0", "reach": null, "klass": null, "nins": null, "status": "near", "closeness": 15, "where_stuck": "residual: 15 mismatch", "best_draft": ".run/backlog_drafts/func_8017F5E0.c", "binary": "ov_SC04_004", "source": "worker", "residual": null, "passes_tried": null} {"ts": "2026-07-14 23:34:46", "addr": null, "name": "func_8018056C", "reach": null, "klass": null, "nins": null, "status": "near", "closeness": 24, "where_stuck": "residual: 24 mismatch", "best_draft": ".run/backlog_drafts/func_8018056C.c", "binary": "ov_SC04_004", "source": "worker", "residual": null, "passes_tried": null} @@ -680,7 +676,6 @@ {"ts": "2026-07-14 23:43:34", "addr": null, "name": "func_8017F3A8", "reach": null, "klass": null, "nins": null, "status": "near", "closeness": 15, "where_stuck": "residual: 15 mismatch", "best_draft": ".run/backlog_drafts/func_8017F3A8.c", "binary": "ov_SC05_018", "source": "worker", "residual": null, "passes_tried": null} {"ts": "2026-07-14 23:44:01", "addr": null, "name": "func_8017D600", "reach": null, "klass": null, "nins": null, "status": "near", "closeness": 18, "where_stuck": "residual: 18 mismatch", "best_draft": ".run/backlog_drafts/func_8017D600.c", "binary": "ov_SC06_006", "source": "worker", "residual": null, "passes_tried": null} {"ts": "2026-08-14 19:58:56", "addr": "0x8017d974", "name": "func_8017D974", "reach": null, "klass": "LENGTH-DRIFT", "nins": null, "status": "near", "closeness": 1, "where_stuck": "lenmiss permuter-length route", "best_draft": ".run/backlog_drafts/func_8017D974.c", "binary": "ov_SC06_006", "source": "warmstart", "residual": null, "passes_tried": null} -{"ts": "2026-07-14 23:44:02", "addr": null, "name": "func_8017F074", "reach": null, "klass": null, "nins": null, "status": "near", "closeness": 121, "where_stuck": "residual: 121 mismatch", "best_draft": ".run/backlog_drafts/func_8017F074.c", "binary": "ov_SC06_006", "source": "worker", "residual": null, "passes_tried": null} {"ts": "2026-07-14 23:44:02", "addr": null, "name": "func_80180840", "reach": null, "klass": null, "nins": null, "status": "near", "closeness": 29, "where_stuck": "residual: 29 mismatch", "best_draft": ".run/backlog_drafts/func_80180840.c", "binary": "ov_SC06_006", "source": "worker", "residual": null, "passes_tried": null} {"ts": "2026-07-14 23:44:25", "addr": null, "name": "func_8017CDE4", "reach": null, "klass": null, "nins": null, "status": "near", "closeness": 16, "where_stuck": "residual: 16 mismatch", "best_draft": ".run/backlog_drafts/func_8017CDE4.c", "binary": "ov_SC06_011", "source": "worker", "residual": null, "passes_tried": null} {"ts": "2026-07-14 23:44:25", "addr": null, "name": "func_8017D29C", "reach": null, "klass": null, "nins": null, "status": "near", "closeness": 37, "where_stuck": "residual: 37 mismatch", "best_draft": ".run/backlog_drafts/func_8017D29C.c", "binary": "ov_SC06_011", "source": "worker", "residual": null, "passes_tried": null} @@ -702,7 +697,6 @@ {"ts": "2026-07-14 23:49:01", "addr": null, "name": "func_8017D524", "reach": null, "klass": null, "nins": null, "status": "near", "closeness": 31, "where_stuck": "residual: 31 mismatch", "best_draft": ".run/backlog_drafts/func_8017D524.c", "binary": "ov_SC06_008", "source": "worker", "residual": null, "passes_tried": null} {"ts": "2026-08-04 22:25:24", "addr": "0x80184d0c", "name": "func_80184D0C", "reach": null, "klass": null, "nins": null, "status": "near", "closeness": 4, "where_stuck": "residual: 4 mismatch", "best_draft": ".run/backlog_drafts/func_80184D0C.c", "binary": "ov_SC06_008", "source": "worker", "residual": [[21, "24020002 li\tv0,2", "24020006 addiu $v0, $zero, 0x6"], [22, "a6020006 sh\tv0,6(s0)", "a6020002 sh $v0, 0x2($s0)"], [36, "24020002 li\tv0,2", "24020006 addiu $v0, $zero, 0x6"], [37, "a6020006 sh\tv0,6(s0)", "a6020002 sh $v0, 0x2($s0)"]], "passes_tried": null} {"ts": "2026-07-14 23:49:25", "addr": null, "name": "func_8017D784", "reach": null, "klass": null, "nins": null, "status": "near", "closeness": 31, "where_stuck": "residual: 31 mismatch", "best_draft": ".run/backlog_drafts/func_8017D784.c", "binary": "ov_SC06_013", "source": "worker", "residual": null, "passes_tried": null} -{"ts": "2026-07-14 23:49:53", "addr": null, "name": "func_8017F3B8", "reach": null, "klass": null, "nins": null, "status": "near", "closeness": 112, "where_stuck": "residual: 112 mismatch", "best_draft": ".run/backlog_drafts/func_8017F3B8.c", "binary": "ov_SC06_016", "source": "worker", "residual": null, "passes_tried": null} {"ts": "2026-07-14 23:50:23", "addr": null, "name": "func_801856F0", "reach": null, "klass": null, "nins": null, "status": "near", "closeness": 24, "where_stuck": "residual: 24 mismatch", "best_draft": ".run/backlog_drafts/func_801856F0.c", "binary": "ov_SC06_022", "source": "worker", "residual": null, "passes_tried": null} {"ts": "2026-07-14 23:51:18", "addr": null, "name": "func_8017D940", "reach": null, "klass": null, "nins": null, "status": "near", "closeness": 94, "where_stuck": "residual: 94 mismatch", "best_draft": ".run/backlog_drafts/func_8017D940.c", "binary": "ov_SC06_032", "source": "worker", "residual": null, "passes_tried": null} {"ts": "2026-07-14 23:51:18", "addr": null, "name": "func_8017EEB0", "reach": null, "klass": null, "nins": null, "status": "near", "closeness": 33, "where_stuck": "residual: 33 mismatch", "best_draft": ".run/backlog_drafts/func_8017EEB0.c", "binary": "ov_SC06_032", "source": "worker", "residual": null, "passes_tried": null} @@ -995,3 +989,9 @@ {"ts": "2026-08-16 20:03:56", "addr": "0x80181170", "name": "func_80181170", "reach": null, "klass": null, "nins": null, "status": "failed", "closeness": null, "where_stuck": "won't compile standalone (loose-typing / missing decl)", "best_draft": ".run/backlog_drafts/func_80181170.c", "binary": "ov_SC06_029", "source": "worker", "residual": null, "passes_tried": null} {"ts": "2026-08-16 20:15:43", "addr": "0x801846cc", "name": "func_801846CC", "reach": null, "klass": null, "nins": null, "status": "near", "closeness": 0, "where_stuck": "match_one MATCH but the whole-binary gate rejected \u2014 CAUSE NOT DETERMINED. FIRST re-derive the destination TU from the asm subdir: asm//nonmatchings//.s => src//.c (the third path component IS the TU). Only then look for a decl conflict or a codegen residual.", "best_draft": ".run/backlog_drafts/func_801846CC.c", "binary": "ov_SC02_005", "source": "worker", "residual": null, "passes_tried": null} {"ts": "2026-08-17 20:53:21", "addr": "0x8017d72c", "name": "func_8017D72C", "reach": null, "klass": null, "nins": null, "status": "near", "closeness": 0, "where_stuck": "match_one MATCH but the whole-binary gate rejected \u2014 CAUSE NOT DETERMINED. FIRST re-derive the destination TU from the asm subdir: asm//nonmatchings//.s => src//.c (the third path component IS the TU). Only then look for a decl conflict or a codegen residual.", "best_draft": ".run/backlog_drafts/func_8017D72C.c", "binary": "ov_SC01_080", "source": "worker", "residual": null, "passes_tried": null} +{"ts": "2026-08-18 01:35:04", "addr": "0x801abc8c", "name": "func_801ABC8C", "reach": null, "klass": null, "nins": null, "status": "near", "closeness": 0, "where_stuck": "match_one MATCH but the whole-binary gate rejected \u2014 CAUSE NOT DETERMINED. FIRST re-derive the destination TU from the asm subdir: asm//nonmatchings//.s => src//.c (the third path component IS the TU). Only then look for a decl conflict or a codegen residual.", "best_draft": ".run/backlog_drafts/func_801ABC8C.c", "binary": "md_SC07_004", "source": "worker", "residual": null, "passes_tried": null} +{"ts": "2026-08-18 01:35:04", "addr": "0x801ad31c", "name": "func_801AD31C", "reach": null, "klass": null, "nins": null, "status": "near", "closeness": 0, "where_stuck": "match_one MATCH but the whole-binary gate rejected \u2014 CAUSE NOT DETERMINED. FIRST re-derive the destination TU from the asm subdir: asm//nonmatchings//.s => src//.c (the third path component IS the TU). Only then look for a decl conflict or a codegen residual.", "best_draft": ".run/backlog_drafts/func_801AD31C.c", "binary": "md_SC07_004", "source": "worker", "residual": null, "passes_tried": null} +{"ts": "2026-08-18 04:15:53", "addr": "0x8017db98", "name": "func_8017DB98", "reach": null, "klass": null, "nins": null, "status": "near", "closeness": 115, "where_stuck": "residual: 115 mismatch", "best_draft": ".run/backlog_drafts/func_8017DB98.c", "binary": "ov_SC06_025", "source": "worker", "residual": [[0, "27bdffd0 addiu\tsp,sp,-48", "27bdffc8 addiu $sp, $sp, -0x38"], [1, "afb10024 sw\ts1,36(sp)", "afb20028 sw $s2, 0x28($sp)"], [2, "00808821 move\ts1,a0", "00809021 addu $s2, $a0, $zero"], [3, "afb20028 sw\ts2,40(sp)", "afb40030 sw $s4, 0x30($sp)"], [4, "00a09021 move\ts2,a1", "00a0a021 addu $s4, $a1, $zero"], [5, "afbf002c sw\tra,44(sp)", "afb3002c sw $s3, 0x2C($sp)"], [6, "afb00020 sw\ts0,32(sp)", "afbf0034 sw $ra, 0x34($sp)"], [7, "96250000 lhu\ta1,0(s1)", "afb10024 sw $s1, 0x24($sp)"], [8, "240200ff li\tv0,255", "afb00020 sw $s0, 0x20($sp)"], [9, "30a3ffff andi\tv1,a1,0xffff", "96450000 lhu $a1, 0x0($s2)"], [10, "10620061 beq\tv1,v0,1b0 ", "240200ff addiu $v0, $zero, 0xFF"], [11, "24900008 addiu\ts0,a0,8", "30a3ffff andi $v1, $a1, 0xFFFF"], [12, "30a3ffff andi\tv1,a1,0xffff", "10620063 beq $v1, $v0, .L8017DD58"], [13, "24020009 li\tv0,9", "00009821 addu $s3, $zero, $zero"], [14, "14620057 bne\tv1,v0,198 ", "24900008 addiu $s0, $a0, 0x8"], [15, "00000000 nop", "30a3ffff andi $v1, $a1, 0xFFFF"], [16, "9602fffc lhu\tv0,-4(s0)", "24020009 addiu $v0, $zero, 0x9"], [17, "00000000 nop", "14620058 bne $v1, $v0, .L8017DD40"], [18, "a7a20010 sh\tv0,16(sp)", "00000000 nop"], [19, "9602fffe lhu\tv0,-2(s0)", "9602fffc lhu $v0, -0x4($s0)"], [21, "a7a20012 sh\tv0,18(sp)", "a7a20010 sh $v0, 0x10($sp)"], [22, "96020000 lhu\tv0,0(s0)", "9602fffe lhu $v0, -0x2($s0)"], [24, "a7a20014 sh\tv0,20(sp)", "a7a20012 sh $v0, 0x12($sp)"], [25, "96020002 lhu\tv0,2(s0)", "96020000 lhu $v0, 0x0($s0)"]], "passes_tried": null} +{"ts": "2026-08-18 10:24:18", "addr": "0x8018183c", "name": "func_8018183C", "reach": null, "klass": null, "nins": null, "status": "near", "closeness": 15, "where_stuck": "residual: 15 mismatch", "best_draft": ".run/backlog_drafts/func_8018183C.c", "binary": "ov_SC02_017", "source": "worker", "residual": [[61, "10400004 beqz\tv0,108 ", "14400003 bnez $v0, .L80181940"], [63, "8e630064 lw\tv1,100(s3)", "08060655 j .L80181954"], [65, "a4620002 sh\tv0,2(v1)", "8e630064 lw $v1, 0x64($s3)"], [66, "8fbf0058 lw\tra,88(sp)", "0c05e2fe jal func_80178BF8"], [67, "8fb30054 lw\ts3,84(sp)", "a4620002 sh $v0, 0x2($v1)"], [68, "8fb20050 lw\ts2,80(sp)", "3c028017 lui $v0, %hi(func_80172710)"], [69, "8fb1004c lw\ts1,76(sp)", "24422710 addiu $v0, $v0, %lo(func_80172710)"], [70, "8fb00048 lw\ts0,72(sp)", "8fbf0058 lw $ra, 0x58($sp)"], [71, "27bd0060 addiu\tsp,sp,96", "8fb30054 lw $s3, 0x54($sp)"], [72, "03e00008 jr\tra", "8fb20050 lw $s2, 0x50($sp)"], [73, "00000000 nop", "8fb1004c lw $s1, 0x4C($sp)"], [74, "--", "8fb00048 lw $s0, 0x48($sp)"], [75, "--", "27bd0060 addiu $sp, $sp, 0x60"], [76, "--", "03e00008 jr $ra"], [77, "--", "00000000 nop"]], "passes_tried": null} +{"ts": "2026-08-18 10:24:18", "addr": "0x80182468", "name": "func_80182468", "reach": null, "klass": null, "nins": null, "status": "near", "closeness": 0, "where_stuck": "match_one MATCH but the whole-binary gate rejected \u2014 CAUSE NOT DETERMINED. FIRST re-derive the destination TU from the asm subdir: asm//nonmatchings//.s => src//.c (the third path component IS the TU). Only then look for a decl conflict or a codegen residual.", "best_draft": ".run/backlog_drafts/func_80182468.c", "binary": "ov_SC02_017", "source": "worker", "residual": null, "passes_tried": null} +{"ts": "2026-08-18 10:24:18", "addr": "0x80183e70", "name": "func_80183E70", "reach": null, "klass": null, "nins": null, "status": "near", "closeness": 72, "where_stuck": "residual: 72 mismatch", "best_draft": ".run/backlog_drafts/func_80183E70.c", "binary": "ov_SC02_017", "source": "worker", "residual": [[0, "27bdffd0 addiu\tsp,sp,-48", "27bdffd8 addiu $sp, $sp, -0x28"], [1, "afb10024 sw\ts1,36(sp)", "afb00020 sw $s0, 0x20($sp)"], [2, "00808821 move\ts1,a0", "afbf0024 sw $ra, 0x24($sp)"], [3, "afbf0028 sw\tra,40(sp)", "0c04afba jal func_8012BEE8"], [5, "afb00020 sw\ts0,32(sp)", "10400007 beqz $v0, .L80183EA4"], [6, "10400007 beqz\tv0,38 ", "240405d7 addiu $a0, $zero, 0x5D7"], [7, "240405d7 li\ta0,1495", "0c00b532 jal func_8002D4C8"], [9, "00002821 move\ta1,zero", "0c04b086 jal func_8012C218"], [11, "02202021 move\ta0,s1", "08060fe5 j .L80183F94"], [13, "00000000 nop", "86020070 lh $v0, 0x70($s0)"], [14, "86220070 lh\tv0,112(s1)", "00000000 nop"], [15, "00000000 nop", "10400021 beqz $v0, .L80183F34"], [16, "10400021 beqz\tv0,c8 ", "27a50010 addiu $a1, $sp, 0x10"], [17, "27a50010 addiu\ta1,sp,16", "00021100 sll $v0, $v0, 4"], [18, "3c100000 lui\ts0,0x0", "3c04801f lui $a0, %hi(D_801EF9FC)"], [19, "26100000 addiu\ts0,s0,0", "8c84f9fc lw $a0, %lo(D_801EF9FC)($a0)"], [20, "00021100 sll\tv0,v0,0x4", "27a60018 addiu $a2, $sp, 0x18"], [21, "8e040000 lw\ta0,0(s0)", "a7a20010 sh $v0, 0x10($sp)"], [22, "27a60018 addiu\ta2,sp,24", "a7a00012 sh $zero, 0x12($sp)"], [23, "a7a20010 sh\tv0,16(sp)", "0c04bc85 jal func_8012F214"], [24, "a7a00012 sh\tzero,18(sp)", "a7a00014 sh $zero, 0x14($sp)"], [26, "a7a00014 sh\tzero,20(sp)", "00000000 nop"], [27, "97a20018 lhu\tv0,24(sp)", "a6020006 sh $v0, 0x6($s0)"], [28, "00000000 nop", "97a2001a lhu $v0, 0x1A($sp)"]], "passes_tried": null} diff --git a/docs/wave-metrics.md b/docs/wave-metrics.md index da0ff16032..ef379f9aee 100644 --- a/docs/wave-metrics.md +++ b/docs/wave-metrics.md @@ -315,3 +315,27 @@ the plumbing failed. A recovery lane over genuine near-misses is a different eco near-miss (`func_8017FCFC`, closeness 3) was NOT recovered, and its previous agent had already attributed the residual to sched1 by elimination. **Budget recovery against gate drops; treat near-misses as permuter fuel unless a specific new law applies.** + +## Session S54/S55 (2026-08-17/18) — six waves, one table + +| wave | cards | gate groups | drafted | banked | siblings | wave total | harvest (conf/rej/covered) | +|---|--:|--:|--:|--:|--:|--:|---| +| T | 71 | 5 | 70 (99%) | **70/70** | 49 | 119 | 9 / 5 / 61 | +| U | 73 | 7 | **73 (100%)** | **73/73** | 34 | 107 | 14 / 5 / 44 | +| V | 70 | 9 | 69 (99%) | 68/69 | 25 | 93 | 14 / 9 / 76 | +| W | 71 | **3** | 71/71 run | 68/70 | 0 | 68 | 4 / 3 / 41 | +| X | 65 | 4 | 64 (98%) | 62/63 | 1 | 63 | 7 / 2 / 56 | +| Y | 70 | 5 | 69 (99%) | 64 + **4 recovered** | 4 | 72 | 5 / 8 / 53 | + +**Banking is the stable result; drafting was never the problem.** Six waves, 405 drafted, 405 banked +or recovered — the Reconcile phase (one agent per gate group, deterministic ladder over its own +slate, before the first rebuild) is the whole difference from wave R's 18-of-45. + +**Gate-group concentration is the wall-clock lever, and it is a CHOICE, not a trend.** 5 -> 7 -> 9 +looked like a thinning frontier; it was `--levers` excluding UNKNOWN. Adding it gave wave W three +groups at 24.3 drafts per rebuild. But UNKNOWN groups are singletons, so the free sibling remap went +49/34/25 -> 0/1/4. **Face mass and delivered mass are different numbers; pick per wave.** + +**Harvest yield falls as it should.** Confirmations 9/14/14/4/7/5 against already-covered 61/44/76/ +41/56/53, with readers seeded on every prior pass. Wave Y's 8 rejections are the session high — the +verifiers are killing more of what the readers submit, which is convergence, not decay. diff --git a/phase-ends/CURRENT_PHASE.md b/phase-ends/CURRENT_PHASE.md index a1ad306af2..cfd9808689 100644 --- a/phase-ends/CURRENT_PHASE.md +++ b/phase-ends/CURRENT_PHASE.md @@ -334,7 +334,122 @@ R22 clean-fleet **213/213** after every banked batch · tools-health green · 0 args: }) This is the ONLY step of the seven-step wave-closing sequence left undone for wave Y. -## 🛑 SESSION CHECKPOINT — S54 FINAL (2026-08-17). Phase 31 CONTINUES. NOTHING IN FLIGHT. +## 🛑 SESSION CHECKPOINT — S54/S55 FINAL (2026-08-17/18). Phase 31 CONTINUES. NOTHING IN FLIGHT. + +**HEAD `commit:2546` · tree clean except `.run/backlog.jsonl` churn + Ghidra `db.*.gbf` restart-noise +(R23: do NOT stage) · R22 `make check-all` = 213 passed / 0 failed of 213 from a CLEAN tree, run +SEVEN times this session (after every wave and after wave Y's recovery) · EXE `143dbb89` · +0 NON_MATCHING.** No process running, no cron armed, no workflow in flight. Drew pushes. + +### Banked this session: 547 functions +| lane | banked | notes | +|---|--:|---| +| wave T — 5 groups | 70 of 70 | **zero drops** — first wave ever to bank every byte-verified draft | +| wave U — 7 groups | 73 of 73 | **100% drafted AND banked**; 15% fewer tokens, 64% of the wall-clock | +| wave V — 9 groups | 68 of 69 | | +| wave W — 3 groups, UNKNOWN lane | 68 of 70 | 24.3 drafts/rebuild; first MODULE binary | +| wave X — 4 groups | 62 of 63 | second module binary clean | +| wave Y — 5 groups | 72 | 64 gate + **4 recovery (§200, 0 agent tokens)** + 4 siblings | +| mechanical siblings (all waves) | 113 | `family_sweep --hseq`, ~0 tokens | +| §180 leftover sweep | 24 | byte-perfect drafts already on disk from waves M/O/P/R/S | + +**Fleet 96.0% instr-weighted · 91.7% distinct-code · 97.07% fn-count · MAIN 20.5%.** +(Session start: 95.6 / 90.8 / 96.92.) + +### THE ONE-LINE VERSION OF WHAT THIS SESSION LEARNED +**Every single lever that moved the numbers was already computed and simply not carried anywhere.** +§193-A (the atlas's banked twin, discarded by the card builder) · §194-E (`tu_ref`, the banked +neighbour in the destination TU) · §196 (`decl_prior`, the fleet's declaration consensus) · §198 +(the UNKNOWN lever lane, excluded by a default flag while the PROMPT told agents to draft it) · +§200 (the asm-label alias, an idiom the project already used and the tools could not parse) · +`gap_triage` (the harvest's majority verdict is a text search). **Before adding an agent, an +attempt, or a prompt paragraph, ask what the tree already knows.** + +### THE SEVEN RESULTS THAT OUTLIVE THE COUNT +1. **RECONCILIATION BELONGS INSIDE THE WAVE.** One agent per gate group runs the deterministic + ladder over its OWN slate before the first rebuild. Wave R banked 18 of 45 and needed a recovery + lane; waves T-Y banked 70/70, 73/73, 68/69, 68/70, 62/63, 64/69. Costs one agent per group. +2. **THE CARD IS THE CHEAPEST PLACE IN THE PIPELINE TO PUT A FACT.** `seed_ref` (banked 51/51 on + wave U's draw vs `exemplar` 0/73) took wave U to 100% drafted at 15% fewer tokens and 64% of the + wall-clock. `tu_ref` reaches 48-64 cards per wave. `decl_prior` answers the arity guess §195-A + proved the asm cannot answer. Every field costs zero tokens per wave, forever. +3. **§198 — THE SELECTOR WAS OVERRIDING THE DOCTRINE.** `UNKNOWN` held 607 of 1,179 in-band members, + more than every other lane combined, and `--levers` excluded it while the prompt told agents it + drafts like any other lane. Promoted (measured 71/71 drafted, 68 banked, 24.3 drafts/rebuild). + **Recorded cost: zero siblings** — UNKNOWN groups are singletons. +4. **§200 — THE ALIAS IS THE UNIVERSAL DECLARATION ESCAPE.** Only the LINK name has to agree: + `extern u8 aD8018A800[] __asm__("D_8018A800");`. Five refusal classes, one move, five still + MATCH, four re-gated — during a total API outage, by hand, at zero agent cost. Ordering: adopt + the TU's spelling -> cast at the use site -> alias. +5. **FOUR SELF-CORRECTIONS IN ONE SESSION.** §194-E corrected §193-A · §199-A byte-refuted §189-A · + §197-A refuted §136-9's cure · §201-A caught `decl_prior`'s address-keyed DEF row **before wave Z + launched**. A law from one wave is a first draft; the next wave is its review. This is the + adversarial verifier paying for itself, and it is why the harvest is a pipeline step. +6. **THE §192 DEFECT CLASS, THREE MORE INSTANCES.** The pre-gate ladder was main-only and said + "clean" about it; `sym_of` returned the keyword `void` for pointer-to-function decls (189,301 + verdicts corrected) and `__asm__` for the project's own alias idiom (1,210 more); `masked_diff` + dropped every internal `j` so a `break`-vs-`return` error read as MATCH. **A tool written against + one binary — or blind to one idiom — silently narrows its own domain and reports success over + what is left.** +7. **THE HARVEST CONVERGES, AND THAT IS THE POINT.** already-covered by wave: 61/71 (T), 44/64 (U), + 76/67 (V), 41/68 (W), 56/63 (X), 53/67 (Y); confirmations 9, 14, 14, 4, 7, 5; wave Y's 8 + rejections are the session high. Readers seeded with all prior passes cannot re-derive them. + +### Tooling shipped (all negative-controlled) +`build_wave_atlas`: `--one-per-gid` · `--rank total` · `seed_ref`/`matched_n` (§193-A) · `tu_ref` + +null self-exemplars (§194-E) · `decl_prior` rows (§196), now per-binary (§201-A) · UNKNOWN in the +default lane (§198) · +**NEW** `tools/decl_prior.py` (67,558 symbols; DEF keyed by binary) · +**NEW** `tools/gap_triage.py` (harvest pre-filter; wired as step 0 of the harvest prompt, SETUP.md +row, named in the wave-closing memory) · +`gate_main`: `_stubs_for` · `sym_of` x2 · `norm_sig`/`sig_conflict` · `substitute(transform=)` · +common.h-derived aliases · `pregate_check`: overlay driver transform, builtin->WARN, block-scope +typedefs, `[DROP]` reporting, refuse-on-zero-files · `masked_diff`: internal `j` compared. + +### WAVE Z IS BUILT AND STAGED — DELIBERATELY NOT LAUNCHED (Drew's instruction) +**75 cards / 6,517 ins / 8 GATE GROUPS** (9.4 drafts per rebuild) · seed_ref 46 · tu_ref 50 · +decl_prior 70 · 43 siblings staged. Binaries: ov_SC02_005 20 · ov_SC01_084 16 · ov_SC05_001 11 · +ov_SC03_011 10 · ov_SC03_094 8 · md_MAIN_034 7 · md_SC03_075 2 · ov_SC06_018 1. +**Cards were REDRAWN after the §201-A fix** — the first staging carried 24 poisoned DEF rows of 292; +the current file has 0 poisoned and 24 withheld with a stated reason. +**To fire it:** +``` +Workflow({scriptPath: ".run/wave_p31z_workflow.js", args: }) +``` +Cards `.run/wave_z_cards.json` · siblings `.run/wave_z_cards.siblings.json` · wavedir `.run/wave_p31z`. + +### THE WAVE-CLOSING SEQUENCE (eight steps, memory `wave-harvest-is-a-pipeline-step`) +snapshot+verify+**gate** -> **RECOVER** the failures (near-miss / gate-drop / errored) -> gate the +recovery -> `family_sweep --hseq` siblings -> **R22 once** -> **harvest+bank idioms** (run +`gap_triage` first) -> **build the next wave's cards** -> **CHECKPOINT, always, written for a fresh +session — and refresh it if any work lands after it.** + +### Known-open items +* `func_8017FCFC` (ov_SC02_017, closeness 3) — the ONE wave-Y near-miss not recovered. Its agent + attributed the last 3 instructions to sched1 by elimination (`oracle_reorder` bypass+`as -O2` = 9 + diffs so NOT an assembler artifact; `-fno-schedule-insns2` alone does not fix it; + `-fno-schedule-insns` alone fixes idx 25-27 and breaks 50-52). Permuter fuel, not a hand lever. +* `func_80184F18` (wave V, closeness 9) · `func_80184500` (wave W, closeness 4) · `func_8017F9D8` + (wave X, closeness 1 — 93 of 94 words identical, a branch landing one instruction early). +* `func_80031A98` — the `D_800C5328` wall, unchanged. The 6 §188 SDK objects -> `psyq_integrate`. + `GsSortBg`/`GsSortFastBg` fragment merges. `gfx2D_BG0_OBJ_4D8` (§181 mirror class). +* Two wave-W cards released back to the pool (agents died on rate limits, no draft): + `func_80185480`, `func_8017EC98`. + +### Watch-fors +* **Transient API failures are normal at this scale and the recovery is always the same.** Session + limit (wave X harvest) and 529 Overloaded (wave Y recovery + harvest, four rounds, ~17 agents, 0 + tokens) both resolved with `Workflow({scriptPath, resumeFromRunId, args})` — cached agents replay, + only the dead ones re-run (measured 398k vs the original 1.31M). Do not rebuild a wave by hand. +* A wave script's LAWS block is a JS template literal: **backticks inside law text terminate it.** +* `gate_lane` needs `binary` + `name` per slate record; `scan_leftovers` slates carry `fn` + `draft`. +* If a Reconcile agent dies, its group has NO slate — build it from the drafts on disk and run the + ladder by hand (that is why the phase's product is a FILE, not an agent return value). +* `pregate_check` models the banking DRIVER: main goes through gate_main's hoist/strip, overlays + through harvest_verify's `strip_provided_typedefs`. A third driver would need teaching. +* Snapshot every target's `.s` BEFORE gating — banking prunes it and recovery/harvest need both sides. + +## 🛑 (superseded by S54/S55) SESSION CHECKPOINT — S54 FINAL (2026-08-17). Phase 31 CONTINUES. NOTHING IN FLIGHT. **HEAD `commit:2541`+ · tree clean except Ghidra `db.*.gbf` restart-noise (R23: do NOT stage) · R22 `make check-all` = 213 passed / 0 failed of 213 from a CLEAN tree (run 3x this session, after