mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-09-26 21:36:06 -04:00
refactor(phase-29): DELETE gate_stage's jtbl pre-pass (R33) + the honest ladder measurement
gate_stage._jtbl_prepare carried the SAME config-only undo as harvest_verify's did,
and ate the tree again on the first ladder run: 5 orphan region files, truncated
TUs, `undefined reference to func_80192F64`. That INVALIDATED the run's 0/10, so it
was re-measured rather than reported (R35 — a probe from a broken tool is not
evidence). Tree restored from HEAD and re-verified byte-identical first.
DELETED, not patched (R33 — the best outcome is a deleted stage). It was wrong on
two independent axes:
1. §61b already byte-proved THE CARVE MUST FOLLOW THE SPLICE. A batch pre-pass
carving unspliced functions reports "prepared" and yields a spec that fails
once the body lands — which is why it banked nothing.
2. Its undo snapshotted only config/, while jr_isolate_all rewrites region 0 back
over the ORIGINAL src/<ov>/<nm>.c truncated.
harvest_verify's per-draft prep is the correct mechanism, snapshots the full source
set, and undoes per function. Two implementations of one capability, the outer one
ineffective AND destructive.
THE HONEST RE-MEASUREMENT (clean tree; tree verified clean after):
- 0/10 bank, but 9/10 now COMPILE and land as whole-binary byte-DIFF; 1/10 plumbing.
- match_one close=0 on several (the function's own bytes exact) and rtu_match says
MATCH-in-real-TU for func_80135888 — while func_801299C8's transformed draft does
not compile in its real TU at all. The residual is MIXED, not uniform; at least one
is an IMAGE-level effect rather than the draft or its TU decl context (prime
suspect: jtbl/rodata carve placement). NOT generalized from one data point.
- This PRICES Task 14 stages 2-3 by measurement: the existing ladder converts 0 of
10, so they are not "wire in normalize_self_decls + the type-lift and collect ten
banks" — the projection error §57a already caught once this phase.
- R22 clean-fleet 140/140 BYTE-IDENTICAL with the giant func_8018F694 banked and the
func_80135A4C family swept 138/138
- cookbook §61d (the tree-eating undo in two tools; the constant-label defect; the
re-probe + ladder measurements; the general rule: an undo whose scope is narrower
than its write scope destroys work no byte-gate can see)
- decision-log + CURRENT_PHASE updated (R30/R31)
This commit is contained in:
@@ -6666,3 +6666,23 @@
|
||||
{"ts": "2026-07-21 21:02:15", "addr": "0x80135a4c", "name": "func_80135A4C", "reach": 1, "klass": "schedule", "nins": 181, "status": "near", "closeness": 170, "where_stuck": "none \u2014 MATCH (181 ins, relocation-masked; also rtu_match MATCH in ov_SC06_018_jr_8012ACE0)", "best_draft": ".run/backlog_drafts/func_80135A4C.c", "binary": "ov_SC06_018", "source": "t5jtbl2", "residual": [[0, "27bdffa8 addiu\tsp,sp,-88", "80135cec .word .L80135CEC"], [1, "afb50044 sw\ts5,68(sp)", "80135ab0 .word .L80135AB0"], [2, "0080a821 move\ts5,a0", "80135ad0 .word .L80135AD0"], [3, "afb10034 sw\ts1,52(sp)", "80135aec .word .L80135AEC"], [4, "00a08821 move\ts1,a1", "80135b00 .word .L80135B00"], [5, "afb3003c sw\ts3,60(sp)", "27bdffa8 addiu $sp, $sp, -0x58"], [6, "00c09821 move\ts3,a2", "afb50044 sw $s5, 0x44($sp)"], [7, "afb60048 sw\ts6,72(sp)", "0080a821 addu $s5, $a0, $zero"], [8, "00e0b021 move\ts6,a3", "afb10034 sw $s1, 0x34($sp)"], [9, "afbf0050 sw\tra,80(sp)", "00a08821 addu $s1, $a1, $zero"], [10, "afb7004c sw\ts7,76(sp)", "afb3003c sw $s3, 0x3C($sp)"], [11, "afb40040 sw\ts4,64(sp)", "00c09821 addu $s3, $a2, $zero"], [12, "afb20038 sw\ts2,56(sp)", "afb60048 sw $s6, 0x48($sp)"], [14, "afb00030 sw\ts0,48(sp)", "afbf0050 sw $ra, 0x50($sp)"], [15, "00401821 move\tv1,v0", "afb7004c sw $s7, 0x4C($sp)"], [16, "2c620005 sltiu\tv0,v1,5", "afb40040 sw $s4, 0x40($sp)"], [17, "10400020 beqz\tv0,c8 <func_80135A4C+0xc8>", "afb20038 sw $s2, 0x38($sp)"], [18, "00031080 sll\tv0,v1,0x2", "0c04d520 jal func_80135480"], [19, "3c010000 lui\tat,0x0", "afb00030 sw $s0, 0x30($sp)"], [20, "00220821 addu\tat,at,v0", "00401821 addu $v1, $v0, $zero"], [21, "8c220000 lw\tv0,0(at)", "2c620005 sltiu $v0, $v1, 0x5"], [22, "00000000 nop", "10400020 beqz $v0, .L80135B14"], [23, "00400008 jr\tv0", "00031080 sll $v0, $v1, 2"], [24, "00000000 nop", "3c01801d lui $at, %hi(jtbl_801D2A78)"]], "passes_tried": null}
|
||||
{"ts": "2026-07-21 21:03:44", "addr": "0x80135a4c", "name": "func_80135A4C", "reach": 1, "klass": "schedule", "nins": 181, "status": "near", "closeness": 170, "where_stuck": "none \u2014 MATCH (181 ins, relocation-masked; also rtu_match MATCH in ov_SC06_018_jr_8012ACE0)", "best_draft": ".run/backlog_drafts/func_80135A4C.c", "binary": "ov_SC06_018", "source": "t5j3", "residual": [[0, "27bdffa8 addiu\tsp,sp,-88", "80135cec .word .L80135CEC"], [1, "afb50044 sw\ts5,68(sp)", "80135ab0 .word .L80135AB0"], [2, "0080a821 move\ts5,a0", "80135ad0 .word .L80135AD0"], [3, "afb10034 sw\ts1,52(sp)", "80135aec .word .L80135AEC"], [4, "00a08821 move\ts1,a1", "80135b00 .word .L80135B00"], [5, "afb3003c sw\ts3,60(sp)", "27bdffa8 addiu $sp, $sp, -0x58"], [6, "00c09821 move\ts3,a2", "afb50044 sw $s5, 0x44($sp)"], [7, "afb60048 sw\ts6,72(sp)", "0080a821 addu $s5, $a0, $zero"], [8, "00e0b021 move\ts6,a3", "afb10034 sw $s1, 0x34($sp)"], [9, "afbf0050 sw\tra,80(sp)", "00a08821 addu $s1, $a1, $zero"], [10, "afb7004c sw\ts7,76(sp)", "afb3003c sw $s3, 0x3C($sp)"], [11, "afb40040 sw\ts4,64(sp)", "00c09821 addu $s3, $a2, $zero"], [12, "afb20038 sw\ts2,56(sp)", "afb60048 sw $s6, 0x48($sp)"], [14, "afb00030 sw\ts0,48(sp)", "afbf0050 sw $ra, 0x50($sp)"], [15, "00401821 move\tv1,v0", "afb7004c sw $s7, 0x4C($sp)"], [16, "2c620005 sltiu\tv0,v1,5", "afb40040 sw $s4, 0x40($sp)"], [17, "10400020 beqz\tv0,c8 <func_80135A4C+0xc8>", "afb20038 sw $s2, 0x38($sp)"], [18, "00031080 sll\tv0,v1,0x2", "0c04d520 jal func_80135480"], [19, "3c010000 lui\tat,0x0", "afb00030 sw $s0, 0x30($sp)"], [20, "00220821 addu\tat,at,v0", "00401821 addu $v1, $v0, $zero"], [21, "8c220000 lw\tv0,0(at)", "2c620005 sltiu $v0, $v1, 0x5"], [22, "00000000 nop", "10400020 beqz $v0, .L80135B14"], [23, "00400008 jr\tv0", "00031080 sll $v0, $v1, 2"], [24, "00000000 nop", "3c01801d lui $at, %hi(jtbl_801D2A78)"]], "passes_tried": null}
|
||||
{"ts": "2026-07-21 21:05:20", "addr": "0x80135a4c", "name": "func_80135A4C", "reach": 1, "klass": "schedule", "nins": 181, "status": "near", "closeness": 170, "where_stuck": "none \u2014 MATCH (181 ins, relocation-masked; also rtu_match MATCH in ov_SC06_018_jr_8012ACE0)", "best_draft": ".run/backlog_drafts/func_80135A4C.c", "binary": "ov_SC06_018", "source": "t5j4", "residual": [[0, "27bdffa8 addiu\tsp,sp,-88", "80135cec .word .L80135CEC"], [1, "afb50044 sw\ts5,68(sp)", "80135ab0 .word .L80135AB0"], [2, "0080a821 move\ts5,a0", "80135ad0 .word .L80135AD0"], [3, "afb10034 sw\ts1,52(sp)", "80135aec .word .L80135AEC"], [4, "00a08821 move\ts1,a1", "80135b00 .word .L80135B00"], [5, "afb3003c sw\ts3,60(sp)", "27bdffa8 addiu $sp, $sp, -0x58"], [6, "00c09821 move\ts3,a2", "afb50044 sw $s5, 0x44($sp)"], [7, "afb60048 sw\ts6,72(sp)", "0080a821 addu $s5, $a0, $zero"], [8, "00e0b021 move\ts6,a3", "afb10034 sw $s1, 0x34($sp)"], [9, "afbf0050 sw\tra,80(sp)", "00a08821 addu $s1, $a1, $zero"], [10, "afb7004c sw\ts7,76(sp)", "afb3003c sw $s3, 0x3C($sp)"], [11, "afb40040 sw\ts4,64(sp)", "00c09821 addu $s3, $a2, $zero"], [12, "afb20038 sw\ts2,56(sp)", "afb60048 sw $s6, 0x48($sp)"], [14, "afb00030 sw\ts0,48(sp)", "afbf0050 sw $ra, 0x50($sp)"], [15, "00401821 move\tv1,v0", "afb7004c sw $s7, 0x4C($sp)"], [16, "2c620005 sltiu\tv0,v1,5", "afb40040 sw $s4, 0x40($sp)"], [17, "10400020 beqz\tv0,c8 <func_80135A4C+0xc8>", "afb20038 sw $s2, 0x38($sp)"], [18, "00031080 sll\tv0,v1,0x2", "0c04d520 jal func_80135480"], [19, "3c010000 lui\tat,0x0", "afb00030 sw $s0, 0x30($sp)"], [20, "00220821 addu\tat,at,v0", "00401821 addu $v1, $v0, $zero"], [21, "8c220000 lw\tv0,0(at)", "2c620005 sltiu $v0, $v1, 0x5"], [22, "00000000 nop", "10400020 beqz $v0, .L80135B14"], [23, "00400008 jr\tv0", "00031080 sll $v0, $v1, 2"], [24, "00000000 nop", "3c01801d lui $at, %hi(jtbl_801D2A78)"]], "passes_tried": null}
|
||||
{"ts": "2026-07-22 01:31:28", "addr": "0x801299c8", "name": "func_801299C8", "reach": 1, "klass": "schedule", "nins": 158, "status": "near", "closeness": 0, "where_stuck": "none \u2014 MATCH (158 ins, match_one relocation-masked)", "best_draft": ".run/backlog_drafts/func_801299C8.c", "binary": "ov_SC06_018", "source": "worker", "residual": null, "passes_tried": null}
|
||||
{"ts": "2026-07-22 01:32:21", "addr": "0x8012aaac", "name": "func_8012AAAC", "reach": 1, "klass": "schedule", "nins": 125, "status": "near", "closeness": 0, "where_stuck": "none \u2014 MATCH (125 ins, relocation-masked)", "best_draft": ".run/backlog_drafts/func_8012AAAC.c", "binary": "ov_SC06_018", "source": "worker", "residual": null, "passes_tried": null}
|
||||
{"ts": "2026-07-22 01:33:28", "addr": "0x80135260", "name": "func_80135260", "reach": 1, "klass": "other", "nins": 136, "status": "near", "closeness": 127, "where_stuck": "none \u2014 MATCH", "best_draft": ".run/backlog_drafts/func_80135260.c", "binary": "ov_SC06_018", "source": "worker", "residual": [[0, "27bdff98 addiu\tsp,sp,-104", "80135454 .word .L80135454"], [1, "afb30054 sw\ts3,84(sp)", "801352b8 .word .L801352B8"], [2, "00809821 move\ts3,a0", "801352d8 .word .L801352D8"], [3, "afb1004c sw\ts1,76(sp)", "801352f4 .word .L801352F4"], [4, "00a08821 move\ts1,a1", "80135308 .word .L80135308"], [5, "afb5005c sw\ts5,92(sp)", "27bdff98 addiu $sp, $sp, -0x68"], [6, "00e0a821 move\ts5,a3", "afb30054 sw $s3, 0x54($sp)"], [7, "afbf0060 sw\tra,96(sp)", "00809821 addu $s3, $a0, $zero"], [8, "afb40058 sw\ts4,88(sp)", "afb1004c sw $s1, 0x4C($sp)"], [9, "afb20050 sw\ts2,80(sp)", "00a08821 addu $s1, $a1, $zero"], [11, "afb00048 sw\ts0,72(sp)", "00e0a821 addu $s5, $a3, $zero"], [12, "00401821 move\tv1,v0", "afbf0060 sw $ra, 0x60($sp)"], [13, "2c620005 sltiu\tv0,v1,5", "afb40058 sw $s4, 0x58($sp)"], [14, "10400020 beqz\tv0,bc <func_80135260+0xbc>", "afb20050 sw $s2, 0x50($sp)"], [15, "00031080 sll\tv0,v1,0x2", "0c04d520 jal func_80135480"], [16, "3c010000 lui\tat,0x0", "afb00048 sw $s0, 0x48($sp)"], [17, "00220821 addu\tat,at,v0", "00401821 addu $v1, $v0, $zero"], [18, "8c220000 lw\tv0,0(at)", "2c620005 sltiu $v0, $v1, 0x5"], [19, "00000000 nop", "10400020 beqz $v0, .L8013531C"], [20, "00400008 jr\tv0", "00031080 sll $v0, $v1, 2"], [21, "00000000 nop", "3c01801d lui $at, %hi(jtbl_801D2A48)"], [22, "26740034 addiu\ts4,s3,52", "00220821 addu $at, $at, $v0"], [23, "3c020fff lui\tv0,0xfff", "8c222a48 lw $v0, %lo(jtbl_801D2A48)($at)"], [24, "3442ffff ori\tv0,v0,0xffff", "00000000 nop"]], "passes_tried": null}
|
||||
{"ts": "2026-07-22 01:34:41", "addr": "0x80135888", "name": "func_80135888", "reach": 1, "klass": "regalloc-order", "nins": 113, "status": "near", "closeness": 0, "where_stuck": "none -- MATCH (113 ins, relocation-masked)", "best_draft": ".run/backlog_drafts/func_80135888.c", "binary": "ov_SC06_018", "source": "worker", "residual": null, "passes_tried": null}
|
||||
{"ts": "2026-07-22 01:35:50", "addr": "0x80135d20", "name": "func_80135D20", "reach": 1, "klass": "regalloc-order", "nins": 100, "status": "near", "closeness": 94, "where_stuck": "none \u2014 MATCH (match_one 100/100 + rtu_match real-TU); needs the PAIRED //@EDIT on ((s32 (*)(void *, s32, s16 *, s16 *))func_80135480)(return s16->s32 + `s32 result;`->`s16 result;`, whole-TU byte-neutral, verified) + one $s1 pin on `flag`", "best_draft": ".run/backlog_drafts/func_80135D20.c", "binary": "ov_SC06_018", "source": "worker", "residual": [[0, "27bdff68 addiu\tsp,sp,-152", "80135e84 .word .L80135E84"], [1, "afb30084 sw\ts3,132(sp)", "80135da0 .word .L80135DA0"], [2, "00809821 move\ts3,a0", "80135dc0 .word .L80135DC0"], [3, "afb20080 sw\ts2,128(sp)", "80135ddc .word .L80135DDC"], [4, "00a09021 move\ts2,a1", "80135df0 .word .L80135DF0"], [5, "afb40088 sw\ts4,136(sp)", "27bdff68 addiu $sp, $sp, -0x98"], [6, "00c0a021 move\ts4,a2", "afb30084 sw $s3, 0x84($sp)"], [7, "afbf0090 sw\tra,144(sp)", "00809821 addu $s3, $a0, $zero"], [8, "afb5008c sw\ts5,140(sp)", "afb20080 sw $s2, 0x80($sp)"], [9, "afb1007c sw\ts1,124(sp)", "00a09021 addu $s2, $a1, $zero"], [10, "afb00078 sw\ts0,120(sp)", "afb40088 sw $s4, 0x88($sp)"], [11, "96820000 lhu\tv0,0(s4)", "00c0a021 addu $s4, $a2, $zero"], [12, "00000000 nop", "afbf0090 sw $ra, 0x90($sp)"], [13, "a7a20070 sh\tv0,112(sp)", "afb5008c sw $s5, 0x8C($sp)"], [14, "96820002 lhu\tv0,2(s4)", "afb1007c sw $s1, 0x7C($sp)"], [15, "00000000 nop", "afb00078 sw $s0, 0x78($sp)"], [16, "24420300 addiu\tv0,v0,768", "96820000 lhu $v0, 0x0($s4)"], [17, "a7a20072 sh\tv0,114(sp)", "00000000 nop"], [18, "96820004 lhu\tv0,4(s4)", "a7a20070 sh $v0, 0x70($sp)"], [19, "27a70070 addiu\ta3,sp,112", "96820002 lhu $v0, 0x2($s4)"], [21, "a7a20074 sh\tv0,116(sp)", "24420300 addiu $v0, $v0, 0x300"], [22, "00401821 move\tv1,v0", "a7a20072 sh $v0, 0x72($sp)"], [23, "2c620005 sltiu\tv0,v1,5", "96820004 lhu $v0, 0x4($s4)"], [24, "10400020 beqz\tv0,e4 <func_80135D20+0xe4>", "27a70070 addiu $a3, $sp, 0x70"]], "passes_tried": null}
|
||||
{"ts": "2026-07-22 01:36:21", "addr": null, "name": "func_801365B8", "reach": null, "klass": "schedule", "nins": null, "status": "failed", "closeness": null, "where_stuck": "none \u2014 MATCH (155/155). Two levers: (1) the three D_8012672x tail globals MUST be", "best_draft": ".run/backlog_drafts/func_801365B8.c", "binary": "ov_SC06_018", "source": "worker", "residual": null, "passes_tried": null}
|
||||
{"ts": "2026-07-22 01:36:54", "addr": null, "name": "func_80165CA0", "reach": null, "klass": "regalloc-order", "nins": null, "status": "near", "closeness": 0, "where_stuck": "none \u2014 MATCH (99 ins, match_one masked)", "best_draft": ".run/backlog_drafts/func_80165CA0.c", "binary": "ov_SC06_018", "source": "worker", "residual": null, "passes_tried": null}
|
||||
{"ts": "2026-07-22 01:37:25", "addr": null, "name": "func_801749C8", "reach": null, "klass": "schedule", "nins": null, "status": "near", "closeness": 0, "where_stuck": "none \u2014 MATCH (105 ins)", "best_draft": ".run/backlog_drafts/func_801749C8.c", "binary": "ov_SC06_018", "source": "worker", "residual": null, "passes_tried": null}
|
||||
{"ts": "2026-07-22 01:38:34", "addr": null, "name": "func_8019059C", "reach": null, "klass": "regalloc-order", "nins": null, "status": "near", "closeness": 614, "where_stuck": "none \u2014 MATCH (673 ins)", "best_draft": ".run/backlog_drafts/func_8019059C.c", "binary": "ov_SC06_018", "source": "worker", "residual": [[0, "27bdffc0 addiu\tsp,sp,-64", "801905e0 .word .L801905E0"], [1, "afb10034 sw\ts1,52(sp)", "801906dc .word .L801906DC"], [2, "00808821 move\ts1,a0", "80190738 .word .L80190738"], [3, "afbf003c sw\tra,60(sp)", "80190780 .word .L80190780"], [4, "afb20038 sw\ts2,56(sp)", "801907c0 .word .L801907C0"], [5, "afb00030 sw\ts0,48(sp)", "801907e8 .word .L801907E8"], [6, "96230034 lhu\tv1,52(s1)", "80190864 .word .L80190864"], [7, "00000000 nop", "80190b1c .word .L80190B1C"], [8, "2c62000a sltiu\tv0,v1,10", "80190e1c .word .L80190E1C"], [9, "10400290 beqz\tv0,a68 <func_8019059C+0xa68>", "801906a0 .word .L801906A0"], [10, "00031080 sll\tv0,v1,0x2", "27bdffc0 addiu $sp, $sp, -0x40"], [11, "3c010000 lui\tat,0x0", "afb10034 sw $s1, 0x34($sp)"], [12, "00220821 addu\tat,at,v0", "00808821 addu $s1, $a0, $zero"], [13, "8c220000 lw\tv0,0(at)", "afbf003c sw $ra, 0x3C($sp)"], [14, "00000000 nop", "afb20038 sw $s2, 0x38($sp)"], [15, "00400008 jr\tv0", "afb00030 sw $s0, 0x30($sp)"], [16, "00000000 nop", "96230034 lhu $v1, 0x34($s1)"], [18, "02202021 move\ta0,s1", "2c62000a sltiu $v0, $v1, 0xA"], [19, "3c030003 lui\tv1,0x3", "10400290 beqz $v0, .L80191004"], [20, "3463ffff ori\tv1,v1,0xffff", "00031080 sll $v0, $v1, 2"], [21, "0062182a slt\tv1,v1,v0", "3c01801d lui $at, %hi(jtbl_801D3B4C)"], [22, "14600283 bnez\tv1,a68 <func_8019059C+0xa68>", "00220821 addu $at, $at, $v0"], [23, "24100200 li\ts0,512", "8c223b4c lw $v0, %lo(jtbl_801D3B4C)($at)"], [24, "3c050000 lui\ta1,0x0", "00000000 nop"]], "passes_tried": null}
|
||||
{"ts": "2026-07-22 01:39:48", "addr": null, "name": "func_80191C50", "reach": null, "klass": "schedule", "nins": null, "status": "near", "closeness": 9, "where_stuck": "close=9 \u2014 only the case-7 sp20[] setup window (0x80192380..0x801923A4): gcc's list scheduler picks the D_80126B62 lui 2nd (its extra `addiu -0x38` gives that chain +1 priority) where the target picks D_80126B66 2nd (LUID/program order); everything else (710/710 ins, frame 0x40, $s0/$s1, jtbl, 3 entity loops, 8 sync blocks, cross-jumped L4AC tail) is byte-identical.", "best_draft": ".run/backlog_drafts/func_80191C50.c", "binary": "ov_SC06_018", "source": "worker", "residual": [[460, "3c030000 lui\tv1,0x0", "3c028012 lui $v0, %hi(D_80126B5E)"], [461, "94630000 lhu\tv1,0(v1)", "94426b5e lhu $v0, %lo(D_80126B5E)($v0)"], [462, "3c020000 lui\tv0,0x0", "3c038012 lui $v1, %hi(D_80126B66)"], [463, "94420000 lhu\tv0,0(v0)", "94636b66 lhu $v1, %lo(D_80126B66)($v1)"], [464, "3c040000 lui\ta0,0x0", "a7a20020 sh $v0, 0x20($sp)"], [465, "94840000 lhu\ta0,0(a0)", "3c028012 lui $v0, %hi(D_80126B62)"], [466, "2442ffc8 addiu\tv0,v0,-56", "94426b62 lhu $v0, %lo(D_80126B62)($v0)"], [467, "a7a30020 sh\tv1,32(sp)", "a7a30024 sh $v1, 0x24($sp)"], [468, "a7a40024 sh\ta0,36(sp)", "2442ffc8 addiu $v0, $v0, -0x38"]], "passes_tried": null}
|
||||
{"ts": "2026-07-22 01:42:36", "addr": "0x801299c8", "name": "func_801299C8", "reach": 1, "klass": "schedule", "nins": 158, "status": "near", "closeness": 0, "where_stuck": "none \u2014 MATCH (158 ins, match_one relocation-masked)", "best_draft": ".run/backlog_drafts/func_801299C8.c", "binary": "ov_SC06_018", "source": "worker", "residual": null, "passes_tried": null}
|
||||
{"ts": "2026-07-22 01:43:23", "addr": "0x8012aaac", "name": "func_8012AAAC", "reach": 1, "klass": "schedule", "nins": 125, "status": "near", "closeness": 0, "where_stuck": "none \u2014 MATCH (125 ins, relocation-masked)", "best_draft": ".run/backlog_drafts/func_8012AAAC.c", "binary": "ov_SC06_018", "source": "worker", "residual": null, "passes_tried": null}
|
||||
{"ts": "2026-07-22 01:44:29", "addr": "0x80135260", "name": "func_80135260", "reach": 1, "klass": "other", "nins": 136, "status": "near", "closeness": 5, "where_stuck": "none \u2014 MATCH", "best_draft": ".run/backlog_drafts/func_80135260.c", "binary": "ov_SC06_018", "source": "worker", "residual": [[76, "90840000 lbu\ta0,0(a0)", "8c843b68 lw $a0, %lo(D_80193B68)($a0)"], [78, "90c60000 lbu\ta2,0(a2)", "8cc63b64 lw $a2, %lo(D_80193B64)($a2)"], [82, "90a50000 lbu\ta1,0(a1)", "8ca53b70 lw $a1, %lo(D_80193B70)($a1)"], [102, "90840000 lbu\ta0,0(a0)", "8c843b64 lw $a0, %lo(D_80193B64)($a0)"], [104, "90c60000 lbu\ta2,0(a2)", "8cc63b68 lw $a2, %lo(D_80193B68)($a2)"]], "passes_tried": null}
|
||||
{"ts": "2026-07-22 01:45:36", "addr": "0x80135888", "name": "func_80135888", "reach": 1, "klass": "regalloc-order", "nins": 113, "status": "near", "closeness": 0, "where_stuck": "none -- MATCH (113 ins, relocation-masked)", "best_draft": ".run/backlog_drafts/func_80135888.c", "binary": "ov_SC06_018", "source": "worker", "residual": null, "passes_tried": null}
|
||||
{"ts": "2026-07-22 01:46:43", "addr": "0x80135d20", "name": "func_80135D20", "reach": 1, "klass": "regalloc-order", "nins": 100, "status": "near", "closeness": 0, "where_stuck": "none \u2014 MATCH (match_one 100/100 + rtu_match real-TU); needs the PAIRED //@EDIT on ((s32 (*)(void *, s32, s16 *, s16 *))func_80135480)(return s16->s32 + `s32 result;`->`s16 result;`, whole-TU byte-neutral, verified) + one $s1 pin on `flag`", "best_draft": ".run/backlog_drafts/func_80135D20.c", "binary": "ov_SC06_018", "source": "worker", "residual": null, "passes_tried": null}
|
||||
{"ts": "2026-07-22 01:47:14", "addr": null, "name": "func_801365B8", "reach": null, "klass": "schedule", "nins": null, "status": "failed", "closeness": null, "where_stuck": "none \u2014 MATCH (155/155). Two levers: (1) the three D_8012672x tail globals MUST be", "best_draft": ".run/backlog_drafts/func_801365B8.c", "binary": "ov_SC06_018", "source": "worker", "residual": null, "passes_tried": null}
|
||||
{"ts": "2026-07-22 01:47:46", "addr": null, "name": "func_80165CA0", "reach": null, "klass": "regalloc-order", "nins": null, "status": "near", "closeness": 0, "where_stuck": "none \u2014 MATCH (99 ins, match_one masked)", "best_draft": ".run/backlog_drafts/func_80165CA0.c", "binary": "ov_SC06_018", "source": "worker", "residual": null, "passes_tried": null}
|
||||
{"ts": "2026-07-22 01:48:18", "addr": null, "name": "func_801749C8", "reach": null, "klass": "schedule", "nins": null, "status": "near", "closeness": 0, "where_stuck": "none \u2014 MATCH (105 ins)", "best_draft": ".run/backlog_drafts/func_801749C8.c", "binary": "ov_SC06_018", "source": "worker", "residual": null, "passes_tried": null}
|
||||
{"ts": "2026-07-22 01:49:25", "addr": null, "name": "func_8019059C", "reach": null, "klass": "regalloc-order", "nins": null, "status": "near", "closeness": 0, "where_stuck": "none \u2014 MATCH (673 ins)", "best_draft": ".run/backlog_drafts/func_8019059C.c", "binary": "ov_SC06_018", "source": "worker", "residual": null, "passes_tried": null}
|
||||
{"ts": "2026-07-22 01:50:33", "addr": null, "name": "func_80191C50", "reach": null, "klass": "schedule", "nins": null, "status": "near", "closeness": 9, "where_stuck": "close=9 \u2014 only the case-7 sp20[] setup window (0x80192380..0x801923A4): gcc's list scheduler picks the D_80126B62 lui 2nd (its extra `addiu -0x38` gives that chain +1 priority) where the target picks D_80126B66 2nd (LUID/program order); everything else (710/710 ins, frame 0x40, $s0/$s1, jtbl, 3 entity loops, 8 sync blocks, cross-jumped L4AC tail) is byte-identical.", "best_draft": ".run/backlog_drafts/func_80191C50.c", "binary": "ov_SC06_018", "source": "worker", "residual": [[460, "3c030000 lui\tv1,0x0", "3c028012 lui $v0, %hi(D_80126B5E)"], [461, "94630000 lhu\tv1,0(v1)", "94426b5e lhu $v0, %lo(D_80126B5E)($v0)"], [462, "3c020000 lui\tv0,0x0", "3c038012 lui $v1, %hi(D_80126B66)"], [463, "94420000 lhu\tv0,0(v0)", "94636b66 lhu $v1, %lo(D_80126B66)($v1)"], [464, "3c040000 lui\ta0,0x0", "a7a20020 sh $v0, 0x20($sp)"], [465, "94840000 lhu\ta0,0(a0)", "3c028012 lui $v0, %hi(D_80126B62)"], [466, "2442ffc8 addiu\tv0,v0,-56", "94426b62 lhu $v0, %lo(D_80126B62)($v0)"], [467, "a7a30020 sh\tv1,32(sp)", "a7a30024 sh $v1, 0x24($sp)"], [468, "a7a40024 sh\ta0,36(sp)", "2442ffc8 addiu $v0, $v0, -0x38"]], "passes_tried": null}
|
||||
|
||||
+1356
-1357
File diff suppressed because it is too large
Load Diff
+6
-6
@@ -2,11 +2,11 @@
|
||||
|
||||
> Generated by `tools/family_hseq.py` from the 134 overlay sigs + per-overlay src stubs. Ranked by TEMPLATABLE byte-weight (PURE+IMM members × nins × 4). The byte-gate is the arbiter.
|
||||
|
||||
**Fleet (overlays):** 88.1% fn / 78.0% instr / 66.5% distinct-code matched. Unmatched: 41,751 instances / 2,876,589 ins (23,361 distinct classes).
|
||||
**Fleet (overlays):** 88.2% fn / 78.0% instr / 66.5% distinct-code matched. Unmatched: 41,585 instances / 2,871,950 ins (23,337 distinct classes).
|
||||
|
||||
**Tail cross-check (Phase-25 close):** 28,754 tail fns / 1,179,549 ins → 583 h_seq families ≥2, **165 substantial (nins≥80) / 692,494 ins**.
|
||||
**Tail cross-check (Phase-25 close):** 28,173 tail fns / 1,178,976 ins → 581 h_seq families ≥2, **165 substantial (nins≥80) / 692,313 ins**.
|
||||
|
||||
**Full frontier (all unmatched by h_seq):** 2739 target families (≥2 members or a matched sibling) + 3787 singletons (Step-D residue). Substantial: **572 families / 1,577,844 templatable ins**, 67 with a matched sibling (zero-crack). Substantial member classes: 10,077 PURE · 40 IMM · 6 STRUCT-excluded.
|
||||
**Full frontier (all unmatched by h_seq):** 2735 target families (≥2 members or a matched sibling) + 3780 singletons (Step-D residue). Substantial: **572 families / 1,577,559 templatable ins**, 69 with a matched sibling (zero-crack). Substantial member classes: 10,075 PURE · 40 IMM · 6 STRUCT-excluded.
|
||||
|
||||
|
||||
## Top substantial families (by templatable byte-weight)
|
||||
@@ -27,7 +27,7 @@
|
||||
| 12 | 198 | 138 (138/0/0) | 1/138 | per-location | PURE | 0 | · | 0x801412a8 draft-ov077 | 27,324 |
|
||||
| 13 | 188 | 138 (138/0/0) | 1/138 | per-location | PURE | 0 | · | 0x80175ab8 draft-ov077 | 25,944 |
|
||||
| 14 | 183 | 137 (137/0/0) | 1/137 | per-location | PURE | 1 | Y | 0x8014032c matched-ov077 | 25,071 |
|
||||
| 15 | 181 | 138 (138/0/0) | 1/138 | per-location | PURE | 0 | Y | 0x80135a4c draft-ov077 | 24,978 |
|
||||
| 15 | 181 | 137 (137/0/0) | 1/137 | per-location | PURE | 1 | Y | 0x80135a4c matched | 24,797 |
|
||||
| 16 | 165 | 138 (138/0/0) | 1/138 | per-location | PURE | 0 | · | 0x80178004 draft-ov077 | 22,770 |
|
||||
| 17 | 158 | 138 (138/0/0) | 1/138 | per-location | PURE | 0 | Y | 0x801299c8 draft-ov077 | 21,804 |
|
||||
| 18 | 154 | 137 (137/0/0) | 1/137 | per-location | PURE | 1 | Y | 0x8013c0f8 matched-ov077 | 21,098 |
|
||||
@@ -46,8 +46,8 @@
|
||||
| 31 | 947 | 16 (16/0/0) | 6/16 | cross-address | PURE | 0 | Y | 0x8017c974 draft-ov077 | 15,152 |
|
||||
| 32 | 105 | 138 (138/0/0) | 1/138 | per-location | PURE | 0 | · | 0x8012cc88 draft-ov077 | 14,490 |
|
||||
| 33 | 105 | 138 (138/0/0) | 1/138 | per-location | PURE | 0 | · | 0x80169228 draft-ov077 | 14,490 |
|
||||
| 34 | 104 | 138 (138/0/0) | 1/138 | per-location | PURE | 0 | · | 0x80167714 draft-ov077 | 14,352 |
|
||||
| 35 | 105 | 136 (136/0/0) | 1/136 | per-location | PURE | 2 | · | 0x801749c8 matched-ov077 | 14,280 |
|
||||
| 34 | 105 | 136 (136/0/0) | 1/136 | per-location | PURE | 2 | · | 0x801749c8 matched-ov077 | 14,280 |
|
||||
| 35 | 104 | 137 (137/0/0) | 1/137 | per-location | PURE | 1 | · | 0x80167714 matched-ov077 | 14,248 |
|
||||
| 36 | 101 | 138 (138/0/0) | 1/138 | per-location | PURE | 0 | · | 0x801463a0 draft-ov077 | 13,938 |
|
||||
| 37 | 101 | 138 (138/0/0) | 1/138 | per-location | PURE | 0 | · | 0x80177940 draft-ov077 | 13,938 |
|
||||
| 38 | 100 | 138 (138/0/0) | 1/138 | per-location | PURE | 0 | Y | 0x80135d20 draft-ov077 | 13,800 |
|
||||
|
||||
@@ -4754,3 +4754,57 @@ ladder. The correct next step is to diagnose the divergence itself (diff the inc
|
||||
**Measured, so the next session does not re-derive it:** of 11 preserved wave cracks, exactly ONE
|
||||
(`func_80135A4C`) reaches byte-identical through the carve path; the other four table-bearing ones
|
||||
fail one-at-a-time too, on the PLUMBING classes (§57 self-decl et al), not on the carve.
|
||||
|
||||
### §61d — The undo was eating the tree: two tools, one defect, invisible to the byte-gate (Phase 29, 2026-07-22)
|
||||
|
||||
The §61c blocker turned out not to exist (see the REFUTED block above), and chasing *why* it had ever been
|
||||
observed found the mechanism — in **two** tools, both times invisible to the gate that caused it.
|
||||
|
||||
> **`jr_isolate_all` repartitions a code object by writing region 0 back over the ORIGINAL
|
||||
> `src/<ov>/<nm>.c`, TRUNCATED to just that region**, and emitting the remainder as new `_jr_<lo>.c` files.
|
||||
> An undo that restores only `config/` and deletes the new region files therefore leaves the original TU
|
||||
> permanently truncated — its stubs are gone, and **nothing regenerates them** (splat does not rewrite a
|
||||
> committed overlay `.c`).
|
||||
|
||||
Both `harvest_verify._jtbl_restore` and `gate_stage._jtbl_prepare` snapshotted only the two config files.
|
||||
Measured, twice, on live re-probe runs: live stubs **419 → 414 → 406 → 395**, five orphan region files, and
|
||||
`undefined reference to func_80192F64` at link.
|
||||
|
||||
**Why it survived so long: it is invisible to the byte-gate.** The incremental build keeps linking the stale
|
||||
objects (§42b), so `make build` stays GREEN while a clean rebuild fails — the gate that authorises the bank
|
||||
is the same incremental build that hides the damage. This is the §42b blind spot doing real, cumulative
|
||||
damage, and it is what manufactured the "139/140, twice" reading that became the §61c blocker.
|
||||
|
||||
**Fixes.** `harvest_verify`: snapshot every `src/<binary>/*.c`, restore on rejection, and delete exactly the
|
||||
files the attempt created — derived from the snapshot's file set, not re-guessed from the `_jr_*` name shape
|
||||
(R33). `gate_stage._jtbl_prepare`: **DELETED, not patched** (R33 — the best outcome is a deleted stage). It
|
||||
was wrong on two independent axes: §61b had already byte-proved the carve must FOLLOW the splice, and
|
||||
`harvest_verify` now does the correct per-draft prep one layer down. Two implementations of one capability,
|
||||
the outer one both ineffective and destructive.
|
||||
|
||||
**A label that is constant carries no information (and is worse than none).** `classify_fail` searched the
|
||||
whole build stderr, so `warning: conflicting types for built-in function 'memcpy'` — benign, from an
|
||||
unrelated TU position, present on essentially every overlay build — won the match on **8 of 8** failures
|
||||
spanning four genuinely different causes. That is the §58 red-herring, and the cookbook had been recording
|
||||
"the gate label is useless here, splice individually and read real cc1 stderr" as a *manual workaround for a
|
||||
one-line bug*. Fix: classify on NON-warning lines; fall through to `CC1-FAIL:<last error line>`. The same
|
||||
failure instantly became `ov_SC06_018.c:447: prototype declaration`.
|
||||
|
||||
**What the honest re-probe then measured** (11 preserved t5wave cracks, one invocation each, clean tree):
|
||||
* **`func_8018F694` (478 ins) BANKED** — a giant previously inside "the gate banked ZERO".
|
||||
* The other 10: **4 data-decl · 3 callee-decl · 3 self-decl** conflicts. **ZERO jtbl-drift, ZERO local-type
|
||||
redefinition, ZERO codegen DIFF.** So **§61a's "§8e-2 jtbl drift blocks 10 of 12" does not survive** the
|
||||
carve-follows-splice prep — the carve succeeds; what is left is ordinary decl plumbing.
|
||||
* Through `gate_stage`'s ladder: **0/10 bank**, but **9/10 now COMPILE** and land as whole-binary byte-DIFF.
|
||||
`match_one` close=0 on several and `rtu_match` MATCH-in-real-TU for `func_80135888`, while
|
||||
`func_801299C8`'s transformed draft does not compile in its real TU at all — the residual is **MIXED**, and
|
||||
at least one is an IMAGE-level effect rather than the draft or its TU context (prime suspect: jtbl/rodata
|
||||
carve placement). **Deliberately not generalized from one data point.**
|
||||
|
||||
**The pricing this yields:** the existing ladder converts **0 of 10** of these residuals. Task 14 stages 2-3
|
||||
are therefore NOT "wire in `normalize_self_decls` + the type-lift and collect ten banks" — a measurement, not
|
||||
a projection, which is the error §57a already caught once this phase.
|
||||
|
||||
**The rule, stated generally:** *any* stage that mutates shared state must undo by SNAPSHOT-RESTORE over the
|
||||
**complete** set of files it can touch — config AND source — and a stage whose undo scope is narrower than
|
||||
its write scope will silently destroy work that no byte-gate can see. §61's law, one level deeper.
|
||||
|
||||
+143
-143
@@ -4,156 +4,156 @@
|
||||
# cross-binary collapsible-byte leverage: docs/duplicates.cross.md.
|
||||
|
||||
# THREE progress metrics (all matter — see the labels):
|
||||
FLEET fn-count byte-ident: 311082 / 353722 = 87.95% (REAL+LINKED+empties; FUNCTION-count, ×134-inflated — one crack counts per overlay)
|
||||
FLEET instr-weighted : 10207974 / 13081451 = 78.0% (shipped .text across resident+138 overlays; the decomp.dev-DISPLAY number)
|
||||
FLEET distinct-code(uniq): 3709272 / 5574674 = 66.5% (64108/87459 unique fns; the DISTINCT-RE number)
|
||||
FLEET fn-count byte-ident: 311220 / 353722 = 87.98% (REAL+LINKED+empties; FUNCTION-count, ×134-inflated — one crack counts per overlay)
|
||||
FLEET instr-weighted : 10233249 / 13081451 = 78.2% (shipped .text across resident+138 overlays; the decomp.dev-DISPLAY number)
|
||||
FLEET distinct-code(uniq): 3733280 / 5574674 = 67.0% (64239/87459 unique fns; the DISTINCT-RE number)
|
||||
MAIN game-code weighted : 436 / 60201 = 0.7% (Phase-27 T10; SEPARATE — LINKED-excluding Ghidra sig dated 2026-06-14, PROVISIONAL until a fresh/complete main sig; NOT folded into the fleet number)
|
||||
|
||||
FLEET REAL substantive : 309227 (of which dedup-shared 234437 via 1848 groups / 234481 instances)
|
||||
FLEET REAL substantive : 309365 (of which dedup-shared 234437 via 1848 groups / 234481 instances)
|
||||
FLEET LINKED PsyQ objs : 959
|
||||
FLEET NON_MATCHING : 7 (0 in any default build — G4)
|
||||
FLEET INCLUDE_ASM stubs : 42633
|
||||
FLEET INCLUDE_ASM stubs : 42495
|
||||
FLEET matchable : 353722
|
||||
|
||||
| binary | REAL | shared | LINKED | byte-ident | matchable | byte-ident % |
|
||||
|---|---:|---:|---:|---:|---:|---:|
|
||||
| main | 54 | 2 | 959 | 1055 | 2096 | 50.3% |
|
||||
| resident | 129 | 0 | 0 | 131 | 145 | 90.3% |
|
||||
| ov_SC01_000 | 2220 | 1706 | 0 | 2220 | 2403 | 92.4% |
|
||||
| ov_SC01_001 | 2220 | 1706 | 0 | 2222 | 2466 | 90.1% |
|
||||
| ov_SC01_004 | 2212 | 1697 | 0 | 2213 | 2414 | 91.7% |
|
||||
| ov_SC01_005 | 2241 | 1719 | 0 | 2241 | 2503 | 89.5% |
|
||||
| ov_SC01_006 | 2241 | 1719 | 0 | 2241 | 2503 | 89.5% |
|
||||
| ov_SC01_008 | 2212 | 1697 | 0 | 2214 | 2426 | 91.3% |
|
||||
| ov_SC01_009 | 2237 | 1698 | 0 | 2238 | 2507 | 89.3% |
|
||||
| ov_SC01_074 | 2215 | 1698 | 0 | 2217 | 2425 | 91.4% |
|
||||
| ov_SC01_077 | 2407 | 1666 | 0 | 2409 | 2585 | 93.2% |
|
||||
| ov_SC01_080 | 2254 | 1701 | 0 | 2254 | 2512 | 89.7% |
|
||||
| ov_SC01_084 | 2261 | 1701 | 0 | 2266 | 2579 | 87.9% |
|
||||
| ov_SC02_000 | 2314 | 1736 | 0 | 2314 | 2683 | 86.2% |
|
||||
| ov_SC02_003 | 2314 | 1736 | 0 | 2314 | 2683 | 86.2% |
|
||||
| ov_SC02_004 | 2220 | 1701 | 0 | 2220 | 2401 | 92.5% |
|
||||
| ov_SC02_005 | 2327 | 1697 | 0 | 2337 | 2927 | 79.8% |
|
||||
| ov_SC02_011 | 2338 | 1704 | 0 | 2349 | 2893 | 81.2% |
|
||||
| ov_SC02_015 | 2221 | 1703 | 0 | 2221 | 2414 | 92.0% |
|
||||
| ov_SC02_016 | 2252 | 1703 | 0 | 2255 | 2545 | 88.6% |
|
||||
| ov_SC02_017 | 2298 | 1703 | 0 | 2306 | 2732 | 84.4% |
|
||||
| ov_SC02_021 | 2227 | 1703 | 0 | 2227 | 2437 | 91.4% |
|
||||
| ov_SC02_026 | 2242 | 1701 | 0 | 2248 | 2572 | 87.4% |
|
||||
| ov_SC02_027 | 2265 | 1701 | 0 | 2274 | 2692 | 84.5% |
|
||||
| ov_SC02_028 | 2266 | 1701 | 0 | 2276 | 2701 | 84.3% |
|
||||
| ov_SC02_031 | 2252 | 1702 | 0 | 2257 | 2562 | 88.1% |
|
||||
| ov_SC02_035 | 2228 | 1701 | 0 | 2231 | 2520 | 88.5% |
|
||||
| ov_SC02_039 | 2213 | 1701 | 0 | 2213 | 2416 | 91.6% |
|
||||
| ov_SC02_041 | 2248 | 1701 | 0 | 2251 | 2561 | 87.9% |
|
||||
| ov_SC03_001 | 2349 | 1702 | 0 | 2366 | 2869 | 82.5% |
|
||||
| ov_SC03_002 | 2275 | 1706 | 0 | 2290 | 2631 | 87.0% |
|
||||
| ov_SC03_003 | 2223 | 1701 | 0 | 2224 | 2423 | 91.8% |
|
||||
| ov_SC03_006 | 2288 | 1707 | 0 | 2297 | 2767 | 83.0% |
|
||||
| ov_SC03_007 | 2268 | 1701 | 0 | 2272 | 2623 | 86.6% |
|
||||
| ov_SC03_010 | 2229 | 1701 | 0 | 2229 | 2470 | 90.2% |
|
||||
| ov_SC03_011 | 2237 | 1701 | 0 | 2243 | 2527 | 88.8% |
|
||||
| ov_SC03_012 | 2215 | 1701 | 0 | 2216 | 2406 | 92.1% |
|
||||
| ov_SC03_013 | 2234 | 1701 | 0 | 2234 | 2492 | 89.6% |
|
||||
| ov_SC03_014 | 2293 | 1726 | 0 | 2293 | 2685 | 85.4% |
|
||||
| ov_SC03_015 | 2293 | 1726 | 0 | 2293 | 2685 | 85.4% |
|
||||
| ov_SC03_023 | 2221 | 1701 | 0 | 2222 | 2435 | 91.3% |
|
||||
| ov_SC03_024 | 2280 | 1706 | 0 | 2287 | 2641 | 86.6% |
|
||||
| ov_SC03_028 | 2261 | 1701 | 0 | 2265 | 2664 | 85.0% |
|
||||
| ov_SC03_029 | 2263 | 1703 | 0 | 2273 | 2644 | 86.0% |
|
||||
| ov_SC03_030 | 2236 | 1706 | 0 | 2238 | 2495 | 89.7% |
|
||||
| ov_SC03_031 | 2233 | 1701 | 0 | 2236 | 2514 | 88.9% |
|
||||
| ov_SC03_089 | 2247 | 1701 | 0 | 2254 | 2581 | 87.3% |
|
||||
| ov_SC03_090 | 2249 | 1701 | 0 | 2257 | 2625 | 86.0% |
|
||||
| ov_SC03_091 | 2252 | 1701 | 0 | 2260 | 2640 | 85.6% |
|
||||
| ov_SC03_092 | 2263 | 1701 | 0 | 2275 | 2587 | 87.9% |
|
||||
| ov_SC03_093 | 2239 | 1701 | 0 | 2243 | 2563 | 87.5% |
|
||||
| ov_SC03_094 | 2234 | 1701 | 0 | 2240 | 2577 | 86.9% |
|
||||
| ov_SC03_095 | 2224 | 1701 | 0 | 2227 | 2474 | 90.0% |
|
||||
| ov_SC03_096 | 2224 | 1701 | 0 | 2227 | 2465 | 90.3% |
|
||||
| ov_SC03_097 | 2253 | 1701 | 0 | 2260 | 2603 | 86.8% |
|
||||
| ov_SC03_098 | 2232 | 1701 | 0 | 2235 | 2541 | 88.0% |
|
||||
| ov_SC03_099 | 2225 | 1701 | 0 | 2228 | 2504 | 89.0% |
|
||||
| ov_SC03_100 | 2235 | 1701 | 0 | 2239 | 2539 | 88.2% |
|
||||
| ov_SC03_101 | 2235 | 1701 | 0 | 2239 | 2528 | 88.6% |
|
||||
| ov_SC03_102 | 2227 | 1701 | 0 | 2230 | 2492 | 89.5% |
|
||||
| ov_SC03_103 | 2230 | 1703 | 0 | 2233 | 2510 | 89.0% |
|
||||
| ov_SC03_104 | 2255 | 1701 | 0 | 2262 | 2616 | 86.5% |
|
||||
| ov_SC03_105 | 2249 | 1701 | 0 | 2256 | 2597 | 86.9% |
|
||||
| ov_SC03_108 | 2217 | 1701 | 0 | 2217 | 2443 | 90.7% |
|
||||
| ov_SC03_109 | 2218 | 1701 | 0 | 2220 | 2424 | 91.6% |
|
||||
| ov_SC03_110 | 2223 | 1701 | 0 | 2223 | 2468 | 90.1% |
|
||||
| ov_SC03_111 | 2235 | 1701 | 0 | 2238 | 2510 | 89.2% |
|
||||
| ov_SC03_112 | 2228 | 1703 | 0 | 2230 | 2526 | 88.3% |
|
||||
| ov_SC03_113 | 2221 | 1703 | 0 | 2224 | 2468 | 90.1% |
|
||||
| ov_SC03_114 | 2211 | 1701 | 0 | 2213 | 2415 | 91.6% |
|
||||
| ov_SC03_115 | 2228 | 1701 | 0 | 2230 | 2472 | 90.2% |
|
||||
| ov_SC03_116 | 2218 | 1701 | 0 | 2221 | 2438 | 91.1% |
|
||||
| ov_SC03_117 | 2246 | 1701 | 0 | 2252 | 2557 | 88.1% |
|
||||
| ov_SC03_118 | 2293 | 1725 | 0 | 2294 | 2685 | 85.4% |
|
||||
| ov_SC03_119 | 2292 | 1725 | 0 | 2293 | 2685 | 85.4% |
|
||||
| ov_SC03_121 | 2225 | 1701 | 0 | 2228 | 2459 | 90.6% |
|
||||
| ov_SC03_124 | 2305 | 1697 | 0 | 2325 | 2741 | 84.8% |
|
||||
| ov_SC03_125 | 2262 | 1701 | 0 | 2274 | 2588 | 87.9% |
|
||||
| ov_SC03_126 | 2224 | 1703 | 0 | 2224 | 2423 | 91.8% |
|
||||
| ov_SC04_000 | 2240 | 1705 | 0 | 2249 | 2546 | 88.3% |
|
||||
| ov_SC04_002 | 2256 | 1701 | 0 | 2260 | 2636 | 85.7% |
|
||||
| ov_SC04_003 | 2234 | 1701 | 0 | 2238 | 2502 | 89.4% |
|
||||
| ov_SC04_004 | 2243 | 1701 | 0 | 2245 | 2558 | 87.8% |
|
||||
| ov_SC04_005 | 2251 | 1701 | 0 | 2257 | 2612 | 86.4% |
|
||||
| ov_SC04_006 | 2224 | 1701 | 0 | 2226 | 2454 | 90.7% |
|
||||
| ov_SC04_007 | 2244 | 1701 | 0 | 2248 | 2569 | 87.5% |
|
||||
| ov_SC04_008 | 2214 | 1701 | 0 | 2214 | 2415 | 91.7% |
|
||||
| ov_SC04_009 | 2230 | 1701 | 0 | 2233 | 2441 | 91.5% |
|
||||
| ov_SC04_010 | 2221 | 1701 | 0 | 2222 | 2419 | 91.9% |
|
||||
| ov_SC04_011 | 2277 | 1701 | 0 | 2283 | 2803 | 81.4% |
|
||||
| ov_SC04_012 | 2217 | 1701 | 0 | 2218 | 2420 | 91.7% |
|
||||
| ov_SC04_015 | 2282 | 1702 | 0 | 2293 | 2611 | 87.8% |
|
||||
| ov_SC04_016 | 2220 | 1701 | 0 | 2222 | 2440 | 91.1% |
|
||||
| ov_SC04_018 | 2332 | 1736 | 0 | 2332 | 2857 | 81.6% |
|
||||
| ov_SC04_019 | 2338 | 1736 | 0 | 2338 | 2857 | 81.8% |
|
||||
| ov_SC04_020 | 2249 | 1701 | 0 | 2261 | 2567 | 88.1% |
|
||||
| ov_SC04_021 | 2225 | 1703 | 0 | 2225 | 2423 | 91.8% |
|
||||
| ov_SC05_000 | 2221 | 1705 | 0 | 2224 | 2422 | 91.8% |
|
||||
| ov_SC05_001 | 2244 | 1701 | 0 | 2249 | 2574 | 87.4% |
|
||||
| ov_SC05_002 | 2226 | 1701 | 0 | 2229 | 2442 | 91.3% |
|
||||
| ov_SC05_003 | 2223 | 1701 | 0 | 2224 | 2481 | 89.6% |
|
||||
| ov_SC05_004 | 2218 | 1701 | 0 | 2220 | 2464 | 90.1% |
|
||||
| ov_SC05_005 | 2225 | 1701 | 0 | 2226 | 2491 | 89.4% |
|
||||
| ov_SC05_006 | 2217 | 1701 | 0 | 2217 | 2430 | 91.2% |
|
||||
| ov_SC05_007 | 2227 | 1701 | 0 | 2232 | 2482 | 89.9% |
|
||||
| ov_SC05_008 | 2244 | 1701 | 0 | 2246 | 2543 | 88.3% |
|
||||
| ov_SC05_009 | 2222 | 1701 | 0 | 2226 | 2438 | 91.3% |
|
||||
| ov_SC05_010 | 2248 | 1701 | 0 | 2252 | 2588 | 87.0% |
|
||||
| ov_SC05_011 | 2220 | 1701 | 0 | 2221 | 2409 | 92.2% |
|
||||
| ov_SC05_017 | 2328 | 1698 | 0 | 2339 | 2842 | 82.3% |
|
||||
| ov_SC05_018 | 2275 | 1701 | 0 | 2288 | 2673 | 85.6% |
|
||||
| ov_SC05_019 | 2225 | 1703 | 0 | 2225 | 2423 | 91.8% |
|
||||
| ov_SC06_000 | 2287 | 1710 | 0 | 2290 | 2691 | 85.1% |
|
||||
| ov_SC06_006 | 2240 | 1701 | 0 | 2241 | 2511 | 89.2% |
|
||||
| ov_SC06_008 | 2250 | 1703 | 0 | 2256 | 2542 | 88.7% |
|
||||
| ov_SC06_010 | 2233 | 1701 | 0 | 2238 | 2517 | 88.9% |
|
||||
| ov_SC06_011 | 2229 | 1701 | 0 | 2233 | 2468 | 90.5% |
|
||||
| ov_SC06_013 | 2222 | 1701 | 0 | 2223 | 2425 | 91.7% |
|
||||
| ov_SC06_014 | 2228 | 1701 | 0 | 2230 | 2453 | 90.9% |
|
||||
| ov_SC06_015 | 2225 | 1701 | 0 | 2225 | 2421 | 91.9% |
|
||||
| ov_SC06_016 | 2243 | 1701 | 0 | 2245 | 2549 | 88.1% |
|
||||
| ov_SC06_018 | 2240 | 1704 | 0 | 2247 | 2665 | 84.3% |
|
||||
| ov_SC06_020 | 2232 | 1703 | 0 | 2233 | 2518 | 88.7% |
|
||||
| ov_SC06_022 | 2246 | 1701 | 0 | 2254 | 2642 | 85.3% |
|
||||
| ov_SC06_024 | 2252 | 1701 | 0 | 2258 | 2667 | 84.7% |
|
||||
| ov_SC06_025 | 2243 | 1701 | 0 | 2248 | 2572 | 87.4% |
|
||||
| ov_SC06_027 | 2211 | 1701 | 0 | 2212 | 2408 | 91.9% |
|
||||
| ov_SC06_029 | 2269 | 1701 | 0 | 2281 | 2662 | 85.7% |
|
||||
| ov_SC06_030 | 2224 | 1701 | 0 | 2224 | 2456 | 90.6% |
|
||||
| ov_SC06_032 | 2236 | 1702 | 0 | 2243 | 2658 | 84.4% |
|
||||
| ov_SC06_033 | 2239 | 1702 | 0 | 2246 | 2631 | 85.4% |
|
||||
| ov_SC07_000 | 2239 | 1705 | 0 | 2241 | 2521 | 88.9% |
|
||||
| ov_SC07_001 | 2224 | 1701 | 0 | 2226 | 2454 | 90.7% |
|
||||
| ov_SC07_002 | 2251 | 1701 | 0 | 2255 | 2579 | 87.4% |
|
||||
| ov_SC07_006 | 1993 | 1549 | 0 | 2073 | 2456 | 84.4% |
|
||||
| ov_SC07_007 | 2010 | 1550 | 0 | 2094 | 2614 | 80.1% |
|
||||
| ov_SC07_008 | 2208 | 1701 | 0 | 2208 | 2386 | 92.5% |
|
||||
| ov_SC07_009 | 2218 | 1701 | 0 | 2220 | 2430 | 91.4% |
|
||||
| ov_SC07_010 | 2021 | 1550 | 0 | 2104 | 2526 | 83.3% |
|
||||
| ov_SC07_011 | 2009 | 1549 | 0 | 2089 | 2450 | 85.3% |
|
||||
| ov_SC01_000 | 2221 | 1706 | 0 | 2221 | 2403 | 92.4% |
|
||||
| ov_SC01_001 | 2221 | 1706 | 0 | 2223 | 2466 | 90.1% |
|
||||
| ov_SC01_004 | 2213 | 1697 | 0 | 2214 | 2414 | 91.7% |
|
||||
| ov_SC01_005 | 2242 | 1719 | 0 | 2242 | 2503 | 89.6% |
|
||||
| ov_SC01_006 | 2242 | 1719 | 0 | 2242 | 2503 | 89.6% |
|
||||
| ov_SC01_008 | 2213 | 1697 | 0 | 2215 | 2426 | 91.3% |
|
||||
| ov_SC01_009 | 2238 | 1698 | 0 | 2239 | 2507 | 89.3% |
|
||||
| ov_SC01_074 | 2216 | 1698 | 0 | 2218 | 2425 | 91.5% |
|
||||
| ov_SC01_077 | 2408 | 1666 | 0 | 2410 | 2585 | 93.2% |
|
||||
| ov_SC01_080 | 2255 | 1701 | 0 | 2255 | 2512 | 89.8% |
|
||||
| ov_SC01_084 | 2262 | 1701 | 0 | 2267 | 2579 | 87.9% |
|
||||
| ov_SC02_000 | 2315 | 1736 | 0 | 2315 | 2683 | 86.3% |
|
||||
| ov_SC02_003 | 2315 | 1736 | 0 | 2315 | 2683 | 86.3% |
|
||||
| ov_SC02_004 | 2221 | 1701 | 0 | 2221 | 2401 | 92.5% |
|
||||
| ov_SC02_005 | 2328 | 1697 | 0 | 2338 | 2927 | 79.9% |
|
||||
| ov_SC02_011 | 2339 | 1704 | 0 | 2350 | 2893 | 81.2% |
|
||||
| ov_SC02_015 | 2222 | 1703 | 0 | 2222 | 2414 | 92.0% |
|
||||
| ov_SC02_016 | 2253 | 1703 | 0 | 2256 | 2545 | 88.6% |
|
||||
| ov_SC02_017 | 2299 | 1703 | 0 | 2307 | 2732 | 84.4% |
|
||||
| ov_SC02_021 | 2228 | 1703 | 0 | 2228 | 2437 | 91.4% |
|
||||
| ov_SC02_026 | 2243 | 1701 | 0 | 2249 | 2572 | 87.4% |
|
||||
| ov_SC02_027 | 2266 | 1701 | 0 | 2275 | 2692 | 84.5% |
|
||||
| ov_SC02_028 | 2267 | 1701 | 0 | 2277 | 2701 | 84.3% |
|
||||
| ov_SC02_031 | 2253 | 1702 | 0 | 2258 | 2562 | 88.1% |
|
||||
| ov_SC02_035 | 2229 | 1701 | 0 | 2232 | 2520 | 88.6% |
|
||||
| ov_SC02_039 | 2214 | 1701 | 0 | 2214 | 2416 | 91.6% |
|
||||
| ov_SC02_041 | 2249 | 1701 | 0 | 2252 | 2561 | 87.9% |
|
||||
| ov_SC03_001 | 2350 | 1702 | 0 | 2367 | 2869 | 82.5% |
|
||||
| ov_SC03_002 | 2276 | 1706 | 0 | 2291 | 2631 | 87.1% |
|
||||
| ov_SC03_003 | 2224 | 1701 | 0 | 2225 | 2423 | 91.8% |
|
||||
| ov_SC03_006 | 2289 | 1707 | 0 | 2298 | 2767 | 83.1% |
|
||||
| ov_SC03_007 | 2269 | 1701 | 0 | 2273 | 2623 | 86.7% |
|
||||
| ov_SC03_010 | 2230 | 1701 | 0 | 2230 | 2470 | 90.3% |
|
||||
| ov_SC03_011 | 2238 | 1701 | 0 | 2244 | 2527 | 88.8% |
|
||||
| ov_SC03_012 | 2216 | 1701 | 0 | 2217 | 2406 | 92.1% |
|
||||
| ov_SC03_013 | 2235 | 1701 | 0 | 2235 | 2492 | 89.7% |
|
||||
| ov_SC03_014 | 2294 | 1726 | 0 | 2294 | 2685 | 85.4% |
|
||||
| ov_SC03_015 | 2294 | 1726 | 0 | 2294 | 2685 | 85.4% |
|
||||
| ov_SC03_023 | 2222 | 1701 | 0 | 2223 | 2435 | 91.3% |
|
||||
| ov_SC03_024 | 2281 | 1706 | 0 | 2288 | 2641 | 86.6% |
|
||||
| ov_SC03_028 | 2262 | 1701 | 0 | 2266 | 2664 | 85.1% |
|
||||
| ov_SC03_029 | 2264 | 1703 | 0 | 2274 | 2644 | 86.0% |
|
||||
| ov_SC03_030 | 2237 | 1706 | 0 | 2239 | 2495 | 89.7% |
|
||||
| ov_SC03_031 | 2234 | 1701 | 0 | 2237 | 2514 | 89.0% |
|
||||
| ov_SC03_089 | 2248 | 1701 | 0 | 2255 | 2581 | 87.4% |
|
||||
| ov_SC03_090 | 2250 | 1701 | 0 | 2258 | 2625 | 86.0% |
|
||||
| ov_SC03_091 | 2253 | 1701 | 0 | 2261 | 2640 | 85.6% |
|
||||
| ov_SC03_092 | 2264 | 1701 | 0 | 2276 | 2587 | 88.0% |
|
||||
| ov_SC03_093 | 2240 | 1701 | 0 | 2244 | 2563 | 87.6% |
|
||||
| ov_SC03_094 | 2235 | 1701 | 0 | 2241 | 2577 | 87.0% |
|
||||
| ov_SC03_095 | 2225 | 1701 | 0 | 2228 | 2474 | 90.1% |
|
||||
| ov_SC03_096 | 2225 | 1701 | 0 | 2228 | 2465 | 90.4% |
|
||||
| ov_SC03_097 | 2254 | 1701 | 0 | 2261 | 2603 | 86.9% |
|
||||
| ov_SC03_098 | 2233 | 1701 | 0 | 2236 | 2541 | 88.0% |
|
||||
| ov_SC03_099 | 2226 | 1701 | 0 | 2229 | 2504 | 89.0% |
|
||||
| ov_SC03_100 | 2236 | 1701 | 0 | 2240 | 2539 | 88.2% |
|
||||
| ov_SC03_101 | 2236 | 1701 | 0 | 2240 | 2528 | 88.6% |
|
||||
| ov_SC03_102 | 2228 | 1701 | 0 | 2231 | 2492 | 89.5% |
|
||||
| ov_SC03_103 | 2231 | 1703 | 0 | 2234 | 2510 | 89.0% |
|
||||
| ov_SC03_104 | 2256 | 1701 | 0 | 2263 | 2616 | 86.5% |
|
||||
| ov_SC03_105 | 2250 | 1701 | 0 | 2257 | 2597 | 86.9% |
|
||||
| ov_SC03_108 | 2218 | 1701 | 0 | 2218 | 2443 | 90.8% |
|
||||
| ov_SC03_109 | 2219 | 1701 | 0 | 2221 | 2424 | 91.6% |
|
||||
| ov_SC03_110 | 2224 | 1701 | 0 | 2224 | 2468 | 90.1% |
|
||||
| ov_SC03_111 | 2236 | 1701 | 0 | 2239 | 2510 | 89.2% |
|
||||
| ov_SC03_112 | 2229 | 1703 | 0 | 2231 | 2526 | 88.3% |
|
||||
| ov_SC03_113 | 2222 | 1703 | 0 | 2225 | 2468 | 90.2% |
|
||||
| ov_SC03_114 | 2212 | 1701 | 0 | 2214 | 2415 | 91.7% |
|
||||
| ov_SC03_115 | 2229 | 1701 | 0 | 2231 | 2472 | 90.3% |
|
||||
| ov_SC03_116 | 2219 | 1701 | 0 | 2222 | 2438 | 91.1% |
|
||||
| ov_SC03_117 | 2247 | 1701 | 0 | 2253 | 2557 | 88.1% |
|
||||
| ov_SC03_118 | 2294 | 1725 | 0 | 2295 | 2685 | 85.5% |
|
||||
| ov_SC03_119 | 2293 | 1725 | 0 | 2294 | 2685 | 85.4% |
|
||||
| ov_SC03_121 | 2226 | 1701 | 0 | 2229 | 2459 | 90.6% |
|
||||
| ov_SC03_124 | 2306 | 1697 | 0 | 2326 | 2741 | 84.9% |
|
||||
| ov_SC03_125 | 2263 | 1701 | 0 | 2275 | 2588 | 87.9% |
|
||||
| ov_SC03_126 | 2225 | 1703 | 0 | 2225 | 2423 | 91.8% |
|
||||
| ov_SC04_000 | 2241 | 1705 | 0 | 2250 | 2546 | 88.4% |
|
||||
| ov_SC04_002 | 2257 | 1701 | 0 | 2261 | 2636 | 85.8% |
|
||||
| ov_SC04_003 | 2235 | 1701 | 0 | 2239 | 2502 | 89.5% |
|
||||
| ov_SC04_004 | 2244 | 1701 | 0 | 2246 | 2558 | 87.8% |
|
||||
| ov_SC04_005 | 2252 | 1701 | 0 | 2258 | 2612 | 86.4% |
|
||||
| ov_SC04_006 | 2225 | 1701 | 0 | 2227 | 2454 | 90.7% |
|
||||
| ov_SC04_007 | 2245 | 1701 | 0 | 2249 | 2569 | 87.5% |
|
||||
| ov_SC04_008 | 2215 | 1701 | 0 | 2215 | 2415 | 91.7% |
|
||||
| ov_SC04_009 | 2231 | 1701 | 0 | 2234 | 2441 | 91.5% |
|
||||
| ov_SC04_010 | 2222 | 1701 | 0 | 2223 | 2419 | 91.9% |
|
||||
| ov_SC04_011 | 2278 | 1701 | 0 | 2284 | 2803 | 81.5% |
|
||||
| ov_SC04_012 | 2218 | 1701 | 0 | 2219 | 2420 | 91.7% |
|
||||
| ov_SC04_015 | 2283 | 1702 | 0 | 2294 | 2611 | 87.9% |
|
||||
| ov_SC04_016 | 2221 | 1701 | 0 | 2223 | 2440 | 91.1% |
|
||||
| ov_SC04_018 | 2333 | 1736 | 0 | 2333 | 2857 | 81.7% |
|
||||
| ov_SC04_019 | 2339 | 1736 | 0 | 2339 | 2857 | 81.9% |
|
||||
| ov_SC04_020 | 2250 | 1701 | 0 | 2262 | 2567 | 88.1% |
|
||||
| ov_SC04_021 | 2226 | 1703 | 0 | 2226 | 2423 | 91.9% |
|
||||
| ov_SC05_000 | 2222 | 1705 | 0 | 2225 | 2422 | 91.9% |
|
||||
| ov_SC05_001 | 2245 | 1701 | 0 | 2250 | 2574 | 87.4% |
|
||||
| ov_SC05_002 | 2227 | 1701 | 0 | 2230 | 2442 | 91.3% |
|
||||
| ov_SC05_003 | 2224 | 1701 | 0 | 2225 | 2481 | 89.7% |
|
||||
| ov_SC05_004 | 2219 | 1701 | 0 | 2221 | 2464 | 90.1% |
|
||||
| ov_SC05_005 | 2226 | 1701 | 0 | 2227 | 2491 | 89.4% |
|
||||
| ov_SC05_006 | 2218 | 1701 | 0 | 2218 | 2430 | 91.3% |
|
||||
| ov_SC05_007 | 2228 | 1701 | 0 | 2233 | 2482 | 90.0% |
|
||||
| ov_SC05_008 | 2245 | 1701 | 0 | 2247 | 2543 | 88.4% |
|
||||
| ov_SC05_009 | 2223 | 1701 | 0 | 2227 | 2438 | 91.3% |
|
||||
| ov_SC05_010 | 2249 | 1701 | 0 | 2253 | 2588 | 87.1% |
|
||||
| ov_SC05_011 | 2221 | 1701 | 0 | 2222 | 2409 | 92.2% |
|
||||
| ov_SC05_017 | 2329 | 1698 | 0 | 2340 | 2842 | 82.3% |
|
||||
| ov_SC05_018 | 2276 | 1701 | 0 | 2289 | 2673 | 85.6% |
|
||||
| ov_SC05_019 | 2226 | 1703 | 0 | 2226 | 2423 | 91.9% |
|
||||
| ov_SC06_000 | 2288 | 1710 | 0 | 2291 | 2691 | 85.1% |
|
||||
| ov_SC06_006 | 2241 | 1701 | 0 | 2242 | 2511 | 89.3% |
|
||||
| ov_SC06_008 | 2251 | 1703 | 0 | 2257 | 2542 | 88.8% |
|
||||
| ov_SC06_010 | 2234 | 1701 | 0 | 2239 | 2517 | 89.0% |
|
||||
| ov_SC06_011 | 2230 | 1701 | 0 | 2234 | 2468 | 90.5% |
|
||||
| ov_SC06_013 | 2223 | 1701 | 0 | 2224 | 2425 | 91.7% |
|
||||
| ov_SC06_014 | 2229 | 1701 | 0 | 2231 | 2453 | 90.9% |
|
||||
| ov_SC06_015 | 2226 | 1701 | 0 | 2226 | 2421 | 91.9% |
|
||||
| ov_SC06_016 | 2244 | 1701 | 0 | 2246 | 2549 | 88.1% |
|
||||
| ov_SC06_018 | 2241 | 1704 | 0 | 2248 | 2665 | 84.4% |
|
||||
| ov_SC06_020 | 2233 | 1703 | 0 | 2234 | 2518 | 88.7% |
|
||||
| ov_SC06_022 | 2247 | 1701 | 0 | 2255 | 2642 | 85.4% |
|
||||
| ov_SC06_024 | 2253 | 1701 | 0 | 2259 | 2667 | 84.7% |
|
||||
| ov_SC06_025 | 2244 | 1701 | 0 | 2249 | 2572 | 87.4% |
|
||||
| ov_SC06_027 | 2212 | 1701 | 0 | 2213 | 2408 | 91.9% |
|
||||
| ov_SC06_029 | 2270 | 1701 | 0 | 2282 | 2662 | 85.7% |
|
||||
| ov_SC06_030 | 2225 | 1701 | 0 | 2225 | 2456 | 90.6% |
|
||||
| ov_SC06_032 | 2237 | 1702 | 0 | 2244 | 2658 | 84.4% |
|
||||
| ov_SC06_033 | 2240 | 1702 | 0 | 2247 | 2631 | 85.4% |
|
||||
| ov_SC07_000 | 2240 | 1705 | 0 | 2242 | 2521 | 88.9% |
|
||||
| ov_SC07_001 | 2225 | 1701 | 0 | 2227 | 2454 | 90.7% |
|
||||
| ov_SC07_002 | 2252 | 1701 | 0 | 2256 | 2579 | 87.5% |
|
||||
| ov_SC07_006 | 1994 | 1549 | 0 | 2074 | 2456 | 84.4% |
|
||||
| ov_SC07_007 | 2011 | 1550 | 0 | 2095 | 2614 | 80.1% |
|
||||
| ov_SC07_008 | 2209 | 1701 | 0 | 2209 | 2386 | 92.6% |
|
||||
| ov_SC07_009 | 2219 | 1701 | 0 | 2221 | 2430 | 91.4% |
|
||||
| ov_SC07_010 | 2022 | 1550 | 0 | 2105 | 2526 | 83.3% |
|
||||
| ov_SC07_011 | 2010 | 1549 | 0 | 2090 | 2450 | 85.3% |
|
||||
|
||||
@@ -1000,3 +1000,57 @@ conditional) · main-EXE/B9 + GLM/B6 + resident's 14 walls (P30) · behemoths B7
|
||||
local-type plumbing = **Task 14 stages 2-3**, not the carve.
|
||||
**Housekeeping:** killed an orphaned `cc1` from the Jul-21 session that had been burning a full core for
|
||||
**13h23m** (pid 104350, dead pipe); committed the 4 wave-4 `.o0` drafts left untracked (R20).
|
||||
|
||||
- **✅ 2026-07-22 — THE FAMILY SWEEP (138/138) + THE RE-PROBE: a giant recovered, TWO tree-eating tool
|
||||
defects found and fixed, and `gate_stage`'s jtbl pre-pass DELETED.**
|
||||
**(a) `func_80135A4C` family COMPLETE ×138** (probe 1 → chunks 45+45+46, commit per chunk, `git add -A`).
|
||||
**137/137 siblings banked, 0 failed** — 100% conversion, exactly as its PURE/`n_templatable:137`
|
||||
classification predicted. **R22 clean-fleet 140/140.** Fleet **78.0→78.2% instr · 66.5→67.0% distinct ·
|
||||
87.95→87.98% fn-count** (+25,329 ins; predicted +24,797 — the measurement matched the prediction).
|
||||
**(b) THE UNDO WAS EATING THE TREE (the §61c mechanism, byte-witnessed).** `jr_isolate_all` repartitions
|
||||
a code object by writing region 0 back over the ORIGINAL `src/<ov>/<nm>.c` **truncated**, emitting the
|
||||
rest as new `_jr_*.c`. `harvest_verify._jtbl_restore` undid only `config/` + the new region files → every
|
||||
gate-REJECTED draft permanently ate that TU's stubs, and **nothing regenerates them** (splat does not
|
||||
rewrite a committed overlay `.c`). Measured live across the first re-probe: live stubs **419 → 414 → 406
|
||||
→ 395**, ending in `undefined reference to func_80191C50`. **Invisible to the gate that causes it** — the
|
||||
incremental build keeps linking stale objects (§42b) so `make build` stays green while a CLEAN rebuild
|
||||
fails. That is precisely the "139/140, twice" signature, so the §61c attribution is now a **demonstrated
|
||||
defect, not an inference**. FIXED: `_jtbl_snapshot` captures every `src/<binary>/*.c`; `_jtbl_restore`
|
||||
restores them + deletes exactly the files the attempt created (derived from the snapshot's file set, R33).
|
||||
Negative-control-validated: the same failing draft now leaves the tree byte-identical and `git status` clean.
|
||||
**(c) THE GATE LABEL WAS A CONSTANT.** `classify_fail` searched the whole stderr, so the benign
|
||||
`warning: conflicting types for built-in function 'memcpy'` won on **8 of 8** failures across four
|
||||
different real causes — the §58 red-herring the cookbook had been working around by hand. Now classifies
|
||||
on NON-warning lines and falls through to `CC1-FAIL:<last error>`. Same failure immediately became
|
||||
`ov_SC06_018.c:447: prototype declaration`.
|
||||
**(d) THE RE-PROBE (11 preserved t5wave cracks, one `harvest_verify` invocation each).**
|
||||
**BANKED: `func_8018F694` (478 ins)** — one of the wave's three giants, previously inside "the gate banked
|
||||
ZERO". The other 10 gave **ten DISTINCT** diagnoses: **4 data-decl** (`D_80193B64`×2, `D_8011D030`,
|
||||
`D_80126B5C`) · **3 callee-decl** (`func_80135480`×2, `func_8012F14C`) · **3 self-decl/own-sig** (§57).
|
||||
**ZERO jtbl-drift · ZERO local-type redefinition · ZERO codegen DIFF** — so **§61a's "§8e-2 jtbl
|
||||
table-count drift blocks 10 of 12" does NOT survive** the carve-follows-splice prep: the carve now
|
||||
succeeds and what remains is ordinary decl plumbing.
|
||||
**(e) `gate_stage._jtbl_prepare` DELETED (R33), not patched.** It carried the SAME config-only undo and
|
||||
ate the tree again on the first ladder run (5 orphan region files, truncated TUs, `undefined reference to
|
||||
func_80192F64`) — which **invalidated that run's 0/10**, so it was re-measured, not reported (R35). It was
|
||||
wrong on two axes: §61b had already byte-proved the carve must FOLLOW the splice (a pre-pass carving
|
||||
unspliced functions yields a spec that fails when the body lands), and `harvest_verify` now does the
|
||||
correct per-draft prep one layer down. Two implementations of one capability, the outer one ineffective
|
||||
AND destructive → delete.
|
||||
**(f) THE HONEST LADDER MEASUREMENT (clean tree, tree verified clean after):** **0/10 bank**; **9/10 now
|
||||
COMPILE** and land as whole-binary byte-DIFF, **1/10** still plumbing. `match_one` reports **close=0** on
|
||||
several (the function's own bytes exact) and `rtu_match` says **MATCH in the real TU** for
|
||||
`func_80135888` — while `func_801299C8`'s transformed draft does not compile in its real TU at all. So the
|
||||
residual is **MIXED, not uniform**, and at least one is an IMAGE-level effect rather than the draft or its
|
||||
TU decl context. **Not generalized from one data point** — the next increment is to identify what changes
|
||||
at the image level for a close=0/rtu-MATCH function (prime suspect: the jtbl/rodata carve placement).
|
||||
**This prices Task 14 stages 2-3 with a measurement, not a projection:** the existing ladder converts
|
||||
**0/10** of these residuals, so stages 2-3 are NOT "wire in `normalize_self_decls` + the type-lift and
|
||||
collect 10 banks."
|
||||
**VERIFIED:** R22 clean-fleet **140/140 byte-identical** (post-sweep) + a final clean-fleet after the
|
||||
giant bank; `tools-health` OK (dedup 1848/0, C1 234481/234481, cdecl 53189/53189, audit-binaries 140);
|
||||
0 NON_MATCHING (G4). Nothing was ever committed broken — both times the tree was eaten it was restored
|
||||
from HEAD and re-verified byte-identical BEFORE any further work.
|
||||
**Housekeeping:** cookbook — the `git add -u` complementary hole (an isolation's NEW region file is
|
||||
untracked → a carve/isolation bank needs `git add -A src/ config/`; `jtbl_family_bank`'s uncommitted-tree
|
||||
guard is what caught it).
|
||||
|
||||
+15
-120
@@ -73,96 +73,6 @@ def _xform(tool, ov, indir, suffix, extra=None):
|
||||
return out if _isdir(out) else indir
|
||||
|
||||
|
||||
# --------------------------------------------------------------------------------------------
|
||||
# the jtbl stage (Phase-29 Task-14 stage 4) — isolate + re-carve so a table-bearing draft can link
|
||||
# --------------------------------------------------------------------------------------------
|
||||
_JTBL_RE = re.compile(r"jtbl_[0-9A-Fa-f]{8}")
|
||||
|
||||
|
||||
def _fn_has_jtbl(binary, fn):
|
||||
"""Does this function reference a jump table? (Then banking it needs a .rodata carve.)"""
|
||||
try:
|
||||
hit = next((s for s in corpus.stubs(binary).values() if s.symbol == fn), None)
|
||||
except Exception:
|
||||
return False
|
||||
if hit is None:
|
||||
return False
|
||||
try:
|
||||
return bool(_JTBL_RE.search(open(os.path.join(REPO, hit.asm_path)).read()))
|
||||
except OSError:
|
||||
return False
|
||||
|
||||
|
||||
def _jtbl_prepare(binary, draft_fns):
|
||||
"""Carve every jtbl-bearing draft's table into its OWN contiguous object, auto-isolating on the
|
||||
§8b same-subseg walls. Returns (prepared, keep_regions).
|
||||
|
||||
WHY THIS STAGE EXISTS (byte-proven 2026-07-21, cookbook §61a). A 12-agent wave produced 11
|
||||
match_one MATCHes and the gate banked ZERO. 10 of the 12 drafts land in jtbl-CARVED TUs, and the
|
||||
filter reported `more rodata .align directives than pad specs` — which reads like a compiler
|
||||
wall and is not one. Re-running jtbl_carve gives the real reason:
|
||||
|
||||
subseg would host NON-CONTIGUOUS .rodata carves (0xaa810 and 0xaa920) — a single object
|
||||
can't leave a gap for the unmatched jtbl between them.
|
||||
|
||||
The newly-banked function's table is separated from the TU's existing carve by an UNMATCHED
|
||||
function's table. The remedy is §8b lazy isolation (give the fn its own code subseg, so its
|
||||
carve spans only its own tables) — which `jtbl_family_bank` has done since Task 8 but
|
||||
`gate_stage` did not, so every ordinary wave banking into a jtbl TU reported a phantom 0.
|
||||
|
||||
STRUCTURAL NOTE: fresh crack fuel in a well-matched overlay CONCENTRATES in jtbl-carved TUs (the
|
||||
non-carved ones get harvested first), so this is not a straggler path — it gates the next
|
||||
tranche of substantial cracking.
|
||||
|
||||
The isolate/revert primitives are IMPORTED from jtbl_family_bank rather than re-implemented
|
||||
(R33: one implementation, two callers — the divergence between those two callers is exactly
|
||||
what produced this bug). Config is shared-ish state, so the caller undoes by RESTORE
|
||||
(jfb.revert), never an inverse transform, and verifies fleet-wide (R22) — cookbook §61."""
|
||||
import jtbl_family_bank as jfb
|
||||
todo = [f for f in draft_fns if _fn_has_jtbl(binary, f)]
|
||||
if not todo:
|
||||
return [], None
|
||||
# SNAPSHOT the config this stage may rewrite (§61 constraint). NOT jfb.revert(): that does a
|
||||
# wholesale `git checkout -- config/…`, which is correct for jtbl_family_bank's one-function-
|
||||
# at-a-time flow but WRONG here — it discards any PREVIOUSLY-banked-but-uncommitted carve in the
|
||||
# same overlay, leaving that bank's source with no subseg to live in (byte-witnessed: it stripped
|
||||
# func_80135A4C's carve while keeping its banked region file -> `undefined reference to
|
||||
# func_80136C90` at link). An inverse/wholesale undo cannot know what it did not do.
|
||||
keep = jfb.region_files(binary)
|
||||
snap = {}
|
||||
for f in (os.path.join(REPO, f"config/splat.{binary}.yaml"),
|
||||
os.path.join(REPO, "config/overlays.mk")):
|
||||
try:
|
||||
snap[f] = open(f).read()
|
||||
except OSError:
|
||||
pass
|
||||
prepared = []
|
||||
for fn in todo:
|
||||
r = sh([PY, "tools/jtbl_carve.py", binary, "--func", fn], timeout=900)
|
||||
out = (r.stdout or "") + (r.stderr or "")
|
||||
if r.returncode and ("NON-CONTIGUOUS" in out or "do not fit the span" in out):
|
||||
# §8b lazy isolation, then re-extract so the carve reads the new subseg layout, then retry.
|
||||
# The DISTINCT "more rodata .align than pad specs" drift is NOT isolate-fixable and is
|
||||
# deliberately not retried here (it falls through as a carve failure).
|
||||
if sh([PY, "tools/jr_isolate_all.py", binary, "--only", fn], timeout=900).returncode:
|
||||
print(f"[gate] jtbl: isolate failed for {fn}", file=sys.stderr); continue
|
||||
if sh(["make", "--no-print-directory", "extract", f"BINARY={binary}"], timeout=1800).returncode:
|
||||
print(f"[gate] jtbl: extract after isolate failed for {fn}", file=sys.stderr); continue
|
||||
_corpus_reset()
|
||||
r = sh([PY, "tools/jtbl_carve.py", binary, "--func", fn], timeout=900)
|
||||
if r.returncode:
|
||||
last = ((r.stdout or "") + (r.stderr or "")).strip().splitlines()[-1:] or [""]
|
||||
print(f"[gate] jtbl: carve failed for {fn}: {last[0][:150]}", file=sys.stderr); continue
|
||||
prepared.append(fn)
|
||||
if prepared:
|
||||
# a CONFIG change needs a re-extract, not just a rebuild (the R22 corollary)
|
||||
sh(["make", "--no-print-directory", "extract", f"BINARY={binary}"], timeout=1800)
|
||||
_corpus_reset()
|
||||
print(f"[gate] jtbl: prepared {len(prepared)}/{len(todo)} table-bearing draft(s): "
|
||||
f"{', '.join(prepared)}")
|
||||
return prepared, (keep, snap)
|
||||
|
||||
|
||||
def _corpus_reset():
|
||||
"""Drop corpus caches after a config/extract change — the stub set and each stub's home TU
|
||||
have moved, and every later stage derives from them."""
|
||||
@@ -358,13 +268,21 @@ def _run_gate_locked(drafts, binary, src, asm, out, good_sha, propagate, source_
|
||||
# raise on a non-zero exit, so the try/except below never saw it. Hence the explicit rc check:
|
||||
# a pre-pass that quietly does nothing is indistinguishable from one that found nothing to do,
|
||||
# which is the whole failure mode this ladder exists to remove (R32).
|
||||
# jtbl stage FIRST: isolation rewrites which TU hosts the stub, and every later stage
|
||||
# (arity scan, harvest_verify's TU derivation) reads that layout.
|
||||
_jtbl_prepared, _jtbl_keep = [], None
|
||||
try:
|
||||
_jtbl_prepared, _jtbl_keep = _jtbl_prepare(binary, draft_fns)
|
||||
except Exception as e: # never let the pre-pass sink the gate
|
||||
print(f"[gate] jtbl stage skipped: {e}", file=sys.stderr)
|
||||
# NO jtbl stage HERE — DELETED 2026-07-22 (R33: one implementation, and it is one layer down).
|
||||
# This used to be a BATCH pre-pass that carved every table-bearing draft before the gate ran.
|
||||
# It was wrong twice over:
|
||||
# 1. §61b byte-proved the carve MUST FOLLOW THE SPLICE — the non-contiguity that requires
|
||||
# isolation is only detectable once the body is in the object. Carving an unspliced
|
||||
# function reports "prepared 1/1" and yields a spec that fails when the body lands.
|
||||
# harvest_verify owns the splice, so the prep belongs there, and IS there (_jtbl_prep_one).
|
||||
# 2. Its undo snapshotted only config/. But `jr_isolate_all` rewrites region 0 back over the
|
||||
# ORIGINAL src/<ov>/<nm>.c, TRUNCATED — so every rejected draft permanently ate that TU's
|
||||
# stubs, invisibly (the incremental build keeps linking stale objects, §42b). Measured
|
||||
# 2026-07-22: a 10-draft ladder run left 5 orphan region files, truncated TUs, and
|
||||
# `undefined reference to func_80192F64` — after which every later draft in the run was
|
||||
# probing a corrupted tree, so its 0/10 was not a measurement (R35).
|
||||
# Deleting it is strictly better than fixing it: harvest_verify's per-draft prep is the correct
|
||||
# mechanism, snapshots the full source set, and undoes per function.
|
||||
|
||||
_arity_rc = None
|
||||
_arity_snapshot = {}
|
||||
@@ -403,29 +321,6 @@ def _run_gate_locked(drafts, binary, src, asm, out, good_sha, propagate, source_
|
||||
# construction and cannot invent a signature.
|
||||
_unbanked = [f for f in draft_fns if f not in verified]
|
||||
|
||||
# jtbl undo: if NOTHING banked, restore this overlay's config + drop the region files THIS run
|
||||
# created (jfb.revert(keep_regions=...) keeps a previously-banked core's). If something DID bank,
|
||||
# the carve/isolation is load-bearing for it and must stay — so we only revert the all-fail case,
|
||||
# and a mixed batch keeps the config that the surviving banks need (the byte-gate already
|
||||
# reverted the losers' source).
|
||||
if _jtbl_prepared and not verified and _jtbl_keep:
|
||||
try:
|
||||
import jtbl_family_bank as jfb
|
||||
_keep_regions, _snap = _jtbl_keep
|
||||
for _f, _txt in _snap.items(): # RESTORE, never inverse-transform (§61)
|
||||
with open(_f, "w") as _fh:
|
||||
_fh.write(_txt)
|
||||
for _rf in jfb.region_files(binary) - _keep_regions: # only what THIS run created
|
||||
try:
|
||||
os.remove(os.path.join(REPO, _rf))
|
||||
except OSError:
|
||||
pass
|
||||
sh(["make", "--no-print-directory", "extract", f"BINARY={binary}"], timeout=1800)
|
||||
_corpus_reset()
|
||||
print(f"[gate] jtbl: restored config for {len(_jtbl_prepared)} draft(s) (none banked)")
|
||||
except Exception as e:
|
||||
print(f"[gate] jtbl revert failed: {e}", file=sys.stderr)
|
||||
|
||||
if _unbanked and _arity_snapshot:
|
||||
try:
|
||||
for _f, _txt in _arity_snapshot.items():
|
||||
|
||||
Reference in New Issue
Block a user