fix(maintenance): restore the S59 lane logic a stale second copy had reverted

.run/maintenance.sh (what runs) and tools/lanes/maintenance.sh (a pre-S59 copy) had
diverged. The 150->50 threshold tune landed on the stale copy and was then copied over
the live one, silently reverting five S59 fixes:

* the R47 shape filter (staging fell back to status=='AGREE' alone — the exact defect
  that staged 82 hopeless drafts every 45 minutes)
* the R48 (binary, fn) keying (bare-fn keys collide across overlays)
* reloc --fix MISMATCH auto-repair (measured 4/4 repaired to AGREE)
* rtu_second_chance (re-judges standalone COMPILE-FAILs against the real TU)
* fix_tu_ret_decls (the return-type half of the stale-decl wall)

Rebuilt from the S59 lineage with the 150->50 threshold and the periodic fleet R22
re-applied, both paths now byte-identical, `bash -n` clean, and the two-path hazard
documented in the header so the next edit cannot repeat it.

Also: relaunch_drafter_shell.sh 30s -> 5s ready-marker poll; regenerated backlog and
fleet progress artifacts.
This commit is contained in:
Drew T
2026-08-25 00:35:27 -06:00
parent 5bd66c7b5b
commit 75bfb04226
6 changed files with 987 additions and 1155 deletions
+12
View File
@@ -982,3 +982,15 @@
{"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/<ov>/nonmatchings/<TU_stem>/<fn>.s => src/<ov>/<TU_stem>.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 <func_80183E70+0x38>", "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 <func_80183E70+0xc8>", "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}
{"ts": "2026-08-22 22:59:40", "addr": "0x80181714", "name": "func_80181714", "reach": null, "klass": "permuter-fuel", "nins": 121, "status": "near", "closeness": 4, "where_stuck": "P31 S56 bake-off: stealth/ox-alpha plateaued at near 4 of 121 across the last FIVE oracle calls (trajectory 67-23-44-55-50-10-85-13-10-10-4-55-4-10-4-4-4-4), 20 oracle calls total, then the run was stopped while rate-limited by the Stealth upstream shared pool. 4 mismatched instructions is permuter territory, not a hand lever. NOTE this function IS matchable: Opus, GLM-5.3 and fueled DeepSeek all reached MATCH on it (all reloc_identity-verified), so a near-4 here is a model plateau, not a wall.", "best_draft": ".run/backlog_drafts/func_80181714.c", "binary": "ov_SC02_016", "source": "bakeoff-ox-alpha", "residual": null, "passes_tried": null}
{"ts": "2026-08-23 00:33:54", "addr": "0x8017da98", "name": "func_8017DA98", "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/<ov>/nonmatchings/<TU_stem>/<fn>.s => src/<ov>/<TU_stem>.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_8017DA98.c", "binary": "ov_SC03_015", "source": "worker", "residual": null, "passes_tried": null}
{"ts": "2026-08-23 00:35:57", "addr": "0x80181ed4", "name": "func_80181ED4", "reach": null, "klass": null, "nins": null, "status": "near", "closeness": 42, "where_stuck": "residual: 42 mismatch", "best_draft": ".run/backlog_drafts/func_80181ED4.c", "binary": "ov_SC03_093", "source": "worker", "residual": [[0, "27bdffe8 addiu\tsp,sp,-24", "27bdffc8 addiu $sp, $sp, -0x38"], [1, "afb00010 sw\ts0,16(sp)", "afb1002c sw $s1, 0x2C($sp)"], [2, "00808021 move\ts0,a0", "00808821 addu $s1, $a0, $zero"], [3, "afbf0014 sw\tra,20(sp)", "afb00028 sw $s0, 0x28($sp)"], [4, "96020100 lhu\tv0,256(s0)", "3c10801a lui $s0, %hi(D_801A469C)"], [5, "00000000 nop", "2610469c addiu $s0, $s0, %lo(D_801A469C)"], [6, "30420004 andi\tv0,v0,0x4", "02002821 addu $a1, $s0, $zero"], [7, "10400005 beqz\tv0,34 <func_80181ED4+0x34>", "3c048012 lui $a0, %hi(D_80126B78)"], [8, "00000000 nop", "8c846b78 lw $a0, %lo(D_80126B78)($a0)"], [10, "00000000 nop", "afbf0030 sw $ra, 0x30($sp)"], [12, "00000000 nop", "24840034 addiu $a0, $a0, 0x34"], [13, "3c050000 lui\ta1,0x0", "26050008 addiu $a1, $s0, 0x8"], [14, "24a50000 addiu\ta1,a1,0", "27b00020 addiu $s0, $sp, 0x20"], [16, "02002021 move\ta0,s0", "8c846b78 lw $a0, %lo(D_80126B78)($a0)"], [17, "24020002 li\tv0,2", "02003021 addu $a2, $s0, $zero"], [18, "a6020002 sh\tv0,2(s0)", "0c04bc53 jal func_8012F14C"], [19, "24020019 li\tv0,25", "24840034 addiu $a0, $a0, 0x34"], [20, "ae02001c sw\tv0,28(s0)", "27a60018 addiu $a2, $sp, 0x18"], [21, "8fbf0014 lw\tra,20(sp)", "8e240020 lw $a0, 0x20($s1)"], [22, "8fb00010 lw\ts0,16(sp)", "8e250058 lw $a1, 0x58($s1)"], [23, "27bd0018 addiu\tsp,sp,24", "0c04d622 jal func_80135888"], [24, "03e00008 jr\tra", "02003821 addu $a3, $s0, $zero"], [25, "00000000 nop", "14400003 bnez $v0, .L80181F48"], [26, "--", "24040001 addiu $a0, $zero, 0x1"]], "passes_tried": null}
{"ts": "2026-08-23 00:40:02", "addr": "0x801801e0", "name": "func_801801E0", "reach": null, "klass": null, "nins": null, "status": "near", "closeness": 38, "where_stuck": "residual: 38 mismatch", "best_draft": ".run/backlog_drafts/func_801801E0.c", "binary": "ov_SC04_019", "source": "worker", "residual": [[2, "00808021 move\ts0,a0", "afbf0014 sw $ra, 0x14($sp)"], [3, "24020001 li\tv0,1", "0c00a541 jal func_80029504"], [4, "3c050000 lui\ta1,0x0", "00808021 addu $s0, $a0, $zero"], [5, "24a50000 addiu\ta1,a1,0", "2442ff38 addiu $v0, $v0, -0xC8"], [6, "afbf0014 sw\tra,20(sp)", "2c4201ae sltiu $v0, $v0, 0x1AE"], [8, "a6020002 sh\tv0,2(s0)", "00000000 nop"], [9, "24020080 li\tv0,128", "0c04b2b9 jal func_8012CAE4"], [10, "a60000fe sh\tzero,254(s0)", "02002021 addu $a0, $s0, $zero"], [11, "a60200fc sh\tv0,252(s0)", "0806009c j .L80180270"], [12, "8fbf0014 lw\tra,20(sp)", "00000000 nop"], [13, "8fb00010 lw\ts0,16(sp)", "0c04b06e jal func_8012C1B8"], [14, "27bd0018 addiu\tsp,sp,24", "00000000 nop"], [15, "03e00008 jr\tra", "14400003 bnez $v0, .L8018022C"], [16, "00000000 nop", "ae020020 sw $v0, 0x20($s0)"], [17, "--", "0c04b2b9 jal func_8012CAE4"], [18, "--", "02002021 addu $a0, $s0, $zero"], [19, "--", "8e040020 lw $a0, 0x20($s0)"], [20, "--", "0c007085 jal func_8001C214"], [21, "--", "00002821 addu $a1, $zero, $zero"], [22, "--", "02002021 addu $a0, $s0, $zero"], [23, "--", "3c058019 lui $a1, %hi(D_8019181C)"], [24, "--", "24a5181c addiu $a1, $a1, %lo(D_8019181C)"], [25, "--", "24020001 addiu $v0, $zero, 0x1"], [26, "--", "0c06132e jal func_80184CB8"]], "passes_tried": null}
{"ts": "2026-08-23 00:41:06", "addr": "0x8017e7d0", "name": "func_8017E7D0", "reach": null, "klass": null, "nins": null, "status": "near", "closeness": 47, "where_stuck": "residual: 47 mismatch", "best_draft": ".run/backlog_drafts/func_8017E7D0.c", "binary": "ov_SC05_007", "source": "worker", "residual": [[2, "3c050000 lui\ta1,0x0", "00808021 addu $s0, $a0, $zero"], [3, "24a50000 addiu\ta1,a1,0", "2403ffef addiu $v1, $zero, -0x11"], [6, "00808021 move\ts0,a0", "00000000 nop"], [7, "10400026 beqz\tv0,b8 <func_8017E7D0+0xb8>", "00431024 and $v0, $v0, $v1"], [8, "3c06fffb lui\ta2,0xfffb", "0c05fbd2 jal func_8017EF48"], [9, "34c6dfdd ori\ta2,a2,0xdfdd", "ae0200dc sw $v0, 0xDC($s0)"], [10, "02002021 move\ta0,s0", "2402000a addiu $v0, $zero, 0xA"], [11, "3c050000 lui\ta1,0x0", "ae02001c sw $v0, 0x1C($s0)"], [12, "24a50000 addiu\ta1,a1,0", "8fbf0014 lw $ra, 0x14($sp)"], [13, "8e0300c4 lw\tv1,196(s0)", "8fb00010 lw $s0, 0x10($sp)"], [14, "24020001 li\tv0,1", "27bd0018 addiu $sp, $sp, 0x18"], [15, "a20200c0 sb\tv0,192(s0)", "03e00008 jr $ra"], [16, "3c020000 lui\tv0,0x0", "00000000 nop"], [17, "24420000 addiu\tv0,v0,0", "--"], [18, "ae0200bc sw\tv0,188(s0)", "--"], [19, "ae0600b4 sw\ta2,180(s0)", "--"], [20, "a60000de sh\tzero,222(s0)", "--"], [21, "34630001 ori\tv1,v1,0x1", "--"], [22, "0c000000 jal\t0 <func_8017E7D0>", "--"], [23, "ae0300c4 sw\tv1,196(s0)", "--"], [24, "8e020020 lw\tv0,32(s0)", "--"], [25, "00000000 nop", "--"], [26, "94430018 lhu\tv1,24(v0)", "--"], [27, "96020070 lhu\tv0,112(s0)", "--"]], "passes_tried": null}
{"ts": "2026-08-23 00:44:06", "addr": "0x8017f250", "name": "func_8017F250", "reach": null, "klass": null, "nins": null, "status": "near", "closeness": 52, "where_stuck": "residual: 52 mismatch", "best_draft": ".run/backlog_drafts/func_8017F250.c", "binary": "ov_SC07_002", "source": "worker", "residual": [[0, "27bdffd8 addiu\tsp,sp,-40", "27bdffe8 addiu $sp, $sp, -0x18"], [1, "afb20018 sw\ts2,24(sp)", "afbf0010 sw $ra, 0x10($sp)"], [2, "00809021 move\ts2,a0", "0c0605f8 jal func_801817E0"], [3, "00002821 move\ta1,zero", "24040002 addiu $a0, $zero, 0x2"], [4, "afbf0020 sw\tra,32(sp)", "3c048018 lui $a0, %hi(func_8017FB48)"], [5, "afb3001c sw\ts3,28(sp)", "2484fb48 addiu $a0, $a0, %lo(func_8017FB48)"], [6, "afb10014 sw\ts1,20(sp)", "2402012c addiu $v0, $zero, 0x12C"], [8, "afb00010 sw\ts0,16(sp)", "ac226954 sw $v0, %lo(D_80126954)($at)"], [10, "02402021 move\ta0,s2", "3c018012 lui $at, %hi(D_8012695C)"], [11, "10400024 beqz\tv0,c0 <func_8017F250+0xc0>", "ac22695c sw $v0, %lo(D_8012695C)($at)"], [12, "00000000 nop", "24020200 addiu $v0, $zero, 0x200"], [13, "3c050000 lui\ta1,0x0", "3c018012 lui $at, %hi(D_80126968)"], [14, "24a50000 addiu\ta1,a1,0", "a4226968 sh $v0, %lo(D_80126968)($at)"], [16, "02402021 move\ta0,s2", "3c018012 lui $at, %hi(D_8012696A)"], [17, "3c130000 lui\ts3,0x0", "a420696a sh $zero, %lo(D_8012696A)($at)"], [18, "26730000 addiu\ts3,s3,0", "3c018012 lui $at, %hi(D_8012696C)"], [19, "00008821 move\ts1,zero", "a420696c sh $zero, %lo(D_8012696C)($at)"], [20, "3c100000 lui\ts0,0x0", "3c018012 lui $at, %hi(D_80126976)"], [21, "26100000 addiu\ts0,s0,0", "a4206976 sh $zero, %lo(D_80126976)($at)"], [22, "8e020000 lw\tv0,0(s0)", "3c018012 lui $at, %hi(D_80126978)"], [23, "00000000 nop", "a4226978 sh $v0, %lo(D_80126978)($at)"], [24, "14530003 bne\tv0,s3,70 <func_8017F250+0x70>", "3c018012 lui $at, %hi(D_8012697A)"], [25, "00000000 nop", "a420697a sh $zero, %lo(D_8012697A)($at)"], [27, "02002021 move\ta0,s0", "24050001 addiu $a1, $zero, 0x1"]], "passes_tried": null}
{"ts": "2026-08-24 11:32:53", "addr": "0x801F218C", "name": "func_801F218C", "reach": null, "klass": "DELAY-SLOT", "nins": 83, "status": "near", "closeness": 1, "where_stuck": "jal func_80188F10 delay slot: gcc schedules addu $a0,$s0,$zero before the call, target leaves nop and fills the beqz delay instead; 5a asm fence (both sides), if/else inversion, early-break form and 1200s permuter -j12 all fail to move it", "best_draft": ".run/s59/v3.c", "binary": null, "source": "s59-island-split", "residual": null, "passes_tried": null}
{"ts": "2026-08-24 21:19:23", "addr": "0x8014e934", "name": "func_8014E934", "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/<ov>/nonmatchings/<TU_stem>/<fn>.s => src/<ov>/<TU_stem>.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_8014E934.c", "binary": "ov_MAIN_012", "source": "worker", "residual": null, "passes_tried": null}
{"ts": "2026-08-24 21:26:33", "addr": "0x8014e934", "name": "func_8014E934", "reach": null, "klass": "ASM-BODY", "nins": 22, "status": "near", "closeness": 0, "where_stuck": "CAUSE DETERMINED (P31 S59, supersedes the CAUSE-NOT-DETERMINED row): the A-prop draft's body is a VERBATIM __asm__ block (aprop_autodraft transcribing a \u00a7265-style seed), and it carries HEX immediates (0x1f80, 0x03fc). \u00a7265's transcription rule is that MASPSX requires DECIMAL immediates inside __asm__ strings, so the block does not assemble to the target bytes and the gate near-misses forever. match_one calls it MATCH because the body IS the instruction text. Two consequences: aprop_autodraft now REFUSES verbatim-asm seeds (they are not decompiled C and must not propagate across a family), and this function is ordinary wave fuel \u2014 it needs a real C body, not a re-gate of this draft.", "best_draft": null, "binary": "ov_MAIN_012", "source": "s59-aprop-triage", "residual": null, "passes_tried": null}
{"ts": "2026-08-24 21:27:51", "addr": "0x80162ccc", "name": "func_80162CCC", "reach": null, "klass": null, "nins": null, "status": "failed", "closeness": null, "where_stuck": "won't compile standalone (loose-typing / missing decl)", "best_draft": null, "binary": "ov_MAIN_012-cn-cast-rc", "source": "worker", "residual": null, "passes_tried": null}
{"ts": "2026-08-24 21:35:50", "addr": "0x80162ccc", "name": "func_80162CCC", "reach": null, "klass": null, "nins": null, "status": "failed", "closeness": null, "where_stuck": "won't compile standalone (loose-typing / missing decl)", "best_draft": null, "binary": "ov_MAIN_012-cn-cast", "source": "worker", "residual": null, "passes_tried": null}
{"ts": "2026-08-24 21:40:35", "addr": "0x80182db4", "name": "func_80182DB4", "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_80182DB4.c", "binary": "ov_SC01_084", "source": "worker", "residual": null, "passes_tried": null}
{"ts": "2026-08-24 21:41:42", "addr": "0x801803d0", "name": "func_801803D0", "reach": null, "klass": null, "nins": null, "status": "near", "closeness": 22, "where_stuck": "residual: 22 mismatch", "best_draft": ".run/backlog_drafts/func_801803D0.c", "binary": "ov_SC02_000", "source": "worker", "residual": [[0, "24020005 li\tv0,5", "27bdffe8 addiu $sp, $sp, -0x18"], [1, "a4820002 sh\tv0,2(a0)", "afb00010 sw $s0, 0x10($sp)"], [2, "03e00008 jr\tra", "00808021 addu $s0, $a0, $zero"], [3, "ac80001c sw\tzero,28(a0)", "2402000b addiu $v0, $zero, 0xB"], [4, "--", "afbf0014 sw $ra, 0x14($sp)"], [5, "--", "a6020002 sh $v0, 0x2($s0)"], [6, "--", "24020001 addiu $v0, $zero, 0x1"], [7, "--", "a6020034 sh $v0, 0x34($s0)"], [8, "--", "3402aa10 ori $v0, $zero, 0xAA10"], [9, "--", "3c05801a lui $a1, %hi(D_801A72C4)"], [10, "--", "24a572c4 addiu $a1, $a1, %lo(D_801A72C4)"], [11, "--", "a600005e sh $zero, 0x5E($s0)"], [12, "--", "0c04aa0a jal func_8012A828"], [13, "--", "a602005c sh $v0, 0x5C($s0)"], [14, "--", "2402001e addiu $v0, $zero, 0x1E"], [15, "--", "a2000102 sb $zero, 0x102($s0)"], [16, "--", "ae02001c sw $v0, 0x1C($s0)"], [17, "--", "8fbf0014 lw $ra, 0x14($sp)"], [18, "--", "8fb00010 lw $s0, 0x10($sp)"], [19, "--", "27bd0018 addiu $sp, $sp, 0x18"], [20, "--", "03e00008 jr $ra"], [21, "--", "00000000 nop"]], "passes_tried": null}
+33 -2
View File
@@ -1,4 +1,9 @@
#!/usr/bin/env bash
# TWO PATHS, ONE SCRIPT: this file is tracked at BOTH .run/maintenance.sh and
# tools/lanes/maintenance.sh, and `bash .run/maintenance.sh` is what actually runs. They diverged
# once (P31 S59->S60): tools/lanes/ held a pre-S59 copy, an edit landed there, and copying it over
# .run/ silently reverted the R47 shape filter, the R48 (binary,fn) keying, reloc --fix,
# rtu_second_chance and fix_tu_ret_decls. EDIT ONE, COPY TO THE OTHER, DIFF BOTH BEFORE COMMITTING.
# The FREE lane on a loop: re-run the A-prop sibling remap whenever the gater is idle.
#
# It compounds — every exemplar the waves bank creates new PURE seeds — and costs zero model
@@ -28,8 +33,12 @@ while [ ! -e .run/ox_campaign.stop ]; do
NEWFN=$(git log -$(( NOW - LAST > 0 ? NOW - LAST : 1 )) --format=%s 2>/dev/null \
| grep -oP '— \K[0-9]+(?= banked)' | paste -sd+ | bc 2>/dev/null || echo 0)
NEWFN=${NEWFN:-0}
if [ "$NEWFN" -lt 150 ]; then
say "only $NEWFN functions banked since the last pass (need 150) — skipping"
# THRESHOLD 150 -> 50 (Drew, P31 S59): the A-prop pipeline was rebuilt to consume every
# verdict layer and the lane now also carries the free reject-recovery and the periodic
# fleet R22, so a pass is worth running on a smaller refill than when it only re-swept an
# unchanged sibling pool. 150 was tuned for the old dead lane.
if [ "$NEWFN" -lt 50 ]; then
say "only $NEWFN functions banked since the last pass (need 50) — skipping"
sleep 1800; continue
fi
echo "$NOW" > .run/maint_last_rev
@@ -154,6 +163,28 @@ PY
say "nothing banked this pass"
fi
fi
# PERIODIC FLEET CHECK (P31 S59). Two binaries sat RED for hours — ov_SC07_010 from a commit whose
# tree state was never built, ov_SC07_002 from a stale 2-table jtbl pad spec — and NOTHING noticed,
# because every lane only ever checks the binary it is currently touching. A byte-gate is a
# correctness oracle with a null coverage model: it is silent about everything it did not build.
# So sweep the whole fleet on a slow cadence, report REDs loudly, and FIX NOTHING automatically —
# a wrong repair to a pad spec or a config is exactly how a silent byte shift gets committed.
# Every 4th pass (~3 h). Skipped while any gate is in flight: check-all rebuilds stale objects and
# must not race a gate's build for the same binary.
FC=$(cat .run/maint_fleet_count 2>/dev/null || echo 0); FC=$((FC+1)); echo "$FC" > .run/maint_fleet_count
if [ $((FC % 4)) -eq 0 ] && ! pgrep -f 'tools/sweep_parallel|tools/gate_stage|tools/gate_main' >/dev/null; then
say "fleet R22 sweep (every 4th pass) — this checks binaries no lane has touched"
make check-all JOBS=12 >.run/fleet_check.log 2>&1 || true
grep -E "^\[FAIL\]" .run/check-all.txt 2>/dev/null | awk '{print $2}' > .run/fleet_red.txt || true
NRED=$(grep -c . .run/fleet_red.txt 2>/dev/null || echo 0)
if [ "$NRED" -gt 0 ]; then
say "*** $NRED BINARY/BINARIES ARE RED — see .run/fleet_red.txt (NOT auto-fixed, by design) ***"
head -8 .run/fleet_red.txt | sed 's/^/ RED: /'
else
say "fleet R22: all binaries byte-identical ($(grep -c '^\[ OK \]' .run/check-all.txt 2>/dev/null || echo 0) checked)"
fi
fi
say "pass complete; sleeping 45m"
sleep 2700
done
+692 -982
View File
File diff suppressed because it is too large Load Diff
+161 -161
View File
@@ -4,230 +4,230 @@
# cross-binary collapsible-byte leverage: docs/duplicates.cross.md.
# THREE progress metrics (all matter — see the labels):
FLEET fn-count byte-ident: 352663 / 363150 = 97.11% (REAL+LINKED+empties; FUNCTION-count, ×134-inflated — one crack counts per overlay)
FLEET instr-weighted : 12998613 / 13523865 = 96.1% (shipped .text across main + resident + 211 overlays; the decomp.dev-DISPLAY number)
FLEET distinct-code(uniq): 5375642 / 5851972 = 91.9% (82542/90929 unique fns; the DISTINCT-RE number)
MAIN game-code weighted : 16291 / 79510 = 20.5% (INCLUDED in the fleet numbers above since 2026-07-22 — roadmap §1 metrics contract; LINKED-excluding Ghidra sig dated 2026-08-05; caveat is R34: no independent second oracle for a PS-X EXE, NOT drift)
(fleet EXCLUDING main, for continuity with pre-2026-07-22 readings: 12982322 / 13444355 = 96.6%)
FLEET fn-count byte-ident: 357260 / 363127 = 98.38% (REAL+LINKED+empties; FUNCTION-count, ×134-inflated — one crack counts per overlay)
FLEET instr-weighted : 13171872 / 13523865 = 97.4% (shipped .text across main + resident + 211 overlays; the decomp.dev-DISPLAY number)
FLEET distinct-code(uniq): 5535488 / 5851972 = 94.6% (86568/90929 unique fns; the DISTINCT-RE number)
MAIN game-code weighted : 18697 / 79510 = 23.5% (INCLUDED in the fleet numbers above since 2026-07-22 — roadmap §1 metrics contract; LINKED-excluding Ghidra sig dated 2026-08-05; caveat is R34: no independent second oracle for a PS-X EXE, NOT drift)
(fleet EXCLUDING main, for continuity with pre-2026-07-22 readings: 13153175 / 13444355 = 97.8%)
FLEET REAL substantive : 350493 (of which dedup-shared 254655 via 2165 groups / 254731 instances)
FLEET REAL substantive : 355090 (of which dedup-shared 254655 via 2165 groups / 254731 instances)
FLEET LINKED PsyQ objs : 959
FLEET NON_MATCHING : 4 (0 in any default build — G4)
FLEET INCLUDE_ASM stubs : 10483
FLEET matchable : 363150
FLEET INCLUDE_ASM stubs : 5863
FLEET matchable : 363127
| binary | REAL | shared | LINKED | byte-ident | matchable | byte-ident % |
|---|---:|---:|---:|---:|---:|---:|
| main | 329 | 2 | 959 | 1330 | 2082 | 63.9% |
| resident | 129 | 0 | 0 | 131 | 145 | 90.3% |
| main | 431 | 2 | 959 | 1432 | 2063 | 69.4% |
| resident | 131 | 0 | 0 | 133 | 145 | 91.7% |
| md_MAIN_001 | 1 | 0 | 0 | 1 | 11 | 9.1% |
| md_MAIN_003 | 3 | 0 | 0 | 3 | 60 | 5.0% |
| md_MAIN_003 | 33 | 0 | 0 | 33 | 58 | 56.9% |
| md_MAIN_008 | 0 | 0 | 0 | 0 | 6 | 0.0% |
| md_MAIN_011 | 0 | 0 | 0 | 0 | 21 | 0.0% |
| md_MAIN_013 | 5 | 0 | 0 | 5 | 16 | 31.2% |
| md_MAIN_014 | 5 | 0 | 0 | 6 | 13 | 46.2% |
| md_MAIN_015 | 8 | 0 | 0 | 8 | 20 | 40.0% |
| md_MAIN_015 | 9 | 0 | 0 | 9 | 20 | 45.0% |
| md_MAIN_016 | 4 | 0 | 0 | 5 | 13 | 38.5% |
| md_MAIN_017 | 4 | 0 | 0 | 4 | 10 | 40.0% |
| md_MAIN_018 | 3 | 0 | 0 | 4 | 11 | 36.4% |
| md_MAIN_019 | 9 | 0 | 0 | 9 | 22 | 40.9% |
| md_MAIN_019 | 13 | 0 | 0 | 13 | 22 | 59.1% |
| md_MAIN_020 | 9 | 0 | 0 | 10 | 14 | 71.4% |
| md_MAIN_021 | 4 | 0 | 0 | 5 | 11 | 45.5% |
| md_MAIN_022 | 19 | 0 | 0 | 21 | 33 | 63.6% |
| md_MAIN_023 | 3 | 0 | 0 | 4 | 6 | 66.7% |
| md_MAIN_024 | 3 | 0 | 0 | 5 | 6 | 83.3% |
| md_MAIN_025 | 6 | 0 | 0 | 6 | 30 | 20.0% |
| md_MAIN_026 | 7 | 0 | 0 | 7 | 24 | 29.2% |
| md_MAIN_027 | 11 | 0 | 0 | 13 | 29 | 44.8% |
| md_MAIN_028 | 6 | 0 | 0 | 6 | 22 | 27.3% |
| md_MAIN_025 | 18 | 0 | 0 | 18 | 30 | 60.0% |
| md_MAIN_026 | 9 | 0 | 0 | 9 | 24 | 37.5% |
| md_MAIN_027 | 20 | 0 | 0 | 22 | 29 | 75.9% |
| md_MAIN_028 | 7 | 0 | 0 | 7 | 22 | 31.8% |
| md_MAIN_029 | 3 | 0 | 0 | 4 | 11 | 36.4% |
| md_MAIN_030 | 4 | 0 | 0 | 4 | 10 | 40.0% |
| md_MAIN_031 | 4 | 0 | 0 | 4 | 18 | 22.2% |
| md_MAIN_031 | 6 | 0 | 0 | 6 | 18 | 33.3% |
| md_MAIN_032 | 5 | 0 | 0 | 5 | 10 | 50.0% |
| md_MAIN_033 | 4 | 0 | 0 | 4 | 19 | 21.1% |
| md_MAIN_034 | 13 | 0 | 0 | 14 | 28 | 50.0% |
| md_MAIN_033 | 11 | 0 | 0 | 11 | 19 | 57.9% |
| md_MAIN_034 | 14 | 0 | 0 | 15 | 28 | 53.6% |
| md_MAIN_035 | 11 | 0 | 0 | 12 | 16 | 75.0% |
| md_MAIN_036 | 9 | 0 | 0 | 10 | 28 | 35.7% |
| md_MAIN_036 | 12 | 0 | 0 | 13 | 28 | 46.4% |
| md_MAIN_037 | 5 | 0 | 0 | 5 | 17 | 29.4% |
| md_MAIN_038 | 7 | 0 | 0 | 7 | 20 | 35.0% |
| md_MAIN_039 | 5 | 0 | 0 | 5 | 26 | 19.2% |
| md_MAIN_038 | 9 | 0 | 0 | 9 | 20 | 45.0% |
| md_MAIN_039 | 17 | 0 | 0 | 17 | 26 | 65.4% |
| md_MAIN_040 | 4 | 0 | 0 | 4 | 19 | 21.1% |
| md_MAIN_041 | 5 | 0 | 0 | 5 | 15 | 33.3% |
| md_MAIN_042 | 0 | 0 | 0 | 0 | 4 | 0.0% |
| md_MAIN_043 | 4 | 0 | 0 | 5 | 23 | 21.7% |
| md_MAIN_044 | 13 | 0 | 0 | 14 | 44 | 31.8% |
| md_MAIN_045 | 5 | 0 | 0 | 6 | 21 | 28.6% |
| md_MAIN_046 | 10 | 0 | 0 | 11 | 39 | 28.2% |
| md_MAIN_047 | 3 | 0 | 0 | 4 | 12 | 33.3% |
| md_SC02_009 | 5 | 0 | 0 | 5 | 40 | 12.5% |
| md_MAIN_043 | 7 | 0 | 0 | 8 | 23 | 34.8% |
| md_MAIN_044 | 27 | 0 | 0 | 28 | 44 | 63.6% |
| md_MAIN_045 | 13 | 0 | 0 | 14 | 21 | 66.7% |
| md_MAIN_046 | 29 | 0 | 0 | 30 | 39 | 76.9% |
| md_MAIN_047 | 5 | 0 | 0 | 6 | 12 | 50.0% |
| md_SC02_009 | 18 | 0 | 0 | 18 | 40 | 45.0% |
| md_SC03_073 | 27 | 10 | 0 | 27 | 28 | 96.4% |
| md_SC03_074 | 26 | 10 | 0 | 26 | 29 | 89.7% |
| md_SC03_075 | 31 | 10 | 0 | 31 | 41 | 75.6% |
| md_SC03_076 | 35 | 0 | 0 | 37 | 66 | 56.1% |
| md_SC03_076 | 48 | 0 | 0 | 50 | 66 | 75.8% |
| md_SC03_077 | 24 | 0 | 0 | 26 | 35 | 74.3% |
| md_SC03_078 | 25 | 9 | 0 | 25 | 27 | 92.6% |
| md_SC03_079 | 24 | 0 | 0 | 26 | 29 | 89.7% |
| md_SC03_132 | 25 | 0 | 0 | 27 | 28 | 96.4% |
| md_SC03_133 | 23 | 1 | 0 | 25 | 29 | 86.2% |
| md_SC03_134 | 29 | 1 | 0 | 31 | 41 | 75.6% |
| md_SC03_135 | 34 | 0 | 0 | 36 | 66 | 54.5% |
| md_SC03_135 | 47 | 0 | 0 | 49 | 66 | 74.2% |
| md_SC03_136 | 24 | 0 | 0 | 26 | 35 | 74.3% |
| md_SC03_137 | 23 | 1 | 0 | 25 | 27 | 92.6% |
| md_SC03_138 | 26 | 1 | 0 | 30 | 37 | 81.1% |
| md_SC04_024 | 24 | 0 | 0 | 26 | 28 | 92.9% |
| md_SC04_025 | 22 | 0 | 0 | 24 | 29 | 82.8% |
| md_SC04_026 | 28 | 0 | 0 | 30 | 41 | 73.2% |
| md_SC04_027 | 33 | 0 | 0 | 35 | 66 | 53.0% |
| md_SC04_027 | 50 | 0 | 0 | 52 | 66 | 78.8% |
| md_SC04_028 | 24 | 0 | 0 | 26 | 35 | 74.3% |
| md_SC04_029 | 22 | 0 | 0 | 24 | 27 | 88.9% |
| md_SC04_030 | 24 | 0 | 0 | 28 | 31 | 90.3% |
| md_SC05_023 | 24 | 0 | 0 | 26 | 28 | 92.9% |
| md_SC05_024 | 21 | 0 | 0 | 23 | 29 | 79.3% |
| md_SC05_025 | 27 | 0 | 0 | 29 | 41 | 70.7% |
| md_SC05_026 | 32 | 0 | 0 | 34 | 66 | 51.5% |
| md_SC05_026 | 50 | 0 | 0 | 52 | 66 | 78.8% |
| md_SC05_027 | 23 | 0 | 0 | 25 | 35 | 71.4% |
| md_SC05_028 | 22 | 0 | 0 | 24 | 27 | 88.9% |
| md_SC05_029 | 23 | 0 | 0 | 27 | 31 | 87.1% |
| md_SC07_003 | 43 | 0 | 0 | 43 | 100 | 43.0% |
| md_SC07_004 | 86 | 0 | 0 | 86 | 316 | 27.2% |
| md_SC07_003 | 71 | 0 | 0 | 71 | 100 | 71.0% |
| md_SC07_004 | 259 | 0 | 0 | 259 | 316 | 82.0% |
| ov_MAIN_012 | 2243 | 1689 | 0 | 2322 | 2403 | 96.6% |
| ov_SC01_000 | 2391 | 1809 | 0 | 2391 | 2403 | 99.5% |
| ov_SC01_001 | 2401 | 1811 | 0 | 2403 | 2466 | 97.4% |
| ov_SC01_004 | 2399 | 1802 | 0 | 2400 | 2414 | 99.4% |
| ov_SC01_005 | 2441 | 1833 | 0 | 2441 | 2503 | 97.5% |
| ov_SC01_006 | 2440 | 1833 | 0 | 2440 | 2503 | 97.5% |
| ov_SC01_000 | 2395 | 1809 | 0 | 2395 | 2403 | 99.7% |
| ov_SC01_001 | 2433 | 1811 | 0 | 2435 | 2466 | 98.7% |
| ov_SC01_004 | 2400 | 1802 | 0 | 2401 | 2414 | 99.5% |
| ov_SC01_005 | 2460 | 1833 | 0 | 2460 | 2503 | 98.3% |
| ov_SC01_006 | 2446 | 1833 | 0 | 2446 | 2503 | 97.7% |
| ov_SC01_008 | 2400 | 1803 | 0 | 2402 | 2426 | 99.0% |
| ov_SC01_009 | 2428 | 1803 | 0 | 2429 | 2507 | 96.9% |
| ov_SC01_074 | 2401 | 1803 | 0 | 2403 | 2426 | 99.1% |
| ov_SC01_009 | 2448 | 1803 | 0 | 2449 | 2507 | 97.7% |
| ov_SC01_074 | 2410 | 1803 | 0 | 2412 | 2426 | 99.4% |
| ov_SC01_077 | 2570 | 1764 | 0 | 2572 | 2586 | 99.5% |
| ov_SC01_080 | 2433 | 1806 | 0 | 2433 | 2512 | 96.9% |
| ov_SC01_084 | 2474 | 1811 | 0 | 2479 | 2579 | 96.1% |
| ov_SC02_000 | 2579 | 1889 | 0 | 2579 | 2683 | 96.1% |
| ov_SC02_003 | 2566 | 1889 | 0 | 2566 | 2683 | 95.6% |
| ov_SC01_080 | 2475 | 1806 | 0 | 2475 | 2512 | 98.5% |
| ov_SC01_084 | 2518 | 1811 | 0 | 2523 | 2579 | 97.8% |
| ov_SC02_000 | 2646 | 1889 | 0 | 2646 | 2683 | 98.6% |
| ov_SC02_003 | 2618 | 1889 | 0 | 2618 | 2683 | 97.6% |
| ov_SC02_004 | 2391 | 1806 | 0 | 2391 | 2401 | 99.6% |
| ov_SC02_005 | 2625 | 1802 | 0 | 2635 | 2927 | 90.0% |
| ov_SC02_011 | 2704 | 1810 | 0 | 2714 | 2893 | 93.8% |
| ov_SC02_005 | 2822 | 1802 | 0 | 2832 | 2926 | 96.8% |
| ov_SC02_011 | 2823 | 1810 | 0 | 2833 | 2893 | 97.9% |
| ov_SC02_015 | 2402 | 1808 | 0 | 2402 | 2414 | 99.5% |
| ov_SC02_016 | 2485 | 1810 | 0 | 2488 | 2545 | 97.8% |
| ov_SC02_017 | 2582 | 1810 | 0 | 2590 | 2732 | 94.8% |
| ov_SC02_021 | 2407 | 1808 | 0 | 2407 | 2437 | 98.8% |
| ov_SC02_026 | 2515 | 1807 | 0 | 2521 | 2572 | 98.0% |
| ov_SC02_027 | 2584 | 1828 | 0 | 2593 | 2692 | 96.3% |
| ov_SC02_028 | 2595 | 1827 | 0 | 2605 | 2701 | 96.4% |
| ov_SC02_031 | 2504 | 1809 | 0 | 2509 | 2562 | 97.9% |
| ov_SC02_035 | 2497 | 1806 | 0 | 2500 | 2520 | 99.2% |
| ov_SC02_037 | 2347 | 1704 | 0 | 2429 | 2516 | 96.5% |
| ov_SC02_016 | 2516 | 1810 | 0 | 2519 | 2545 | 99.0% |
| ov_SC02_017 | 2671 | 1810 | 0 | 2679 | 2732 | 98.1% |
| ov_SC02_021 | 2421 | 1808 | 0 | 2421 | 2437 | 99.3% |
| ov_SC02_026 | 2549 | 1807 | 0 | 2555 | 2572 | 99.3% |
| ov_SC02_027 | 2643 | 1828 | 0 | 2652 | 2692 | 98.5% |
| ov_SC02_028 | 2655 | 1827 | 0 | 2665 | 2701 | 98.7% |
| ov_SC02_031 | 2533 | 1809 | 0 | 2538 | 2562 | 99.1% |
| ov_SC02_035 | 2501 | 1806 | 0 | 2504 | 2520 | 99.4% |
| ov_SC02_037 | 2349 | 1704 | 0 | 2431 | 2516 | 96.6% |
| ov_SC02_039 | 2405 | 1807 | 0 | 2405 | 2416 | 99.5% |
| ov_SC02_041 | 2505 | 1806 | 0 | 2508 | 2561 | 97.9% |
| ov_SC03_001 | 2715 | 1807 | 0 | 2732 | 2869 | 95.2% |
| ov_SC03_002 | 2552 | 1815 | 0 | 2567 | 2631 | 97.6% |
| ov_SC02_041 | 2540 | 1806 | 0 | 2543 | 2561 | 99.3% |
| ov_SC03_001 | 2767 | 1807 | 0 | 2784 | 2869 | 97.0% |
| ov_SC03_002 | 2583 | 1815 | 0 | 2598 | 2631 | 98.7% |
| ov_SC03_003 | 2402 | 1806 | 0 | 2403 | 2423 | 99.2% |
| ov_SC03_006 | 2609 | 1814 | 0 | 2618 | 2767 | 94.6% |
| ov_SC03_007 | 2500 | 1806 | 0 | 2504 | 2623 | 95.5% |
| ov_SC03_010 | 2423 | 1807 | 0 | 2423 | 2471 | 98.1% |
| ov_SC03_011 | 2436 | 1807 | 0 | 2442 | 2527 | 96.6% |
| ov_SC03_012 | 2391 | 1806 | 0 | 2392 | 2406 | 99.4% |
| ov_SC03_013 | 2427 | 1807 | 0 | 2427 | 2493 | 97.4% |
| ov_SC03_014 | 2612 | 1855 | 0 | 2612 | 2685 | 97.3% |
| ov_SC03_015 | 2387 | 1855 | 0 | 2387 | 2468 | 96.7% |
| ov_SC03_023 | 2404 | 1806 | 0 | 2405 | 2435 | 98.8% |
| ov_SC03_024 | 2544 | 1813 | 0 | 2551 | 2641 | 96.6% |
| ov_SC03_028 | 2500 | 1807 | 0 | 2504 | 2664 | 94.0% |
| ov_SC03_029 | 2521 | 1810 | 0 | 2531 | 2644 | 95.7% |
| ov_SC03_030 | 2428 | 1811 | 0 | 2430 | 2495 | 97.4% |
| ov_SC03_031 | 2449 | 1808 | 0 | 2452 | 2514 | 97.5% |
| ov_SC03_089 | 2530 | 1811 | 0 | 2537 | 2581 | 98.3% |
| ov_SC03_090 | 2555 | 1811 | 0 | 2563 | 2625 | 97.6% |
| ov_SC03_091 | 2564 | 1828 | 0 | 2572 | 2640 | 97.4% |
| ov_SC03_092 | 2516 | 1811 | 0 | 2528 | 2588 | 97.7% |
| ov_SC03_093 | 2532 | 1828 | 0 | 2536 | 2563 | 98.9% |
| ov_SC03_094 | 2527 | 1806 | 0 | 2533 | 2577 | 98.3% |
| ov_SC03_095 | 2441 | 1806 | 0 | 2444 | 2474 | 98.8% |
| ov_SC03_096 | 2438 | 1806 | 0 | 2441 | 2465 | 99.0% |
| ov_SC03_097 | 2543 | 1827 | 0 | 2550 | 2603 | 98.0% |
| ov_SC03_098 | 2518 | 1828 | 0 | 2521 | 2541 | 99.2% |
| ov_SC03_099 | 2490 | 1806 | 0 | 2493 | 2504 | 99.6% |
| ov_SC03_100 | 2525 | 1828 | 0 | 2529 | 2539 | 99.6% |
| ov_SC03_101 | 2495 | 1811 | 0 | 2499 | 2528 | 98.9% |
| ov_SC03_006 | 2715 | 1814 | 0 | 2724 | 2767 | 98.4% |
| ov_SC03_007 | 2582 | 1806 | 0 | 2586 | 2623 | 98.6% |
| ov_SC03_010 | 2443 | 1807 | 0 | 2443 | 2471 | 98.9% |
| ov_SC03_011 | 2481 | 1807 | 0 | 2487 | 2527 | 98.4% |
| ov_SC03_012 | 2392 | 1806 | 0 | 2393 | 2406 | 99.5% |
| ov_SC03_013 | 2459 | 1807 | 0 | 2459 | 2493 | 98.6% |
| ov_SC03_014 | 2636 | 1855 | 0 | 2636 | 2685 | 98.2% |
| ov_SC03_015 | 2423 | 1855 | 0 | 2423 | 2468 | 98.2% |
| ov_SC03_023 | 2418 | 1806 | 0 | 2419 | 2435 | 99.3% |
| ov_SC03_024 | 2594 | 1813 | 0 | 2601 | 2641 | 98.5% |
| ov_SC03_028 | 2607 | 1807 | 0 | 2611 | 2664 | 98.0% |
| ov_SC03_029 | 2597 | 1810 | 0 | 2607 | 2644 | 98.6% |
| ov_SC03_030 | 2466 | 1811 | 0 | 2468 | 2495 | 98.9% |
| ov_SC03_031 | 2478 | 1808 | 0 | 2481 | 2514 | 98.7% |
| ov_SC03_089 | 2548 | 1811 | 0 | 2555 | 2581 | 99.0% |
| ov_SC03_090 | 2594 | 1811 | 0 | 2602 | 2625 | 99.1% |
| ov_SC03_091 | 2595 | 1828 | 0 | 2603 | 2640 | 98.6% |
| ov_SC03_092 | 2541 | 1811 | 0 | 2553 | 2588 | 98.6% |
| ov_SC03_093 | 2544 | 1828 | 0 | 2548 | 2563 | 99.4% |
| ov_SC03_094 | 2552 | 1806 | 0 | 2558 | 2577 | 99.3% |
| ov_SC03_095 | 2454 | 1806 | 0 | 2457 | 2474 | 99.3% |
| ov_SC03_096 | 2445 | 1806 | 0 | 2448 | 2465 | 99.3% |
| ov_SC03_097 | 2569 | 1827 | 0 | 2576 | 2603 | 99.0% |
| ov_SC03_098 | 2528 | 1828 | 0 | 2531 | 2541 | 99.6% |
| ov_SC03_099 | 2493 | 1806 | 0 | 2496 | 2504 | 99.7% |
| ov_SC03_100 | 2528 | 1828 | 0 | 2532 | 2539 | 99.7% |
| ov_SC03_101 | 2505 | 1811 | 0 | 2509 | 2528 | 99.2% |
| ov_SC03_102 | 2473 | 1806 | 0 | 2476 | 2492 | 99.4% |
| ov_SC03_103 | 2497 | 1808 | 0 | 2500 | 2510 | 99.6% |
| ov_SC03_104 | 2557 | 1811 | 0 | 2564 | 2616 | 98.0% |
| ov_SC03_105 | 2478 | 1807 | 0 | 2485 | 2597 | 95.7% |
| ov_SC03_107 | 2313 | 1689 | 0 | 2396 | 2497 | 96.0% |
| ov_SC03_108 | 2411 | 1807 | 0 | 2411 | 2443 | 98.7% |
| ov_SC03_109 | 2409 | 1807 | 0 | 2411 | 2424 | 99.5% |
| ov_SC03_110 | 2446 | 1830 | 0 | 2446 | 2468 | 99.1% |
| ov_SC03_111 | 2482 | 1806 | 0 | 2485 | 2510 | 99.0% |
| ov_SC03_112 | 2464 | 1808 | 0 | 2466 | 2526 | 97.6% |
| ov_SC03_113 | 2445 | 1808 | 0 | 2448 | 2468 | 99.2% |
| ov_SC03_114 | 2391 | 1806 | 0 | 2393 | 2415 | 99.1% |
| ov_SC03_115 | 2440 | 1806 | 0 | 2442 | 2472 | 98.8% |
| ov_SC03_116 | 2404 | 1806 | 0 | 2407 | 2438 | 98.7% |
| ov_SC03_117 | 2484 | 1806 | 0 | 2490 | 2557 | 97.4% |
| ov_SC03_118 | 2582 | 1845 | 0 | 2583 | 2684 | 96.2% |
| ov_SC03_119 | 2574 | 1845 | 0 | 2575 | 2685 | 95.9% |
| ov_SC03_121 | 2422 | 1807 | 0 | 2424 | 2459 | 98.6% |
| ov_SC03_124 | 2599 | 1802 | 0 | 2619 | 2741 | 95.5% |
| ov_SC03_125 | 2536 | 1815 | 0 | 2548 | 2588 | 98.5% |
| ov_SC03_103 | 2499 | 1808 | 0 | 2502 | 2510 | 99.7% |
| ov_SC03_104 | 2579 | 1811 | 0 | 2586 | 2616 | 98.9% |
| ov_SC03_105 | 2523 | 1807 | 0 | 2530 | 2596 | 97.5% |
| ov_SC03_107 | 2338 | 1689 | 0 | 2421 | 2497 | 97.0% |
| ov_SC03_108 | 2412 | 1807 | 0 | 2412 | 2443 | 98.7% |
| ov_SC03_109 | 2410 | 1807 | 0 | 2412 | 2424 | 99.5% |
| ov_SC03_110 | 2449 | 1830 | 0 | 2449 | 2468 | 99.2% |
| ov_SC03_111 | 2487 | 1806 | 0 | 2490 | 2510 | 99.2% |
| ov_SC03_112 | 2484 | 1808 | 0 | 2486 | 2526 | 98.4% |
| ov_SC03_113 | 2450 | 1808 | 0 | 2453 | 2468 | 99.4% |
| ov_SC03_114 | 2406 | 1806 | 0 | 2408 | 2415 | 99.7% |
| ov_SC03_115 | 2453 | 1806 | 0 | 2455 | 2472 | 99.3% |
| ov_SC03_116 | 2418 | 1806 | 0 | 2421 | 2438 | 99.3% |
| ov_SC03_117 | 2518 | 1806 | 0 | 2524 | 2557 | 98.7% |
| ov_SC03_118 | 2611 | 1845 | 0 | 2612 | 2684 | 97.3% |
| ov_SC03_119 | 2622 | 1845 | 0 | 2623 | 2685 | 97.7% |
| ov_SC03_121 | 2431 | 1807 | 0 | 2433 | 2459 | 98.9% |
| ov_SC03_124 | 2645 | 1802 | 0 | 2665 | 2741 | 97.2% |
| ov_SC03_125 | 2547 | 1815 | 0 | 2559 | 2588 | 98.9% |
| ov_SC03_126 | 2406 | 1810 | 0 | 2406 | 2423 | 99.3% |
| ov_SC04_000 | 2479 | 1811 | 0 | 2488 | 2546 | 97.7% |
| ov_SC04_002 | 2543 | 1806 | 0 | 2547 | 2636 | 96.6% |
| ov_SC04_003 | 2445 | 1813 | 0 | 2448 | 2502 | 97.8% |
| ov_SC04_004 | 2479 | 1807 | 0 | 2481 | 2558 | 97.0% |
| ov_SC04_005 | 2531 | 1806 | 0 | 2537 | 2612 | 97.1% |
| ov_SC04_006 | 2432 | 1812 | 0 | 2434 | 2454 | 99.2% |
| ov_SC04_007 | 2510 | 1807 | 0 | 2514 | 2569 | 97.9% |
| ov_SC04_008 | 2404 | 1806 | 0 | 2404 | 2415 | 99.5% |
| ov_SC04_000 | 2505 | 1811 | 0 | 2514 | 2546 | 98.7% |
| ov_SC04_002 | 2609 | 1806 | 0 | 2613 | 2636 | 99.1% |
| ov_SC04_003 | 2486 | 1813 | 0 | 2489 | 2502 | 99.5% |
| ov_SC04_004 | 2537 | 1807 | 0 | 2539 | 2558 | 99.3% |
| ov_SC04_005 | 2579 | 1806 | 0 | 2585 | 2612 | 99.0% |
| ov_SC04_006 | 2436 | 1812 | 0 | 2438 | 2454 | 99.3% |
| ov_SC04_007 | 2542 | 1807 | 0 | 2546 | 2569 | 99.1% |
| ov_SC04_008 | 2406 | 1806 | 0 | 2406 | 2415 | 99.6% |
| ov_SC04_009 | 2428 | 1806 | 0 | 2431 | 2441 | 99.6% |
| ov_SC04_010 | 2405 | 1806 | 0 | 2406 | 2419 | 99.5% |
| ov_SC04_011 | 2613 | 1811 | 0 | 2619 | 2803 | 93.4% |
| ov_SC04_012 | 2404 | 1806 | 0 | 2405 | 2420 | 99.4% |
| ov_SC04_015 | 2545 | 1807 | 0 | 2556 | 2611 | 97.9% |
| ov_SC04_016 | 2403 | 1806 | 0 | 2405 | 2440 | 98.6% |
| ov_SC04_018 | 2734 | 1892 | 0 | 2734 | 2857 | 95.7% |
| ov_SC04_019 | 2726 | 1892 | 0 | 2726 | 2857 | 95.4% |
| ov_SC04_020 | 2522 | 1815 | 0 | 2534 | 2567 | 98.7% |
| ov_SC04_021 | 2404 | 1810 | 0 | 2404 | 2423 | 99.2% |
| ov_SC05_000 | 2407 | 1810 | 0 | 2410 | 2422 | 99.5% |
| ov_SC05_001 | 2499 | 1808 | 0 | 2504 | 2574 | 97.3% |
| ov_SC04_010 | 2411 | 1806 | 0 | 2412 | 2419 | 99.7% |
| ov_SC04_011 | 2731 | 1811 | 0 | 2737 | 2803 | 97.6% |
| ov_SC04_012 | 2405 | 1806 | 0 | 2406 | 2420 | 99.4% |
| ov_SC04_015 | 2566 | 1807 | 0 | 2577 | 2611 | 98.7% |
| ov_SC04_016 | 2417 | 1806 | 0 | 2419 | 2440 | 99.1% |
| ov_SC04_018 | 2759 | 1892 | 0 | 2759 | 2857 | 96.6% |
| ov_SC04_019 | 2761 | 1892 | 0 | 2761 | 2857 | 96.6% |
| ov_SC04_020 | 2534 | 1815 | 0 | 2546 | 2567 | 99.2% |
| ov_SC04_021 | 2405 | 1810 | 0 | 2405 | 2423 | 99.3% |
| ov_SC05_000 | 2409 | 1810 | 0 | 2412 | 2422 | 99.6% |
| ov_SC05_001 | 2531 | 1808 | 0 | 2536 | 2574 | 98.5% |
| ov_SC05_002 | 2431 | 1806 | 0 | 2434 | 2442 | 99.7% |
| ov_SC05_003 | 2429 | 1806 | 0 | 2430 | 2481 | 97.9% |
| ov_SC05_004 | 2433 | 1806 | 0 | 2435 | 2464 | 98.8% |
| ov_SC05_005 | 2446 | 1812 | 0 | 2447 | 2491 | 98.2% |
| ov_SC05_006 | 2426 | 1808 | 0 | 2426 | 2430 | 99.8% |
| ov_SC05_007 | 2439 | 1806 | 0 | 2444 | 2482 | 98.5% |
| ov_SC05_008 | 2444 | 1806 | 0 | 2446 | 2543 | 96.2% |
| ov_SC05_009 | 2412 | 1806 | 0 | 2416 | 2438 | 99.1% |
| ov_SC05_010 | 2461 | 1807 | 0 | 2465 | 2588 | 95.2% |
| ov_SC05_003 | 2459 | 1806 | 0 | 2460 | 2481 | 99.2% |
| ov_SC05_004 | 2436 | 1806 | 0 | 2438 | 2464 | 98.9% |
| ov_SC05_005 | 2473 | 1812 | 0 | 2474 | 2491 | 99.3% |
| ov_SC05_006 | 2427 | 1808 | 0 | 2427 | 2430 | 99.9% |
| ov_SC05_007 | 2462 | 1806 | 0 | 2467 | 2482 | 99.4% |
| ov_SC05_008 | 2496 | 1806 | 0 | 2498 | 2543 | 98.2% |
| ov_SC05_009 | 2424 | 1806 | 0 | 2428 | 2438 | 99.6% |
| ov_SC05_010 | 2527 | 1807 | 0 | 2531 | 2588 | 97.8% |
| ov_SC05_011 | 2397 | 1806 | 0 | 2398 | 2409 | 99.5% |
| ov_SC05_017 | 2683 | 1806 | 0 | 2694 | 2842 | 94.8% |
| ov_SC05_018 | 2558 | 1814 | 0 | 2571 | 2673 | 96.2% |
| ov_SC05_019 | 2404 | 1810 | 0 | 2404 | 2423 | 99.2% |
| ov_SC06_000 | 2543 | 1817 | 0 | 2546 | 2691 | 94.6% |
| ov_SC06_006 | 2441 | 1807 | 0 | 2442 | 2511 | 97.3% |
| ov_SC06_008 | 2502 | 1808 | 0 | 2508 | 2542 | 98.7% |
| ov_SC06_010 | 2473 | 1806 | 0 | 2478 | 2517 | 98.5% |
| ov_SC06_011 | 2418 | 1806 | 0 | 2422 | 2468 | 98.1% |
| ov_SC06_013 | 2407 | 1806 | 0 | 2408 | 2425 | 99.3% |
| ov_SC06_014 | 2418 | 1806 | 0 | 2420 | 2453 | 98.7% |
| ov_SC05_017 | 2740 | 1806 | 0 | 2751 | 2842 | 96.8% |
| ov_SC05_018 | 2619 | 1814 | 0 | 2632 | 2673 | 98.5% |
| ov_SC05_019 | 2405 | 1810 | 0 | 2405 | 2423 | 99.3% |
| ov_SC06_000 | 2638 | 1817 | 0 | 2641 | 2691 | 98.1% |
| ov_SC06_006 | 2483 | 1807 | 0 | 2484 | 2511 | 98.9% |
| ov_SC06_008 | 2517 | 1808 | 0 | 2523 | 2542 | 99.3% |
| ov_SC06_010 | 2491 | 1806 | 0 | 2496 | 2517 | 99.2% |
| ov_SC06_011 | 2446 | 1806 | 0 | 2450 | 2468 | 99.3% |
| ov_SC06_013 | 2408 | 1806 | 0 | 2409 | 2425 | 99.3% |
| ov_SC06_014 | 2435 | 1806 | 0 | 2437 | 2453 | 99.3% |
| ov_SC06_015 | 2412 | 1806 | 0 | 2412 | 2421 | 99.6% |
| ov_SC06_016 | 2474 | 1807 | 0 | 2476 | 2549 | 97.1% |
| ov_SC06_018 | 2556 | 1807 | 0 | 2563 | 2665 | 96.2% |
| ov_SC06_020 | 2474 | 1808 | 0 | 2475 | 2518 | 98.3% |
| ov_SC06_022 | 2530 | 1806 | 0 | 2538 | 2642 | 96.1% |
| ov_SC06_024 | 2555 | 1806 | 0 | 2561 | 2667 | 96.0% |
| ov_SC06_025 | 2474 | 1806 | 0 | 2479 | 2572 | 96.4% |
| ov_SC06_016 | 2514 | 1807 | 0 | 2516 | 2549 | 98.7% |
| ov_SC06_018 | 2601 | 1807 | 0 | 2608 | 2665 | 97.9% |
| ov_SC06_020 | 2475 | 1808 | 0 | 2476 | 2518 | 98.3% |
| ov_SC06_022 | 2586 | 1806 | 0 | 2594 | 2642 | 98.2% |
| ov_SC06_024 | 2615 | 1806 | 0 | 2621 | 2667 | 98.3% |
| ov_SC06_025 | 2520 | 1806 | 0 | 2525 | 2572 | 98.2% |
| ov_SC06_027 | 2392 | 1806 | 0 | 2393 | 2408 | 99.4% |
| ov_SC06_029 | 2520 | 1807 | 0 | 2532 | 2662 | 95.1% |
| ov_SC06_030 | 2415 | 1807 | 0 | 2415 | 2456 | 98.3% |
| ov_SC06_032 | 2544 | 1807 | 0 | 2551 | 2658 | 96.0% |
| ov_SC06_033 | 2534 | 1807 | 0 | 2541 | 2631 | 96.6% |
| ov_SC07_000 | 2439 | 1811 | 0 | 2441 | 2521 | 96.8% |
| ov_SC07_001 | 2408 | 1807 | 0 | 2410 | 2454 | 98.2% |
| ov_SC07_002 | 2467 | 1807 | 0 | 2471 | 2579 | 95.8% |
| ov_SC07_006 | 2331 | 1625 | 0 | 2411 | 2456 | 98.2% |
| ov_SC07_007 | 2395 | 1660 | 0 | 2479 | 2612 | 94.9% |
| ov_SC06_029 | 2604 | 1807 | 0 | 2616 | 2662 | 98.3% |
| ov_SC06_030 | 2438 | 1807 | 0 | 2438 | 2456 | 99.3% |
| ov_SC06_032 | 2585 | 1807 | 0 | 2592 | 2658 | 97.5% |
| ov_SC06_033 | 2551 | 1807 | 0 | 2558 | 2631 | 97.2% |
| ov_SC07_000 | 2486 | 1811 | 0 | 2488 | 2521 | 98.7% |
| ov_SC07_001 | 2431 | 1807 | 0 | 2433 | 2454 | 99.1% |
| ov_SC07_002 | 2529 | 1807 | 0 | 2533 | 2579 | 98.2% |
| ov_SC07_006 | 2340 | 1625 | 0 | 2420 | 2456 | 98.5% |
| ov_SC07_007 | 2476 | 1660 | 0 | 2560 | 2612 | 98.0% |
| ov_SC07_008 | 2386 | 1806 | 0 | 2386 | 2386 | 100.0% |
| ov_SC07_009 | 2401 | 1806 | 0 | 2403 | 2430 | 98.9% |
| ov_SC07_010 | 2325 | 1682 | 0 | 2407 | 2523 | 95.4% |
| ov_SC07_011 | 2341 | 1659 | 0 | 2421 | 2448 | 98.9% |
| ov_SC07_009 | 2409 | 1806 | 0 | 2411 | 2430 | 99.2% |
| ov_SC07_010 | 2391 | 1682 | 0 | 2473 | 2523 | 98.0% |
| ov_SC07_011 | 2343 | 1659 | 0 | 2423 | 2448 | 99.0% |
+87 -8
View File
@@ -1,4 +1,9 @@
#!/usr/bin/env bash
# TWO PATHS, ONE SCRIPT: this file is tracked at BOTH .run/maintenance.sh and
# tools/lanes/maintenance.sh, and `bash .run/maintenance.sh` is what actually runs. They diverged
# once (P31 S59->S60): tools/lanes/ held a pre-S59 copy, an edit landed there, and copying it over
# .run/ silently reverted the R47 shape filter, the R48 (binary,fn) keying, reloc --fix,
# rtu_second_chance and fix_tu_ret_decls. EDIT ONE, COPY TO THE OTHER, DIFF BOTH BEFORE COMMITTING.
# The FREE lane on a loop: re-run the A-prop sibling remap whenever the gater is idle.
#
# It compounds — every exemplar the waves bank creates new PURE seeds — and costs zero model
@@ -15,10 +20,6 @@ while [ ! -e .run/ox_campaign.stop ]; do
if [ -n "$(ls .run/ready/ 2>/dev/null)" ] || pgrep -f 'tools/sweep_parallel' >/dev/null; then
sleep 300; continue
fi
# THRESHOLD 150 -> 50 (Drew, P31 S59): the A-prop pipeline was rebuilt to consume every
# verdict layer and the lane now also carries the free reject-recovery and the periodic
# fleet R22, so a pass is worth running on a smaller refill than when it only re-swept an
# unchanged sibling pool. 150 was tuned for the old dead lane.
# EXEMPLAR-COUNT TRIGGER, not a timer. The A-prop pool only refills when waves bank NEW
# exemplars that create fresh PURE seeds; on a 45-minute timer it re-swept an unchanged
# population and banked 390 -> 7 -> 0 -> 0 (P31 S58), holding a sweep slot and the draw lock for
@@ -32,6 +33,10 @@ while [ ! -e .run/ox_campaign.stop ]; do
NEWFN=$(git log -$(( NOW - LAST > 0 ? NOW - LAST : 1 )) --format=%s 2>/dev/null \
| grep -oP '— \K[0-9]+(?= banked)' | paste -sd+ | bc 2>/dev/null || echo 0)
NEWFN=${NEWFN:-0}
# THRESHOLD 150 -> 50 (Drew, P31 S59): the A-prop pipeline was rebuilt to consume every
# verdict layer and the lane now also carries the free reject-recovery and the periodic
# fleet R22, so a pass is worth running on a smaller refill than when it only re-swept an
# unchanged sibling pool. 150 was tuned for the old dead lane.
if [ "$NEWFN" -lt 50 ]; then
say "only $NEWFN functions banked since the last pass (need 50) — skipping"
sleep 1800; continue
@@ -48,17 +53,60 @@ json.dump([{'fn':r['fn'],'binary':r['binary'],'draft':r['draft']} for r in s],
print('drafts:',len(s))
PY
.venv/bin/python tools/reloc_identity.py --batch .run/reloc_maint.json -j 12 --out .run/reloc_maint.out.json 2>&1 | tail -1
# MECHANICAL SYMBOL REPAIR (S59): an unambiguous reloc MISMATCH is a RENAME, not a reject —
# --fix rewrites the draft in place (it refuses ambiguity, R39) and the re-check below refreshes
# the verdicts so a repaired draft stages on this same pass. Measured: 4 of 4 MISMATCHes of the
# first fixed batch repaired to AGREE/MATCH this way.
.venv/bin/python - <<'PY'
import json,os,shutil
import json, subprocess
res = json.load(open('.run/reloc_maint.out.json'))
mm = [r for r in res if r.get('status') == 'MISMATCH']
if mm:
rows = {(r['binary'], r['fn']) for r in mm}
batch = [r for r in json.load(open('.run/reloc_maint.json')) if (r['binary'], r['fn']) in rows]
json.dump(batch, open('.run/reloc_maint_mm.json', 'w'), indent=1)
subprocess.run(['.venv/bin/python', 'tools/reloc_identity.py', '--batch',
'.run/reloc_maint_mm.json', '-j', '4', '--fix'], capture_output=True)
p = subprocess.run(['.venv/bin/python', 'tools/reloc_identity.py', '--batch',
'.run/reloc_maint_mm.json', '-j', '4', '--out',
'.run/reloc_maint_mm.out.json'], capture_output=True)
fixed = {(r['binary'], r['fn']): r for r in json.load(open('.run/reloc_maint_mm.out.json'))}
res = [fixed.get((r.get('binary'), r['fn']), r) for r in res]
json.dump(res, open('.run/reloc_maint.out.json', 'w'), indent=1)
n = sum(1 for r in fixed.values() if r['status'] == 'AGREE')
print(f'reloc --fix: {n}/{len(mm)} MISMATCH draft(s) repaired to AGREE')
PY
.venv/bin/python - <<'PY'
import json,os,shutil,collections
res=json.load(open('.run/reloc_maint.out.json'))
ok={r['fn'] for r in res if r.get('status')=='AGREE'}
sel=[r for r in json.load(open('.run/aprop_maint_slate.json')) if r['fn'] in ok]
# STAGE ONLY WHAT CAN BANK (S59, measured). status==AGREE alone let 82 shape-DIFF drafts through
# — reloc AGREE says the SYMBOLS agree, shape==MATCH says the INSTRUCTIONS do; a shape-DIFF draft
# cannot be byte-identical, so each one staged is a whole-binary build spent to learn what
# match_one already printed. Three consecutive 0-bank passes gated 82 of these every 45 minutes.
# Key by (binary, fn): overlays share function NAMES across binaries (func_80162CCC exists in
# main AND ov_MAIN_012), and an fn-keyed set stages every same-named draft when ONE agrees.
ok={(r.get('binary'), r['fn']) for r in res
if r.get('status') in ('AGREE','UNRESOLVED') and r.get('shape')=='MATCH'}
sla=json.load(open('.run/aprop_maint_slate.json'))
sel=[r for r in sla if (r['binary'], r['fn']) in ok]
dropped=collections.Counter()
for r in res:
if (r.get('binary'), r['fn']) not in ok:
dropped[f"{r.get('status')}/{r.get('shape') or '-'}"] += 1
shutil.rmtree('.run/sweep_maint', ignore_errors=True)
for r in sel:
d=f".run/sweep_maint/{r['binary']}"; os.makedirs(d, exist_ok=True)
shutil.copy(r['draft'], f"{d}/{r['fn']}.c")
print('staged', len(sel))
print('staged', len(sel), 'of', len(sla), '; dropped by class:', dict(dropped))
PY
# SECOND CHANCE FOR STANDALONE COMPILE-FAILS (P31 S59). reloc_identity compiles each draft
# STANDALONE, but the draft is written to land in a TU that provides typedefs/decls the
# standalone compile lacks — the wrong oracle for the question (R33). Re-judge those against the
# REAL TU via rtu_match (no build tree, no locks) and stage the byte-MATCHes: measured 7 of 27
# such drafts were TU-byte-identical the day this landed, all previously dropped unjudged.
.venv/bin/python tools/rtu_second_chance.py --reloc .run/reloc_maint.out.json \
--slate .run/aprop_maint_slate.json --stage .run/sweep_maint -j 8 2>&1 | tail -2
# FREE RECOVERY OF PRE-GATE REJECTS (P31 S59). 45% of drafts never reach the gate — the reloc
# pre-filter drops them — and 13% of those have a body that ALREADY MATCHES with only the symbol
# names wrong (§171). Rebasing is deterministic and costs no model tokens, so it belongs in this
@@ -67,6 +115,37 @@ PY
if [ -n "$(ls .run/sweep_maint 2>/dev/null)" ]; then
flock .run/auto/draw.lock .venv/bin/python tools/sweep_parallel.py --drafts .run/sweep_maint -j 10 2>&1 | tail -2
# THE RETURN-TYPE HALF OF THE STALE-DECL WALL (S59, byte-proven 14/30 on its first run): a
# draft the gate rejects at closeness 0 has a byte-correct body; the dominant residual is the
# TU's own 'extern void f(void);' against a value-returning definition — the arity pre-pass
# relaxes the parens, not the return. fix_tu_ret_decls retypes the TU's decls to the
# definition's return (byte-neutral: declared-void callers ignore $v0), gates, and restores
# every edit the gate does not pay for. Zero tokens; the whole-binary SHA stays sole arbiter.
.venv/bin/python - <<'PY'
import json, glob, os, datetime
cut = (datetime.datetime.now() - datetime.timedelta(hours=1)).strftime('%Y-%m-%d %H:%M')
pairs = []
for d in glob.glob('.run/sweep_maint/*/'):
b = os.path.basename(d.rstrip('/'))
p = f'.run/auto/bulk/{b}.backlog.jsonl'
if not os.path.exists(f'config/splat.{b}.yaml') or not os.path.exists(p):
continue
fns = {os.path.basename(c)[:-2] for c in glob.glob(d + '*.c')}
last = {}
for line in open(p, errors='replace'):
try: r = json.loads(line)
except Exception: continue
if r.get('name') in fns and r.get('ts', '') >= cut:
last[r['name']] = r
pairs += [[b, fn] for fn, r in last.items()
if r.get('status') == 'near' and r.get('closeness') == 0]
json.dump(pairs, open('.run/ret_pairs_maint.json', 'w'))
print('fix_tu_ret candidates:', len(pairs))
PY
if [ -s .run/ret_pairs_maint.json ] && [ "$(cat .run/ret_pairs_maint.json)" != "[]" ]; then
.venv/bin/python tools/fix_tu_ret_decls.py --pairs-file .run/ret_pairs_maint.json \
--drafts .run/sweep_maint -j 6 2>&1 | tail -2
fi
if [ -n "$(git status --porcelain -- src/ config/)" ]; then
git add -A src/ config/
# NEVER stage main's TUs (top-level src/*.c) from this lane (S59): sweep_parallel refuses
+2 -2
View File
@@ -20,7 +20,7 @@ cd /home/musashi/bfm-decomp
BEFORE=" $(ls .run/ready/ 2>/dev/null | tr '\n' ' ')"
DEADLINE=$(( $(date +%s) + 5400 ))
say(){ echo "[$(date +%H:%M:%S)] [relaunch] $*"; }
say "waiting for a ready marker not in:$BEFORE"
say "waiting for a ready marker not in:$BEFORE (5s poll — the running python still carries the PAID lane)"
new_marker(){
for m in $(ls .run/ready/ 2>/dev/null); do
case "$BEFORE" in *" $m "*) ;; *) return 0;; esac
@@ -30,7 +30,7 @@ new_marker(){
while ! new_marker; do
[ "$(date +%s)" -ge "$DEADLINE" ] && { say "deadline passed — NOT restarting"; exit 1; }
[ -e .run/ox_campaign.stop ] && { say "campaign stopped"; exit 0; }
sleep 30
sleep 5
done
say "a wave queued; restarting the drafter shell"
pkill -f 'bash .run/drafter.sh' 2>/dev/null || true