docs(phase-32): T3 S83 CHECKPOINT — 28 banks (census 44 -> 16 stubs / 3,827 ins), fleet R22 218/218 twice, the 17-row Haiku queue 17/17 MATCH; cookbook §500-F; 🛑 block refreshed

- CURRENT_PHASE.md: T3 row (47/47 drafted, 38 banked, 9 NEAR ledgered, 0 FAIL), the S83 log entry, the 🛑 SESSION
  CHECKPOINT rewritten to the verbatim-replay standard (supersedes the 10:01 block): state, what S83 did, the 16-row
  census with draft paths, NEXT (step 8 permuter_ils ×2 + one Opus look, then the close), files/tools/gotchas, T4/T5 carry
- cookbook §500-F (the queue's yield + the four integration classes a per-draft rtu_match cannot see: same-TU spellings,
  §304 ×3, verdict-relative-to-TU-at-verification, the md_* jtbl route is §303); docs/cookbook-index.md regenerated (--check OK)
- .run/P32/t3/BRIEF.md: the §304 + exact-TU-spelling contract lines; harvest_notes.md; verdicts.jsonl +17 (session 491895ad);
  pending_launch.txt emptied (all 17 launched 10:57); the 17 Haiku drafts + 3 agent reports (R20)
- tools/jtbl_carve.py: the leading-island refusal now says §303 supersedes the §260 split for md_* modules (P32 S83 witness)
- backlog: the 9 NEAR rows logged (class · closeness · best draft · cost "1 Opus agent, 30–70 min", R41); docs/backlog.md 15 open
- .run/P32/t3s3/ (NEW, allowlisted): splice.py, bank.sh (verbatim grep -> rtu xN -> splice xN -> one build -> sha -> commit
  on green), backlog_near.sh, prompts/ (17), gate/slate_main2.json + log, r22/r22b/tools-health/build/bank/twin_rescan logs
- census jsons .run/P32/frontier_t3s3_{mid,haiku}.json; progress digests regenerated by tools-health (R22 218/218 at 10:46 and 11:09)
This commit is contained in:
Drew T
2026-09-05 11:11:03 -06:00
parent fc922a4ccb
commit 2fdcc4f120
84 changed files with 5928 additions and 261 deletions
+12
View File
@@ -268,3 +268,15 @@ unsloth_compiled_cache/
!/.run/P32/t3/restored/
/.run/P32/t3/restored/*
!/.run/P32/t3/restored/sweep_*.py
# P32 T3 session 491895ad (S83): the resume session's helpers, prompts, gate slates and logs (not the verify/ compile dirs)
!/.run/P32/t3s3/
/.run/P32/t3s3/*
!/.run/P32/t3s3/*.sh
!/.run/P32/t3s3/*.py
!/.run/P32/t3s3/*.log
!/.run/P32/t3s3/*.txt
!/.run/P32/t3s3/prompts/
!/.run/P32/t3s3/gate/
/.run/P32/t3s3/gate/*
!/.run/P32/t3s3/gate/*.json
!/.run/P32/t3s3/gate/*.log
+338
View File
@@ -0,0 +1,338 @@
[
{
"fn": "func_80039308",
"binary": "main",
"nins": 518,
"klass": "D-NEAR",
"closeness": 17,
"closeness_last": 17,
"attempts": 2,
"warmstart_regression": false,
"journal_closeness": 402,
"jtbl": false,
"jr": false,
"jalr": false,
"o0": false,
"calls": 0,
"twins": 0,
"proven_twin": [],
"drafts": 9,
"verdict": "sched2 + cross-block regalloc: preheader 49/50 swap, un-spellable addu $a2,$a0,$zero (ever",
"path": "src/800_c.c"
},
{
"fn": "func_80032A74",
"binary": "main",
"nins": 422,
"klass": "D-NEAR",
"closeness": 1,
"closeness_last": 1,
"attempts": 1,
"warmstart_regression": false,
"journal_closeness": 70,
"jtbl": false,
"jr": false,
"jalr": false,
"o0": false,
"calls": 6,
"twins": 0,
"proven_twin": [],
"drafts": 9,
"verdict": "422/422 instructions, frame 0x78 exact, every immediate/stack offset/branch target exact, ",
"path": "src/800_b_2.c"
},
{
"fn": "func_800CD92C",
"binary": "md_MAIN_009",
"nins": 247,
"klass": "D-NEAR",
"closeness": 15,
"closeness_last": 15,
"attempts": 1,
"warmstart_regression": false,
"journal_closeness": null,
"jtbl": false,
"jr": false,
"jalr": false,
"o0": false,
"calls": 0,
"twins": 0,
"proven_twin": [],
"drafts": 1,
"verdict": "map \u00a7S7 prologue WEAVE: the {sw,lui,ori} groups for 0xE100008D/8F land after the 9-insn li",
"path": "src/md_MAIN_009/md_MAIN_009.c"
},
{
"fn": "func_80011380",
"binary": "main",
"nins": 192,
"klass": "D-NEAR",
"closeness": 6,
"closeness_last": null,
"attempts": 0,
"warmstart_regression": false,
"journal_closeness": 6,
"jtbl": false,
"jr": false,
"jalr": false,
"o0": false,
"calls": 15,
"twins": 0,
"proven_twin": [],
"drafts": 8,
"verdict": "",
"path": "src/boot.c"
},
{
"fn": "func_800CD674",
"binary": "md_MAIN_009",
"nins": 174,
"klass": "D-NEAR",
"closeness": 2,
"closeness_last": 2,
"attempts": 1,
"warmstart_regression": false,
"journal_closeness": null,
"jtbl": false,
"jr": false,
"jalr": false,
"o0": false,
"calls": 0,
"twins": 0,
"proven_twin": [],
"drafts": 1,
"verdict": "$a3<->$t1 across two masked prim pointers (one shared local can be only one; splitting = +",
"path": "src/md_MAIN_009/md_MAIN_009.c"
},
{
"fn": "func_8017DF28",
"binary": "ov_SC06_022",
"nins": 119,
"klass": "D-NEAR",
"closeness": 2,
"closeness_last": 2,
"attempts": 1,
"warmstart_regression": false,
"journal_closeness": null,
"jtbl": false,
"jr": false,
"jalr": false,
"o0": false,
"calls": 7,
"twins": 0,
"proven_twin": [],
"drafts": 385,
"verdict": "S80 permuter_ils 8x150s: waypoint '1' replaced the addiu $s2,$sp,0x10 with sw zero,48(sp) ",
"path": "src/ov_SC06_022/ov_SC06_022_jr_8017BEBC.c"
},
{
"fn": "func_801834A4",
"binary": "ov_SC03_105",
"nins": 106,
"klass": "D-NEAR",
"closeness": 9,
"closeness_last": null,
"attempts": 0,
"warmstart_regression": false,
"journal_closeness": 9,
"jtbl": false,
"jr": false,
"jalr": false,
"o0": false,
"calls": 3,
"twins": 0,
"proven_twin": [],
"drafts": 82,
"verdict": "",
"path": "src/ov_SC03_105/ov_SC03_105_jr_80181C84.c"
},
{
"fn": "func_80020DA4",
"binary": "main",
"nins": 100,
"klass": "D-NEAR",
"closeness": 2,
"closeness_last": 2,
"attempts": 1,
"warmstart_regression": false,
"journal_closeness": 49,
"jtbl": false,
"jr": false,
"jalr": false,
"o0": false,
"calls": 0,
"twins": 0,
"proven_twin": [],
"drafts": 9,
"verdict": "Q12 3x3 rotation-matrix build (twin shape of ov_SC02_011:func_8018B76C). Prior 51->20->14-",
"path": "src/800.c"
},
{
"fn": "func_800391D4",
"binary": "main",
"nins": 75,
"klass": "D-NEAR",
"closeness": 3,
"closeness_last": 3,
"attempts": 1,
"warmstart_regression": false,
"journal_closeness": 60,
"jtbl": false,
"jr": false,
"jalr": false,
"o0": false,
"calls": 0,
"twins": 0,
"proven_twin": [],
"drafts": 9,
"verdict": "75/75 instructions (exact length), only residual is a 3-insn SCHEDULE-REORDER (off=0 vs ar",
"path": "src/800_c.c"
},
{
"fn": "func_80039DEC",
"binary": "main",
"nins": 74,
"klass": "D-NEAR",
"closeness": 2,
"closeness_last": 2,
"attempts": 1,
"warmstart_regression": false,
"journal_closeness": 35,
"jtbl": false,
"jr": false,
"jalr": false,
"o0": false,
"calls": 0,
"twins": 0,
"proven_twin": [],
"drafts": 12,
"verdict": "S80 permuter_ils best 2 (seed 9); 74/74 exact length match, OPCODE-MIXED. Key levers that ",
"path": "src/800_c.c"
},
{
"fn": "func_8001BC6C",
"binary": "main",
"nins": 69,
"klass": "D-NEAR",
"closeness": 6,
"closeness_last": 6,
"attempts": 2,
"warmstart_regression": false,
"journal_closeness": 28,
"jtbl": false,
"jr": false,
"jalr": false,
"o0": false,
"calls": 0,
"twins": 0,
"proven_twin": [],
"drafts": 42,
"verdict": "$v0<->$v1 swap across the six OT-chain insns: local-alloc qty_compare priority one span un",
"path": "src/800.c"
},
{
"fn": "func_80185810",
"binary": "ov_SC03_105",
"nins": 489,
"klass": "F-FAR",
"closeness": 35,
"closeness_last": 35,
"attempts": 2,
"warmstart_regression": false,
"journal_closeness": null,
"jtbl": false,
"jr": false,
"jalr": false,
"o0": false,
"calls": 2,
"twins": 0,
"proven_twin": [],
"drafts": 7,
"verdict": "[permuter] 4 emission windows (see report .run/P32/t3/reports/func_80185810__opus__*.md); ",
"path": "src/ov_SC03_105/ov_SC03_105_jr_80181C84.c"
},
{
"fn": "func_800CF3E8",
"binary": "md_MAIN_003",
"nins": 469,
"klass": "F-FAR",
"closeness": 27,
"closeness_last": 27,
"attempts": 2,
"warmstart_regression": false,
"journal_closeness": 377,
"jtbl": false,
"jr": false,
"jalr": false,
"o0": false,
"calls": 0,
"twins": 0,
"proven_twin": [],
"drafts": 137,
"verdict": "ONE cause: the pinned-base alias basin (\u00a7500-D1) in the p5/p6 tail; blocks 1-2 byte-exact ",
"path": "src/md_MAIN_003/md_MAIN_003.c"
},
{
"fn": "func_8017DC80",
"binary": "ov_SC07_002",
"nins": 346,
"klass": "F-FAR",
"closeness": 46,
"closeness_last": 46,
"attempts": 2,
"warmstart_regression": false,
"journal_closeness": null,
"jtbl": false,
"jr": false,
"jalr": false,
"o0": false,
"calls": 4,
"twins": 0,
"proven_twin": [],
"drafts": 42,
"verdict": "the historic -33 LENGTH wall CLOSED (GTE macros must be REAL macros \u2014 the TU house block; ",
"path": "src/ov_SC07_002/ov_SC07_002_jr_8017C8D0.c"
},
{
"fn": "func_800CF6D0",
"binary": "md_MAIN_007",
"nins": 249,
"klass": "F-FAR",
"closeness": 137,
"closeness_last": 137,
"attempts": 1,
"warmstart_regression": false,
"journal_closeness": null,
"jtbl": false,
"jr": false,
"jalr": false,
"o0": false,
"calls": 0,
"twins": 0,
"proven_twin": [],
"drafts": 1,
"verdict": "sched1 rank_for_schedule last-insn-CLASS tie (every store priority 2, equal refs; QImode s",
"path": "src/md_MAIN_007/md_MAIN_007.c"
},
{
"fn": "func_800CF408",
"binary": "md_MAIN_007",
"nins": 178,
"klass": "F-FAR",
"closeness": 49,
"closeness_last": 49,
"attempts": 1,
"warmstart_regression": false,
"journal_closeness": null,
"jtbl": false,
"jr": false,
"jalr": false,
"o0": false,
"calls": 0,
"twins": 0,
"proven_twin": [],
"drafts": 1,
"verdict": "[permuter] 3 hunks: two prologue sched2 slots, an mlo/mhi allocno tie, a 3-insn block-2 he",
"path": "src/md_MAIN_007/md_MAIN_007.c"
}
]
+695
View File
@@ -0,0 +1,695 @@
[
{
"fn": "func_80032A74",
"binary": "main",
"nins": 422,
"klass": "D-NEAR",
"closeness": 1,
"closeness_last": 1,
"attempts": 1,
"warmstart_regression": false,
"journal_closeness": 70,
"jtbl": false,
"jr": false,
"jalr": false,
"o0": false,
"calls": 6,
"twins": 0,
"proven_twin": [],
"drafts": 9,
"verdict": "422/422 instructions, frame 0x78 exact, every immediate/stack offset/branch target exact, ",
"path": "src/800_b_2.c"
},
{
"fn": "func_80011380",
"binary": "main",
"nins": 192,
"klass": "D-NEAR",
"closeness": 6,
"closeness_last": null,
"attempts": 0,
"warmstart_regression": false,
"journal_closeness": 6,
"jtbl": false,
"jr": false,
"jalr": false,
"o0": false,
"calls": 15,
"twins": 0,
"proven_twin": [],
"drafts": 8,
"verdict": "",
"path": "src/boot.c"
},
{
"fn": "func_8017DF28",
"binary": "ov_SC06_022",
"nins": 119,
"klass": "D-NEAR",
"closeness": 2,
"closeness_last": 2,
"attempts": 1,
"warmstart_regression": false,
"journal_closeness": null,
"jtbl": false,
"jr": false,
"jalr": false,
"o0": false,
"calls": 7,
"twins": 0,
"proven_twin": [],
"drafts": 385,
"verdict": "S80 permuter_ils 8x150s: waypoint '1' replaced the addiu $s2,$sp,0x10 with sw zero,48(sp) ",
"path": "src/ov_SC06_022/ov_SC06_022_jr_8017BEBC.c"
},
{
"fn": "func_801834A4",
"binary": "ov_SC03_105",
"nins": 106,
"klass": "D-NEAR",
"closeness": 9,
"closeness_last": null,
"attempts": 0,
"warmstart_regression": false,
"journal_closeness": 9,
"jtbl": false,
"jr": false,
"jalr": false,
"o0": false,
"calls": 3,
"twins": 0,
"proven_twin": [],
"drafts": 82,
"verdict": "",
"path": "src/ov_SC03_105/ov_SC03_105_jr_80181C84.c"
},
{
"fn": "func_80020DA4",
"binary": "main",
"nins": 100,
"klass": "D-NEAR",
"closeness": 2,
"closeness_last": 2,
"attempts": 1,
"warmstart_regression": false,
"journal_closeness": 49,
"jtbl": false,
"jr": false,
"jalr": false,
"o0": false,
"calls": 0,
"twins": 0,
"proven_twin": [],
"drafts": 9,
"verdict": "Q12 3x3 rotation-matrix build (twin shape of ov_SC02_011:func_8018B76C). Prior 51->20->14-",
"path": "src/800.c"
},
{
"fn": "func_800391D4",
"binary": "main",
"nins": 75,
"klass": "D-NEAR",
"closeness": 3,
"closeness_last": 3,
"attempts": 1,
"warmstart_regression": false,
"journal_closeness": 60,
"jtbl": false,
"jr": false,
"jalr": false,
"o0": false,
"calls": 0,
"twins": 0,
"proven_twin": [],
"drafts": 9,
"verdict": "75/75 instructions (exact length), only residual is a 3-insn SCHEDULE-REORDER (off=0 vs ar",
"path": "src/800_c.c"
},
{
"fn": "func_80039DEC",
"binary": "main",
"nins": 74,
"klass": "D-NEAR",
"closeness": 2,
"closeness_last": 2,
"attempts": 1,
"warmstart_regression": false,
"journal_closeness": 35,
"jtbl": false,
"jr": false,
"jalr": false,
"o0": false,
"calls": 0,
"twins": 0,
"proven_twin": [],
"drafts": 12,
"verdict": "S80 permuter_ils best 2 (seed 9); 74/74 exact length match, OPCODE-MIXED. Key levers that ",
"path": "src/800_c.c"
},
{
"fn": "func_80039308",
"binary": "main",
"nins": 518,
"klass": "F-FAR",
"closeness": 34,
"closeness_last": 34,
"attempts": 1,
"warmstart_regression": false,
"journal_closeness": 402,
"jtbl": false,
"jr": false,
"jalr": false,
"o0": false,
"calls": 0,
"twins": 0,
"proven_twin": [],
"drafts": 9,
"verdict": "115 -> 34 at exact length 518. The dominant defect in the prior draft was one local shared",
"path": "src/800_c.c"
},
{
"fn": "func_80185810",
"binary": "ov_SC03_105",
"nins": 489,
"klass": "F-FAR",
"closeness": 37,
"closeness_last": 37,
"attempts": 1,
"warmstart_regression": false,
"journal_closeness": null,
"jtbl": false,
"jr": false,
"jalr": false,
"o0": false,
"calls": 2,
"twins": 0,
"proven_twin": [],
"drafts": 7,
"verdict": "C-vs-hand-asm decided first: this is compiler-emitted C, not hand assembly \u2014 regular gcc-2",
"path": "src/ov_SC03_105/ov_SC03_105_jr_80181C84.c"
},
{
"fn": "func_800CF3E8",
"binary": "md_MAIN_003",
"nins": 469,
"klass": "F-FAR",
"closeness": 54,
"closeness_last": 54,
"attempts": 1,
"warmstart_regression": false,
"journal_closeness": 377,
"jtbl": false,
"jr": false,
"jalr": false,
"o0": false,
"calls": 0,
"twins": 0,
"proven_twin": [],
"drafts": 137,
"verdict": "Recovered the S74 vW body (closeness 256) and drove it to 54 at the exact length 469/469, ",
"path": "src/md_MAIN_003/md_MAIN_003.c"
},
{
"fn": "func_8017DC80",
"binary": "ov_SC07_002",
"nins": 346,
"klass": "F-FAR",
"closeness": 84,
"closeness_last": 84,
"attempts": 1,
"warmstart_regression": false,
"journal_closeness": null,
"jtbl": false,
"jr": false,
"jalr": false,
"o0": false,
"calls": 4,
"twins": 0,
"proven_twin": [],
"drafts": 42,
"verdict": "The splat \"Handwritten function\" tag is wrong \u2014 this is ordinary gcc-2.7.2 -O2 C, and the ",
"path": "src/ov_SC07_002/ov_SC07_002_jr_8017C8D0.c"
},
{
"fn": "func_8001BC6C",
"binary": "main",
"nins": 69,
"klass": "F-FAR",
"closeness": 28,
"closeness_last": 28,
"attempts": 1,
"warmstart_regression": false,
"journal_closeness": 28,
"jtbl": false,
"jr": false,
"jalr": false,
"o0": false,
"calls": 0,
"twins": 0,
"proven_twin": [],
"drafts": 42,
"verdict": "Reproduced the documented best (28, two prior attempts): head cluster = sched1 birthing-bo",
"path": "src/800.c"
},
{
"fn": "func_800CF6D0",
"binary": "md_MAIN_007",
"nins": 249,
"klass": "G-DRAFTED-UNKNOWN",
"closeness": null,
"closeness_last": null,
"attempts": 0,
"warmstart_regression": false,
"journal_closeness": null,
"jtbl": false,
"jr": false,
"jalr": false,
"o0": false,
"calls": 0,
"twins": 0,
"proven_twin": [],
"drafts": 1,
"verdict": "",
"path": "src/md_MAIN_007/md_MAIN_007.c"
},
{
"fn": "func_800CD92C",
"binary": "md_MAIN_009",
"nins": 247,
"klass": "G-DRAFTED-UNKNOWN",
"closeness": null,
"closeness_last": null,
"attempts": 0,
"warmstart_regression": false,
"journal_closeness": null,
"jtbl": false,
"jr": false,
"jalr": false,
"o0": false,
"calls": 0,
"twins": 0,
"proven_twin": [],
"drafts": 1,
"verdict": "",
"path": "src/md_MAIN_009/md_MAIN_009.c"
},
{
"fn": "func_800CF408",
"binary": "md_MAIN_007",
"nins": 178,
"klass": "G-DRAFTED-UNKNOWN",
"closeness": null,
"closeness_last": null,
"attempts": 0,
"warmstart_regression": false,
"journal_closeness": null,
"jtbl": false,
"jr": false,
"jalr": false,
"o0": false,
"calls": 0,
"twins": 0,
"proven_twin": [],
"drafts": 1,
"verdict": "",
"path": "src/md_MAIN_007/md_MAIN_007.c"
},
{
"fn": "func_800CD674",
"binary": "md_MAIN_009",
"nins": 174,
"klass": "G-DRAFTED-UNKNOWN",
"closeness": null,
"closeness_last": null,
"attempts": 0,
"warmstart_regression": false,
"journal_closeness": null,
"jtbl": false,
"jr": false,
"jalr": false,
"o0": false,
"calls": 0,
"twins": 0,
"proven_twin": [],
"drafts": 1,
"verdict": "",
"path": "src/md_MAIN_009/md_MAIN_009.c"
},
{
"fn": "func_800CD464",
"binary": "md_MAIN_009",
"nins": 25,
"klass": "G-DRAFTED-UNKNOWN",
"closeness": null,
"closeness_last": null,
"attempts": 0,
"warmstart_regression": false,
"journal_closeness": null,
"jtbl": false,
"jr": false,
"jalr": false,
"o0": false,
"calls": 2,
"twins": 0,
"proven_twin": [],
"drafts": 1,
"verdict": "",
"path": "src/md_MAIN_009/md_MAIN_009.c"
},
{
"fn": "func_800CD558",
"binary": "md_MAIN_009",
"nins": 24,
"klass": "G-DRAFTED-UNKNOWN",
"closeness": null,
"closeness_last": null,
"attempts": 0,
"warmstart_regression": false,
"journal_closeness": null,
"jtbl": false,
"jr": false,
"jalr": false,
"o0": false,
"calls": 2,
"twins": 0,
"proven_twin": [],
"drafts": 1,
"verdict": "",
"path": "src/md_MAIN_009/md_MAIN_009.c"
},
{
"fn": "func_800CD5B8",
"binary": "md_MAIN_009",
"nins": 23,
"klass": "G-DRAFTED-UNKNOWN",
"closeness": null,
"closeness_last": null,
"attempts": 0,
"warmstart_regression": false,
"journal_closeness": null,
"jtbl": false,
"jr": false,
"jalr": false,
"o0": false,
"calls": 2,
"twins": 0,
"proven_twin": [],
"drafts": 1,
"verdict": "",
"path": "src/md_MAIN_009/md_MAIN_009.c"
},
{
"fn": "func_800CD614",
"binary": "md_MAIN_009",
"nins": 22,
"klass": "G-DRAFTED-UNKNOWN",
"closeness": null,
"closeness_last": null,
"attempts": 0,
"warmstart_regression": false,
"journal_closeness": null,
"jtbl": false,
"jr": false,
"jalr": false,
"o0": false,
"calls": 2,
"twins": 0,
"proven_twin": [],
"drafts": 1,
"verdict": "",
"path": "src/md_MAIN_009/md_MAIN_009.c"
},
{
"fn": "func_800CF0F4",
"binary": "md_MAIN_007",
"nins": 21,
"klass": "G-DRAFTED-UNKNOWN",
"closeness": null,
"closeness_last": null,
"attempts": 0,
"warmstart_regression": false,
"journal_closeness": null,
"jtbl": false,
"jr": false,
"jalr": false,
"o0": false,
"calls": 2,
"twins": 0,
"proven_twin": [],
"drafts": 1,
"verdict": "",
"path": "src/md_MAIN_007/md_MAIN_007.c"
},
{
"fn": "func_800CF1CC",
"binary": "md_MAIN_007",
"nins": 21,
"klass": "G-DRAFTED-UNKNOWN",
"closeness": null,
"closeness_last": null,
"attempts": 0,
"warmstart_regression": false,
"journal_closeness": null,
"jtbl": false,
"jr": false,
"jalr": false,
"o0": false,
"calls": 2,
"twins": 0,
"proven_twin": [],
"drafts": 1,
"verdict": "",
"path": "src/md_MAIN_007/md_MAIN_007.c"
},
{
"fn": "func_800CF268",
"binary": "md_MAIN_007",
"nins": 21,
"klass": "G-DRAFTED-UNKNOWN",
"closeness": null,
"closeness_last": null,
"attempts": 0,
"warmstart_regression": false,
"journal_closeness": null,
"jtbl": false,
"jr": false,
"jalr": false,
"o0": false,
"calls": 2,
"twins": 0,
"proven_twin": [],
"drafts": 1,
"verdict": "",
"path": "src/md_MAIN_007/md_MAIN_007.c"
},
{
"fn": "func_800CF33C",
"binary": "md_MAIN_007",
"nins": 21,
"klass": "G-DRAFTED-UNKNOWN",
"closeness": null,
"closeness_last": null,
"attempts": 0,
"warmstart_regression": false,
"journal_closeness": null,
"jtbl": false,
"jr": false,
"jalr": false,
"o0": false,
"calls": 2,
"twins": 0,
"proven_twin": [],
"drafts": 1,
"verdict": "",
"path": "src/md_MAIN_007/md_MAIN_007.c"
},
{
"fn": "func_800CD3B8",
"binary": "md_MAIN_009",
"nins": 21,
"klass": "G-DRAFTED-UNKNOWN",
"closeness": null,
"closeness_last": null,
"attempts": 0,
"warmstart_regression": false,
"journal_closeness": null,
"jtbl": false,
"jr": false,
"jalr": false,
"o0": false,
"calls": 3,
"twins": 0,
"proven_twin": [],
"drafts": 1,
"verdict": "",
"path": "src/md_MAIN_009/md_MAIN_009.c"
},
{
"fn": "func_800CF220",
"binary": "md_MAIN_007",
"nins": 19,
"klass": "G-DRAFTED-UNKNOWN",
"closeness": null,
"closeness_last": null,
"attempts": 0,
"warmstart_regression": false,
"journal_closeness": null,
"jtbl": false,
"jr": false,
"jalr": false,
"o0": false,
"calls": 2,
"twins": 0,
"proven_twin": [],
"drafts": 1,
"verdict": "",
"path": "src/md_MAIN_007/md_MAIN_007.c"
},
{
"fn": "func_800CEFF8",
"binary": "md_MAIN_007",
"nins": 13,
"klass": "G-DRAFTED-UNKNOWN",
"closeness": null,
"closeness_last": null,
"attempts": 0,
"warmstart_regression": false,
"journal_closeness": null,
"jtbl": false,
"jr": false,
"jalr": false,
"o0": false,
"calls": 1,
"twins": 0,
"proven_twin": [],
"drafts": 1,
"verdict": "",
"path": "src/md_MAIN_007/md_MAIN_007.c"
},
{
"fn": "func_801CBB80",
"binary": "md_SC03_056",
"nins": 23,
"klass": "H-VIRGIN",
"closeness": null,
"closeness_last": null,
"attempts": 0,
"warmstart_regression": false,
"journal_closeness": null,
"jtbl": false,
"jr": false,
"jalr": false,
"o0": false,
"calls": 6,
"twins": 0,
"proven_twin": [],
"drafts": 0,
"verdict": "",
"path": "src/md_SC03_056/md_SC03_056.c"
},
{
"fn": "func_800CD408",
"binary": "md_MAIN_009",
"nins": 23,
"klass": "H-VIRGIN",
"closeness": null,
"closeness_last": null,
"attempts": 0,
"warmstart_regression": false,
"journal_closeness": null,
"jtbl": false,
"jr": false,
"jalr": false,
"o0": false,
"calls": 2,
"twins": 0,
"proven_twin": [],
"drafts": 0,
"verdict": "",
"path": "src/md_MAIN_009/md_MAIN_009.c"
},
{
"fn": "func_800CD4C8",
"binary": "md_MAIN_009",
"nins": 22,
"klass": "H-VIRGIN",
"closeness": null,
"closeness_last": null,
"attempts": 0,
"warmstart_regression": false,
"journal_closeness": null,
"jtbl": false,
"jr": false,
"jalr": false,
"o0": false,
"calls": 2,
"twins": 0,
"proven_twin": [],
"drafts": 0,
"verdict": "",
"path": "src/md_MAIN_009/md_MAIN_009.c"
},
{
"fn": "func_800CD520",
"binary": "md_MAIN_009",
"nins": 22,
"klass": "H-VIRGIN",
"closeness": null,
"closeness_last": null,
"attempts": 0,
"warmstart_regression": false,
"journal_closeness": null,
"jtbl": false,
"jr": false,
"jalr": false,
"o0": false,
"calls": 2,
"twins": 0,
"proven_twin": [],
"drafts": 0,
"verdict": "",
"path": "src/md_MAIN_009/md_MAIN_009.c"
},
{
"fn": "func_801F0048",
"binary": "md_SC03_054",
"nins": 20,
"klass": "H-VIRGIN",
"closeness": null,
"closeness_last": null,
"attempts": 0,
"warmstart_regression": false,
"journal_closeness": null,
"jtbl": false,
"jr": false,
"jalr": false,
"o0": false,
"calls": 2,
"twins": 0,
"proven_twin": [],
"drafts": 0,
"verdict": "",
"path": "src/md_SC03_054/md_SC03_054.c"
},
{
"fn": "func_801F00C8",
"binary": "md_SC03_054",
"nins": 15,
"klass": "H-VIRGIN",
"closeness": null,
"closeness_last": null,
"attempts": 0,
"warmstart_regression": false,
"journal_closeness": null,
"jtbl": false,
"jr": false,
"jalr": false,
"o0": false,
"calls": 2,
"twins": 0,
"proven_twin": [],
"drafts": 0,
"verdict": "",
"path": "src/md_SC03_054/md_SC03_054.c"
}
]
+5
View File
@@ -27,6 +27,11 @@ IDENTICAL to the target. Read `.run/P32/t3/SYS.md` (the laws) and your pack `.ru
self-contained compile unit: the externs your body needs (spelled like the TU) + the function definition.
NO `#include`, NO typedefs the TU already has, NO `__asm__` reproduction of the target (an assembly body is
not a match and will be refused).
* If your target `.s` carries a `dlabel D_xxx` block in its `.rodata` section, your draft must DEFINE that data at
file scope from the bytes (`const char D_xxx[] = "...";` / `const u32 D_xxx[] = { ... };`, cookbook §304) — an `extern`
for it fails at LINK because the stub `.s` was its only owner (rtu_match is compile-only and cannot see it). Declare
every shared global/function with the EXACT type the TU or its banked siblings already use — two drafts of one TU that
spell one symbol differently both MATCH alone and fail together (§500-F).
* Write any evidence/prose you want to keep to `.run/P32/t3/reports/<fn>.md` (mkdir -p it). Your FINAL message is EXACTLY
one JSON object on its own line and NOTHING else (the coordinator ingests 30+ of these; prose in the final message overflowed it once):
{"fn": "...", "binary": "...", "arm": "...", "status": "MATCH|NEAR|FAIL", "closeness": <int or null>,
+19
View File
@@ -0,0 +1,19 @@
extern s32 func_8001B244(s32);
extern void func_8001AD38(const char*);
extern void func_800116A0(void);
extern s32 D_800CDD2C;
extern s32 D_800CDD34;
const char D_800CD34C[] = "C:\\TIMPACK\\OPDEMO0.PAT";
void func_800CD3B8(void) {
if (func_8001B244(0x8E) == 0) {
return;
}
func_8001AD38(D_800CD34C);
D_800CDD2C = 0;
D_800CDD34 = 0;
func_800116A0();
}
+21
View File
@@ -0,0 +1,21 @@
extern s32 D_800CDD2C;
extern s32 D_800CDD34;
extern void func_800CD674(s32, s32, s32);
extern void func_800116A0(void);
void func_800CD408(void) {
s32 a1 = D_800CDD2C;
s32 a2 = D_800CDD34;
func_800CD674(0, a1, a2);
a2 = D_800CDD34;
a2 += 8;
D_800CDD34 = a2;
if (a2 < 0x80) {
// skip
} else {
func_800116A0();
}
}
+14
View File
@@ -0,0 +1,14 @@
extern s32 D_800CDD2C;
extern s32 D_800CDD34;
extern void func_800CD674(s32, s32, s32);
extern void func_800116A0(void);
void func_800CD464(void) {
func_800CD674(0, D_800CDD2C, D_800CDD34);
D_800CDD2C--;
if (D_800CDD2C >= -0x10F) {
return;
}
D_800CDD2C = -0x110;
func_800116A0();
}
+14
View File
@@ -0,0 +1,14 @@
extern s32 D_800CDD2C;
extern s32 D_800CDD34;
void func_800CD674(s32, s32, s32);
void func_800116A0(void);
void func_800CD4C8(void) {
func_800CD674(0, D_800CDD2C, D_800CDD34);
D_800CDD34 -= 8;
if (D_800CDD34 <= 0) {
func_800116A0();
}
}
+11
View File
@@ -0,0 +1,11 @@
const u32 D_800CD364[] = { 0x545C3A43, 0x41504D49, 0x4F5C4B43, 0x4D454450, 0x502E314F, 0x65005441, 0x3C02800C, 0x9442AE04 };
/* func_8001AD38 is declared by the TU at file scope as (const char*) — spelled like the TU (§376) */
extern s32 D_800CDD34;
extern void func_800116A0(void);
void func_800CD520(void) {
func_8001AD38((const char *)D_800CD364);
D_800CDD34 = 0;
func_800116A0();
}
+13
View File
@@ -0,0 +1,13 @@
extern s32 D_800CDD30;
extern s32 D_800CDD34;
extern void func_800CD92C(s32, s32, s32);
extern void func_800116A0(void);
void func_800CD558(void) {
func_800CD92C(-0x400, 0, D_800CDD34);
D_800CDD30 = -0x340;
D_800CDD34 += 8;
if (D_800CDD34 >= 0x80) {
func_800116A0();
}
}
+12
View File
@@ -0,0 +1,12 @@
extern s32 D_800CDD30;
extern s32 D_800CDD34;
extern void func_800CD92C(s32 a0, s32 a1, s32 a2);
extern void func_800116A0(void);
void func_800CD5B8(void) {
func_800CD92C(D_800CDD30, 0, D_800CDD34);
D_800CDD30++;
if (D_800CDD30 >= 0x141) {
func_800116A0();
}
}
+17
View File
@@ -0,0 +1,17 @@
extern s32 D_800CDD30;
extern s32 D_800CDD34;
void func_800CD92C(s32, s32, s32);
void func_800116A0(void);
void func_800CD614(void) {
s32 v0;
func_800CD92C(D_800CDD30, 0, D_800CDD34);
v0 = D_800CDD34 - 8;
D_800CDD34 = v0;
if (v0 > 0) {
return;
}
func_800116A0();
}
+8
View File
@@ -0,0 +1,8 @@
extern s32 func_800167F0(s32 a0);
extern u16 D_800B99E6;
void func_800CEFF8(void) {
if (func_800167F0(0x4) & 0xFFFF) {
D_800B99E6 = 1;
}
}
+12
View File
@@ -0,0 +1,12 @@
extern s32 D_800D1368;
extern s32 D_800D1374;
extern void func_800CF408(s32 a0, s32 a1);
extern s32 func_800167F0(s32 a0);
void func_800CF0F4(void) {
func_800CF408(0, D_800D1368);
if (func_800167F0(0) & 0xFFFF) {
D_800D1374++;
}
}
+12
View File
@@ -0,0 +1,12 @@
extern s32 D_800D1368;
extern s32 D_800D1374;
extern void func_800CF408(s32 a0, s32 a1);
extern s32 func_800167F0(s32 a0);
void func_800CF1CC(void) {
func_800CF408(0, D_800D1368);
if ((func_800167F0(4) & 0xFFFF) != 0) {
D_800D1374++;
}
}
+11
View File
@@ -0,0 +1,11 @@
extern void func_8001AA98(void *a0);
extern s32 D_800D1374;
extern void func_800167B8(s32 a0);
const char D_800CEE14[] = "C:\\TIMPACK\\OPDEMO1.PAT";
void func_800CF220(void) {
func_8001AA98((void *)D_800CEE14);
func_800167B8(0);
D_800D1374++;
}
+12
View File
@@ -0,0 +1,12 @@
extern s32 func_800167F0(s32 a0);
extern void func_800CF6D0(s32 a0, u32 a1);
extern s32 D_800D136C;
extern s32 D_800D1374;
void func_800CF268(void) {
func_800CF6D0(-0x400, 0);
if (func_800167F0(0) & 0xFFFF) {
D_800D136C = -0x340;
D_800D1374++;
}
}
+11
View File
@@ -0,0 +1,11 @@
extern s32 D_800D136C;
extern s32 D_800D1374;
extern void func_800CF6D0(s32 a0, u32 a1);
extern s32 func_800167F0(s32 a0);
void func_800CF33C(void) {
func_800CF6D0(D_800D136C, 0);
if ((func_800167F0(4) & 0xFFFF) != 0) {
D_800D1374++;
}
}
+17
View File
@@ -0,0 +1,17 @@
extern s32 func_80178970(s32 *a0);
extern void func_80029514(s32 a0);
extern void func_80029124(s32 a0, s32 a1);
extern void func_80178D18(u8 *a0);
extern void func_80162120(void);
extern s32 func_8018151C(s32);
void func_801CBB80(u8 * a0)
{
if (func_80178970((s32 *)a0)) {
func_80029514(0x78);
func_80029124(0xED, 1);
func_80178D18((u8 *)a0);
func_80162120();
func_8018151C((s32)a0);
}
}
+17
View File
@@ -0,0 +1,17 @@
extern void func_8012C588(s32 a0, s32 a1);
extern void func_8012A828(s32 a0, s32 a1);
extern s32 D_801EB318;
extern s32 D_801F1468;
void func_801F0048(s32 a0) {
s32 v1;
s32 v0;
func_8012C588(0x8D, a0);
v1 = *(s32 *)(a0 + 0x20);
v0 = (s32)&D_801EB318;
*(s32 *)(v1 + 0x24) = v0;
func_8012A828(a0, (s32)&D_801F1468);
}
+10
View File
@@ -0,0 +1,10 @@
extern s32 func_8012E544(s32 a0);
extern void func_800291A0(s32 a0, s32 a1);
void func_801F00C8(void) {
s32 v0 = func_8012E544(0x11A);
if (v0 != 0) {
*(s16*)(v0 + 0xFC) = 2;
func_800291A0(0xCC, 0x1);
}
}
+1
View File
@@ -10,3 +10,4 @@
- 2026-09-05 09:30 MDT (successor session): ALL of the above + the 22 unprocessed verdicts are distilled into cookbook §500
(A banked / B MATCH-unbanked / C NEAR classes / D two new mechanisms / E process defects). New idioms from the queue's
results go into §500 addenda at the T3 close.
- 2026-09-05 11:20 MDT (session 491895ad): the 17 queued Haiku rows → 17/17 MATCH, all banked (md_MAIN_007 ×6, md_MAIN_009 ×8, md_SC03_054 ×2 → 100% C, md_SC03_056 ×1 → 100% C); plus the 11 S82 MATCH rows banked (md_SC03_053 ×2 → 100% C, main ×2 via gate_main, md_SC03_054 func_801EF6D8 604+7 jtbls via §303, md_MAIN_007 ×6). 28 banks / ~2,800 ins, 0 walls. Distilled into cookbook §500-F: same-TU decl conflicts across drafts (the BUILD is the verdict; bank.sh), §304 ×3 (prompt sentence now in BRIEF.md), verdict-relative-to-TU-at-verification (re-verify before splicing), the md_* jtbl route is §303 (probe text amended), census nins counts .word lines.
+1 -17
View File
@@ -1,18 +1,2 @@
# T3 Haiku launches deferred by the 20-concurrent-subagent cap (2026-09-05). Launch one per freed slot; delete a line when launched.
md_MAIN_007 func_800CF0F4 21
md_MAIN_007 func_800CF1CC 21
md_MAIN_007 func_800CF268 21
md_MAIN_007 func_800CF33C 21
md_MAIN_007 func_800CF220 19 twin=ov_SC03_001:0x80182860 d=4
md_MAIN_007 func_800CEFF8 13 twin=ov_SC02_005:0x801865d0 d=3
md_MAIN_009 func_800CD464 25
md_MAIN_009 func_800CD558 24
md_MAIN_009 func_800CD408 23
md_MAIN_009 func_800CD5B8 23
md_MAIN_009 func_800CD4C8 22
md_MAIN_009 func_800CD520 22 twin=ov_SC03_011:0x8017dbd8 d=3
md_MAIN_009 func_800CD614 22
md_MAIN_009 func_800CD3B8 21
md_SC03_056 func_801CBB80 23 twin=ov_SC06_025:0x8017ded8 d=5
md_SC03_054 func_801F0048 20
md_SC03_054 func_801F00C8 15 twin=md_SC03_053:0x801ef9dc d=5 (family_remap refused: reloc-count mismatch — hand-adapt)
# all 17 rows launched by session 491895ad on 2026-09-05T10:57:09-06:00 (prompts: .run/P32/t3s3/prompts/<fn>.txt)
+35
View File
@@ -0,0 +1,35 @@
# func_800CF1CC — MATCH
## Analysis
Target: 21 instructions in md_MAIN_007 binary.
The function:
1. Calls func_800CF408 with parameters (0, D_800D1368)
2. Calls func_800167F0 with parameter 4
3. Tests the lower 16 bits of the return value
4. If non-zero, increments global s32 D_800D1374
## Draft
```c
extern s32 D_800D1368;
extern s32 D_800D1374;
extern void func_800CF408(s32 a0, s32 a1);
extern s32 func_800167F0(s32 a0);
void func_800CF1CC(void) {
func_800CF408(0, D_800D1368);
if ((func_800167F0(4) & 0xFFFF) != 0) {
D_800D1374++;
}
}
```
## Verification
- match_one: MATCH (21 ins)
- rtu_match: MATCH (21 ins)
- All symbols (func_800CF408, func_800167F0, D_800D1368, D_800D1374) verified against target assembly relocations
- All symbol declarations copied exactly from destination TU or matched to TU's house style
+14
View File
@@ -0,0 +1,14 @@
# func_800CF268 — 21 instructions — MATCH
## Summary
Byte-identical match. Function calls func_800CF6D0(-0x400, 0), then func_800167F0(0), tests the lower 16 bits of the result, and if nonzero, sets D_800D136C = -0x340 and increments D_800D1374.
## Strategy
- Straightforward control flow with no complex operations
- All symbols spell correctly against the target .s relocations
- No edge cases or compiler quirks required
- Simple global data accesses
## Result
- match_one: MATCH (21 ins)
- rtu_match: MATCH (21 ins)
+27
View File
@@ -0,0 +1,27 @@
# func_801F00C8 — MATCH
## Analysis
Target: func_801F00C8 (15 instructions) in binary md_SC03_054.
### Structure
The function follows the familiar pattern seen in neighboring siblings (func_801F0098, func_801F0104):
1. Call func_8012E544(0x11A) to get a pointer
2. If non-null, perform an operation and (in this case) make a secondary call
### Key differences from neighbors
Unlike func_801F0098 (stores 1) and func_801F0104 (stores 3), this function:
- Stores the value 2 to *(s16*)(v0 + 0xFC)
- Makes an additional call to func_800291A0(0xCC, 0x1) before returning
### Symbols and literals
- func_8012E544(0x11A): Verified from relocation lines in target .s
- func_800291A0(0xCC, 0x1): Verified from relocation lines in target .s
- Offset 0xFC: From sh instruction in target
- Values 0x2, 0xCC, 0x1: From immediate instructions in target
### Result
- match_one: MATCH (15 ins)
- rtu_match: MATCH (15 ins)
Both verification tools confirm byte-identical assembly.
+17
View File
@@ -29,3 +29,20 @@
{"fn": "func_800CEE2C", "binary": "md_MAIN_007", "arm": "sonnet", "status": "MATCH", "closeness": 0, "compiles": true, "draft_path": ".run/P32/t3/sonnet/func_800CEE2C.c", "note": "s0 cross-call liveness: needed an early `u8 *base = D_800AF630;` local (live across both func_8001534C calls) to force callee-saved $s0 allocation, then `*(u16*)(base+0xA3B4)` (no relocation, matches D_800B99E4's address by raw offset) instead of the named symbol. Also had to capture &D_800CFABF once into an explicit pointer local reused for both the (p-0xB) arg and the *p=v1 store \u2014 writing two separate &D_800CFABF expressions produced 3 independent address computations instead of 1 shared register.", "file": "/tmp/claude-1000/-home-musashi-bfm-decomp/7beebba8-05e9-4d18-98ea-ce208f45370f/tasks/ad629fbb5409d94d5.output"}
{"fn": "func_800CF148", "binary": "md_MAIN_007", "arm": "haiku", "status": "MATCH", "closeness": null, "compiles": true, "draft_path": ".run/P32/t3/haiku/func_800CF148.c", "note": "TU declared func_800CF3B0 with incorrect signature (void return, three void* params). Local redeclaration with correct signature (s32 return, no params) shadowed TU's file-scope declaration within function scope, matching assembly's call with no argument setup and $v0 check.", "file": "/tmp/claude-1000/-home-musashi-bfm-decomp/7beebba8-05e9-4d18-98ea-ce208f45370f/tasks/ae4f750a4192a35f4.output"}
{"fn": "func_800CF3E8", "binary": "md_MAIN_003", "arm": "opus", "status": "NEAR", "closeness": 27, "compiles": true, "draft_path": "/home/musashi/bfm-decomp/.run/P32/t3/opus/func_800CF3E8.c", "note": "54->27 at 469/469, rtu_match agrees (no decl conflict); blk1+blk2 now byte-exact (idx 0-361). Four levers: (1) blk2 must birth tag 0xE100008F BEFORE the 0xFFFFFF mask so dbr shares the entry beq-delay-slot `lui $v1,0xE100` into both blk2's ori 0x8F and the j's ori 0x8A (5 rows); (2) same in blk1 via a shared mq2 + ADDPRIM2 (3 rows); (3) p5/p6 group order clut,w,h,len,tag + a 3697-cand single-move climb (44->34); (4) NEW IDIOM worth 7 rows: a birthing-boost LOCAL for a per-prim constant (`w60=0x60; ... pC->w=w60;`) decouples the `li 0x60` from the post-fence region so it schedules right after `sh x0` -- and ONLY then does moving the S194-A fence from [y0|u0] to [v0|clut] work; the two are inert separately. RESIDUAL = one cause, class [permuter]/basin: the target hoists `lw $t2,0($v1)` (p6's OT-tag read) 20 slots; mine cannot. ROOT CAUSE byte-verified from -dS/-dl dumps and NOT in the cookbook: sched1 (pre-regalloc) fixes the final order, and there `*(u32*)p6` expands with its address in a PSEUDO (mem:SI (reg 429)) while `p6->field` stores use the PINNED HARD reg (mem/s:QI (plus (reg 3) 11)); sched.c memrefs_conflict_p only disambiguates off the SAME base rtx and cse.c canon_reg refuses to canonicalise a hard reg, so the load true-depends on all ten p6 field stores. The register-asm(\"$3\") pin on p6 IS the blocker -- unpinning does hoist it (verified) but moves the whole tail to another allocation basin (188-197). MEASURED INERT: all 9 pins load-bearing (ablation +5..+1409); position of __asm__(\"\" :: \"r\"(ot)) byte-inert across 7 slots (removing it costs +14); h6 tag-read hoist at all 32 positions x 2 operand orders (load moves early but a load-use nop appears, 470 ins; a 3934-cand climb from that seed returns to 27); struct reshape to a leading `u32 tag` (RTL still uses pseudo 429); PsyQ P_TAG {addr:24,len:8} bitfield ADDPRIM (75/83); array-based p6 field stores (470 ins); c5/mlo/mhi mask steering (33-80); prim-C 540-variant and 226-move sweeps; ~92k annealed tail variants over 2 seeds -- all hold at 27.", "file": "/tmp/claude-1000/-home-musashi-bfm-decomp/7beebba8-05e9-4d18-98ea-ce208f45370f/tasks/afb69f4023dd0ae0b.output"}
{"fn": "func_800CF1CC", "binary": "md_MAIN_007", "arm": "haiku", "status": "MATCH", "closeness": null, "compiles": true, "draft_path": ".run/P32/t3/haiku/func_800CF1CC.c", "note": "straightforward control flow with two function calls and conditional increment; both leaf and TU matches verified", "session": "491895ad"}
{"fn": "func_800CF268", "binary": "md_MAIN_007", "arm": "haiku", "status": "MATCH", "closeness": null, "compiles": true, "draft_path": ".run/P32/t3/haiku/func_800CF268.c", "note": "rtu_match MATCH — straightforward control flow with global data accesses", "session": "491895ad"}
{"fn": "func_800CF0F4", "binary": "md_MAIN_007", "arm": "haiku", "status": "MATCH", "closeness": null, "compiles": true, "draft_path": ".run/P32/t3/haiku/func_800CF0F4.c", "note": "Leaf MATCH (21 ins) and rtu_match MATCH. calls func_800CF408(0, D_800D1368), then conditionally increments D_800D1374 if func_800167F0(0) & 0xFFFF is non-zero", "session": "491895ad"}
{"fn": "func_800CEFF8", "binary": "md_MAIN_007", "arm": "haiku", "status": "MATCH", "closeness": null, "compiles": true, "draft_path": ".run/P32/t3/haiku/func_800CEFF8.c", "note": "Matched with rtu_match; local externs matched house style from func_800CEF60 in same TU; symbols verified against target .s (func_800167F0, D_800B99E6)", "session": "491895ad"}
{"fn": "func_800CF33C", "binary": "md_MAIN_007", "arm": "haiku", "status": "MATCH", "closeness": null, "compiles": true, "draft_path": ".run/P32/t3/haiku/func_800CF33C.c", "note": "func_800CF6D0 call + func_800167F0(4) conditional check + D_800D1374 increment, 21 ins", "session": "491895ad"}
{"fn": "func_800CF220", "binary": "md_MAIN_007", "arm": "haiku", "status": "MATCH", "closeness": null, "compiles": true, "draft_path": ".run/P32/t3/haiku/func_800CF220.c", "note": "rtu_match MATCH confirmed (twin ov_SC03_001:0x80182860 route)", "session": "491895ad"}
{"fn": "func_800CD614", "binary": "md_MAIN_009", "arm": "haiku", "status": "MATCH", "closeness": null, "compiles": true, "draft_path": ".run/P32/t3/haiku/func_800CD614.c", "note": "22 ins, byte-identical via rtu_match", "session": "491895ad"}
{"fn": "func_800CD5B8", "binary": "md_MAIN_009", "arm": "haiku", "status": "MATCH", "closeness": null, "compiles": true, "draft_path": ".run/P32/t3/haiku/func_800CD5B8.c", "note": "Straightforward global counter increment with conditional call pattern; 23 instructions matching exactly.", "session": "491895ad"}
{"fn": "func_800CD464", "binary": "md_MAIN_009", "arm": "haiku", "status": "MATCH", "closeness": null, "compiles": true, "draft_path": ".run/P32/t3/haiku/func_800CD464.c", "note": "load D_800CDD2C and D_800CDD34, call func_800CD674(0, arg1, arg2), decrement D_800CDD2C, conditionally reset to -0x110 and call func_800116A0", "session": "491895ad"}
{"fn": "func_800CD3B8", "binary": "md_MAIN_009", "arm": "haiku", "status": "MATCH", "closeness": null, "compiles": true, "draft_path": ".run/P32/t3/haiku/func_800CD3B8.c", "note": "String rodata defined (§304); extern globals D_800CDD2C/D_800CDD34; conditional logic on func_8001B244 return value", "session": "491895ad"}
{"fn": "func_801F00C8", "binary": "md_SC03_054", "arm": "haiku", "status": "MATCH", "closeness": null, "compiles": true, "draft_path": ".run/P32/t3/haiku/func_801F00C8.c", "note": "Twin shape adaptation (md_SC03_053:0x801ef9dc, family_remap refused) + secondary func_800291A0 call; match_one & rtu_match both MATCH", "session": "491895ad"}
{"fn": "func_800CD408", "binary": "md_MAIN_009", "arm": "haiku", "status": "MATCH", "closeness": null, "compiles": true, "draft_path": ".run/P32/t3/haiku/func_800CD408.c", "note": "Global loads D_800CDD2C and D_800CDD34, call func_800CD674(0, val1, val2), increment D_800CDD34 by 8, conditionally call func_800116A0 if result < 0x80", "session": "491895ad"}
{"fn": "func_800CD558", "binary": "md_MAIN_009", "arm": "haiku", "status": "MATCH", "closeness": null, "compiles": true, "draft_path": ".run/P32/t3/haiku/func_800CD558.c", "note": "func_800CD92C takes 3 args (a0, a1, a2) where a2 is D_800CDD34's value; bnez polarity (v0 >= 0x80) after increment, jal func_800116A0 in fall-through", "session": "491895ad"}
{"fn": "func_801F0048", "binary": "md_SC03_054", "arm": "haiku", "status": "MATCH", "closeness": null, "compiles": true, "draft_path": ".run/P32/t3/haiku/func_801F0048.c", "note": "Leaf MATCH and rtu_match MATCH. Two function calls with address loads in delay-slot memory write pattern.", "session": "491895ad"}
{"fn": "func_801CBB80", "binary": "md_SC03_056", "arm": "haiku", "status": "MATCH", "closeness": null, "compiles": true, "draft_path": ".run/P32/t3/haiku/func_801CBB80.c", "note": "if-then pattern with conditional function calls (twin ov_SC06_025:0x8017ded8 route). All symbols matched from target asm relocs.", "session": "491895ad"}
{"fn": "func_800CD4C8", "binary": "md_MAIN_009", "arm": "haiku", "status": "MATCH", "closeness": null, "compiles": true, "draft_path": ".run/P32/t3/haiku/func_800CD4C8.c", "note": "Immediate MATCH - simple global reference-count pattern with decrement and conditional branch", "session": "491895ad"}
{"fn": "func_800CD520", "binary": "md_MAIN_009", "arm": "haiku", "status": "MATCH", "closeness": 0, "compiles": true, "draft_path": ".run/P32/t3/haiku/func_800CD520.c", "note": "Self-defining rodata at file scope (§304); wrapper calling func_8001AD38 with D_800CD364, stores 0 to D_800CDD34, calls func_800116A0 (twin ov_SC03_011:0x8017dbd8 route)", "session": "491895ad"}
+16
View File
@@ -0,0 +1,16 @@
#!/bin/bash
# T3 §5.6 — ledger the 9 NEAR rows (P32 T3 Opus agents; cookbook §500-C; reports .run/P32/t3/reports/). Cost per row (R41): 1 Opus agent, 30–70 min.
set -e
cd /home/musashi/bfm-decomp
B=".venv/bin/python tools/backlog.py log --status near"
SRC="P32-T3 one Opus agent 30-70min; §500-C; report .run/P32/t3/reports/"
$B --name func_800CD674 --addr 0x800cd674 --binary md_MAIN_009 --nins 174 --closeness 2 --class REGALLOC-PERM --draft .run/P32/t3/opus/func_800CD674.c --source "$SRC" --where '$a3<->$t1 across two masked prim pointers (one shared local can be only one; splitting = +1 pseudo displacing two hoisted constants, 31); SPRT-with-tpage family, §364 mirror (non-struct field stores). Inert: pin order (8 perms), assignment placement (6), volatile index, p+=0x18 spellings, u8* cursor, every pin subset. NEXT: permuter_ils on the pinned seed (§494 recipe)'
$B --name func_8001BC6C --addr 0x8001bc6c --binary main --nins 69 --closeness 6 --class REGALLOC-PERM --draft .run/P32/t3/opus/func_8001BC6C.c --source "$SRC" --where '$v0<->$v1 swap across the six OT-chain insns: local-alloc qty_compare priority one span unit (base 2/2=1.0 > index 8/9=0.889); needs one fewer insn between the lhu and addu at sched1; color must stay pinned $5 (-18 without). 28->6 via P_TAG bitfield RMW + named inner term + emitted-order statements. NEXT: permuter_ils on the pinned seed (§494)'
$B --name func_800CD92C --addr 0x800cd92c --binary md_MAIN_009 --nins 247 --closeness 15 --class SCHED --draft .run/P32/t3/opus/func_800CD92C.c --source "$SRC" --where 'map §S7 prologue WEAVE: the {sw,lui,ori} groups for 0xE100008D/8F land after the 9-insn li block instead of before — the §17 pins reproduce the ALLOCATION but the hoist happens in sched2. Same SPRT family as func_800CD674 (§364 mirror levers applied)'
$B --name func_80039308 --addr 0x80039308 --binary main --nins 518 --closeness 17 --class REGALLOC --draft .run/P32/t3/opus/func_80039308.c --source "$SRC" --where 'sched2 + cross-block regalloc: preheader 49/50 swap, un-spellable addu $a2,$a0,$zero (every p=r form cse-propagated), a temp on $t0 vs $s7, and 11 insns of one alias fact (2nd D_80073140[j] load cannot schedule above the D_800C7D20 store from C; /s unlock costs the address allocation, net 20-24). 34->17 via s16 b4 widening copy + dead-local identity sweep (.run/P32/t3/restored/sweep_func_80039308.py) + $2 pin. permuter_ils --klass REGALLOC 2x150s: no gain'
$B --name func_800CF3E8 --addr 0x800cf3e8 --binary md_MAIN_003 --nins 469 --closeness 27 --class ALIAS --draft .run/P32/t3/opus/func_800CF3E8.c --source "$SRC" --where 'ONE cause: the pinned-base alias basin (§500-D1) in the p5/p6 tail; blocks 1-2 byte-exact (idx 0-361). 54->27 via blk2 constant birth order + birthing-boost local w60 + §194-A fence relocation. Inert: all 9 pins load-bearing (+5..+1409), asm position x7, h6 hoist 32x2, tag reshape, P_TAG ADDPRIM, array p6 stores, ~92k annealed variants. Untested: an unpinned alias of p6 for the tag load alone (ONE Opus second look allowed)'
$B --name func_80185810 --addr 0x80185810 --binary ov_SC03_105 --nins 489 --closeness 35 --class SCHED --draft .run/P32/t3/opus/func_80185810.c --source "$SRC" --where '[permuter] 4 emission windows (see report .run/P32/t3/reports/func_80185810__opus__*.md); exact length, rtu-clean'
$B --name func_8017DC80 --addr 0x8017dc80 --binary ov_SC07_002 --nins 346 --closeness 46 --class FRAME --draft .run/P32/t3/opus/func_8017DC80.c --source "$SRC" --where 'the historic -33 LENGTH wall CLOSED (GTE macros must be REAL macros — the TU house block; the splat Handwritten tag is wrong): 346/346, exact 0x70 frame + 9 callee-saved. Residual: reload-slot frame + the la $a0 slot; cse1 unifies OT index and n<4 across func_80010A08(8) (§500-D2 zero-byte asm retire)'
$B --name func_800CF408 --addr 0x800cf408 --binary md_MAIN_007 --nins 178 --closeness 49 --class SCHED --draft .run/P32/t3/opus/func_800CF408.c --source "$SRC" --where '[permuter] 3 hunks: two prologue sched2 slots, an mlo/mhi allocno tie, a 3-insn block-2 head hoist. Two LENGTH-bearing pins found (tp $17 shared by 0xE1000087/97 = the 6th callee-saved; ob $10 fixes the $t1/$t2/$t3 rotation, 56->49). §351 family (func_8001212C -O0 / func_8017DD04 -O2 exemplars)'
$B --name func_800CF6D0 --addr 0x800cf6d0 --binary md_MAIN_007 --nins 249 --closeness 137 --class SCHED --draft .run/P32/t3/opus/func_800CF6D0.c --source "$SRC" --where 'sched1 rank_for_schedule last-insn-CLASS tie (every store priority 2, equal refs; QImode stores grouped, loads floated, HImode after — 5 of 6 blocks) + $t1<->$t3 local-alloc swap of the two masks. 249/249 exact length only with tpage-before-len field order (19 swept). Inert at 137: pins on tpage constants/masks, asm re-ties, volatile/memory fences, /s-denial on any store subset, *0x4000 vs <<14, p++ vs p+0x18, | swap. decomp-permuter 122 was semantically wrong (R63)'
.venv/bin/python tools/backlog.py render
+28
View File
@@ -0,0 +1,28 @@
#!/bin/bash
# bank.sh <binary> <tu> <asmdir> <arm> <title> fn... — verbatim grep, rtu_match each, splice each, ONE build, sha vs config, commit on green.
# Refuses (exit 1) on: __asm__/.word in a draft, rtu non-MATCH, splice failure, build rc≠0, sha mismatch. Never commits on red.
set -u
cd /home/musashi/bfm-decomp
bin=$1; tu=$2; asmdir=$3; arm=$4; title=$5; shift 5
fns=("$@"); want=$(cut -d' ' -f1 config/check.$bin.sha); log=.run/P32/t3s3/bank_${bin}_$(date +%H%M%S).log
for fn in "${fns[@]}"; do d=.run/P32/t3/$arm/$fn.c; [ -f "$d" ] || { echo "NO DRAFT $d"; exit 1; }
n=$(grep -c '\.ent\|\.word\|__asm__' "$d" || true); [ "$n" = 0 ] || { echo "VERBATIM-SUSPECT $fn ($n)"; exit 1; }
r=$(.venv/bin/python tools/rtu_match.py $fn --split $bin --source $bin --c "$d" --asm-subdir "$asmdir" --work .run/P32/t3s3/verify_bank/$fn 2>&1 | grep -m1 '^MATCH\|^DIFF\|^CC1'); echo "$fn: $r"
case "$r" in MATCH*) ;; *) echo "STOP: $fn not MATCH"; exit 1;; esac; done
for fn in "${fns[@]}"; do .venv/bin/python .run/P32/t3s3/splice.py "$tu" "$asmdir" $fn .run/P32/t3/$arm/$fn.c || exit 1; done
make build BINARY=$bin -j8 > "$log" 2>&1; rc=$?; echo "BUILD_RC=$rc"
grep -in 'error\|conflicting\|undefined ref' "$log" | head -6
[ $rc = 0 ] || { echo "BUILD FAILED — tree left for diagnosis (R42: do not blind-revert)"; exit 1; }
got=$(sha1sum build/$bin/$bin | cut -d' ' -f1); echo "sha $got vs $want"
[ "$got" = "$want" ] || { echo "SHA MISMATCH"; exit 1; }
left=$(grep -c INCLUDE_ASM "$tu" || true)
body=""; for fn in "${fns[@]}"; do body+="- $fn: draft .run/P32/t3/$arm/$fn.c ($arm agent, agent MATCH re-verified by coordinator rtu_match in the real TU)"$'\n'; done
git add "$tu" && git commit -q -F - <<EOM
$title
$body- one build for the same-TU batch: make build BINARY=$bin -j8 rc 0; sha1 $got == config/check.$bin.sha (BYTE-IDENTICAL)
- $tu: $left INCLUDE_ASM left
Claude-Session: 491895ad-3c84-4037-b04f-bf7e5ee16a0c
EOM
git log --oneline -1
@@ -0,0 +1,5 @@
CC build/src/md_MAIN_007/md_MAIN_007.o
LD build/md_MAIN_007/md_MAIN_007.elf
OBJCOPY build/md_MAIN_007/md_MAIN_007
[ OK ] build/md_MAIN_007/md_MAIN_007
sha1 2ff702b605ab5cfc18474c464c4c07e5f8ffd48c == config/check.md_MAIN_007.sha (BYTE-IDENTICAL)
@@ -0,0 +1,5 @@
CC build/src/md_MAIN_009/md_MAIN_009.o
LD build/md_MAIN_009/md_MAIN_009.elf
OBJCOPY build/md_MAIN_009/md_MAIN_009
[ OK ] build/md_MAIN_009/md_MAIN_009
sha1 d270f695b793b5c03db159b7aabcc066daa87eda == config/check.md_MAIN_009.sha (BYTE-IDENTICAL)
@@ -0,0 +1,5 @@
CC build/src/md_MAIN_009/md_MAIN_009.o
LD build/md_MAIN_009/md_MAIN_009.elf
OBJCOPY build/md_MAIN_009/md_MAIN_009
[ OK ] build/md_MAIN_009/md_MAIN_009
sha1 d270f695b793b5c03db159b7aabcc066daa87eda == config/check.md_MAIN_009.sha (BYTE-IDENTICAL)
@@ -0,0 +1,6 @@
CC build/src/md_SC03_054/md_SC03_054.o
jtbl_rodata_pads --derive md_SC03_054: 0,0t1,0t1,0t1,0t1,0t1,0
LD build/md_SC03_054/md_SC03_054.elf
OBJCOPY build/md_SC03_054/md_SC03_054
[ OK ] build/md_SC03_054/md_SC03_054
sha1 06bd73dfbdb10748adcbac7093ead5d76131206a == config/check.md_SC03_054.sha (BYTE-IDENTICAL)
@@ -0,0 +1,9 @@
CC build/src/md_SC03_056/md_SC03_056.o
src/md_SC03_056/md_SC03_056.c: In function `func_801CBBDC':
src/md_SC03_056/md_SC03_056.c:39: warning: passing arg 2 of `func_80178CBC' makes integer from pointer without a cast
src/md_SC03_056/md_SC03_056.c: In function `func_801CBC08':
src/md_SC03_056/md_SC03_056.c:48: warning: passing arg 1 of `func_80178970' from incompatible pointer type
LD build/md_SC03_056/md_SC03_056.elf
OBJCOPY build/md_SC03_056/md_SC03_056
[ OK ] build/md_SC03_056/md_SC03_056
sha1 bc768a6b7baa911e0a0cb9175b33550851d6c1eb == config/check.md_SC03_056.sha (BYTE-IDENTICAL)
@@ -0,0 +1,5 @@
CC build/src/md_MAIN_007/md_MAIN_007.o
LD build/md_MAIN_007/md_MAIN_007.elf
OBJCOPY build/md_MAIN_007/md_MAIN_007
[ OK ] build/md_MAIN_007/md_MAIN_007
sha1 2ff702b605ab5cfc18474c464c4c07e5f8ffd48c == config/check.md_MAIN_007.sha (BYTE-IDENTICAL)
@@ -0,0 +1,6 @@
CC build/src/md_MAIN_007/md_MAIN_007.o
src/md_MAIN_007/md_MAIN_007.c: In function `func_800CEF94':
src/md_MAIN_007/md_MAIN_007.c:76: conflicting types for `D_800B99E8'
src/md_MAIN_007/md_MAIN_007.c:45: previous declaration of `D_800B99E8'
make: *** [Makefile:791: build/src/md_MAIN_007/md_MAIN_007.o] Error 33
make: *** Deleting file 'build/src/md_MAIN_007/md_MAIN_007.o'
@@ -0,0 +1,6 @@
CC build/src/md_MAIN_007/md_MAIN_007.o
LD build/md_MAIN_007/md_MAIN_007.elf
mipsel-linux-gnu-ld: build/src/md_MAIN_007/md_MAIN_007.o: in function `func_800CF068':
src/md_MAIN_007/md_MAIN_007.c:(.text+0x240): undefined reference to `D_800CEDFC'
mipsel-linux-gnu-ld: src/md_MAIN_007/md_MAIN_007.c:(.text+0x244): undefined reference to `D_800CEDFC'
make: *** [Makefile:852: build/md_MAIN_007/md_MAIN_007] Error 1
@@ -0,0 +1,5 @@
CC build/src/md_MAIN_007/md_MAIN_007.o
LD build/md_MAIN_007/md_MAIN_007.elf
OBJCOPY build/md_MAIN_007/md_MAIN_007
[ OK ] build/md_MAIN_007/md_MAIN_007
sha1 2ff702b605ab5cfc18474c464c4c07e5f8ffd48c == config/check.md_MAIN_007.sha (BYTE-IDENTICAL)
@@ -0,0 +1,5 @@
CC build/src/md_MAIN_007/md_MAIN_007.o
LD build/md_MAIN_007/md_MAIN_007.elf
OBJCOPY build/md_MAIN_007/md_MAIN_007
[ OK ] build/md_MAIN_007/md_MAIN_007
sha1 2ff702b605ab5cfc18474c464c4c07e5f8ffd48c == config/check.md_MAIN_007.sha (BYTE-IDENTICAL)
+6
View File
@@ -0,0 +1,6 @@
CC build/src/md_SC03_054/md_SC03_054.o
jtbl_rodata_pads --derive md_SC03_054: 0,0t1,0t1,0t1,0t1,0t1,0
LD build/md_SC03_054/md_SC03_054.elf
OBJCOPY build/md_SC03_054/md_SC03_054
[ OK ] build/md_SC03_054/md_SC03_054
sha1 06bd73dfbdb10748adcbac7093ead5d76131206a == config/check.md_SC03_054.sha (BYTE-IDENTICAL)
+1
View File
@@ -0,0 +1 @@
cookbook index -> docs/cookbook-index.md (1168 sections, 14 symptom buckets)
+4
View File
@@ -0,0 +1,4 @@
slate 2 -> 2 compatible, 0 dropped for in-TU decl conflict
BANKED 2 main functions -- 143dbb89f34491258bbc27810d0a12ec8b43a8dd BYTE-IDENTICAL
EXIT=0
+1
View File
@@ -0,0 +1 @@
[{"fn":"func_80015B6C","draft":"/home/musashi/bfm-decomp/.run/P32/t3/opus/func_80015B6C.c"},{"fn":"func_8002FDE8","draft":"/home/musashi/bfm-decomp/.run/P32/t3/opus/func_8002FDE8.c"}]
+1
View File
@@ -0,0 +1 @@
ILS func_8001BC6C: 8 cycles x 150s @ -j3, klass=REGALLOC
+1
View File
@@ -0,0 +1 @@
ILS func_800CD674: 8 cycles x 150s @ -j3, klass=REGALLOC
+18
View File
@@ -0,0 +1,18 @@
# T3 Haiku launches deferred by the 20-concurrent-subagent cap (2026-09-05). Launch one per freed slot; delete a line when launched.
md_MAIN_007 func_800CF0F4 21
md_MAIN_007 func_800CF1CC 21
md_MAIN_007 func_800CF268 21
md_MAIN_007 func_800CF33C 21
md_MAIN_007 func_800CF220 19 twin=ov_SC03_001:0x80182860 d=4
md_MAIN_007 func_800CEFF8 13 twin=ov_SC02_005:0x801865d0 d=3
md_MAIN_009 func_800CD464 25
md_MAIN_009 func_800CD558 24
md_MAIN_009 func_800CD408 23
md_MAIN_009 func_800CD5B8 23
md_MAIN_009 func_800CD4C8 22
md_MAIN_009 func_800CD520 22 twin=ov_SC03_011:0x8017dbd8 d=3
md_MAIN_009 func_800CD614 22
md_MAIN_009 func_800CD3B8 21
md_SC03_056 func_801CBB80 23 twin=ov_SC06_025:0x8017ded8 d=5
md_SC03_054 func_801F0048 20
md_SC03_054 func_801F00C8 15 twin=md_SC03_053:0x801ef9dc d=5 (family_remap refused: reloc-count mismatch — hand-adapt)
+1
View File
@@ -0,0 +1 @@
Byte-match ONE function for the Brave Fencer Musashi matching decomp. Repo: /home/musashi/bfm-decomp (run every command from there). Target: func_800CD3B8 in binary md_MAIN_009 (21 instructions, never drafted). Arm: haiku. READ FIRST, in order: .run/P32/t3/BRIEF.md, .run/P32/t3/SYS.md, .run/P32/t3/packs/func_800CD3B8.md. Target asm (read IN FULL): asm/md_MAIN_009/nonmatchings/md_MAIN_009/func_800CD3B8.s. Destination TU: src/md_MAIN_009/md_MAIN_009.c (read its banked siblings for house style; if the TU already declares a symbol you need, copy that declaration EXACTLY). sub = md_MAIN_009. Write your best draft to .run/P32/t3/haiku/func_800CD3B8.c. Check with `.venv/bin/python tools/match_one.py func_800CD3B8 --c <draft> --asm-subdir asm/md_MAIN_009/nonmatchings/md_MAIN_009 --work .run/P32/t3/work/func_800CD3B8`, then `.venv/bin/python tools/rtu_match.py func_800CD3B8 --split md_MAIN_009 --source md_MAIN_009 --c <draft> --asm-subdir asm/md_MAIN_009/nonmatchings/md_MAIN_009 --work .run/P32/t3/rtu/func_800CD3B8`. Two integration rules the coordinator hit today: (1) if your target .s carries a `dlabel D_xxx` block in its `.rodata` section, your draft must DEFINE that data at file scope (e.g. `const char D_xxx[] = "...";` from the .s bytes, cookbook §304) — an `extern` for it fails at LINK because the stub .s was its only owner; (2) declare shared globals with the exact type the TU or its banked siblings already use. Scratch ONLY under .run/P32/t3/work/func_800CD3B8/ and .run/P32/t3/rtu/func_800CD3B8/; NEVER run find/rm/mv or a glob over .run/P32/t3/haiku/ or any directory you did not create (it holds other agents' deliverables). Do NOT edit anything under src/ or config/. Your FINAL message is EXACTLY the single-line JSON verdict specified in BRIEF.md and nothing else.
+1
View File
@@ -0,0 +1 @@
Byte-match ONE function for the Brave Fencer Musashi matching decomp. Repo: /home/musashi/bfm-decomp (run every command from there). Target: func_800CD408 in binary md_MAIN_009 (23 instructions, never drafted). Arm: haiku. READ FIRST, in order: .run/P32/t3/BRIEF.md, .run/P32/t3/SYS.md, .run/P32/t3/packs/func_800CD408.md. Target asm (read IN FULL): asm/md_MAIN_009/nonmatchings/md_MAIN_009/func_800CD408.s. Destination TU: src/md_MAIN_009/md_MAIN_009.c (read its banked siblings for house style; if the TU already declares a symbol you need, copy that declaration EXACTLY). sub = md_MAIN_009. Write your best draft to .run/P32/t3/haiku/func_800CD408.c. Check with `.venv/bin/python tools/match_one.py func_800CD408 --c <draft> --asm-subdir asm/md_MAIN_009/nonmatchings/md_MAIN_009 --work .run/P32/t3/work/func_800CD408`, then `.venv/bin/python tools/rtu_match.py func_800CD408 --split md_MAIN_009 --source md_MAIN_009 --c <draft> --asm-subdir asm/md_MAIN_009/nonmatchings/md_MAIN_009 --work .run/P32/t3/rtu/func_800CD408`. Two integration rules the coordinator hit today: (1) if your target .s carries a `dlabel D_xxx` block in its `.rodata` section, your draft must DEFINE that data at file scope (e.g. `const char D_xxx[] = "...";` from the .s bytes, cookbook §304) — an `extern` for it fails at LINK because the stub .s was its only owner; (2) declare shared globals with the exact type the TU or its banked siblings already use. Scratch ONLY under .run/P32/t3/work/func_800CD408/ and .run/P32/t3/rtu/func_800CD408/; NEVER run find/rm/mv or a glob over .run/P32/t3/haiku/ or any directory you did not create (it holds other agents' deliverables). Do NOT edit anything under src/ or config/. Your FINAL message is EXACTLY the single-line JSON verdict specified in BRIEF.md and nothing else.
+1
View File
@@ -0,0 +1 @@
Byte-match ONE function for the Brave Fencer Musashi matching decomp. Repo: /home/musashi/bfm-decomp (run every command from there). Target: func_800CD464 in binary md_MAIN_009 (25 instructions, never drafted). Arm: haiku. READ FIRST, in order: .run/P32/t3/BRIEF.md, .run/P32/t3/SYS.md, .run/P32/t3/packs/func_800CD464.md. Target asm (read IN FULL): asm/md_MAIN_009/nonmatchings/md_MAIN_009/func_800CD464.s. Destination TU: src/md_MAIN_009/md_MAIN_009.c (read its banked siblings for house style; if the TU already declares a symbol you need, copy that declaration EXACTLY). sub = md_MAIN_009. Write your best draft to .run/P32/t3/haiku/func_800CD464.c. Check with `.venv/bin/python tools/match_one.py func_800CD464 --c <draft> --asm-subdir asm/md_MAIN_009/nonmatchings/md_MAIN_009 --work .run/P32/t3/work/func_800CD464`, then `.venv/bin/python tools/rtu_match.py func_800CD464 --split md_MAIN_009 --source md_MAIN_009 --c <draft> --asm-subdir asm/md_MAIN_009/nonmatchings/md_MAIN_009 --work .run/P32/t3/rtu/func_800CD464`. Two integration rules the coordinator hit today: (1) if your target .s carries a `dlabel D_xxx` block in its `.rodata` section, your draft must DEFINE that data at file scope (e.g. `const char D_xxx[] = "...";` from the .s bytes, cookbook §304) — an `extern` for it fails at LINK because the stub .s was its only owner; (2) declare shared globals with the exact type the TU or its banked siblings already use. Scratch ONLY under .run/P32/t3/work/func_800CD464/ and .run/P32/t3/rtu/func_800CD464/; NEVER run find/rm/mv or a glob over .run/P32/t3/haiku/ or any directory you did not create (it holds other agents' deliverables). Do NOT edit anything under src/ or config/. Your FINAL message is EXACTLY the single-line JSON verdict specified in BRIEF.md and nothing else.
+1
View File
@@ -0,0 +1 @@
Byte-match ONE function for the Brave Fencer Musashi matching decomp. Repo: /home/musashi/bfm-decomp (run every command from there). Target: func_800CD4C8 in binary md_MAIN_009 (22 instructions, never drafted). Arm: haiku. READ FIRST, in order: .run/P32/t3/BRIEF.md, .run/P32/t3/SYS.md, .run/P32/t3/packs/func_800CD4C8.md. Target asm (read IN FULL): asm/md_MAIN_009/nonmatchings/md_MAIN_009/func_800CD4C8.s. Destination TU: src/md_MAIN_009/md_MAIN_009.c (read its banked siblings for house style; if the TU already declares a symbol you need, copy that declaration EXACTLY). sub = md_MAIN_009. Write your best draft to .run/P32/t3/haiku/func_800CD4C8.c. Check with `.venv/bin/python tools/match_one.py func_800CD4C8 --c <draft> --asm-subdir asm/md_MAIN_009/nonmatchings/md_MAIN_009 --work .run/P32/t3/work/func_800CD4C8`, then `.venv/bin/python tools/rtu_match.py func_800CD4C8 --split md_MAIN_009 --source md_MAIN_009 --c <draft> --asm-subdir asm/md_MAIN_009/nonmatchings/md_MAIN_009 --work .run/P32/t3/rtu/func_800CD4C8`. Two integration rules the coordinator hit today: (1) if your target .s carries a `dlabel D_xxx` block in its `.rodata` section, your draft must DEFINE that data at file scope (e.g. `const char D_xxx[] = "...";` from the .s bytes, cookbook §304) — an `extern` for it fails at LINK because the stub .s was its only owner; (2) declare shared globals with the exact type the TU or its banked siblings already use. Scratch ONLY under .run/P32/t3/work/func_800CD4C8/ and .run/P32/t3/rtu/func_800CD4C8/; NEVER run find/rm/mv or a glob over .run/P32/t3/haiku/ or any directory you did not create (it holds other agents' deliverables). Do NOT edit anything under src/ or config/. Your FINAL message is EXACTLY the single-line JSON verdict specified in BRIEF.md and nothing else.
+1
View File
@@ -0,0 +1 @@
Byte-match ONE function for the Brave Fencer Musashi matching decomp. Repo: /home/musashi/bfm-decomp (run every command from there). Target: func_800CD520 in binary md_MAIN_009 (22 instructions). A near twin exists: ov_SC03_011:0x8017dbd8 (edit distance 3). Start from `.venv/bin/python tools/family_remap.py --addr 0x8017dbd8 --from ov_SC03_011 --to md_MAIN_009 --to-addr 0x800cd520 --out .run/P32/t3/haiku/func_800CD520.c` (it remaps the per-binary symbols; if it refuses, write the body from the .s using the twin's C as the shape — find it with `grep -rn 'func_8017DBD8' src/ov_SC03_011/`), then fix the structural differences the real-TU diff shows. Spell EVERY symbol and literal from YOUR target's .s, never the twin's. Arm: haiku. READ FIRST, in order: .run/P32/t3/BRIEF.md, .run/P32/t3/SYS.md, .run/P32/t3/packs/func_800CD520.md. Target asm (read IN FULL): asm/md_MAIN_009/nonmatchings/md_MAIN_009/func_800CD520.s. Destination TU: src/md_MAIN_009/md_MAIN_009.c (read its banked siblings for house style; if the TU already declares a symbol you need, copy that declaration EXACTLY). sub = md_MAIN_009. Write your best draft to .run/P32/t3/haiku/func_800CD520.c. Check with `.venv/bin/python tools/match_one.py func_800CD520 --c <draft> --asm-subdir asm/md_MAIN_009/nonmatchings/md_MAIN_009 --work .run/P32/t3/work/func_800CD520`, then `.venv/bin/python tools/rtu_match.py func_800CD520 --split md_MAIN_009 --source md_MAIN_009 --c <draft> --asm-subdir asm/md_MAIN_009/nonmatchings/md_MAIN_009 --work .run/P32/t3/rtu/func_800CD520`. Two integration rules the coordinator hit today: (1) if your target .s carries a `dlabel D_xxx` block in its `.rodata` section, your draft must DEFINE that data at file scope (e.g. `const char D_xxx[] = "...";` from the .s bytes, cookbook §304) — an `extern` for it fails at LINK because the stub .s was its only owner; (2) declare shared globals with the exact type the TU or its banked siblings already use. Scratch ONLY under .run/P32/t3/work/func_800CD520/ and .run/P32/t3/rtu/func_800CD520/; NEVER run find/rm/mv or a glob over .run/P32/t3/haiku/ or any directory you did not create (it holds other agents' deliverables). Do NOT edit anything under src/ or config/. Your FINAL message is EXACTLY the single-line JSON verdict specified in BRIEF.md and nothing else.
+1
View File
@@ -0,0 +1 @@
Byte-match ONE function for the Brave Fencer Musashi matching decomp. Repo: /home/musashi/bfm-decomp (run every command from there). Target: func_800CD558 in binary md_MAIN_009 (24 instructions, never drafted). Arm: haiku. READ FIRST, in order: .run/P32/t3/BRIEF.md, .run/P32/t3/SYS.md, .run/P32/t3/packs/func_800CD558.md. Target asm (read IN FULL): asm/md_MAIN_009/nonmatchings/md_MAIN_009/func_800CD558.s. Destination TU: src/md_MAIN_009/md_MAIN_009.c (read its banked siblings for house style; if the TU already declares a symbol you need, copy that declaration EXACTLY). sub = md_MAIN_009. Write your best draft to .run/P32/t3/haiku/func_800CD558.c. Check with `.venv/bin/python tools/match_one.py func_800CD558 --c <draft> --asm-subdir asm/md_MAIN_009/nonmatchings/md_MAIN_009 --work .run/P32/t3/work/func_800CD558`, then `.venv/bin/python tools/rtu_match.py func_800CD558 --split md_MAIN_009 --source md_MAIN_009 --c <draft> --asm-subdir asm/md_MAIN_009/nonmatchings/md_MAIN_009 --work .run/P32/t3/rtu/func_800CD558`. Two integration rules the coordinator hit today: (1) if your target .s carries a `dlabel D_xxx` block in its `.rodata` section, your draft must DEFINE that data at file scope (e.g. `const char D_xxx[] = "...";` from the .s bytes, cookbook §304) — an `extern` for it fails at LINK because the stub .s was its only owner; (2) declare shared globals with the exact type the TU or its banked siblings already use. Scratch ONLY under .run/P32/t3/work/func_800CD558/ and .run/P32/t3/rtu/func_800CD558/; NEVER run find/rm/mv or a glob over .run/P32/t3/haiku/ or any directory you did not create (it holds other agents' deliverables). Do NOT edit anything under src/ or config/. Your FINAL message is EXACTLY the single-line JSON verdict specified in BRIEF.md and nothing else.
+1
View File
@@ -0,0 +1 @@
Byte-match ONE function for the Brave Fencer Musashi matching decomp. Repo: /home/musashi/bfm-decomp (run every command from there). Target: func_800CD5B8 in binary md_MAIN_009 (23 instructions, never drafted). Arm: haiku. READ FIRST, in order: .run/P32/t3/BRIEF.md, .run/P32/t3/SYS.md, .run/P32/t3/packs/func_800CD5B8.md. Target asm (read IN FULL): asm/md_MAIN_009/nonmatchings/md_MAIN_009/func_800CD5B8.s. Destination TU: src/md_MAIN_009/md_MAIN_009.c (read its banked siblings for house style; if the TU already declares a symbol you need, copy that declaration EXACTLY). sub = md_MAIN_009. Write your best draft to .run/P32/t3/haiku/func_800CD5B8.c. Check with `.venv/bin/python tools/match_one.py func_800CD5B8 --c <draft> --asm-subdir asm/md_MAIN_009/nonmatchings/md_MAIN_009 --work .run/P32/t3/work/func_800CD5B8`, then `.venv/bin/python tools/rtu_match.py func_800CD5B8 --split md_MAIN_009 --source md_MAIN_009 --c <draft> --asm-subdir asm/md_MAIN_009/nonmatchings/md_MAIN_009 --work .run/P32/t3/rtu/func_800CD5B8`. Two integration rules the coordinator hit today: (1) if your target .s carries a `dlabel D_xxx` block in its `.rodata` section, your draft must DEFINE that data at file scope (e.g. `const char D_xxx[] = "...";` from the .s bytes, cookbook §304) — an `extern` for it fails at LINK because the stub .s was its only owner; (2) declare shared globals with the exact type the TU or its banked siblings already use. Scratch ONLY under .run/P32/t3/work/func_800CD5B8/ and .run/P32/t3/rtu/func_800CD5B8/; NEVER run find/rm/mv or a glob over .run/P32/t3/haiku/ or any directory you did not create (it holds other agents' deliverables). Do NOT edit anything under src/ or config/. Your FINAL message is EXACTLY the single-line JSON verdict specified in BRIEF.md and nothing else.
+1
View File
@@ -0,0 +1 @@
Byte-match ONE function for the Brave Fencer Musashi matching decomp. Repo: /home/musashi/bfm-decomp (run every command from there). Target: func_800CD614 in binary md_MAIN_009 (22 instructions, never drafted). Arm: haiku. READ FIRST, in order: .run/P32/t3/BRIEF.md, .run/P32/t3/SYS.md, .run/P32/t3/packs/func_800CD614.md. Target asm (read IN FULL): asm/md_MAIN_009/nonmatchings/md_MAIN_009/func_800CD614.s. Destination TU: src/md_MAIN_009/md_MAIN_009.c (read its banked siblings for house style; if the TU already declares a symbol you need, copy that declaration EXACTLY). sub = md_MAIN_009. Write your best draft to .run/P32/t3/haiku/func_800CD614.c. Check with `.venv/bin/python tools/match_one.py func_800CD614 --c <draft> --asm-subdir asm/md_MAIN_009/nonmatchings/md_MAIN_009 --work .run/P32/t3/work/func_800CD614`, then `.venv/bin/python tools/rtu_match.py func_800CD614 --split md_MAIN_009 --source md_MAIN_009 --c <draft> --asm-subdir asm/md_MAIN_009/nonmatchings/md_MAIN_009 --work .run/P32/t3/rtu/func_800CD614`. Two integration rules the coordinator hit today: (1) if your target .s carries a `dlabel D_xxx` block in its `.rodata` section, your draft must DEFINE that data at file scope (e.g. `const char D_xxx[] = "...";` from the .s bytes, cookbook §304) — an `extern` for it fails at LINK because the stub .s was its only owner; (2) declare shared globals with the exact type the TU or its banked siblings already use. Scratch ONLY under .run/P32/t3/work/func_800CD614/ and .run/P32/t3/rtu/func_800CD614/; NEVER run find/rm/mv or a glob over .run/P32/t3/haiku/ or any directory you did not create (it holds other agents' deliverables). Do NOT edit anything under src/ or config/. Your FINAL message is EXACTLY the single-line JSON verdict specified in BRIEF.md and nothing else.
+1
View File
@@ -0,0 +1 @@
Byte-match ONE function for the Brave Fencer Musashi matching decomp. Repo: /home/musashi/bfm-decomp (run every command from there). Target: func_800CEFF8 in binary md_MAIN_007 (13 instructions). A near twin exists: ov_SC02_005:0x801865d0 (edit distance 3). Start from `.venv/bin/python tools/family_remap.py --addr 0x801865d0 --from ov_SC02_005 --to md_MAIN_007 --to-addr 0x800ceff8 --out .run/P32/t3/haiku/func_800CEFF8.c` (it remaps the per-binary symbols; if it refuses, write the body from the .s using the twin's C as the shape — find it with `grep -rn 'func_801865D0' src/ov_SC02_005/`), then fix the structural differences the real-TU diff shows. Spell EVERY symbol and literal from YOUR target's .s, never the twin's. Arm: haiku. READ FIRST, in order: .run/P32/t3/BRIEF.md, .run/P32/t3/SYS.md, .run/P32/t3/packs/func_800CEFF8.md. Target asm (read IN FULL): asm/md_MAIN_007/nonmatchings/md_MAIN_007/func_800CEFF8.s. Destination TU: src/md_MAIN_007/md_MAIN_007.c (read its banked siblings for house style; if the TU already declares a symbol you need, copy that declaration EXACTLY). sub = md_MAIN_007. Write your best draft to .run/P32/t3/haiku/func_800CEFF8.c. Check with `.venv/bin/python tools/match_one.py func_800CEFF8 --c <draft> --asm-subdir asm/md_MAIN_007/nonmatchings/md_MAIN_007 --work .run/P32/t3/work/func_800CEFF8`, then `.venv/bin/python tools/rtu_match.py func_800CEFF8 --split md_MAIN_007 --source md_MAIN_007 --c <draft> --asm-subdir asm/md_MAIN_007/nonmatchings/md_MAIN_007 --work .run/P32/t3/rtu/func_800CEFF8`. Two integration rules the coordinator hit today: (1) if your target .s carries a `dlabel D_xxx` block in its `.rodata` section, your draft must DEFINE that data at file scope (e.g. `const char D_xxx[] = "...";` from the .s bytes, cookbook §304) — an `extern` for it fails at LINK because the stub .s was its only owner; (2) declare shared globals with the exact type the TU or its banked siblings already use. Scratch ONLY under .run/P32/t3/work/func_800CEFF8/ and .run/P32/t3/rtu/func_800CEFF8/; NEVER run find/rm/mv or a glob over .run/P32/t3/haiku/ or any directory you did not create (it holds other agents' deliverables). Do NOT edit anything under src/ or config/. Your FINAL message is EXACTLY the single-line JSON verdict specified in BRIEF.md and nothing else.
+1
View File
@@ -0,0 +1 @@
Byte-match ONE function for the Brave Fencer Musashi matching decomp. Repo: /home/musashi/bfm-decomp (run every command from there). Target: func_800CF0F4 in binary md_MAIN_007 (21 instructions, never drafted). Arm: haiku. READ FIRST, in order: .run/P32/t3/BRIEF.md, .run/P32/t3/SYS.md, .run/P32/t3/packs/func_800CF0F4.md. Target asm (read IN FULL): asm/md_MAIN_007/nonmatchings/md_MAIN_007/func_800CF0F4.s. Destination TU: src/md_MAIN_007/md_MAIN_007.c (read its banked siblings for house style; if the TU already declares a symbol you need, copy that declaration EXACTLY). sub = md_MAIN_007. Write your best draft to .run/P32/t3/haiku/func_800CF0F4.c. Check with `.venv/bin/python tools/match_one.py func_800CF0F4 --c <draft> --asm-subdir asm/md_MAIN_007/nonmatchings/md_MAIN_007 --work .run/P32/t3/work/func_800CF0F4`, then `.venv/bin/python tools/rtu_match.py func_800CF0F4 --split md_MAIN_007 --source md_MAIN_007 --c <draft> --asm-subdir asm/md_MAIN_007/nonmatchings/md_MAIN_007 --work .run/P32/t3/rtu/func_800CF0F4`. Two integration rules the coordinator hit today: (1) if your target .s carries a `dlabel D_xxx` block in its `.rodata` section, your draft must DEFINE that data at file scope (e.g. `const char D_xxx[] = "...";` from the .s bytes, cookbook §304) — an `extern` for it fails at LINK because the stub .s was its only owner; (2) declare shared globals with the exact type the TU or its banked siblings already use. Scratch ONLY under .run/P32/t3/work/func_800CF0F4/ and .run/P32/t3/rtu/func_800CF0F4/; NEVER run find/rm/mv or a glob over .run/P32/t3/haiku/ or any directory you did not create (it holds other agents' deliverables). Do NOT edit anything under src/ or config/. Your FINAL message is EXACTLY the single-line JSON verdict specified in BRIEF.md and nothing else.
+1
View File
@@ -0,0 +1 @@
Byte-match ONE function for the Brave Fencer Musashi matching decomp. Repo: /home/musashi/bfm-decomp (run every command from there). Target: func_800CF1CC in binary md_MAIN_007 (21 instructions, never drafted). Arm: haiku. READ FIRST, in order: .run/P32/t3/BRIEF.md, .run/P32/t3/SYS.md, .run/P32/t3/packs/func_800CF1CC.md. Target asm (read IN FULL): asm/md_MAIN_007/nonmatchings/md_MAIN_007/func_800CF1CC.s. Destination TU: src/md_MAIN_007/md_MAIN_007.c (read its banked siblings for house style; if the TU already declares a symbol you need, copy that declaration EXACTLY). sub = md_MAIN_007. Write your best draft to .run/P32/t3/haiku/func_800CF1CC.c. Check with `.venv/bin/python tools/match_one.py func_800CF1CC --c <draft> --asm-subdir asm/md_MAIN_007/nonmatchings/md_MAIN_007 --work .run/P32/t3/work/func_800CF1CC`, then `.venv/bin/python tools/rtu_match.py func_800CF1CC --split md_MAIN_007 --source md_MAIN_007 --c <draft> --asm-subdir asm/md_MAIN_007/nonmatchings/md_MAIN_007 --work .run/P32/t3/rtu/func_800CF1CC`. Two integration rules the coordinator hit today: (1) if your target .s carries a `dlabel D_xxx` block in its `.rodata` section, your draft must DEFINE that data at file scope (e.g. `const char D_xxx[] = "...";` from the .s bytes, cookbook §304) — an `extern` for it fails at LINK because the stub .s was its only owner; (2) declare shared globals with the exact type the TU or its banked siblings already use. Scratch ONLY under .run/P32/t3/work/func_800CF1CC/ and .run/P32/t3/rtu/func_800CF1CC/; NEVER run find/rm/mv or a glob over .run/P32/t3/haiku/ or any directory you did not create (it holds other agents' deliverables). Do NOT edit anything under src/ or config/. Your FINAL message is EXACTLY the single-line JSON verdict specified in BRIEF.md and nothing else.
+1
View File
@@ -0,0 +1 @@
Byte-match ONE function for the Brave Fencer Musashi matching decomp. Repo: /home/musashi/bfm-decomp (run every command from there). Target: func_800CF220 in binary md_MAIN_007 (19 instructions). A near twin exists: ov_SC03_001:0x80182860 (edit distance 4). Start from `.venv/bin/python tools/family_remap.py --addr 0x80182860 --from ov_SC03_001 --to md_MAIN_007 --to-addr 0x800cf220 --out .run/P32/t3/haiku/func_800CF220.c` (it remaps the per-binary symbols; if it refuses, write the body from the .s using the twin's C as the shape — find it with `grep -rn 'func_80182860' src/ov_SC03_001/`), then fix the structural differences the real-TU diff shows. Spell EVERY symbol and literal from YOUR target's .s, never the twin's. Arm: haiku. READ FIRST, in order: .run/P32/t3/BRIEF.md, .run/P32/t3/SYS.md, .run/P32/t3/packs/func_800CF220.md. Target asm (read IN FULL): asm/md_MAIN_007/nonmatchings/md_MAIN_007/func_800CF220.s. Destination TU: src/md_MAIN_007/md_MAIN_007.c (read its banked siblings for house style; if the TU already declares a symbol you need, copy that declaration EXACTLY). sub = md_MAIN_007. Write your best draft to .run/P32/t3/haiku/func_800CF220.c. Check with `.venv/bin/python tools/match_one.py func_800CF220 --c <draft> --asm-subdir asm/md_MAIN_007/nonmatchings/md_MAIN_007 --work .run/P32/t3/work/func_800CF220`, then `.venv/bin/python tools/rtu_match.py func_800CF220 --split md_MAIN_007 --source md_MAIN_007 --c <draft> --asm-subdir asm/md_MAIN_007/nonmatchings/md_MAIN_007 --work .run/P32/t3/rtu/func_800CF220`. Two integration rules the coordinator hit today: (1) if your target .s carries a `dlabel D_xxx` block in its `.rodata` section, your draft must DEFINE that data at file scope (e.g. `const char D_xxx[] = "...";` from the .s bytes, cookbook §304) — an `extern` for it fails at LINK because the stub .s was its only owner; (2) declare shared globals with the exact type the TU or its banked siblings already use. Scratch ONLY under .run/P32/t3/work/func_800CF220/ and .run/P32/t3/rtu/func_800CF220/; NEVER run find/rm/mv or a glob over .run/P32/t3/haiku/ or any directory you did not create (it holds other agents' deliverables). Do NOT edit anything under src/ or config/. Your FINAL message is EXACTLY the single-line JSON verdict specified in BRIEF.md and nothing else.
+1
View File
@@ -0,0 +1 @@
Byte-match ONE function for the Brave Fencer Musashi matching decomp. Repo: /home/musashi/bfm-decomp (run every command from there). Target: func_800CF268 in binary md_MAIN_007 (21 instructions, never drafted). Arm: haiku. READ FIRST, in order: .run/P32/t3/BRIEF.md, .run/P32/t3/SYS.md, .run/P32/t3/packs/func_800CF268.md. Target asm (read IN FULL): asm/md_MAIN_007/nonmatchings/md_MAIN_007/func_800CF268.s. Destination TU: src/md_MAIN_007/md_MAIN_007.c (read its banked siblings for house style; if the TU already declares a symbol you need, copy that declaration EXACTLY). sub = md_MAIN_007. Write your best draft to .run/P32/t3/haiku/func_800CF268.c. Check with `.venv/bin/python tools/match_one.py func_800CF268 --c <draft> --asm-subdir asm/md_MAIN_007/nonmatchings/md_MAIN_007 --work .run/P32/t3/work/func_800CF268`, then `.venv/bin/python tools/rtu_match.py func_800CF268 --split md_MAIN_007 --source md_MAIN_007 --c <draft> --asm-subdir asm/md_MAIN_007/nonmatchings/md_MAIN_007 --work .run/P32/t3/rtu/func_800CF268`. Two integration rules the coordinator hit today: (1) if your target .s carries a `dlabel D_xxx` block in its `.rodata` section, your draft must DEFINE that data at file scope (e.g. `const char D_xxx[] = "...";` from the .s bytes, cookbook §304) — an `extern` for it fails at LINK because the stub .s was its only owner; (2) declare shared globals with the exact type the TU or its banked siblings already use. Scratch ONLY under .run/P32/t3/work/func_800CF268/ and .run/P32/t3/rtu/func_800CF268/; NEVER run find/rm/mv or a glob over .run/P32/t3/haiku/ or any directory you did not create (it holds other agents' deliverables). Do NOT edit anything under src/ or config/. Your FINAL message is EXACTLY the single-line JSON verdict specified in BRIEF.md and nothing else.
+1
View File
@@ -0,0 +1 @@
Byte-match ONE function for the Brave Fencer Musashi matching decomp. Repo: /home/musashi/bfm-decomp (run every command from there). Target: func_800CF33C in binary md_MAIN_007 (21 instructions, never drafted). Arm: haiku. READ FIRST, in order: .run/P32/t3/BRIEF.md, .run/P32/t3/SYS.md, .run/P32/t3/packs/func_800CF33C.md. Target asm (read IN FULL): asm/md_MAIN_007/nonmatchings/md_MAIN_007/func_800CF33C.s. Destination TU: src/md_MAIN_007/md_MAIN_007.c (read its banked siblings for house style; if the TU already declares a symbol you need, copy that declaration EXACTLY). sub = md_MAIN_007. Write your best draft to .run/P32/t3/haiku/func_800CF33C.c. Check with `.venv/bin/python tools/match_one.py func_800CF33C --c <draft> --asm-subdir asm/md_MAIN_007/nonmatchings/md_MAIN_007 --work .run/P32/t3/work/func_800CF33C`, then `.venv/bin/python tools/rtu_match.py func_800CF33C --split md_MAIN_007 --source md_MAIN_007 --c <draft> --asm-subdir asm/md_MAIN_007/nonmatchings/md_MAIN_007 --work .run/P32/t3/rtu/func_800CF33C`. Two integration rules the coordinator hit today: (1) if your target .s carries a `dlabel D_xxx` block in its `.rodata` section, your draft must DEFINE that data at file scope (e.g. `const char D_xxx[] = "...";` from the .s bytes, cookbook §304) — an `extern` for it fails at LINK because the stub .s was its only owner; (2) declare shared globals with the exact type the TU or its banked siblings already use. Scratch ONLY under .run/P32/t3/work/func_800CF33C/ and .run/P32/t3/rtu/func_800CF33C/; NEVER run find/rm/mv or a glob over .run/P32/t3/haiku/ or any directory you did not create (it holds other agents' deliverables). Do NOT edit anything under src/ or config/. Your FINAL message is EXACTLY the single-line JSON verdict specified in BRIEF.md and nothing else.
+1
View File
@@ -0,0 +1 @@
Byte-match ONE function for the Brave Fencer Musashi matching decomp. Repo: /home/musashi/bfm-decomp (run every command from there). Target: func_801CBB80 in binary md_SC03_056 (23 instructions). A near twin exists: ov_SC06_025:0x8017ded8 (edit distance 5). Start from `.venv/bin/python tools/family_remap.py --addr 0x8017ded8 --from ov_SC06_025 --to md_SC03_056 --to-addr 0x801cbb80 --out .run/P32/t3/haiku/func_801CBB80.c` (it remaps the per-binary symbols; if it refuses, write the body from the .s using the twin's C as the shape — find it with `grep -rn 'func_8017DED8' src/ov_SC06_025/`), then fix the structural differences the real-TU diff shows. Spell EVERY symbol and literal from YOUR target's .s, never the twin's. Arm: haiku. READ FIRST, in order: .run/P32/t3/BRIEF.md, .run/P32/t3/SYS.md, .run/P32/t3/packs/func_801CBB80.md. Target asm (read IN FULL): asm/md_SC03_056/nonmatchings/md_SC03_056/func_801CBB80.s. Destination TU: src/md_SC03_056/md_SC03_056.c (read its banked siblings for house style; if the TU already declares a symbol you need, copy that declaration EXACTLY). sub = md_SC03_056. Write your best draft to .run/P32/t3/haiku/func_801CBB80.c. Check with `.venv/bin/python tools/match_one.py func_801CBB80 --c <draft> --asm-subdir asm/md_SC03_056/nonmatchings/md_SC03_056 --work .run/P32/t3/work/func_801CBB80`, then `.venv/bin/python tools/rtu_match.py func_801CBB80 --split md_SC03_056 --source md_SC03_056 --c <draft> --asm-subdir asm/md_SC03_056/nonmatchings/md_SC03_056 --work .run/P32/t3/rtu/func_801CBB80`. Two integration rules the coordinator hit today: (1) if your target .s carries a `dlabel D_xxx` block in its `.rodata` section, your draft must DEFINE that data at file scope (e.g. `const char D_xxx[] = "...";` from the .s bytes, cookbook §304) — an `extern` for it fails at LINK because the stub .s was its only owner; (2) declare shared globals with the exact type the TU or its banked siblings already use. Scratch ONLY under .run/P32/t3/work/func_801CBB80/ and .run/P32/t3/rtu/func_801CBB80/; NEVER run find/rm/mv or a glob over .run/P32/t3/haiku/ or any directory you did not create (it holds other agents' deliverables). Do NOT edit anything under src/ or config/. Your FINAL message is EXACTLY the single-line JSON verdict specified in BRIEF.md and nothing else.
+1
View File
@@ -0,0 +1 @@
Byte-match ONE function for the Brave Fencer Musashi matching decomp. Repo: /home/musashi/bfm-decomp (run every command from there). Target: func_801F0048 in binary md_SC03_054 (20 instructions, never drafted). Arm: haiku. READ FIRST, in order: .run/P32/t3/BRIEF.md, .run/P32/t3/SYS.md, .run/P32/t3/packs/func_801F0048.md. Target asm (read IN FULL): asm/md_SC03_054/nonmatchings/md_SC03_054/func_801F0048.s. Destination TU: src/md_SC03_054/md_SC03_054.c (read its banked siblings for house style; if the TU already declares a symbol you need, copy that declaration EXACTLY). sub = md_SC03_054. Write your best draft to .run/P32/t3/haiku/func_801F0048.c. Check with `.venv/bin/python tools/match_one.py func_801F0048 --c <draft> --asm-subdir asm/md_SC03_054/nonmatchings/md_SC03_054 --work .run/P32/t3/work/func_801F0048`, then `.venv/bin/python tools/rtu_match.py func_801F0048 --split md_SC03_054 --source md_SC03_054 --c <draft> --asm-subdir asm/md_SC03_054/nonmatchings/md_SC03_054 --work .run/P32/t3/rtu/func_801F0048`. Two integration rules the coordinator hit today: (1) if your target .s carries a `dlabel D_xxx` block in its `.rodata` section, your draft must DEFINE that data at file scope (e.g. `const char D_xxx[] = "...";` from the .s bytes, cookbook §304) — an `extern` for it fails at LINK because the stub .s was its only owner; (2) declare shared globals with the exact type the TU or its banked siblings already use. Scratch ONLY under .run/P32/t3/work/func_801F0048/ and .run/P32/t3/rtu/func_801F0048/; NEVER run find/rm/mv or a glob over .run/P32/t3/haiku/ or any directory you did not create (it holds other agents' deliverables). Do NOT edit anything under src/ or config/. Your FINAL message is EXACTLY the single-line JSON verdict specified in BRIEF.md and nothing else.
+1
View File
@@ -0,0 +1 @@
Byte-match ONE function for the Brave Fencer Musashi matching decomp. Repo: /home/musashi/bfm-decomp (run every command from there). Target: func_801F00C8 in binary md_SC03_054 (15 instructions). A near twin exists: md_SC03_053:0x801ef9dc (edit distance 5) but `family_remap` REFUSES it (relocation count 1 vs 2) — do not run it; hand-adapt: write the body from the .s using the twin's C as the shape (find it with `grep -rn 'func_801EF9DC' src/md_SC03_053/`), spelling EVERY symbol and literal from YOUR target's .s. Arm: haiku. READ FIRST, in order: .run/P32/t3/BRIEF.md, .run/P32/t3/SYS.md, .run/P32/t3/packs/func_801F00C8.md. Target asm (read IN FULL): asm/md_SC03_054/nonmatchings/md_SC03_054/func_801F00C8.s. Destination TU: src/md_SC03_054/md_SC03_054.c (read its banked siblings for house style; if the TU already declares a symbol you need, copy that declaration EXACTLY). sub = md_SC03_054. Write your best draft to .run/P32/t3/haiku/func_801F00C8.c. Check with `.venv/bin/python tools/match_one.py func_801F00C8 --c <draft> --asm-subdir asm/md_SC03_054/nonmatchings/md_SC03_054 --work .run/P32/t3/work/func_801F00C8`, then `.venv/bin/python tools/rtu_match.py func_801F00C8 --split md_SC03_054 --source md_SC03_054 --c <draft> --asm-subdir asm/md_SC03_054/nonmatchings/md_SC03_054 --work .run/P32/t3/rtu/func_801F00C8`. Two integration rules the coordinator hit today: (1) if your target .s carries a `dlabel D_xxx` block in its `.rodata` section, your draft must DEFINE that data at file scope (e.g. `const char D_xxx[] = "...";` from the .s bytes, cookbook §304) — an `extern` for it fails at LINK because the stub .s was its only owner; (2) declare shared globals with the exact type the TU or its banked siblings already use. Scratch ONLY under .run/P32/t3/work/func_801F00C8/ and .run/P32/t3/rtu/func_801F00C8/; NEVER run find/rm/mv or a glob over .run/P32/t3/haiku/ or any directory you did not create (it holds other agents' deliverables). Do NOT edit anything under src/ or config/. Your FINAL message is EXACTLY the single-line JSON verdict specified in BRIEF.md and nothing else.
+220
View File
@@ -0,0 +1,220 @@
[ OK ] resident
[ OK ] ov_SC05_000
[ OK ] ov_SC01_001
[ OK ] ov_SC01_000
[ OK ] ov_SC01_005
[ OK ] ov_SC03_006
[ OK ] ov_SC01_077
[ OK ] ov_SC01_006
[ OK ] ov_SC03_001
[ OK ] ov_SC03_002
[ OK ] ov_SC04_019
[ OK ] ov_SC04_000
[ OK ] ov_SC02_003
[ OK ] ov_SC02_000
[ OK ] ov_SC04_018
[ OK ] ov_SC06_000
[ OK ] ov_SC01_004
[ OK ] ov_SC07_000
[ OK ] ov_SC01_008
[ OK ] ov_SC01_074
[ OK ] ov_SC01_009
[ OK ] ov_SC01_080
[ OK ] ov_SC01_084
[ OK ] ov_SC02_004
[ OK ] ov_SC02_005
[ OK ] ov_SC02_017
[ OK ] ov_SC02_021
[ OK ] ov_SC02_015
[ OK ] ov_SC02_016
[ OK ] ov_SC02_011
[ OK ] main
[ OK ] ov_SC02_026
[ OK ] ov_SC02_031
[ OK ] ov_SC02_027
[ OK ] ov_SC02_028
[ OK ] ov_SC03_007
[ OK ] ov_SC02_041
[ OK ] ov_SC02_039
[ OK ] ov_SC02_035
[ OK ] ov_SC03_003
[ OK ] ov_SC03_012
[ OK ] ov_SC03_011
[ OK ] ov_SC03_010
[ OK ] ov_SC03_013
[ OK ] ov_SC03_015
[ OK ] ov_SC03_014
[ OK ] ov_SC03_023
[ OK ] ov_SC03_024
[ OK ] ov_SC03_028
[ OK ] ov_SC03_029
[ OK ] ov_SC03_031
[ OK ] ov_SC03_030
[ OK ] ov_SC03_089
[ OK ] ov_SC03_092
[ OK ] ov_SC03_091
[ OK ] ov_SC03_090
[ OK ] ov_SC03_094
[ OK ] ov_SC03_095
[ OK ] ov_SC03_093
[ OK ] ov_SC03_096
[ OK ] ov_SC03_098
[ OK ] ov_SC03_097
[ OK ] ov_SC03_100
[ OK ] ov_SC03_099
[ OK ] ov_SC03_101
[ OK ] ov_SC03_102
[ OK ] ov_SC03_103
[ OK ] ov_SC03_104
[ OK ] ov_SC03_108
[ OK ] ov_SC03_109
[ OK ] ov_SC03_105
[ OK ] ov_SC03_114
[ OK ] ov_SC03_110
[ OK ] ov_SC03_115
[ OK ] ov_SC03_111
[ OK ] ov_SC03_112
[ OK ] ov_SC03_113
[ OK ] ov_SC03_116
[ OK ] ov_SC03_126
[ OK ] ov_SC03_117
[ OK ] ov_SC03_124
[ OK ] ov_SC03_118
[ OK ] ov_SC03_121
[ OK ] ov_SC03_119
[ OK ] ov_SC04_003
[ OK ] ov_SC03_125
[ OK ] ov_SC04_002
[ OK ] ov_SC04_006
[ OK ] ov_SC04_005
[ OK ] ov_SC04_008
[ OK ] ov_SC04_004
[ OK ] ov_SC04_007
[ OK ] ov_SC04_009
[ OK ] ov_SC04_010
[ OK ] ov_SC04_012
[ OK ] ov_SC04_015
[ OK ] ov_SC04_016
[ OK ] ov_SC04_011
[ OK ] ov_SC04_020
[ OK ] ov_SC05_001
[ OK ] ov_SC05_002
[ OK ] ov_SC05_003
[ OK ] ov_SC04_021
[ OK ] ov_SC05_004
[ OK ] ov_SC05_005
[ OK ] ov_SC05_006
[ OK ] ov_SC05_009
[ OK ] ov_SC05_007
[ OK ] ov_SC05_008
[ OK ] ov_SC05_010
[ OK ] ov_SC05_011
[ OK ] ov_SC05_018
[ OK ] ov_SC06_006
[ OK ] ov_SC05_017
[ OK ] ov_SC06_010
[ OK ] ov_SC05_019
[ OK ] ov_SC06_008
[ OK ] ov_SC06_013
[ OK ] ov_SC06_015
[ OK ] ov_SC06_011
[ OK ] ov_SC06_020
[ OK ] ov_SC06_014
[ OK ] ov_SC06_022
[ OK ] ov_SC06_018
[ OK ] ov_SC06_016
[ OK ] ov_SC06_024
[ OK ] ov_SC06_027
[ OK ] ov_SC06_029
[ OK ] ov_SC06_032
[ OK ] ov_SC07_001
[ OK ] ov_SC06_030
[ OK ] ov_SC06_025
[ OK ] ov_SC06_033
[ OK ] ov_SC07_008
[ OK ] ov_SC07_002
[ OK ] ov_SC07_009
[ OK ] ov_SC07_006
[ OK ] ov_SC07_007
[ OK ] ov_SC07_011
[ OK ] ov_MAIN_012
[ OK ] ov_SC07_010
[ OK ] ov_SC02_037
[ OK ] md_MAIN_013
[ OK ] md_MAIN_014
[ OK ] md_MAIN_015
[ OK ] ov_SC03_107
[ OK ] md_MAIN_017
[ OK ] md_MAIN_016
[ OK ] md_MAIN_018
[ OK ] md_MAIN_019
[ OK ] md_MAIN_021
[ OK ] md_MAIN_022
[ OK ] md_MAIN_024
[ OK ] md_MAIN_020
[ OK ] md_MAIN_023
[ OK ] md_MAIN_025
[ OK ] md_MAIN_027
[ OK ] md_MAIN_026
[ OK ] md_MAIN_029
[ OK ] md_MAIN_028
[ OK ] md_MAIN_031
[ OK ] md_MAIN_033
[ OK ] md_MAIN_030
[ OK ] md_MAIN_032
[ OK ] md_MAIN_034
[ OK ] md_MAIN_035
[ OK ] md_MAIN_036
[ OK ] md_MAIN_038
[ OK ] md_MAIN_037
[ OK ] md_MAIN_041
[ OK ] md_MAIN_039
[ OK ] md_MAIN_042
[ OK ] md_MAIN_040
[ OK ] md_MAIN_045
[ OK ] md_MAIN_044
[ OK ] md_MAIN_043
[ OK ] md_MAIN_047
[ OK ] md_MAIN_001
[ OK ] md_MAIN_046
[ OK ] md_MAIN_008
[ OK ] md_MAIN_011
[ OK ] md_SC07_003
[ OK ] md_SC07_004
[ OK ] md_SC03_073
[ OK ] md_MAIN_003
[ OK ] md_SC03_074
[ OK ] md_SC03_075
[ OK ] md_SC03_077
[ OK ] md_SC03_076
[ OK ] md_SC03_132
[ OK ] md_SC03_079
[ OK ] md_SC03_078
[ OK ] md_SC03_134
[ OK ] md_SC03_133
[ OK ] md_SC03_135
[ OK ] md_SC03_136
[ OK ] md_SC03_137
[ OK ] md_SC03_138
[ OK ] md_SC04_025
[ OK ] md_SC04_026
[ OK ] md_SC04_024
[ OK ] md_SC04_029
[ OK ] md_SC04_027
[ OK ] md_SC04_028
[ OK ] md_SC05_024
[ OK ] md_SC04_030
[ OK ] md_SC05_023
[ OK ] md_SC05_026
[ OK ] md_SC05_027
[ OK ] md_SC05_025
[ OK ] md_SC05_029
[ OK ] md_SC02_009
[ OK ] md_SC05_028
[ OK ] md_MAIN_007
[ OK ] md_SC03_054
[ OK ] md_SC03_053
[ OK ] md_MAIN_009
[ OK ] md_SC03_056
check-all: 218 passed, 0 failed of 218
EXIT=0
+219
View File
@@ -0,0 +1,219 @@
[ OK ] resident
[ OK ] ov_SC05_000
[ OK ] ov_SC01_000
[ OK ] ov_SC03_006
[ OK ] ov_SC06_000
[ OK ] ov_SC04_000
[ OK ] ov_SC01_001
[ OK ] ov_SC01_006
[ OK ] ov_SC01_005
[ OK ] ov_SC03_002
[ OK ] ov_SC01_077
[ OK ] ov_SC04_019
[ OK ] ov_SC04_018
[ OK ] ov_SC02_003
[ OK ] ov_SC03_001
[ OK ] ov_SC02_000
[ OK ] main
[ OK ] ov_SC01_074
[ OK ] ov_SC02_004
[ OK ] ov_SC01_080
[ OK ] ov_SC07_000
[ OK ] ov_SC01_008
[ OK ] ov_SC01_004
[ OK ] ov_SC01_009
[ OK ] ov_SC01_084
[ OK ] ov_SC02_015
[ OK ] ov_SC02_005
[ OK ] ov_SC02_021
[ OK ] ov_SC02_016
[ OK ] ov_SC02_011
[ OK ] ov_SC02_017
[ OK ] ov_SC02_026
[ OK ] ov_SC02_027
[ OK ] ov_SC02_031
[ OK ] ov_SC03_003
[ OK ] ov_SC02_041
[ OK ] ov_SC02_035
[ OK ] ov_SC02_039
[ OK ] ov_SC02_028
[ OK ] ov_SC03_010
[ OK ] ov_SC03_007
[ OK ] ov_SC03_011
[ OK ] ov_SC03_012
[ OK ] ov_SC03_023
[ OK ] ov_SC03_013
[ OK ] ov_SC03_014
[ OK ] ov_SC03_024
[ OK ] ov_SC03_015
[ OK ] ov_SC03_028
[ OK ] ov_SC03_030
[ OK ] ov_SC03_029
[ OK ] ov_SC03_031
[ OK ] ov_SC03_089
[ OK ] ov_SC03_090
[ OK ] ov_SC03_092
[ OK ] ov_SC03_093
[ OK ] ov_SC03_091
[ OK ] ov_SC03_094
[ OK ] ov_SC03_095
[ OK ] ov_SC03_096
[ OK ] ov_SC03_097
[ OK ] ov_SC03_098
[ OK ] ov_SC03_099
[ OK ] ov_SC03_100
[ OK ] ov_SC03_101
[ OK ] ov_SC03_102
[ OK ] ov_SC03_103
[ OK ] ov_SC03_109
[ OK ] ov_SC03_104
[ OK ] ov_SC03_108
[ OK ] ov_SC03_110
[ OK ] ov_SC03_113
[ OK ] ov_SC03_111
[ OK ] ov_SC03_114
[ OK ] ov_SC03_105
[ OK ] ov_SC03_112
[ OK ] ov_SC03_115
[ OK ] ov_SC03_116
[ OK ] ov_SC03_117
[ OK ] ov_SC03_118
[ OK ] ov_SC03_119
[ OK ] ov_SC03_126
[ OK ] ov_SC03_121
[ OK ] ov_SC03_125
[ OK ] ov_SC04_002
[ OK ] ov_SC04_003
[ OK ] ov_SC03_124
[ OK ] ov_SC04_004
[ OK ] ov_SC04_005
[ OK ] ov_SC04_008
[ OK ] ov_SC04_006
[ OK ] ov_SC04_007
[ OK ] ov_SC04_009
[ OK ] ov_SC04_010
[ OK ] ov_SC04_012
[ OK ] ov_SC04_011
[ OK ] ov_SC04_015
[ OK ] ov_SC04_016
[ OK ] ov_SC04_020
[ OK ] ov_SC04_021
[ OK ] ov_SC05_002
[ OK ] ov_SC05_001
[ OK ] ov_SC05_003
[ OK ] ov_SC05_004
[ OK ] ov_SC05_005
[ OK ] ov_SC05_006
[ OK ] ov_SC05_008
[ OK ] ov_SC05_007
[ OK ] ov_SC05_009
[ OK ] ov_SC05_010
[ OK ] ov_SC05_011
[ OK ] ov_SC05_017
[ OK ] ov_SC05_018
[ OK ] ov_SC05_019
[ OK ] ov_SC06_010
[ OK ] ov_SC06_008
[ OK ] ov_SC06_006
[ OK ] ov_SC06_011
[ OK ] ov_SC06_013
[ OK ] ov_SC06_014
[ OK ] ov_SC06_015
[ OK ] ov_SC06_016
[ OK ] ov_SC06_020
[ OK ] ov_SC06_018
[ OK ] ov_SC06_022
[ OK ] ov_SC06_025
[ OK ] ov_SC06_024
[ OK ] ov_SC06_027
[ OK ] md_MAIN_013
[ OK ] md_MAIN_014
[ OK ] md_MAIN_015
[ OK ] md_MAIN_016
[ OK ] md_MAIN_017
[ OK ] md_MAIN_018
[ OK ] md_MAIN_019
[ OK ] md_MAIN_020
[ OK ] md_MAIN_021
[ OK ] md_MAIN_022
[ OK ] md_MAIN_023
[ OK ] md_MAIN_024
[ OK ] md_MAIN_025
[ OK ] md_MAIN_026
[ OK ] ov_SC06_029
[ OK ] md_MAIN_027
[ OK ] md_MAIN_028
[ OK ] md_MAIN_029
[ OK ] md_MAIN_030
[ OK ] md_MAIN_031
[ OK ] md_MAIN_033
[ OK ] md_MAIN_034
[ OK ] md_MAIN_032
[ OK ] ov_SC06_030
[ OK ] md_MAIN_035
[ OK ] md_MAIN_036
[ OK ] md_MAIN_037
[ OK ] md_MAIN_038
[ OK ] md_MAIN_039
[ OK ] md_MAIN_040
[ OK ] md_MAIN_042
[ OK ] ov_SC07_001
[ OK ] md_MAIN_043
[ OK ] md_MAIN_044
[ OK ] md_MAIN_045
[ OK ] md_MAIN_046
[ OK ] md_MAIN_041
[ OK ] md_MAIN_047
[ OK ] md_MAIN_001
[ OK ] md_MAIN_008
[ OK ] md_MAIN_011
[ OK ] ov_SC07_009
[ OK ] ov_SC07_002
[ OK ] md_SC07_003
[ OK ] md_MAIN_003
[ OK ] ov_SC07_008
[ OK ] md_SC03_076
[ OK ] md_SC07_004
[ OK ] md_SC03_073
[ OK ] md_SC03_074
[ OK ] md_SC03_075
[ OK ] md_SC03_077
[ OK ] md_SC03_079
[ OK ] md_SC03_132
[ OK ] md_SC03_136
[ OK ] md_SC03_135
[ OK ] md_SC03_078
[ OK ] ov_SC07_006
[ OK ] md_SC04_024
[ OK ] md_SC03_133
[ OK ] md_SC04_025
[ OK ] md_SC03_134
[ OK ] md_SC04_026
[ OK ] md_SC03_137
[ OK ] md_SC03_138
[ OK ] md_SC04_029
[ OK ] md_SC04_030
[ OK ] md_SC05_023
[ OK ] md_SC04_027
[ OK ] md_SC05_024
[ OK ] md_SC04_028
[ OK ] md_SC05_025
[ OK ] md_SC05_028
[ OK ] md_SC05_029
[ OK ] md_SC02_009
[ OK ] md_MAIN_009
[ OK ] md_MAIN_007
[ OK ] md_SC05_027
[ OK ] ov_SC07_007
[ OK ] md_SC05_026
[ OK ] md_SC03_053
[ OK ] ov_SC06_032
[ OK ] md_SC03_054
[ OK ] md_SC03_056
[ OK ] ov_SC07_010
[ OK ] ov_SC06_033
[ OK ] ov_MAIN_012
[ OK ] ov_SC02_037
[ OK ] ov_SC07_011
[ OK ] ov_SC03_107
check-all: 218 passed, 0 failed of 218
+1
View File
@@ -0,0 +1 @@
clean: removed build/, expected/, and the regenerated splat tree (asm/, assets/, include macros, undefined_*_auto.txt).
+253
View File
@@ -0,0 +1,253 @@
splat 0.41.0 (powered by spimdisasm 1.41.0)
0%| | 0/1096 [00:00<?, ?it/s]
Loading symbols (symbols.us): 0%| | 0/1096 [00:00<?, ?it/s]
Loading symbols (symbols.us): 100%|██████████| 1096/1096 [00:00<00:00, 101635.14it/s]
0%| | 0/47 [00:00<?, ?it/s]
Loading symbols (symbols.us.ram): 0%| | 0/47 [00:00<?, ?it/s]
Loading symbols (symbols.us.ram): 100%|██████████| 47/47 [00:00<00:00, 473875.69it/s]
0%| | 0/2 [00:00<?, ?it/s]
Scanning header: 0%| | 0/2 [00:00<?, ?it/s]
Scanning main: 0%| | 0/2 [00:00<?, ?it/s]
Rodata segment '800' may belong to the text segment '800'
Based on the usage from the function LzssDecodeSector to the symbol jtbl_80072A38
The rodata segment '800' has jumptables that are not aligned properly file-wise, indicating one or more likely file split.
File split suggestions for this segment will follow in config yaml format:
- [0x6324C, .rodata]
- [0x63388, .rodata]
- [0x633FC, .rodata]
Rodata segment '800_b' may belong to the text segment '800_b'
Based on the usage from the function func_8002B0B4 to the symbol jtbl_80072E44
Rodata segment '800_b_2' may belong to the text segment '800_b_2'
Based on the usage from the function func_8002DC68 to the symbol jtbl_80072F3C
The rodata segment '800_b_2' has jumptables that are not aligned properly file-wise, indicating one or more likely file split.
File split suggestions for this segment will follow in config yaml format:
- [0x63920, .rodata]
Rodata segment '800_c' may belong to the text segment '800_c'
Based on the usage from the function func_80035270 to the symbol jtbl_800732A0
Scanning main: 100%|██████████| 2/2 [00:01<00:00, 1.14it/s]
Scanning main: 100%|██████████| 2/2 [00:01<00:00, 1.14it/s]
0%| | 0/2 [00:00<?, ?it/s]
Splitting header: 0%| | 0/2 [00:00<?, ?it/s]
Splitting main: 0%| | 0/2 [00:00<?, ?it/s]
Splitting main: 100%|██████████| 2/2 [00:01<00:00, 1.53it/s]
Splitting main: 100%|██████████| 2/2 [00:01<00:00, 1.53it/s]
0%| | 0/2 [00:00<?, ?it/s]
Linker script header: 0%| | 0/2 [00:00<?, ?it/s]
Linker script main: 0%| | 0/2 [00:00<?, ?it/s]
Linker script main: 100%|██████████| 2/2 [00:00<00:00, 72.82it/s]
Split 340 KB (82.28%) in defined segments
header: 2 KB (0.50%) 1 split, 0 cached
c: 338 KB (81.78%) 85 split, 0 cached
unknown: 0 B (0.00%) from unknown bin files
ld_interleave --order: .main island = 8 pieces [53198.data.o, 800.o, 63470.data.o, 800_b.o, 800_b_2.o, 63940.data.o, 800_c.o, 63C4C.data.o]; pre=0 text=85 empties=166 bss=85
[ OK ] resident
[ OK ] ov_SC05_000
[ OK ] ov_SC01_000
[ OK ] ov_SC06_000
[ OK ] ov_SC04_000
[ OK ] ov_SC03_002
[ OK ] ov_SC01_005
[ OK ] ov_SC01_006
[ OK ] ov_SC01_077
[ OK ] ov_SC02_003
[ OK ] ov_SC02_000
[ OK ] ov_SC04_018
[ OK ] ov_SC04_019
[ OK ] ov_SC03_001
[ OK ] ov_SC03_006
[ OK ] ov_SC01_001
[ OK ] ov_SC01_004
[ OK ] ov_SC01_008
[ OK ] ov_SC01_074
[ OK ] ov_SC07_000
[ OK ] ov_SC02_004
[ OK ] ov_SC02_015
[ OK ] ov_SC02_021
[ OK ] ov_SC01_080
[ OK ] ov_SC01_084
[ OK ] ov_SC01_009
[ OK ] ov_SC02_016
[ OK ] ov_SC02_026
[ OK ] ov_SC02_027
[ OK ] ov_SC02_005
[ OK ] ov_SC02_039
[ OK ] ov_SC02_011
[ OK ] ov_SC02_028
[ OK ] ov_SC02_031
[ OK ] ov_SC02_017
[ OK ] ov_SC03_003
[ OK ] ov_SC02_035
[ OK ] ov_SC02_041
[ OK ] ov_SC03_010
[ OK ] ov_SC03_012
[ OK ] ov_SC03_011
[ OK ] ov_SC03_013
[ OK ] ov_SC03_023
[ OK ] ov_SC03_007
[ OK ] ov_SC03_024
[ OK ] ov_SC03_089
[ OK ] ov_SC03_031
[ OK ] ov_SC03_090
[ OK ] ov_SC03_014
[ OK ] ov_SC03_029
[ OK ] ov_SC03_015
[ OK ] ov_SC03_030
[ OK ] ov_SC03_092
[ OK ] ov_SC03_095
[ OK ] ov_SC03_091
[ OK ] ov_SC03_028
[ OK ] ov_SC03_093
[ OK ] ov_SC03_096
[ OK ] ov_SC03_094
[ OK ] ov_SC03_097
[ OK ] ov_SC03_101
[ OK ] ov_SC03_098
[ OK ] ov_SC03_109
[ OK ] ov_SC03_108
[ OK ] ov_SC03_099
[ OK ] ov_SC03_110
[ OK ] ov_SC03_102
[ OK ] ov_SC03_100
[ OK ] ov_SC03_103
[ OK ] ov_SC03_104
[ OK ] ov_SC03_112
[ OK ] ov_SC03_111
[ OK ] ov_SC03_115
[ OK ] ov_SC03_105
[ OK ] ov_SC03_113
[ OK ] ov_SC03_114
[ OK ] ov_SC03_116
[ OK ] ov_SC03_126
[ OK ] ov_SC03_121
[ OK ] ov_SC04_003
[ OK ] ov_SC04_008
[ OK ] ov_SC03_117
[ OK ] ov_SC04_006
[ OK ] ov_SC04_009
[ OK ] ov_SC04_004
[ OK ] ov_SC03_118
[ OK ] ov_SC04_002
[ OK ] ov_SC03_125
[ OK ] ov_SC03_119
[ OK ] ov_SC04_007
[ OK ] ov_SC04_005
[ OK ] ov_SC04_010
[ OK ] ov_SC03_124
[ OK ] ov_SC04_012
[ OK ] ov_SC04_021
[ OK ] ov_SC04_016
[ OK ] ov_SC05_006
[ OK ] ov_SC05_002
[ OK ] ov_SC05_001
[ OK ] ov_SC05_004
[ OK ] ov_SC05_007
[ OK ] ov_SC04_020
[ OK ] ov_SC05_009
[ OK ] ov_SC05_003
[ OK ] ov_SC04_015
[ OK ] ov_SC05_008
[ OK ] ov_SC05_005
[ OK ] ov_SC04_011
[ OK ] ov_SC05_010
[ OK ] ov_SC05_011
[ OK ] ov_SC05_019
[ OK ] ov_SC06_015
[ OK ] ov_SC06_013
[ OK ] ov_SC06_008
[ OK ] ov_SC06_014
[ OK ] ov_SC06_016
[ OK ] ov_SC06_010
[ OK ] ov_SC06_011
[ OK ] ov_SC05_017
[ OK ] ov_SC06_020
[ OK ] ov_SC05_018
[ OK ] ov_SC06_018
[ OK ] ov_SC06_025
[ OK ] ov_SC06_027
[ OK ] ov_SC06_006
[ OK ] ov_SC06_022
[ OK ] ov_SC06_024
[ OK ] md_MAIN_013
[ OK ] md_MAIN_014
[ OK ] ov_SC07_008
[ OK ] ov_SC07_002
[ OK ] md_MAIN_015
[ OK ] ov_SC07_001
[ OK ] md_MAIN_016
[ OK ] md_MAIN_018
[ OK ] md_MAIN_017
[ OK ] ov_SC06_030
[ OK ] md_MAIN_019
[ OK ] ov_SC07_009
[ OK ] md_MAIN_020
[ OK ] md_MAIN_022
[ OK ] md_MAIN_021
[ OK ] md_MAIN_023
[ OK ] md_MAIN_024
[ OK ] md_MAIN_025
[ OK ] md_MAIN_026
[ OK ] md_MAIN_027
[ OK ] md_MAIN_028
[ OK ] ov_SC06_032
[ OK ] md_MAIN_029
[ OK ] md_MAIN_030
[ OK ] md_MAIN_031
[ OK ] ov_SC06_033
[ OK ] md_MAIN_033
[ OK ] md_MAIN_032
[ OK ] ov_SC06_029
[ OK ] md_MAIN_035
[ OK ] ov_MAIN_012
[ OK ] md_MAIN_034
[ OK ] md_MAIN_036
[ OK ] md_MAIN_037
[ OK ] md_MAIN_038
[ OK ] ov_SC07_011
[ OK ] md_MAIN_039
[ OK ] md_MAIN_040
[ OK ] md_MAIN_042
[ OK ] md_MAIN_041
[ OK ] md_MAIN_043
[ OK ] md_MAIN_045
[ OK ] md_MAIN_044
[ OK ] md_MAIN_046
[ OK ] ov_SC07_010
[ OK ] md_MAIN_047
[ OK ] md_MAIN_008
[ OK ] md_MAIN_001
[ OK ] md_MAIN_011
[ OK ] md_SC03_073
[ OK ] md_SC03_074
[ OK ] md_SC03_078
[ OK ] ov_SC03_107
[ OK ] md_SC03_075
[ OK ] md_SC03_077
[ OK ] md_SC03_076
[ OK ] md_SC03_079
[ OK ] md_SC03_133
[ OK ] md_SC03_132
[ OK ] ov_SC07_007
[ OK ] md_SC03_137
[ OK ] md_SC03_134
[ OK ] md_SC03_136
[ OK ] md_SC03_135
[ OK ] md_SC03_138
[ OK ] md_SC04_024
[ OK ] md_SC04_025
[ OK ] md_MAIN_003
[ OK ] md_SC04_029
[ OK ] md_SC04_026
[ OK ] md_SC04_028
+8
View File
@@ -0,0 +1,8 @@
START 2026-09-05T10:41:41-06:00
CLEAN_EXIT=0
EXTRACT_EXIT=0
[ OK ] md_SC07_003
extract-all: 217 extracted, 0 failed of 217 (+ main, serial)
CHECK_EXIT=0
check-all: 218 passed, 0 failed of 218
END 2026-09-05T10:46:16-06:00
+219
View File
@@ -0,0 +1,219 @@
[ OK ] resident
[ OK ] ov_SC01_000
[ OK ] ov_SC05_000
[ OK ] ov_SC03_006
[ OK ] ov_SC06_000
[ OK ] ov_SC04_000
[ OK ] ov_SC01_001
[ OK ] ov_SC01_006
[ OK ] ov_SC01_005
[ OK ] ov_SC03_002
[ OK ] ov_SC04_019
[ OK ] ov_SC01_077
[ OK ] ov_SC04_018
[ OK ] ov_SC02_003
[ OK ] ov_SC03_001
[ OK ] ov_SC02_000
[ OK ] main
[ OK ] ov_SC01_080
[ OK ] ov_SC02_004
[ OK ] ov_SC01_074
[ OK ] ov_SC01_004
[ OK ] ov_SC07_000
[ OK ] ov_SC01_008
[ OK ] ov_SC01_009
[ OK ] ov_SC01_084
[ OK ] ov_SC02_015
[ OK ] ov_SC02_005
[ OK ] ov_SC02_021
[ OK ] ov_SC02_016
[ OK ] ov_SC02_011
[ OK ] ov_SC02_017
[ OK ] ov_SC02_026
[ OK ] ov_SC02_027
[ OK ] ov_SC02_031
[ OK ] ov_SC03_003
[ OK ] ov_SC02_041
[ OK ] ov_SC02_039
[ OK ] ov_SC02_035
[ OK ] ov_SC02_028
[ OK ] ov_SC03_010
[ OK ] ov_SC03_007
[ OK ] ov_SC03_011
[ OK ] ov_SC03_012
[ OK ] ov_SC03_023
[ OK ] ov_SC03_013
[ OK ] ov_SC03_014
[ OK ] ov_SC03_024
[ OK ] ov_SC03_015
[ OK ] ov_SC03_028
[ OK ] ov_SC03_030
[ OK ] ov_SC03_031
[ OK ] ov_SC03_029
[ OK ] ov_SC03_089
[ OK ] ov_SC03_090
[ OK ] ov_SC03_092
[ OK ] ov_SC03_093
[ OK ] ov_SC03_094
[ OK ] ov_SC03_091
[ OK ] ov_SC03_095
[ OK ] ov_SC03_096
[ OK ] ov_SC03_097
[ OK ] ov_SC03_098
[ OK ] ov_SC03_099
[ OK ] ov_SC03_100
[ OK ] ov_SC03_101
[ OK ] ov_SC03_102
[ OK ] ov_SC03_103
[ OK ] ov_SC03_104
[ OK ] ov_SC03_109
[ OK ] ov_SC03_108
[ OK ] ov_SC03_110
[ OK ] ov_SC03_111
[ OK ] ov_SC03_113
[ OK ] ov_SC03_114
[ OK ] ov_SC03_112
[ OK ] ov_SC03_105
[ OK ] ov_SC03_115
[ OK ] ov_SC03_116
[ OK ] ov_SC03_117
[ OK ] ov_SC03_118
[ OK ] ov_SC03_119
[ OK ] ov_SC03_121
[ OK ] ov_SC03_126
[ OK ] ov_SC03_125
[ OK ] ov_SC04_002
[ OK ] ov_SC03_124
[ OK ] ov_SC04_004
[ OK ] ov_SC04_003
[ OK ] ov_SC04_005
[ OK ] ov_SC04_008
[ OK ] ov_SC04_006
[ OK ] ov_SC04_007
[ OK ] ov_SC04_009
[ OK ] ov_SC04_010
[ OK ] ov_SC04_011
[ OK ] ov_SC04_012
[ OK ] ov_SC04_015
[ OK ] ov_SC04_016
[ OK ] ov_SC04_021
[ OK ] ov_SC04_020
[ OK ] ov_SC05_002
[ OK ] ov_SC05_001
[ OK ] ov_SC05_004
[ OK ] ov_SC05_003
[ OK ] ov_SC05_005
[ OK ] ov_SC05_006
[ OK ] ov_SC05_007
[ OK ] ov_SC05_008
[ OK ] ov_SC05_009
[ OK ] ov_SC05_010
[ OK ] ov_SC05_011
[ OK ] ov_SC05_018
[ OK ] ov_SC05_017
[ OK ] ov_SC05_019
[ OK ] ov_SC06_010
[ OK ] ov_SC06_008
[ OK ] ov_SC06_006
[ OK ] ov_SC06_011
[ OK ] ov_SC06_013
[ OK ] ov_SC06_014
[ OK ] ov_SC06_015
[ OK ] ov_SC06_016
[ OK ] ov_SC06_020
[ OK ] ov_SC06_018
[ OK ] ov_SC06_022
[ OK ] ov_SC06_025
[ OK ] ov_SC06_024
[ OK ] ov_SC06_027
[ OK ] md_MAIN_013
[ OK ] md_MAIN_014
[ OK ] md_MAIN_015
[ OK ] md_MAIN_016
[ OK ] md_MAIN_017
[ OK ] md_MAIN_018
[ OK ] md_MAIN_019
[ OK ] md_MAIN_020
[ OK ] md_MAIN_021
[ OK ] md_MAIN_022
[ OK ] md_MAIN_023
[ OK ] md_MAIN_024
[ OK ] md_MAIN_025
[ OK ] ov_SC06_029
[ OK ] md_MAIN_026
[ OK ] md_MAIN_027
[ OK ] md_MAIN_028
[ OK ] md_MAIN_029
[ OK ] md_MAIN_030
[ OK ] md_MAIN_031
[ OK ] md_MAIN_033
[ OK ] md_MAIN_034
[ OK ] md_MAIN_032
[ OK ] md_MAIN_035
[ OK ] ov_SC06_030
[ OK ] md_MAIN_037
[ OK ] md_MAIN_036
[ OK ] md_MAIN_040
[ OK ] md_MAIN_039
[ OK ] md_MAIN_038
[ OK ] md_MAIN_042
[ OK ] md_MAIN_043
[ OK ] ov_SC07_001
[ OK ] md_MAIN_045
[ OK ] md_MAIN_044
[ OK ] md_MAIN_047
[ OK ] md_MAIN_001
[ OK ] md_MAIN_046
[ OK ] md_MAIN_041
[ OK ] md_MAIN_008
[ OK ] md_MAIN_011
[ OK ] ov_SC07_002
[ OK ] ov_SC07_008
[ OK ] md_SC07_003
[ OK ] ov_SC07_009
[ OK ] md_MAIN_003
[ OK ] md_SC07_004
[ OK ] md_SC03_076
[ OK ] md_SC03_077
[ OK ] md_SC03_073
[ OK ] md_SC03_079
[ OK ] md_SC03_132
[ OK ] md_SC03_074
[ OK ] md_SC03_075
[ OK ] md_SC03_135
[ OK ] md_SC03_136
[ OK ] md_SC03_078
[ OK ] md_SC03_133
[ OK ] md_SC04_024
[ OK ] md_SC04_025
[ OK ] md_SC03_134
[ OK ] md_SC04_026
[ OK ] md_SC03_137
[ OK ] md_SC04_029
[ OK ] md_SC03_138
[ OK ] ov_SC07_006
[ OK ] md_SC04_030
[ OK ] md_SC05_023
[ OK ] md_SC04_027
[ OK ] md_SC04_028
[ OK ] md_SC05_024
[ OK ] md_SC05_025
[ OK ] md_SC05_028
[ OK ] md_MAIN_007
[ OK ] md_SC05_029
[ OK ] md_SC02_009
[ OK ] md_SC05_027
[ OK ] md_MAIN_009
[ OK ] md_SC05_026
[ OK ] md_SC03_053
[ OK ] md_SC03_054
[ OK ] md_SC03_056
[ OK ] ov_SC07_007
[ OK ] ov_SC06_032
[ OK ] ov_SC07_010
[ OK ] ov_MAIN_012
[ OK ] ov_SC06_033
[ OK ] ov_SC02_037
[ OK ] ov_SC07_011
[ OK ] ov_SC03_107
check-all: 218 passed, 0 failed of 218
+1
View File
@@ -0,0 +1 @@
clean: removed build/, expected/, and the regenerated splat tree (asm/, assets/, include macros, undefined_*_auto.txt).
+253
View File
@@ -0,0 +1,253 @@
splat 0.41.0 (powered by spimdisasm 1.41.0)
0%| | 0/1096 [00:00<?, ?it/s]
Loading symbols (symbols.us): 0%| | 0/1096 [00:00<?, ?it/s]
Loading symbols (symbols.us): 100%|██████████| 1096/1096 [00:00<00:00, 130033.86it/s]
0%| | 0/47 [00:00<?, ?it/s]
Loading symbols (symbols.us.ram): 0%| | 0/47 [00:00<?, ?it/s]
Loading symbols (symbols.us.ram): 100%|██████████| 47/47 [00:00<00:00, 426693.26it/s]
0%| | 0/2 [00:00<?, ?it/s]
Scanning header: 0%| | 0/2 [00:00<?, ?it/s]
Scanning main: 0%| | 0/2 [00:00<?, ?it/s]
Rodata segment '800' may belong to the text segment '800'
Based on the usage from the function LzssDecodeSector to the symbol jtbl_80072A38
The rodata segment '800' has jumptables that are not aligned properly file-wise, indicating one or more likely file split.
File split suggestions for this segment will follow in config yaml format:
- [0x6324C, .rodata]
- [0x63388, .rodata]
- [0x633FC, .rodata]
Rodata segment '800_b' may belong to the text segment '800_b'
Based on the usage from the function func_8002B0B4 to the symbol jtbl_80072E44
Rodata segment '800_b_2' may belong to the text segment '800_b_2'
Based on the usage from the function func_8002DC68 to the symbol jtbl_80072F3C
The rodata segment '800_b_2' has jumptables that are not aligned properly file-wise, indicating one or more likely file split.
File split suggestions for this segment will follow in config yaml format:
- [0x63920, .rodata]
Rodata segment '800_c' may belong to the text segment '800_c'
Based on the usage from the function func_80035270 to the symbol jtbl_800732A0
Scanning main: 100%|██████████| 2/2 [00:01<00:00, 1.01it/s]
Scanning main: 100%|██████████| 2/2 [00:01<00:00, 1.01it/s]
0%| | 0/2 [00:00<?, ?it/s]
Splitting header: 0%| | 0/2 [00:00<?, ?it/s]
Splitting main: 0%| | 0/2 [00:00<?, ?it/s]
Splitting main: 100%|██████████| 2/2 [00:01<00:00, 1.71it/s]
Splitting main: 100%|██████████| 2/2 [00:01<00:00, 1.71it/s]
0%| | 0/2 [00:00<?, ?it/s]
Linker script header: 0%| | 0/2 [00:00<?, ?it/s]
Linker script main: 0%| | 0/2 [00:00<?, ?it/s]
Linker script main: 100%|██████████| 2/2 [00:00<00:00, 57.94it/s]
Split 340 KB (82.28%) in defined segments
header: 2 KB (0.50%) 1 split, 0 cached
c: 338 KB (81.78%) 85 split, 0 cached
unknown: 0 B (0.00%) from unknown bin files
ld_interleave --order: .main island = 8 pieces [53198.data.o, 800.o, 63470.data.o, 800_b.o, 800_b_2.o, 63940.data.o, 800_c.o, 63C4C.data.o]; pre=0 text=85 empties=166 bss=85
[ OK ] resident
[ OK ] ov_SC05_000
[ OK ] ov_SC01_000
[ OK ] ov_SC04_000
[ OK ] ov_SC06_000
[ OK ] ov_SC03_002
[ OK ] ov_SC01_005
[ OK ] ov_SC01_006
[ OK ] ov_SC01_077
[ OK ] ov_SC02_003
[ OK ] ov_SC02_000
[ OK ] ov_SC04_018
[ OK ] ov_SC04_019
[ OK ] ov_SC03_006
[ OK ] ov_SC03_001
[ OK ] ov_SC01_001
[ OK ] ov_SC01_004
[ OK ] ov_SC01_008
[ OK ] ov_SC01_074
[ OK ] ov_SC07_000
[ OK ] ov_SC02_004
[ OK ] ov_SC02_015
[ OK ] ov_SC02_021
[ OK ] ov_SC01_080
[ OK ] ov_SC01_084
[ OK ] ov_SC01_009
[ OK ] ov_SC02_016
[ OK ] ov_SC02_005
[ OK ] ov_SC02_026
[ OK ] ov_SC02_039
[ OK ] ov_SC02_027
[ OK ] ov_SC02_011
[ OK ] ov_SC02_031
[ OK ] ov_SC02_028
[ OK ] ov_SC02_017
[ OK ] ov_SC03_003
[ OK ] ov_SC02_035
[ OK ] ov_SC02_041
[ OK ] ov_SC03_012
[ OK ] ov_SC03_010
[ OK ] ov_SC03_011
[ OK ] ov_SC03_013
[ OK ] ov_SC03_023
[ OK ] ov_SC03_007
[ OK ] ov_SC03_024
[ OK ] ov_SC03_014
[ OK ] ov_SC03_015
[ OK ] ov_SC03_031
[ OK ] ov_SC03_029
[ OK ] ov_SC03_089
[ OK ] ov_SC03_092
[ OK ] ov_SC03_090
[ OK ] ov_SC03_030
[ OK ] ov_SC03_091
[ OK ] ov_SC03_095
[ OK ] ov_SC03_028
[ OK ] ov_SC03_096
[ OK ] ov_SC03_093
[ OK ] ov_SC03_094
[ OK ] ov_SC03_097
[ OK ] ov_SC03_101
[ OK ] ov_SC03_098
[ OK ] ov_SC03_109
[ OK ] ov_SC03_108
[ OK ] ov_SC03_099
[ OK ] ov_SC03_110
[ OK ] ov_SC03_102
[ OK ] ov_SC03_100
[ OK ] ov_SC03_104
[ OK ] ov_SC03_112
[ OK ] ov_SC03_105
[ OK ] ov_SC03_103
[ OK ] ov_SC03_111
[ OK ] ov_SC03_113
[ OK ] ov_SC03_115
[ OK ] ov_SC03_114
[ OK ] ov_SC03_116
[ OK ] ov_SC03_126
[ OK ] ov_SC04_003
[ OK ] ov_SC03_121
[ OK ] ov_SC04_008
[ OK ] ov_SC03_117
[ OK ] ov_SC04_009
[ OK ] ov_SC04_006
[ OK ] ov_SC03_118
[ OK ] ov_SC04_004
[ OK ] ov_SC03_119
[ OK ] ov_SC03_125
[ OK ] ov_SC04_002
[ OK ] ov_SC04_007
[ OK ] ov_SC04_005
[ OK ] ov_SC03_124
[ OK ] ov_SC04_010
[ OK ] ov_SC04_012
[ OK ] ov_SC04_021
[ OK ] ov_SC04_016
[ OK ] ov_SC05_006
[ OK ] ov_SC05_002
[ OK ] ov_SC05_004
[ OK ] ov_SC04_015
[ OK ] ov_SC05_007
[ OK ] ov_SC04_020
[ OK ] ov_SC05_003
[ OK ] ov_SC05_001
[ OK ] ov_SC05_009
[ OK ] ov_SC05_005
[ OK ] ov_SC05_008
[ OK ] ov_SC04_011
[ OK ] ov_SC05_011
[ OK ] ov_SC05_010
[ OK ] ov_SC05_019
[ OK ] ov_SC06_015
[ OK ] ov_SC06_013
[ OK ] ov_SC06_008
[ OK ] ov_SC06_014
[ OK ] ov_SC06_011
[ OK ] ov_SC06_016
[ OK ] ov_SC06_010
[ OK ] ov_SC05_017
[ OK ] ov_SC06_020
[ OK ] ov_SC05_018
[ OK ] ov_SC06_018
[ OK ] ov_SC06_006
[ OK ] ov_SC06_027
[ OK ] ov_SC06_025
[ OK ] ov_SC06_022
[ OK ] ov_SC06_024
[ OK ] ov_SC07_008
[ OK ] md_MAIN_013
[ OK ] md_MAIN_014
[ OK ] ov_SC07_002
[ OK ] md_MAIN_015
[ OK ] ov_SC07_001
[ OK ] md_MAIN_016
[ OK ] md_MAIN_017
[ OK ] ov_SC06_030
[ OK ] md_MAIN_018
[ OK ] md_MAIN_019
[ OK ] md_MAIN_020
[ OK ] md_MAIN_021
[ OK ] md_MAIN_023
[ OK ] md_MAIN_022
[ OK ] ov_SC07_009
[ OK ] md_MAIN_024
[ OK ] md_MAIN_026
[ OK ] md_MAIN_025
[ OK ] md_MAIN_027
[ OK ] ov_SC06_032
[ OK ] md_MAIN_028
[ OK ] md_MAIN_030
[ OK ] md_MAIN_029
[ OK ] md_MAIN_031
[ OK ] md_MAIN_032
[ OK ] ov_SC06_033
[ OK ] md_MAIN_035
[ OK ] md_MAIN_034
[ OK ] md_MAIN_033
[ OK ] ov_MAIN_012
[ OK ] md_MAIN_036
[ OK ] md_MAIN_037
[ OK ] ov_SC06_029
[ OK ] ov_SC07_011
[ OK ] md_MAIN_039
[ OK ] md_MAIN_040
[ OK ] md_MAIN_038
[ OK ] md_MAIN_042
[ OK ] md_MAIN_041
[ OK ] md_MAIN_043
[ OK ] ov_SC07_010
[ OK ] md_MAIN_044
[ OK ] md_MAIN_045
[ OK ] md_MAIN_046
[ OK ] md_MAIN_047
[ OK ] md_MAIN_008
[ OK ] md_MAIN_001
[ OK ] md_MAIN_011
[ OK ] md_SC03_073
[ OK ] md_SC03_078
[ OK ] md_SC03_074
[ OK ] md_SC03_075
[ OK ] md_SC03_077
[ OK ] ov_SC07_007
[ OK ] md_SC03_076
[ OK ] md_SC03_079
[ OK ] md_SC03_132
[ OK ] md_SC03_133
[ OK ] md_SC03_137
[ OK ] ov_SC03_107
[ OK ] md_SC03_134
[ OK ] md_SC03_135
[ OK ] md_SC03_136
[ OK ] md_MAIN_003
[ OK ] md_SC04_024
[ OK ] md_SC03_138
[ OK ] md_SC04_025
[ OK ] md_SC04_026
[ OK ] md_SC04_028
[ OK ] md_SC04_029
+7
View File
@@ -0,0 +1,7 @@
START 2026-09-05T11:04:37-06:00
CLEAN_EXIT=0
EXTRACT_EXIT=0
extract-all: 217 extracted, 0 failed of 217 (+ main, serial)
CHECK_EXIT=0
check-all: 218 passed, 0 failed of 218
END 2026-09-05T11:09:20-06:00
+9
View File
@@ -0,0 +1,9 @@
import sys, re
tu, asmdir, fn, draft = sys.argv[1:5]
src = open(tu).read()
line = 'INCLUDE_ASM("%s", %s);' % (asmdir, fn)
n = src.count(line)
assert n == 1, "INCLUDE_ASM line for %s occurs %d times in %s" % (fn, n, tu)
body = open(draft).read().rstrip('\n') + '\n'
open(tu, 'w').write(src.replace(line, body))
print("spliced", fn, "into", tu)
File diff suppressed because one or more lines are too long
+4
View File
@@ -0,0 +1,4 @@
[twin_rescan] 33 open stub(s) scanned; 5 have a banked twin at d<=5
[twin_rescan] NEWLY FREE since the last snapshot: 0
(nothing new — the last bank did not unlock a sibling)
[twin_rescan] snapshot written to .run/twin_rescan.snapshot.json
+4
View File
@@ -0,0 +1,4 @@
[twin_rescan] 16 open stub(s) scanned; 0 have a banked twin at d<=5
[twin_rescan] NEWLY FREE since the last snapshot: 0
(nothing new — the last bank did not unlock a sibling)
[twin_rescan] snapshot written to .run/twin_rescan.snapshot.json
+9 -6
View File
@@ -1,17 +1,20 @@
{"ts": "2026-08-25 23:39:15", "addr": "0x800d06e8", "name": "func_800D06E8", "reach": null, "klass": null, "nins": null, "status": "failed", "closeness": null, "where_stuck": "resolver CC1 (real-TU rtu_match, 20260825-233820): .run/resolver/work/resident__func_800D06E8/c0/rtu/func_800D06E8/t.c:1770: conflicting types for `Struct80078E78'", "best_draft": ".run/wave_ch/shard62/func_800D06E8.c", "binary": "resident", "source": "resolver", "residual": null, "passes_tried": null}
{"ts": "2026-09-01 20:34:37", "addr": "0x80062144", "name": "func_80062144", "reach": null, "klass": null, "nins": null, "status": "failed", "closeness": null, "where_stuck": "won't compile standalone (loose-typing / missing decl)", "best_draft": null, "binary": "main", "source": "S70-332b", "residual": null, "passes_tried": null}
{"ts": "2026-09-04 21:19:39", "addr": "0x80015b6c", "name": "func_80015B6C", "reach": null, "klass": null, "nins": null, "status": "near", "closeness": 44, "where_stuck": "120/120; prologue + most of block1 exact. Residual = two documented walls (6 prior attempts): a 6-ins v0/v1 swap in the D_800B9A02*20 index calc (pinning the load to $2 inert) + sched1 hoisting the xa=x corner copy one slot across the block1/block2 boundary (memory clobber does not stop a pure-register move). Per-block pins (m24=$5, mFF=$7, one=$8, tag/tag2/tag3) + opaque-copy barriers on xa/ya: 8", "best_draft": ".run/S79w/sonnet/func_80015B6C.c", "binary": "main", "source": "S79 #9 sonnet agent", "residual": null, "passes_tried": null}
{"ts": "2026-09-04 21:19:39", "addr": "0x8001bc6c", "name": "func_8001BC6C", "reach": null, "klass": null, "nins": null, "status": "near", "closeness": 28, "where_stuck": "Reproduced the documented best (28, two prior attempts): head cluster = sched1 birthing-boost hoisting the a1<<16|0x64000000 colour partial ahead of four lhu's regardless of statement order (prior RTL dumps: two mutually exclusive schedules); tail = val-load/tbl-read/D_800A5E60-store swap + FF000000 mask in $v1 vs reused $a1; reorders byte-identical; naming the mask made no difference; pinning it ", "best_draft": ".run/S79w/sonnet/func_8001BC6C.c", "binary": "main", "source": "S79 #9 sonnet agent", "residual": null, "passes_tried": null}
{"ts": "2026-09-04 21:19:39", "addr": "0x80020da4", "name": "func_80020DA4", "reach": null, "klass": null, "nins": null, "status": "near", "closeness": 2, "where_stuck": "Q12 3x3 rotation-matrix build (twin shape of ov_SC02_011:func_8018B76C). Prior 51->20->14->8; NEW lever: an address-taken s32 frame_pad[3] local induces the target's phantom 16-byte frame -> 2. Residual: mflo destination $t0 vs target $a2 (REGALLOC-PERM); pinning regresses to 79. Handed to permuter_ils.", "best_draft": ".run/S79w/sonnet/func_80020DA4.c", "binary": "main", "source": "S79 #9 sonnet agent", "residual": null, "passes_tried": null}
{"ts": "2026-09-04 21:19:39", "addr": "0x80023bf0", "name": "func_80023BF0", "reach": null, "klass": null, "nins": null, "status": "near", "closeness": 11, "where_stuck": "S80 permuter_ils 8x150s: 18 -> 11 (ADDRESSING: the 0xFFFFFF/0xFF000000 lui/ori materialisation moved across the sll/addu and the bne, .run/S79w/permuter/func_80023BF0.c \u2014 verify semantics before seeding); 90 -> 18 (rtu_match on src/800.c agrees: 18, so it is not TU plumbing). The whole residual was ONE register permutation; I read it with cc1 -dg plus gdb-on-cc1 breakpoints that dump allocno_n_refs/live_length and local-alloc's find_free_reg/post_mark_life grants, so every step was arithmetic on global.c:594 rather than guesswork. Four levers: (1) the 194-A fence in BOTH arms - a LOCAL REGRESSION (", "best_draft": "/home/musashi/bfm-decomp/.run/S79w/opus/func_80023BF0.c", "binary": "main", "source": "S79 #9 opus agent", "residual": null, "passes_tried": null}
{"ts": "2026-09-04 21:19:39", "addr": "0x8002fde8", "name": "func_8002FDE8", "reach": null, "klass": null, "nins": null, "status": "near", "closeness": 35, "where_stuck": "73/73, OPCODE-MIXED only; reproduced the prior ceiling 35 by fresh reconstruction (two \u00a7194-A AFTER-fences + D_800A46B0=1 reordered). Falsified: un-chaining the D_800A46D2[0] assign (-1 len), volatile on the final read (+2 len), a ref-boost asm on data (spills to $s3). Residual: gcc caches &D_800A46D2 in a callee-saved reg across the func_800419B0 call where the target rematerialises lui/lo at bot", "best_draft": ".run/S79w/sonnet/func_8002FDE8.c", "binary": "main", "source": "S79 #9 sonnet agent", "residual": null, "passes_tried": null}
{"ts": "2026-09-04 21:19:39", "addr": "0x80032a74", "name": "func_80032A74", "reach": null, "klass": null, "nins": null, "status": "near", "closeness": 1, "where_stuck": "422/422 instructions, frame 0x78 exact, every immediate/stack offset/branch target exact, all 27 symbols audited against the target's own relocation lines (law 1c). Sole residual is idx 244 `lh` vs `lhu`. I proved WHY it is a wall rather than re-grinding it: `extendhisi2` is a force_not_mem EXPAND, so an orphan (the 8 bytes the 0x78 frame needs at sp+0x48) can only be minted by a 3-way movhi+ashl+", "best_draft": "/home/musashi/bfm-decomp/.run/S79w/opus/func_80032A74.c", "binary": "main", "source": "S79 #9 opus agent", "residual": null, "passes_tried": null}
{"ts": "2026-09-04 21:19:39", "addr": "0x80038698", "name": "func_80038698", "reach": null, "klass": null, "nins": null, "status": "near", "closeness": 11, "where_stuck": "S80 permuter_ils best 11 (seed 11); Plateau 11 reconfirmed with fresh levers: operand-order swap and block-scoping of the two-byte-BE combine temps INERT; \u00a7197-C statement split reproduces 11 (LO-first) or regresses to 17 (HI-first); a zero-byte re-tie on hi fixes the a3[7]/a3[8] load order but costs an andi 0xffff (nonzero-bits proof lost) -> 33-39. A sched1 DAG-priority / local-alloc self-coalesce residual recurring at three byte-", "best_draft": ".run/S79w/sonnet/func_80038698.c", "binary": "main", "source": "S79 #9 sonnet agent", "residual": null, "passes_tried": null}
{"ts": "2026-09-04 21:19:39", "addr": "0x800391d4", "name": "func_800391D4", "reach": null, "klass": null, "nins": null, "status": "near", "closeness": 3, "where_stuck": "75/75 instructions (exact length), only residual is a 3-insn SCHEDULE-REORDER (off=0 vs arg1's sll/sra pair rotated) classified bucket=permuter. Cracked the 4-prior-attempt wall (best prior closeness 64, LENGTH-DRIFT+1) via register-pin i=$7 to kill combine_givs on D_80073140[i], a 2D-array decl D_80073140[][1] (cookbook SS164-26) to stop move_movables hoisting the address instead of folding it in", "best_draft": "/home/musashi/bfm-decomp/.run/S79w/sonnet/func_800391D4.c", "binary": "main", "source": "S79 #9 sonnet agent", "residual": null, "passes_tried": null}
{"ts": "2026-09-04 21:19:39", "addr": "0x80039308", "name": "func_80039308", "reach": null, "klass": null, "nins": null, "status": "near", "closeness": 34, "where_stuck": "115 -> 34 at exact length 518. The dominant defect in the prior draft was one local shared between both arms of `if (b3)` (tb/tmp/off/i/p/idx): each merge made one long live range, a tiny allocno priority and a late hard reg, where the target clearly has separate pseudos \u2014 splitting them in the right direction (arm-1 `tbl`/`tmp2`, else-arm `j` plus REUSING arm-1's `r`/`idx1` for the identical inli", "best_draft": "/home/musashi/bfm-decomp/.run/S79w/opus/func_80039308.c", "binary": "main", "source": "S79 #9 opus agent", "residual": null, "passes_tried": null}
{"ts": "2026-09-04 21:19:39", "addr": "0x80039b20", "name": "func_80039B20", "reach": null, "klass": null, "nins": null, "status": "near", "closeness": 7, "where_stuck": "S80 permuter_ils best 7 (seed 7); 79/79; the 7-entry rotation around the redundant D_80073140[i] re-read (target schedules it right after the D_800C7D20 load, cc1 at its use). Four new restructurings inert or worse (plain pointer -> 10; naming the first read no change; volatile second read no change; &=/|= swap -> 30). \u00a7461 plateau: list-scheduler tie-break (LUID/priority).", "best_draft": ".run/S79w/sonnet/func_80039B20.c", "binary": "main", "source": "S79 #9 sonnet agent", "residual": null, "passes_tried": null}
{"ts": "2026-09-04 21:19:39", "addr": "0x80039dec", "name": "func_80039DEC", "reach": null, "klass": null, "nins": null, "status": "near", "closeness": 2, "where_stuck": "S80 permuter_ils best 2 (seed 9); 74/74 exact length match, OPCODE-MIXED. Key levers that moved the residual from the seed's 74-vs-72-length structural failure down to 9: (1) K&R old-style definition for a2 (s16 a2 in the identifier-declaration form) reproduces the target's in-place sll/sra-16 arg-register cast + its addu $a3,$a2,zero raw-preserve, which no ANSI (s16)-cast or s32-typed spelling ever produced; (2) forward-goto bloc", "best_draft": "/home/musashi/bfm-decomp/.run/S79w/sonnet/func_80039DEC.c", "binary": "main", "source": "S79 #9 sonnet agent", "residual": null, "passes_tried": null}
{"ts": "2026-09-04 21:19:39", "addr": "0x800cf3e8", "name": "func_800CF3E8", "reach": null, "klass": null, "nins": null, "status": "near", "closeness": 54, "where_stuck": "Recovered the S74 vW body (closeness 256) and drove it to 54 at the exact length 469/469, with all four block sizes exact (19/113/114/223), segment 0 byte-perfect, and all 20 symbols plus their relocation counts identical to the target; rtu_match in the real TU reproduces 54 with no declaration conflict, so this is a real-TU-clean NEAR, not a standalone artefact. The decisive new lever is that zer", "best_draft": "/home/musashi/bfm-decomp/.run/S79w/opus/func_800CF3E8.c", "binary": "md_MAIN_003", "source": "S79 #9 opus agent", "residual": null, "passes_tried": null}
{"ts": "2026-09-04 21:19:39", "addr": "0x80185810", "name": "func_80185810", "reach": null, "klass": null, "nins": null, "status": "near", "closeness": 37, "where_stuck": "C-vs-hand-asm decided first: this is compiler-emitted C, not hand assembly \u2014 regular gcc-2.7.2 -O2 prologue/epilogue (frame 0x80, $s0-$s4+$ra at 0x68..0x7C), if/else diamonds with `j` over the else arm, jal+delay-slot calls, load-delay nops, and every COP2 op arriving through the same PsyQ gte_* inline-asm macros the matched neighbours in this TU already use; splat's 'Handwritten function' banner ", "best_draft": "/home/musashi/bfm-decomp/.run/S79w/opus/func_80185810.c", "binary": "ov_SC03_105", "source": "S79 #9 opus agent", "residual": null, "passes_tried": null}
{"ts": "2026-09-04 21:19:39", "addr": "0x8017df28", "name": "func_8017DF28", "reach": null, "klass": null, "nins": null, "status": "near", "closeness": 2, "where_stuck": "S80 permuter_ils 8x150s: waypoint '1' replaced the addiu $s2,$sp,0x10 with sw zero,48(sp) (semantically divergent, R14) -> closeness stays 2; 119/119; single SCHEDULE residual: addiu $s2,sp,0x10 sits in the jal's delay slot vs the target's bnez slot \u2014 expand_block_move's copy_addr_to_reg pseudo for mtx=D_800AE620 is cse-reused for both later &mtx args (gcc-2.7.2-map cse_expr.md [A23-2]/\u00a7H). Field-wise copy regresses to 117 (a real loop); the \u00a7H diamond cse-reset is a byte-identical no-op (no 2-predecessor merge to exploit). Fifth RTL-ve", "best_draft": ".run/S79w/sonnet/func_8017DF28.c", "binary": "ov_SC06_022", "source": "S79 #9 sonnet agent", "residual": null, "passes_tried": null}
{"ts": "2026-09-04 21:19:39", "addr": "0x8017dc80", "name": "func_8017DC80", "reach": null, "klass": null, "nins": null, "status": "near", "closeness": 84, "where_stuck": "The splat \"Handwritten function\" tag is wrong \u2014 this is ordinary gcc-2.7.2 -O2 C, and the TU's \"~20 drafts plateaued at LENGTH-DRIFT/-33\" wall was simply the GTE macros being undefined and compiling to implicit `jal`s (the card's prior body has that exact defect). Draft is now 346/346 instructions with the exact 0x70 frame, exact stack offsets, and the 9 callee-saved allocations (r=$s4 c=$s2 va=$s", "best_draft": "/home/musashi/bfm-decomp/.run/S79w/opus/func_8017DC80.c", "binary": "ov_SC07_002", "source": "S79 #9 opus agent", "residual": null, "passes_tried": null}
{"ts": "2026-09-05 10:57:02", "addr": "0x800cd674", "name": "func_800CD674", "reach": null, "klass": "REGALLOC-PERM", "nins": 174, "status": "near", "closeness": 2, "where_stuck": "$a3<->$t1 across two masked prim pointers (one shared local can be only one; splitting = +1 pseudo displacing two hoisted constants, 31); SPRT-with-tpage family, \u00a7364 mirror (non-struct field stores). Inert: pin order (8 perms), assignment placement (6), volatile index, p+=0x18 spellings, u8* cursor, every pin subset. NEXT: permuter_ils on the pinned seed (\u00a7494 recipe)", "best_draft": ".run/P32/t3/opus/func_800CD674.c", "binary": "md_MAIN_009", "source": "P32-T3 one Opus agent 30-70min; \u00a7500-C; report .run/P32/t3/reports/", "residual": null, "passes_tried": null}
{"ts": "2026-09-05 10:57:03", "addr": "0x8001bc6c", "name": "func_8001BC6C", "reach": null, "klass": "REGALLOC-PERM", "nins": 69, "status": "near", "closeness": 6, "where_stuck": "$v0<->$v1 swap across the six OT-chain insns: local-alloc qty_compare priority one span unit (base 2/2=1.0 > index 8/9=0.889); needs one fewer insn between the lhu and addu at sched1; color must stay pinned $5 (-18 without). 28->6 via P_TAG bitfield RMW + named inner term + emitted-order statements. NEXT: permuter_ils on the pinned seed (\u00a7494)", "best_draft": ".run/P32/t3/opus/func_8001BC6C.c", "binary": "main", "source": "P32-T3 one Opus agent 30-70min; \u00a7500-C; report .run/P32/t3/reports/", "residual": null, "passes_tried": null}
{"ts": "2026-09-05 10:57:03", "addr": "0x800cd92c", "name": "func_800CD92C", "reach": null, "klass": "SCHED", "nins": 247, "status": "near", "closeness": 15, "where_stuck": "map \u00a7S7 prologue WEAVE: the {sw,lui,ori} groups for 0xE100008D/8F land after the 9-insn li block instead of before \u2014 the \u00a717 pins reproduce the ALLOCATION but the hoist happens in sched2. Same SPRT family as func_800CD674 (\u00a7364 mirror levers applied)", "best_draft": ".run/P32/t3/opus/func_800CD92C.c", "binary": "md_MAIN_009", "source": "P32-T3 one Opus agent 30-70min; \u00a7500-C; report .run/P32/t3/reports/", "residual": null, "passes_tried": null}
{"ts": "2026-09-05 10:57:04", "addr": "0x80039308", "name": "func_80039308", "reach": null, "klass": "REGALLOC", "nins": 518, "status": "near", "closeness": 17, "where_stuck": "sched2 + cross-block regalloc: preheader 49/50 swap, un-spellable addu $a2,$a0,$zero (every p=r form cse-propagated), a temp on $t0 vs $s7, and 11 insns of one alias fact (2nd D_80073140[j] load cannot schedule above the D_800C7D20 store from C; /s unlock costs the address allocation, net 20-24). 34->17 via s16 b4 widening copy + dead-local identity sweep (.run/P32/t3/restored/sweep_func_80039308.py) + $2 pin. permuter_ils --klass REGALLOC 2x150s: no gain", "best_draft": ".run/P32/t3/opus/func_80039308.c", "binary": "main", "source": "P32-T3 one Opus agent 30-70min; \u00a7500-C; report .run/P32/t3/reports/", "residual": null, "passes_tried": null}
{"ts": "2026-09-05 10:57:04", "addr": "0x800cf3e8", "name": "func_800CF3E8", "reach": null, "klass": "ALIAS", "nins": 469, "status": "near", "closeness": 27, "where_stuck": "ONE cause: the pinned-base alias basin (\u00a7500-D1) in the p5/p6 tail; blocks 1-2 byte-exact (idx 0-361). 54->27 via blk2 constant birth order + birthing-boost local w60 + \u00a7194-A fence relocation. Inert: all 9 pins load-bearing (+5..+1409), asm position x7, h6 hoist 32x2, tag reshape, P_TAG ADDPRIM, array p6 stores, ~92k annealed variants. Untested: an unpinned alias of p6 for the tag load alone (ONE Opus second look allowed)", "best_draft": ".run/P32/t3/opus/func_800CF3E8.c", "binary": "md_MAIN_003", "source": "P32-T3 one Opus agent 30-70min; \u00a7500-C; report .run/P32/t3/reports/", "residual": null, "passes_tried": null}
{"ts": "2026-09-05 10:57:04", "addr": "0x80185810", "name": "func_80185810", "reach": null, "klass": "SCHED", "nins": 489, "status": "near", "closeness": 35, "where_stuck": "[permuter] 4 emission windows (see report .run/P32/t3/reports/func_80185810__opus__*.md); exact length, rtu-clean", "best_draft": ".run/P32/t3/opus/func_80185810.c", "binary": "ov_SC03_105", "source": "P32-T3 one Opus agent 30-70min; \u00a7500-C; report .run/P32/t3/reports/", "residual": null, "passes_tried": null}
{"ts": "2026-09-05 10:57:05", "addr": "0x8017dc80", "name": "func_8017DC80", "reach": null, "klass": "FRAME", "nins": 346, "status": "near", "closeness": 46, "where_stuck": "the historic -33 LENGTH wall CLOSED (GTE macros must be REAL macros \u2014 the TU house block; the splat Handwritten tag is wrong): 346/346, exact 0x70 frame + 9 callee-saved. Residual: reload-slot frame + the la $a0 slot; cse1 unifies OT index and n<4 across func_80010A08(8) (\u00a7500-D2 zero-byte asm retire)", "best_draft": ".run/P32/t3/opus/func_8017DC80.c", "binary": "ov_SC07_002", "source": "P32-T3 one Opus agent 30-70min; \u00a7500-C; report .run/P32/t3/reports/", "residual": null, "passes_tried": null}
{"ts": "2026-09-05 10:57:05", "addr": "0x800cf408", "name": "func_800CF408", "reach": null, "klass": "SCHED", "nins": 178, "status": "near", "closeness": 49, "where_stuck": "[permuter] 3 hunks: two prologue sched2 slots, an mlo/mhi allocno tie, a 3-insn block-2 head hoist. Two LENGTH-bearing pins found (tp $17 shared by 0xE1000087/97 = the 6th callee-saved; ob $10 fixes the $t1/$t2/$t3 rotation, 56->49). \u00a7351 family (func_8001212C -O0 / func_8017DD04 -O2 exemplars)", "best_draft": ".run/P32/t3/opus/func_800CF408.c", "binary": "md_MAIN_007", "source": "P32-T3 one Opus agent 30-70min; \u00a7500-C; report .run/P32/t3/reports/", "residual": null, "passes_tried": null}
{"ts": "2026-09-05 10:57:06", "addr": "0x800cf6d0", "name": "func_800CF6D0", "reach": null, "klass": "SCHED", "nins": 249, "status": "near", "closeness": 137, "where_stuck": "sched1 rank_for_schedule last-insn-CLASS tie (every store priority 2, equal refs; QImode stores grouped, loads floated, HImode after \u2014 5 of 6 blocks) + $t1<->$t3 local-alloc swap of the two masks. 249/249 exact length only with tpage-before-len field order (19 swept). Inert at 137: pins on tpage constants/masks, asm re-ties, volatile/memory fences, /s-denial on any store subset, *0x4000 vs <<14, p++ vs p+0x18, | swap. decomp-permuter 122 was semantically wrong (R63)", "best_draft": ".run/P32/t3/opus/func_800CF6D0.c", "binary": "md_MAIN_007", "source": "P32-T3 one Opus agent 30-70min; \u00a7500-C; report .run/P32/t3/reports/", "residual": null, "passes_tried": null}
+15 -17
View File
@@ -2,24 +2,22 @@
> Generated by `tools/backlog.py render` from `.run/backlog.jsonl`. These are functions the Phase-21 automation got **close** on but did NOT byte-match. The whole-binary byte-gate is the sole arbiter (G3/P9): **byte-matches bank and are NOT listed here** — only genuine near-misses/blockers are. Ranked by hand-session priority: **reach** (×N propagation leverage) → **closeness** (match_one mismatch count, lower = closer) → **size**. Each row's `best_draft` is the closest C the machine reached — resume from there.
**Open near-misses:** 17 · by status {'near': 15, 'failed': 2} · by class {None: 17}
**Open near-misses:** 15 · by status {'near': 14, 'failed': 1} · by class {None: 6, 'REGALLOC-PERM': 2, 'SCHED': 4, 'REGALLOC': 1, 'ALIAS': 1, 'FRAME': 1}
| # | addr | reach | class | nins | status | closeness | where it stuck | best draft |
|--:|------|------:|-------|-----:|--------|----------:|----------------|------------|
| 1 | func_80032A74 | None | | None | near | 1 | 422/422 instructions, frame 0x78 exact, every immediate/stack offset/branch target exact, all 27 symbols audited against the target's own relocation lines (law 1c). Sole residual is idx 244 `lh` vs `lhu`. I proved WHY it is a wall rather than re-grinding it: `extendhisi2` is a force_not_mem EXPAND, so an orphan (the 8 bytes the 0x78 frame needs at sp+0x48) can only be minted by a 3-way movhi+ashl+ | `/home/musashi/bfm-decomp/.run/S79w/opus/func_80032A74.c` |
| 2 | func_80020DA4 | None | | None | near | 2 | Q12 3x3 rotation-matrix build (twin shape of ov_SC02_011:func_8018B76C). Prior 51->20->14->8; NEW lever: an address-taken s32 frame_pad[3] local induces the target's phantom 16-byte frame -> 2. Residual: mflo destination $t0 vs target $a2 (REGALLOC-PERM); pinning regresses to 79. Handed to permuter_ils. | `.run/S79w/sonnet/func_80020DA4.c` |
| 3 | func_80039DEC | None | | None | near | 2 | S80 permuter_ils best 2 (seed 9); 74/74 exact length match, OPCODE-MIXED. Key levers that moved the residual from the seed's 74-vs-72-length structural failure down to 9: (1) K&R old-style definition for a2 (s16 a2 in the identifier-declaration form) reproduces the target's in-place sll/sra-16 arg-register cast + its addu $a3,$a2,zero raw-preserve, which no ANSI (s16)-cast or s32-typed spelling ever produced; (2) forward-goto bloc | `/home/musashi/bfm-decomp/.run/S79w/sonnet/func_80039DEC.c` |
| 4 | func_8017DF28 | None | | None | near | 2 | S80 permuter_ils 8x150s: waypoint '1' replaced the addiu $s2,$sp,0x10 with sw zero,48(sp) (semantically divergent, R14) -> closeness stays 2; 119/119; single SCHEDULE residual: addiu $s2,sp,0x10 sits in the jal's delay slot vs the target's bnez slot — expand_block_move's copy_addr_to_reg pseudo for mtx=D_800AE620 is cse-reused for both later &mtx args (gcc-2.7.2-map cse_expr.md [A23-2]/§H). Field-wise copy regresses to 117 (a real loop); the §H diamond cse-reset is a byte-identical no-op (no 2-predecessor merge to exploit). Fifth RTL-ve | `.run/S79w/sonnet/func_8017DF28.c` |
| 5 | func_800391D4 | None | | None | near | 3 | 75/75 instructions (exact length), only residual is a 3-insn SCHEDULE-REORDER (off=0 vs arg1's sll/sra pair rotated) classified bucket=permuter. Cracked the 4-prior-attempt wall (best prior closeness 64, LENGTH-DRIFT+1) via register-pin i=$7 to kill combine_givs on D_80073140[i], a 2D-array decl D_80073140[][1] (cookbook SS164-26) to stop move_movables hoisting the address instead of folding it in | `/home/musashi/bfm-decomp/.run/S79w/sonnet/func_800391D4.c` |
| 6 | func_80039B20 | None | | None | near | 7 | S80 permuter_ils best 7 (seed 7); 79/79; the 7-entry rotation around the redundant D_80073140[i] re-read (target schedules it right after the D_800C7D20 load, cc1 at its use). Four new restructurings inert or worse (plain pointer -> 10; naming the first read no change; volatile second read no change; &=//= swap -> 30). §461 plateau: list-scheduler tie-break (LUID/priority). | `.run/S79w/sonnet/func_80039B20.c` |
| 7 | func_80023BF0 | None | | None | near | 11 | S80 permuter_ils 8x150s: 18 -> 11 (ADDRESSING: the 0xFFFFFF/0xFF000000 lui/ori materialisation moved across the sll/addu and the bne, .run/S79w/permuter/func_80023BF0.c — verify semantics before seeding); 90 -> 18 (rtu_match on src/800.c agrees: 18, so it is not TU plumbing). The whole residual was ONE register permutation; I read it with cc1 -dg plus gdb-on-cc1 breakpoints that dump allocno_n_refs/live_length and local-alloc's find_free_reg/post_mark_life grants, so every step was arithmetic on global.c:594 rather than guesswork. Four levers: (1) the 194-A fence in BOTH arms - a LOCAL REGRESSION ( | `/home/musashi/bfm-decomp/.run/S79w/opus/func_80023BF0.c` |
| 8 | func_80038698 | None | | None | near | 11 | S80 permuter_ils best 11 (seed 11); Plateau 11 reconfirmed with fresh levers: operand-order swap and block-scoping of the two-byte-BE combine temps INERT; §197-C statement split reproduces 11 (LO-first) or regresses to 17 (HI-first); a zero-byte re-tie on hi fixes the a3[7]/a3[8] load order but costs an andi 0xffff (nonzero-bits proof lost) -> 33-39. A sched1 DAG-priority / local-alloc self-coalesce residual recurring at three byte- | `.run/S79w/sonnet/func_80038698.c` |
| 9 | func_8001BC6C | None | | None | near | 28 | Reproduced the documented best (28, two prior attempts): head cluster = sched1 birthing-boost hoisting the a1<<16/0x64000000 colour partial ahead of four lhu's regardless of statement order (prior RTL dumps: two mutually exclusive schedules); tail = val-load/tbl-read/D_800A5E60-store swap + FF000000 mask in $v1 vs reused $a1; reorders byte-identical; naming the mask made no difference; pinning it | `.run/S79w/sonnet/func_8001BC6C.c` |
| 10 | func_80039308 | None | | None | near | 34 | 115 -> 34 at exact length 518. The dominant defect in the prior draft was one local shared between both arms of `if (b3)` (tb/tmp/off/i/p/idx): each merge made one long live range, a tiny allocno priority and a late hard reg, where the target clearly has separate pseudos — splitting them in the right direction (arm-1 `tbl`/`tmp2`, else-arm `j` plus REUSING arm-1's `r`/`idx1` for the identical inli | `/home/musashi/bfm-decomp/.run/S79w/opus/func_80039308.c` |
| 11 | func_8002FDE8 | None | | None | near | 35 | 73/73, OPCODE-MIXED only; reproduced the prior ceiling 35 by fresh reconstruction (two §194-A AFTER-fences + D_800A46B0=1 reordered). Falsified: un-chaining the D_800A46D2[0] assign (-1 len), volatile on the final read (+2 len), a ref-boost asm on data (spills to $s3). Residual: gcc caches &D_800A46D2 in a callee-saved reg across the func_800419B0 call where the target rematerialises lui/lo at bot | `.run/S79w/sonnet/func_8002FDE8.c` |
| 12 | func_80185810 | None | | None | near | 37 | C-vs-hand-asm decided first: this is compiler-emitted C, not hand assembly — regular gcc-2.7.2 -O2 prologue/epilogue (frame 0x80, $s0-$s4+$ra at 0x68..0x7C), if/else diamonds with `j` over the else arm, jal+delay-slot calls, load-delay nops, and every COP2 op arriving through the same PsyQ gte_* inline-asm macros the matched neighbours in this TU already use; splat's 'Handwritten function' banner | `/home/musashi/bfm-decomp/.run/S79w/opus/func_80185810.c` |
| 13 | func_80015B6C | None | | None | near | 44 | 120/120; prologue + most of block1 exact. Residual = two documented walls (6 prior attempts): a 6-ins v0/v1 swap in the D_800B9A02*20 index calc (pinning the load to $2 inert) + sched1 hoisting the xa=x corner copy one slot across the block1/block2 boundary (memory clobber does not stop a pure-register move). Per-block pins (m24=$5, mFF=$7, one=$8, tag/tag2/tag3) + opaque-copy barriers on xa/ya: 8 | `.run/S79w/sonnet/func_80015B6C.c` |
| 14 | func_800CF3E8 | None | | None | near | 54 | Recovered the S74 vW body (closeness 256) and drove it to 54 at the exact length 469/469, with all four block sizes exact (19/113/114/223), segment 0 byte-perfect, and all 20 symbols plus their relocation counts identical to the target; rtu_match in the real TU reproduces 54 with no declaration conflict, so this is a real-TU-clean NEAR, not a standalone artefact. The decisive new lever is that zer | `/home/musashi/bfm-decomp/.run/S79w/opus/func_800CF3E8.c` |
| 15 | func_8017DC80 | None | | None | near | 84 | The splat "Handwritten function" tag is wrong — this is ordinary gcc-2.7.2 -O2 C, and the TU's "~20 drafts plateaued at LENGTH-DRIFT/-33" wall was simply the GTE macros being undefined and compiling to implicit `jal`s (the card's prior body has that exact defect). Draft is now 346/346 instructions with the exact 0x70 frame, exact stack offsets, and the 9 callee-saved allocations (r=$s4 c=$s2 va=$s | `/home/musashi/bfm-decomp/.run/S79w/opus/func_8017DC80.c` |
| 16 | func_800D06E8 | None | | None | failed | | resolver CC1 (real-TU rtu_match, 20260825-233820): .run/resolver/work/resident__func_800D06E8/c0/rtu/func_800D06E8/t.c:1770: conflicting types for `Struct80078E78' | `.run/wave_ch/shard62/func_800D06E8.c` |
| 17 | func_80062144 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | |
| 2 | func_800CD674 | None | REGALLOC-PERM | 174 | near | 2 | $a3<->$t1 across two masked prim pointers (one shared local can be only one; splitting = +1 pseudo displacing two hoisted constants, 31); SPRT-with-tpage family, §364 mirror (non-struct field stores). Inert: pin order (8 perms), assignment placement (6), volatile index, p+=0x18 spellings, u8* cursor, every pin subset. NEXT: permuter_ils on the pinned seed (§494 recipe) | `.run/P32/t3/opus/func_800CD674.c` |
| 3 | func_80020DA4 | None | | None | near | 2 | Q12 3x3 rotation-matrix build (twin shape of ov_SC02_011:func_8018B76C). Prior 51->20->14->8; NEW lever: an address-taken s32 frame_pad[3] local induces the target's phantom 16-byte frame -> 2. Residual: mflo destination $t0 vs target $a2 (REGALLOC-PERM); pinning regresses to 79. Handed to permuter_ils. | `.run/S79w/sonnet/func_80020DA4.c` |
| 4 | func_80039DEC | None | | None | near | 2 | S80 permuter_ils best 2 (seed 9); 74/74 exact length match, OPCODE-MIXED. Key levers that moved the residual from the seed's 74-vs-72-length structural failure down to 9: (1) K&R old-style definition for a2 (s16 a2 in the identifier-declaration form) reproduces the target's in-place sll/sra-16 arg-register cast + its addu $a3,$a2,zero raw-preserve, which no ANSI (s16)-cast or s32-typed spelling ever produced; (2) forward-goto bloc | `/home/musashi/bfm-decomp/.run/S79w/sonnet/func_80039DEC.c` |
| 5 | func_8017DF28 | None | | None | near | 2 | S80 permuter_ils 8x150s: waypoint '1' replaced the addiu $s2,$sp,0x10 with sw zero,48(sp) (semantically divergent, R14) -> closeness stays 2; 119/119; single SCHEDULE residual: addiu $s2,sp,0x10 sits in the jal's delay slot vs the target's bnez slot — expand_block_move's copy_addr_to_reg pseudo for mtx=D_800AE620 is cse-reused for both later &mtx args (gcc-2.7.2-map cse_expr.md [A23-2]/§H). Field-wise copy regresses to 117 (a real loop); the §H diamond cse-reset is a byte-identical no-op (no 2-predecessor merge to exploit). Fifth RTL-ve | `.run/S79w/sonnet/func_8017DF28.c` |
| 6 | func_800391D4 | None | | None | near | 3 | 75/75 instructions (exact length), only residual is a 3-insn SCHEDULE-REORDER (off=0 vs arg1's sll/sra pair rotated) classified bucket=permuter. Cracked the 4-prior-attempt wall (best prior closeness 64, LENGTH-DRIFT+1) via register-pin i=$7 to kill combine_givs on D_80073140[i], a 2D-array decl D_80073140[][1] (cookbook SS164-26) to stop move_movables hoisting the address instead of folding it in | `/home/musashi/bfm-decomp/.run/S79w/sonnet/func_800391D4.c` |
| 7 | func_8001BC6C | None | REGALLOC-PERM | 69 | near | 6 | $v0<->$v1 swap across the six OT-chain insns: local-alloc qty_compare priority one span unit (base 2/2=1.0 > index 8/9=0.889); needs one fewer insn between the lhu and addu at sched1; color must stay pinned $5 (-18 without). 28->6 via P_TAG bitfield RMW + named inner term + emitted-order statements. NEXT: permuter_ils on the pinned seed (§494) | `.run/P32/t3/opus/func_8001BC6C.c` |
| 8 | func_800CD92C | None | SCHED | 247 | near | 15 | map §S7 prologue WEAVE: the {sw,lui,ori} groups for 0xE100008D/8F land after the 9-insn li block instead of before — the §17 pins reproduce the ALLOCATION but the hoist happens in sched2. Same SPRT family as func_800CD674 (§364 mirror levers applied) | `.run/P32/t3/opus/func_800CD92C.c` |
| 9 | func_80039308 | None | REGALLOC | 518 | near | 17 | sched2 + cross-block regalloc: preheader 49/50 swap, un-spellable addu $a2,$a0,$zero (every p=r form cse-propagated), a temp on $t0 vs $s7, and 11 insns of one alias fact (2nd D_80073140[j] load cannot schedule above the D_800C7D20 store from C; /s unlock costs the address allocation, net 20-24). 34->17 via s16 b4 widening copy + dead-local identity sweep (.run/P32/t3/restored/sweep_func_80039308.py) + $2 pin. permuter_ils --klass REGALLOC 2x150s: no gain | `.run/P32/t3/opus/func_80039308.c` |
| 10 | func_800CF3E8 | None | ALIAS | 469 | near | 27 | ONE cause: the pinned-base alias basin (§500-D1) in the p5/p6 tail; blocks 1-2 byte-exact (idx 0-361). 54->27 via blk2 constant birth order + birthing-boost local w60 + §194-A fence relocation. Inert: all 9 pins load-bearing (+5..+1409), asm position x7, h6 hoist 32x2, tag reshape, P_TAG ADDPRIM, array p6 stores, ~92k annealed variants. Untested: an unpinned alias of p6 for the tag load alone (ONE Opus second look allowed) | `.run/P32/t3/opus/func_800CF3E8.c` |
| 11 | func_80185810 | None | SCHED | 489 | near | 35 | [permuter] 4 emission windows (see report .run/P32/t3/reports/func_80185810__opus__*.md); exact length, rtu-clean | `.run/P32/t3/opus/func_80185810.c` |
| 12 | func_8017DC80 | None | FRAME | 346 | near | 46 | the historic -33 LENGTH wall CLOSED (GTE macros must be REAL macros — the TU house block; the splat Handwritten tag is wrong): 346/346, exact 0x70 frame + 9 callee-saved. Residual: reload-slot frame + the la $a0 slot; cse1 unifies OT index and n<4 across func_80010A08(8) (§500-D2 zero-byte asm retire) | `.run/P32/t3/opus/func_8017DC80.c` |
| 13 | func_800CF408 | None | SCHED | 178 | near | 49 | [permuter] 3 hunks: two prologue sched2 slots, an mlo/mhi allocno tie, a 3-insn block-2 head hoist. Two LENGTH-bearing pins found (tp $17 shared by 0xE1000087/97 = the 6th callee-saved; ob $10 fixes the $t1/$t2/$t3 rotation, 56->49). §351 family (func_8001212C -O0 / func_8017DD04 -O2 exemplars) | `.run/P32/t3/opus/func_800CF408.c` |
| 14 | func_800CF6D0 | None | SCHED | 249 | near | 137 | sched1 rank_for_schedule last-insn-CLASS tie (every store priority 2, equal refs; QImode stores grouped, loads floated, HImode after — 5 of 6 blocks) + $t1<->$t3 local-alloc swap of the two masks. 249/249 exact length only with tpage-before-len field order (19 swept). Inert at 137: pins on tpage constants/masks, asm re-ties, volatile/memory fences, /s-denial on any store subset, *0x4000 vs <<14, p++ vs p+0x18, / swap. decomp-permuter 122 was semantically wrong (R63) | `.run/P32/t3/opus/func_800CF6D0.c` |
| 15 | func_80062144 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | |
+2 -2
View File
@@ -1,8 +1,8 @@
# Unmatched difficulty inventory (generated by tools/difficulty.py — harvest queue)
unmatched functions : 1268
unmatched functions : 1263
trivial (<=5 ins) : 267
non-jtbl leaves : 842 (best harvest targets)
non-jtbl leaves : 839 (best harvest targets)
jump-table funcs : 58 (deferred — need the rodata-island workflow, Task 2')
## Easiest 120 unmatched (score asc) — the work queue
+32
View File
@@ -37035,3 +37035,35 @@ AND re-verified by the successor with `rtu_match` in the real TU.
per completion. `masked_diff.py`'s per-PID probes live in `src/` and are visible to (and were deleted by) concurrent
agents — move them under `.run/` (tool fix candidate). A Haiku "cannot be influenced from C" verdict on an exact-ish
length structural residual is an ESCALATION signal, not a wall (1/1 closed by Sonnet in one pass).
**F. The queue (S83, session 491895ad, 2026-09-05 10:57–11:20 MDT): 17 Haiku rows → 17/17 MATCH, 28 banks in the session, and the
three integration classes a per-draft `rtu_match` cannot see.**
* **Yield.** The 17 rows the 20-cap had queued (13–25 ins, module code: md_MAIN_007 ×6, md_MAIN_009 ×8, md_SC03_054 ×2,
md_SC03_056 ×1) were launched at once from the staged prompts (`.run/P32/t3s3/prompts/<fn>.txt` = PROMPT_TEMPLATE +
two integration sentences) and ALL 17 reported MATCH, 43–57k tokens and 46–126 s each; the five twin-hinted rows took
the `family_remap`/twin-shape route. With the morning's 11 (the S82 MATCH-unbanked rows) that is **28 banks / ~2,800 ins
in one session, zero walls, zero escalations**; md_SC03_053, md_SC03_054 and md_SC03_056 reached 100% C; census 44 → 16
(7 pinned walls + 9 NEAR, 3,827 ins). Haiku is the right tier for this whole band (§500 A/B agree: 9/11 → 26/28).
* **Class 1 — two drafts of one TU spell one global differently.** `func_800CEEFC` (file-scope `extern s16 D_800B99E8`)
and `func_800CEF94` (block-scope `extern u16 D_800B99E8`) each MATCH alone — `rtu_match` splices ONE draft — and the
batch dies at cc1 (`conflicting types`). The byte-bearing spelling is the LOAD's (`u16` → `lhu`); a store of zero is
sign-blind. Law: **when N drafts land in one TU, the BUILD is the verdict, not N green rtu lines**; reconcile to the
spelling the bytes need. The session helper `.run/P32/t3s3/bank.sh` (verbatim grep → rtu ×N → splice ×N → ONE build →
sha vs `config/check` → commit only on green, tree left for diagnosis on red) is the shape a `rtu_match --batch` should take.
* **Class 2 — §304 self-defining rodata, three times in one wave.** `func_800CF068` (`.asciz "C:\TIMPACK\OPDEMO0.PAT"` as
`D_800CEDFC`), `func_800CD3B8`, `func_800CD520` (`D_800CD364`, eight `.word`s — the last two, `0x3C02800C 0x9442AE04`,
LOOK like code and are the island's trailing junk; reproduce them as words). Compile-only `rtu_match` is BLIND to it
(the undefined reference appears at LINK). The one prompt sentence — "if your target .s carries a `dlabel` block in
`.rodata`, DEFINE it at file scope from the bytes" — made both later agents do it unprompted; it is now in BRIEF.md.
A file-scope definition at the extern's position keeps the island order under the §303 derive stage (0x0/0x4 held).
* **Class 3 — a verdict is relative to the TU at verification time.** `func_800CD520`'s agent verified against a TU that
did not yet declare `func_8001AD38`; the sibling bank `func_800CD3B8` then added `extern void func_8001AD38(const char*)`
at file scope and the queued draft's `(void *)` prototype became a `conflicting types` CC1 FAIL. Re-verify EVERY draft in
the CURRENT TU immediately before splicing (bank.sh does), and re-spell to the TU (§376) — codegen is unchanged for a
pointer argument.
* **Class 4 — the md_* leading-island jtbl route is §303, not §260.** `jtbl_carve --probe md_SC03_054 --func func_801EF6D8`
refused the tail carve (seven tables at file 0x4..0xF0) and named the §260 island split; for an `md_*` module the
Makefile's `jtbl_rodata_pads --derive` stage already reproduces the pads at build time — splice, build, read the spec it
prints (`0,0t1,0t1,0t1,0t1,0t1,0`), no isolation, no yaml/`overlays.mk` line (R60 untouched). The probe's refusal text
now says so. Census `nins` counts `.s` LINES including rodata `.word`s (`func_800CD520` "22" = 14 code + 8 data);
`rtu_match`'s `MATCH (N ins)` is the code count — quote which one you mean.
+14 -14
View File
@@ -4,27 +4,27 @@
# cross-binary collapsible-byte leverage: docs/duplicates.cross.md.
# THREE progress metrics (all matter — see the labels):
FLEET fn-count byte-ident: 363140 / 363214 = 99.98% (REAL+LINKED+empties; FUNCTION-count, ×134-inflated — one crack counts per overlay)
FLEET instr-weighted : 13481963 / 13488497 = 100.0% (shipped .text across main + resident + 216 overlays; the decomp.dev-DISPLAY number)
FLEET distinct-code(uniq): 5810068 / 5816589 = 99.9% (90923/90984 unique fns; the DISTINCT-RE number)
MAIN game-code weighted : 39479 / 41534 = 95.1% (INCLUDED in the fleet numbers above since 2026-07-22 — roadmap §1 metrics contract; LINKED-excluding Ghidra sig dated 2026-08-05; boundaries INDEPENDENTLY VERIFIED since P31 S77 — `make sig-main-oracle` + `make audit-corpus`: 0 phantom, 0 truncated, 1 explained pad-tail)
(fleet EXCLUDING main, for continuity with pre-2026-07-22 readings: 13442484 / 13446963 = 100.0%)
FLEET fn-count byte-ident: 363181 / 363214 = 99.99% (REAL+LINKED+empties; FUNCTION-count, ×134-inflated — one crack counts per overlay)
FLEET instr-weighted : 13484324 / 13488497 = 100.0% (shipped .text across main + resident + 216 overlays; the decomp.dev-DISPLAY number)
FLEET distinct-code(uniq): 5812416 / 5816589 = 99.9% (90958/90984 unique fns; the DISTINCT-RE number)
MAIN game-code weighted : 40084 / 41534 = 96.5% (INCLUDED in the fleet numbers above since 2026-07-22 — roadmap §1 metrics contract; LINKED-excluding Ghidra sig dated 2026-08-05; boundaries INDEPENDENTLY VERIFIED since P31 S77 — `make sig-main-oracle` + `make audit-corpus`: 0 phantom, 0 truncated, 1 explained pad-tail)
(fleet EXCLUDING main, for continuity with pre-2026-07-22 readings: 13444240 / 13446963 = 100.0%)
FLEET REAL substantive : 360663 (of which dedup-shared 255632 via 2220 groups / 255708 instances)
FLEET REAL substantive : 360704 (of which dedup-shared 255632 via 2220 groups / 255708 instances)
FLEET LINKED PsyQ objs : 1256
FLEET NON_MATCHING : 0 (0 in any default build — G4)
FLEET INCLUDE_ASM stubs : 74
FLEET INCLUDE_ASM stubs : 33
FLEET matchable : 363214
| binary | REAL | shared | LINKED | byte-ident | matchable | byte-ident % |
|---|---:|---:|---:|---:|---:|---:|
| main | 777 | 2 | 1256 | 2079 | 2091 | 99.4% |
| resident | 142 | 0 | 0 | 144 | 145 | 99.3% |
| main | 782 | 2 | 1256 | 2084 | 2091 | 99.7% |
| resident | 143 | 0 | 0 | 145 | 145 | 100.0% |
| md_MAIN_001 | 11 | 0 | 0 | 11 | 11 | 100.0% |
| md_MAIN_003 | 57 | 0 | 0 | 63 | 64 | 98.4% |
| md_MAIN_007 | 0 | 0 | 0 | 0 | 19 | 0.0% |
| md_MAIN_007 | 11 | 0 | 0 | 11 | 19 | 57.9% |
| md_MAIN_008 | 6 | 0 | 0 | 6 | 6 | 100.0% |
| md_MAIN_009 | 0 | 0 | 0 | 1 | 12 | 8.3% |
| md_MAIN_009 | 1 | 0 | 0 | 2 | 12 | 16.7% |
| md_MAIN_011 | 20 | 0 | 0 | 21 | 21 | 100.0% |
| md_MAIN_013 | 16 | 0 | 0 | 16 | 16 | 100.0% |
| md_MAIN_014 | 12 | 0 | 0 | 13 | 13 | 100.0% |
@@ -62,9 +62,9 @@ FLEET matchable : 363214
| md_MAIN_046 | 38 | 0 | 0 | 39 | 39 | 100.0% |
| md_MAIN_047 | 11 | 0 | 0 | 12 | 12 | 100.0% |
| md_SC02_009 | 40 | 0 | 0 | 40 | 40 | 100.0% |
| md_SC03_053 | 0 | 0 | 0 | 0 | 15 | 0.0% |
| md_SC03_054 | 0 | 0 | 0 | 0 | 7 | 0.0% |
| md_SC03_056 | 0 | 0 | 0 | 0 | 4 | 0.0% |
| md_SC03_053 | 15 | 0 | 0 | 15 | 15 | 100.0% |
| md_SC03_054 | 5 | 0 | 0 | 5 | 7 | 71.4% |
| md_SC03_056 | 3 | 0 | 0 | 3 | 4 | 75.0% |
| md_SC03_073 | 28 | 10 | 0 | 28 | 28 | 100.0% |
| md_SC03_074 | 29 | 10 | 0 | 29 | 29 | 100.0% |
| md_SC03_075 | 41 | 10 | 0 | 41 | 41 | 100.0% |
+5 -5
View File
File diff suppressed because one or more lines are too long
+143 -199
View File
@@ -82,7 +82,7 @@ Scale estimate: 3–5 sessions.
the `resourceIdMap` sites) for a route producing global index 7 or 9; MCP (R29) only if the C is
insufficient. Outcome: a base, or the strengthened exclusion evidence. **Progress report after T2.**
- [ ] **T3 — one bounded crack pass, Opus agents, one per function** (xHigh orchestration — prompt R27):
**IN PROGRESS — checkpointed 2026-09-05 09:30 MDT (see the 🛑 block): 31/47 launched, 10 BANKED (1,063 ins, commits `commit:3923`..`commit:3931`), 10 more MATCH verified in the real TU awaiting the gate (1,049 ins) + 1 leaf-exact behind a TU decl, 9 NEAR at exact length, 17 Haiku rows still queued; the launching coordinator overflowed its context at 07:07Z. Census 44 stubs / 5,313 ins (`.run/P32/frontier_t3_checkpoint.json`).** Original brief:
**IN PROGRESS — 47/47 drafted, 38 BANKED (10 in the launching session + 28 in S83 = 2,111 + ~2,800 ins; commits `commit:3923`..`commit:3931`, `commit:3935`..`commit:3946`), 9 NEAR ledgered in the backlog, 0 FAIL outstanding; the 17 queued Haiku rows went 17/17 MATCH (S83). Census 16 stubs / 3,827 ins = 7 pinned walls + 9 NEAR (`.run/P32/frontier_t3s3_haiku.json`); md_SC03_053/054/056 100% C; resident 145/145. Remaining in T3: step 8 (bounded NEAR tail: permuter_ils ×2 + one Opus look) and the close (step 9). Earlier checkpoints: 09:30 / 10:01 MDT (the launching coordinator overflowed at 07:07Z; the S82 successor recovered 22 verdicts).** Original brief:
targets = `main:func_80023BF0` 11 · `func_80038698` 11 · `func_80039B20` 7 · `func_80039308` 34 ·
`func_80015B6C` 40 · `func_8002FDE8` 35 · `func_8001BC6C` 28 · `ov_SC03_105:func_80185810` 37 ·
`md_MAIN_003:func_800CF3E8` 54 · `ov_SC07_002:func_8017DC80` 84 · `resident:func_800D06E8` 344 (after a
@@ -120,6 +120,7 @@ cookbook before the next drafting step (R16/R30) · no `Co-Authored-By` trailer
needed for T0–T2b; if T2d needs it: `tools/ghidra_mcp_start.sh` → pause → Drew runs `/mcp` (R29) → G2 ping.
## Log
- 2026-09-05 10:10–11:25 MDT (S83, session 491895ad, xHigh, Fable 5.1) — **T3 steps 0–7 DONE: 28 banks, fleet R22 218/218 twice.** Preflight R22 218/218 rc 0 (`.run/P32/t3s3/r22_check.log`) → the 11 S82 MATCH rows banked: md_SC03_053 ×2 (`commit:3935` `commit:3936`, 100% C) · main ×2 via gate_main (`commit:3937`: "slate 2 -> 2 compatible … BANKED 2 … 143dbb89 BYTE-IDENTICAL") · md_SC03_054 func_801EF6D8 604+7 jtbls (`commit:3938`; `jtbl_carve --probe` refused the tail carve → §303 derive stage reproduced the island pads `0,0t1,0t1,0t1,0t1,0t1,0` with NO carve state change) · md_MAIN_007 ×6 after the byte-neutral func_800CF3B0 no-proto decl commit (`commit:3939`, `commit:3940`) — two integration classes on the way (same-TU s16/u16 spelling of D_800B99E8; §304 self-defining rodata D_800CEDFC). twin_rescan 33 open / 0 free; verbatim 5==5; **R22 `make clean && make extract-all && make check-all` → 217+main extracted, 218 passed / 0 failed, exits 0/0/0** (`.run/P32/t3s3/r22_full.log`, 10:41–10:46); tools-health OK. The 9 NEAR rows ledgered (`backlog_near.sh`; docs/backlog.md 15 open). **17 Haiku agents launched 10:57 from staged prompts (`.run/P32/t3s3/prompts/`), 17/17 MATCH by 11:15**, each re-verified with rtu_match in the CURRENT TU and banked by `bank.sh` (verbatim grep → rtu → splice → one build → sha → commit-on-green): md_MAIN_007 ×6 (`commit:3941` `commit:3942`), md_MAIN_009 ×8 (`commit:3943` `commit:3946` — func_800CD520 needed a §376 re-spell after a sibling bank added the file-scope prototype), md_SC03_054 ×2 (`commit:3944`, 100% C), md_SC03_056 ×1 (`commit:3945`, 100% C). twin_rescan 16 open / 0 free. Harvest: cookbook **§500-F** (the four integration classes), BRIEF.md §304 sentence, `jtbl_carve --probe` text, harvest_notes. Post-batch R22 (after all 28 banks): 217+main extracted, **218 passed / 0 failed, exits 0/0/0** (`.run/P32/t3s3/r22b_full.log`, 11:04–11:09).
- 2026-09-05 (successor session, later) — **Session-start protocol rewritten at Drew's direction (R64 candidate):** `phase-ends/DIGEST.md` created (every phase synopsis + every rule in full + the PROJECT_CONTEXT corrections + the doc map); CLAUDE.md load order = PROJECT_CONTEXT → DIGEST → the three most recent PhaseEnds → CURRENT_PHASE, ≈100k tokens, the 🛑 block replayed VERBATIM; Phase Boundary step 3b maintains the digest (P7); `phase-ends/README.md` + SETUP §7 updated; the two memories (`checkpoint-current-phase-before-pause`, `session-start-list-rules-in-full`) + MEMORY.md updated; `.run/P32/t3/PROMPT_TEMPLATE.md` saved (verbatim agent prompts). The 🛑 block below was REFRESHED to the verbatim-replay standard and SUPERSEDES the 09:30 block. Ratify R64 at PhaseEnd_Phase32.
- 2026-09-05 09:30 MDT — **T3 CHECKPOINT by the successor session (Max, Fable 5.1) after the launching session died.** The T3 coordinator (session c6a5fb71) banked 10 functions in 9 commits (T3 (1)–(9), 01:01–01:07 MDT) and then hit "Prompt is too long" at 01:07 MDT; 22 agent completions (07:07Z–08:04Z) arrived into a dead session. Recovered via the recorded route: `agent_verdicts.py` over the 31 task transcripts → `.run/P32/t3/verdicts.jsonl` (20 MATCH / 9 NEAR / 2 FAIL); every unbanked draft re-verified with `rtu_match` in its real TU (10 MATCH confirmed). **Instrument incident (R48 class):** one agent's tidy-up (`find .run/P32/t3/opus -maxdepth 1 -type f ! -name func_800CD674.c -exec mv {} _scratch/`, 07:52Z) had swept 11 sibling Opus deliverables — found in `_scratch/`, moved back, byte-verified at the reported closeness; `tools/agent_drafts_restore.py` (NEW — transcript replay) written as the fallback; `.gitignore` allowlist for `.run/P32/**` so the drafts/ledger/census are committed (R20). Harvest written IN-SESSION (R16/R30): cookbook **§500** (10 banked closers, 10 MATCH closers, 9 NEAR classes, two NEW mechanisms — the pinned-base alias basin and `#line`-equalised ASM_OPERANDS — and the process defects); `docs/wave-playbook.md` §S80 addendum-2 (per-function work dirs, JSON-only final message, the 20-agent cap, the recovery tools); `docs/accelerators.md` P32 T3; `docs/decision-log.md` P32 S82 (R31); SETUP row (R21). Read-only T4 pre-check results from the dead session preserved in the 🛑 block. Effort: this checkpoint at Max; **T3 resumes at xHigh** (R27).
- 2026-09-05 — gate 1 approved; T0 opened at HEAD `commit:3900`.
@@ -130,224 +131,167 @@ cookbook before the next drafting step (R16/R30) · no `Co-Authored-By` trailer
- 2026-09-05 — **T1a DONE — `resident:func_800D128C` BANKED (243 ins, byte-identical 8e17e02f, R22 213/213).** The stored S71 closeness-0 draft was byte-correct all along; the whole task was three instrument defects the resident (the fleet's one `common.h`-only, `--pre`-sandwich binary) exposed in overlay-only assumptions: (1) `jr_isolate_all` dropped a file-local typedef whose name engine_types.h also defines (§496 — fixed: provided types derived from the TU's own includes); (2) `jtbl_carve` regenerated `JTBL_INTERLEAVE` without the `--pre hdr.rodata.o` clause → extract refused → the gate linked a stale script and booked the byte-correct draft as DIFF; `harvest_verify` ignored that extract's rc (§498 — both fixed, R49/R61); (3) `interleave_check` read a `--pre` line as n=0 (false DRIFT; fixed). R38 then found two more stored MATCH bodies for T1b/T1c (see their rows). Effort stayed Max.
- 2026-09-05 — **T0 DONE.** Baseline reads all green (`.run/P32/t0_baseline.log`): `verbatim_check --strict` 5 bodies == 5 rows; `exclude_audit --assert-fresh` 8 entries, 8 WALL, 0 stale; `frontier_classify` → 21 rows = the S80 census exactly; `make tools-health` OK (sigs fresh, corpus(+resident), cdecl, audit-binaries 213/213, report lint+dedup, cookbook-index, split_indicator 213 OK); `make check-all` 213 passed / 0 failed, rc 0. Harness task list #1–#11 built (R28). NEXT = T1a.
## 🛑 SESSION CHECKPOINT — T3 MID-WAVE, REFRESHED (2026-09-05 10:01 MDT; written by the successor session e40106e1; SUPERSEDES the 09:30 block)
## 🛑 SESSION CHECKPOINT — T3 STEPS 0–7 DONE, STEP 8 NEXT (2026-09-05 11:30 MDT; written by session 491895ad "S83"; SUPERSEDES the 10:01 block)
### 0. How to use this block
You are a FRESH SESSION that has read `PROJECT_CONTEXT.md`, `phase-ends/DIGEST.md`, `PhaseEnd_Phase29/30/31.md` and this
file, and nothing else (CLAUDE.md protocol, R64 candidate). Replay this block verbatim into your chat, state phase / done /
NEXT / effort, list the rules from the digest, then WAIT for Drew. When he confirms, follow §5 in order. **Effort: xHigh
for T3 and T4** (R27 — Drew sets it; if the status line does not say xHigh, prompt before the first command); **Max only
for T5.** Drafter ladder Haiku ≤50 ins / Sonnet ≤120 / Opus >120; Fable only if an agent names a wall class the codegen
map lacks — STOP and prompt Drew first. No Workflow / Ultracode in T3: one Agent-tool subagent per function.
NEXT / effort, list the rules from the digest, then WAIT for Drew. When he confirms, follow §4 in order. **Effort: xHigh
for the rest of T3 and for T4** (R27 — Drew sets it; if the status line does not say xHigh, prompt before the first
command); **Max only for T5.** Fable only if a wall class the codegen map lacks appears — STOP and prompt Drew first. No
Workflow / Ultracode: one Agent-tool subagent per function where an agent is used at all.
### 1. Where we are
**Phase 32 — the last 21 + the parked 5 (short, kill-gated).** Gate 1 approved 2026-09-05 (Drew, plan mode, Max,
Fable 5.1); rules R44–R63 ratified then; R64 is a candidate (DIGEST §3). Tasks: **T0 ✓** `commit:3901` · **T1a ✓**
`commit:3902` `commit:3904` · **T1b ✓** `commit:3903` `commit:3906` `commit:3907` · **T1c ✓** `commit:3908` · **T2a ✓** `commit:3909`
· **T2b ✓** `commit:3911` `commit:3912` `commit:3913` `commit:3914` (fleet 213 → 218) · **T2c ✓** `commit:3917` `commit:3918`
`commit:3919` `commit:3920`, close `commit:3921` · **T2d not needed** · **T3 IN PROGRESS** (launch `commit:3922`; banks
`commit:3923` `commit:3924` `commit:3925` `commit:3926` `commit:3927` `commit:3928` `commit:3929` `commit:3930` `commit:3931`; the
successor's checkpoint `commit:3932` + the protocol commit = HEAD) · **T4, T5 pending.** Harness task list #1–#11 exists
(#9 = T3 in_progress). Fleet **218 binaries** (main + resident + 138 `ov_*` + 78 `md_*`). **Last full R22: 218/218 rc 0
at the T2c close** (`.run/P32/t2c/r22.log`); the 10 T3 banks each built byte-identical in their own binary but **no fleet
R22 has run since — §5 step 0 runs one before any new bank.** Non-ghidra tree clean at HEAD; the `ghidra/` churn
(`db.*.gbf`, `~index.*`, `*.prp`) is R23 restart-noise — never stage it. Unpushed commits at this writing: 32
(Drew pushes, R6).
**Phase 32 — the last 21 + the parked 5 (short, kill-gated).** Gate 1 approved 2026-09-05 (Drew, plan mode, Max, Fable 5.1);
R44–R63 ratified then; R64 is a candidate (DIGEST §3). Tasks: **T0 ✓** `commit:3901` · **T1a ✓** `commit:3902` `commit:3904` ·
**T1b ✓** `commit:3903` `commit:3906` `commit:3907` · **T1c ✓** `commit:3908` · **T2a ✓** `commit:3909` · **T2b ✓** `commit:3911`
`commit:3912` `commit:3913` `commit:3914` (fleet 213 → 218) · **T2c ✓** `commit:3917` `commit:3918` `commit:3919` `commit:3920`, close
`commit:3921` · **T2d not needed** · **T3 steps 0–7 ✓** (launch `commit:3922`; banks 1–9 `commit:3923` `commit:3924` `commit:3925`
`commit:3926` `commit:3927` `commit:3928` `commit:3929` `commit:3930` `commit:3931`; S82 checkpoints `commit:3932` `commit:3933` `commit:3934`;
S83 banks 10–37: `commit:3935` `commit:3936` `commit:3937` `commit:3938` `commit:3939`(plumbing) `commit:3940` `commit:3941` `commit:3942`
`commit:3943` `commit:3944` `commit:3945` `commit:3946`; the S83 checkpoint commit = HEAD) · **T3 step 8 (bounded NEAR tail) and
step 9 (close) pending · T4, T5 pending.** Harness task list #1–#12 exists (#6 §5.5 and #8 §5.7 in_progress at this writing;
#9 = step 8 next). Fleet **218 binaries** (main + resident + 138 `ov_*` + 78 `md_*`). **Last full R22: 218 passed / 0 failed,
exits 0/0/0 at 10:46 MDT** (`.run/P32/t3s3/r22_full.log`, BEFORE the 17 Haiku banks); **post-batch R22 (after all 28 S83
banks): **217+main extracted, 218 passed / 0 failed, exits 0/0/0 at 11:09 MDT**** (`.run/P32/t3s3/r22b_full.log`). tools-health OK at 10:57 (`.run/P32/t3s3/tools_health.log`).
Non-ghidra tree clean at HEAD; the `ghidra/` churn (`db.*.gbf`, `~index.*`, `*.prp`) is R23 restart-noise — never stage it.
Claude commits, Drew pushes (R6; ~45 unpushed at this writing).
### 2. What happened in the previous session (c6a5fb71, 2026-09-04 22:39 → 2026-09-05 01:07 MDT)
T0–T2c as logged above. T3: census 54 − 7 pinned walls = **47 targets** (`.run/P32/t3/targets.json`); packs built
(`claude_wave_packs`, 47/47 neighbours, 10 journal notes); brief `.run/P32/t3/BRIEF.md`, laws `.run/P32/t3/SYS.md`.
**20 drafters launched 00:53–00:55 MDT** (16 Opus: the 11 old near/far rows + resident `func_800D06E8` + the 4 largest new
bodies; 3 Sonnet; 1 Haiku), **27 Haiku rows queued** behind the harness's 20-concurrent cap; the launch was checkpointed
(`commit:3922`, 00:59). Ten queued rows were launched as slots freed (01:00–01:07). **Ten functions banked in nine commits
01:01–01:07** (list in §4). **At 01:07:15 MDT the coordinator hit "Prompt is too long"** (its context was ~95% full from
the whole day BEFORE the wave); the other **22 completions (01:07–02:04 MDT) arrived as notifications into a dead
session.** At 01:52 MDT one agent (func_800CD674's) tidied the SHARED `.run/P32/t3/opus/` with
`find .run/P32/t3/opus -maxdepth 1 -type f ! -name 'func_800CD674.c' -exec mv {} .run/P32/t3/opus/_scratch/ \;`, moving
**11 sibling deliverables** (the three agents that finished later wrote their finals afterwards and survived). Drew's last
message (09:04): "97% context. checkpoint for fresh session, have next session analyze the completed subagents results".
### 2. What S83 did (session 491895ad, 2026-09-05 10:10 → 11:30 MDT, xHigh, Fable 5.1)
Followed the 10:01 block's §5 in order. (0) Preflight: tree clean, verbatim 5==5, `make check-all` 218/218 rc 0. (1)–(4) The
11 S82 MATCH rows banked — each re-verified with `rtu_match` in the real TU first: md_SC03_053 `func_801EF734` 44 +
`func_801EF7E4` 72 (→ **100% C**); main `func_80015B6C` 120 + `func_8002FDE8` 73 via `gate_main` ("slate 2 -> 2 compatible,
0 dropped … BANKED 2 main functions -- 143dbb89 BYTE-IDENTICAL", `.run/P32/t3s3/gate/gate_main2.log`); md_SC03_054
`func_801EF6D8` 604 code ins + 7 jump tables — `jtbl_carve --probe` REFUSED the tail carve (tables in the §154-A leading
island 0x4..0xF0) and named §260, but for an `md_*` module **§303 applies: splice + build, the Makefile's `jtbl_rodata_pads
--derive` stage printed `0,0t1,0t1,0t1,0t1,0t1,0` and the sha held with NO carve-state change** (probe text amended);
md_MAIN_007: the byte-neutral no-proto decl commit for `func_800CF3B0` (`commit:3939`, sha unchanged) then six drafts — the
batch exposed two integration classes `rtu_match` cannot see (it splices ONE draft): same-TU `s16`/`u16` spellings of
`D_800B99E8` (fixed to the LOAD's `u16`), and §304 self-defining rodata (`D_800CEDFC` = `.asciz "C:\TIMPACK\OPDEMO0.PAT"`,
defined `const char[]` at file scope at the extern's position, `(void *)` cast at the call). (5) `twin_rescan` 33 open / 0
free; verbatim 5==5; **R22 `make clean && make extract-all && make check-all` → 217+main extracted, 218 passed / 0 failed,
exits 0/0/0**; `make tools-health` OK. (6) The 9 NEAR rows ledgered via `.run/P32/t3s3/backlog_near.sh` (docs/backlog.md 15
open). (7) The 17 queued Haiku rows dequeued, prompts staged (`.run/P32/t3s3/prompts/<fn>.txt` = PROMPT_TEMPLATE + two
integration sentences) and launched at 10:57 as 17 Agent-tool subagents (model haiku); **17/17 MATCH by 11:15** (43–57k
tokens, 46–126 s each); every verdict re-run by the coordinator with `rtu_match` in the CURRENT TU and banked with
`.run/P32/t3s3/bank.sh` (verbatim grep → rtu ×N → splice ×N → ONE build → sha vs `config/check` → commit only on green):
md_MAIN_007 ×6 → 2 open (both NEAR), md_MAIN_009 ×8 → 2 open (both NEAR; `func_800CD520` needed a §376 re-spell of
`func_8001AD38` to the TU's `(const char*)` after a sibling bank added the file-scope prototype), md_SC03_054 ×2 (→ **100%
C**), md_SC03_056 ×1 (→ **100% C**). `twin_rescan` 16 open / 0 free. **Harvest (R16/R30):** cookbook **§500-F** (yield +
the four integration classes), `.run/P32/t3/BRIEF.md` (the §304 sentence + exact-TU-spelling), `.run/P32/t3/harvest_notes.md`,
`tools/jtbl_carve.py` probe text (§303 for `md_*`), `.run/P32/t3/verdicts.jsonl` (+17 rows, `"session": "491895ad"`),
`.gitignore` allowlist for `.run/P32/t3s3/`. **Nothing under `config/` changed this session; `src/` changed only by the
banks listed above.**
### 3. What THIS session did (e40106e1, 2026-09-05 09:12 → 10:01 MDT, Max, Fable 5.1)
(a) Dumped the dead session's transcript (`~/.claude/projects/-home-musashi-bfm-decomp/c6a5fb71-….jsonl` → condensed text
with `tools/transcript_dump.py`, NEW) and saved **all 31 agents' full final reports** to `.run/P32/t3/reports/<fn>__<arm>__<id>.md`
(`tools/agent_reports.py`, NEW; tracked) — the levers, inert-lever lists, residual mechanisms and plumbing warnings behind
each verdict; read a row's report before banking or routing it. (b) **Rebuilt the verdict
ledger by the recorded route:** `.venv/bin/python tools/agent_verdicts.py /tmp/claude-1000/-home-musashi-bfm-decomp/
7beebba8-05e9-4d18-98ea-ce208f45370f/tasks/a*.output --append .run/P32/t3/verdicts.jsonl` → **31 rows: 20 MATCH / 9 NEAR /
2 FAIL** (pass ONLY `a*.output` — the `b*.output` files there are older sessions' tasks). (c) Found the swept deliverables
in `_scratch/`, moved the 9 missing ones back to `.run/P32/t3/opus/<fn>.c`, and **re-verified EVERY unbanked draft with
`rtu_match` in its real TU — every result equals the agent's verdict** (§4). (d) Wrote `tools/agent_drafts_restore.py`
(transcript replay of Write/Edit/cp/mv/heredoc ops; rebuilt 26/30 exactly — the 4 an agent had edited via shell after its
last Write were stale, so an on-disk copy always wins). (e) **Harvest (R16/R30): cookbook §500** (10 banked closers, 10
MATCH closers, the 9 NEAR classes with their inert-lever lists, two NEW mechanisms — the pinned-base-vs-pseudo-address
alias basin, `#line`-equalised ASM_OPERANDS for cross_jump — and the process defects), `docs/wave-playbook.md` §S80
addendum-2, `docs/accelerators.md` P32 T3, `docs/decision-log.md` P32 S82 (R31), `docs/SETUP.md` tool row (R21),
`docs/cookbook-index.md` regenerated (tools-health's `--check` is green), `.run/P32/t3/BRIEF.md` output contract amended
(final message = the JSON line ONLY; scratch only under `.run/P32/t3/work/<fn>/`; never `find`/`rm`/`mv` in a shared
dir). (f) `.gitignore` allowlist for `.run/P32/**` (drafts, ledger, census jsons, BRIEF/SYS/LAUNCHED/targets/pending/
harvest_notes/PROMPT_TEMPLATE, `restored/sweep_*.py`) → committed **`commit:3932`**. (g) **Drew-directed protocol change:**
`phase-ends/DIGEST.md` created (every phase synopsis, every rule in full, the PROJECT_CONTEXT corrections, the doc map);
CLAUDE.md session-start rewritten (≈100k-token budget: PROJECT_CONTEXT → DIGEST → last 3 PhaseEnds → CURRENT_PHASE; rules in
full from the digest; the 🛑 block replayed VERBATIM); Phase Boundary step 3b (append the phase to the digest, P7);
`phase-ends/README.md`; SETUP §7 pointer; the memories `checkpoint-current-phase-before-pause` and
`session-start-list-rules-in-full` + MEMORY.md; **R64 candidate** — ratify at PhaseEnd_Phase32. (h)
`.run/P32/t3/PROMPT_TEMPLATE.md` — the verbatim agent prompts (Haiku plain / Haiku with a twin hint / the Sonnet
escalation / Opus / Sonnet). (i) Rebuilt the harness task list; wrote this block. **Nothing under `src/` or `config/`
changed this session.**
### 4. Census — 44 stubs / 5,313 ins (`.run/P32/frontier_t3_checkpoint.json`), every row with its state and draft path
### 3. Census — 16 stubs / 3,827 ins (`.run/P32/frontier_t3s3_haiku.json`; 7 pinned walls + 9 NEAR, 0 undrafted)
| binary | stubs · ins | rows |
|---|---|---|
| main | 9 · 1,643 | **MATCH-unbanked:** func_80015B6C 120 (`.run/P32/t3/opus/func_80015B6C.c`, TU `src/800.c`) · func_8002FDE8 73 (`.run/P32/t3/opus/func_8002FDE8.c`, TU `src/800_b_2.c`) · **NEAR:** func_80039308 518 → 17 (`…/opus/func_80039308.c`, TU `src/800_c.c`) · func_8001BC6C 69 → 6 (`…/opus/func_8001BC6C.c`, TU `src/800.c`) · **WALLS (pinned in `config/wave_exclude.txt`, T4):** func_80011380 192 (boot −O0; `.run/m3/opus/func_80011380.c` 6-off) · func_80032A74 (800_b_2) · func_80020DA4 100 (800; `.run/S79w/sonnet/func_80020DA4.c` 2-off) · func_80039DEC (800_c) · func_800391D4 (800_c) |
| md_MAIN_003 | 1 · 469 | NEAR func_800CF3E8 469 → 27 (`…/opus/func_800CF3E8.c`) |
| md_MAIN_007 | 14 · 701 | **MATCH-unbanked (Haiku, `.run/P32/t3/haiku/<fn>.c`):** func_800CF148 33 · func_800CF2BC 32 · func_800CEEFC 25 · func_800CEF94 25 · func_800CF068 21 · **leaf-exact behind the TU decl:** func_800CF3B0 22 (`src/md_MAIN_007/md_MAIN_007.c:91` = `extern void func_800CF3B0(void *a0, void *a1, void *a2);`, the BANKED `func_800CF390` at `:94` calls it with 3 args; the real signature is `s32 (void)`) · **NEAR:** func_800CF6D0 249 → 137 · func_800CF408 178 → 49 (`…/opus/`) · **QUEUED Haiku:** func_800CF0F4 21 · func_800CF1CC 21 · func_800CF268 21 · func_800CF33C 21 · func_800CF220 19 (twin ov_SC03_001:0x80182860 d=4) · func_800CEFF8 13 (twin ov_SC02_005:0x801865d0 d=3) |
| md_MAIN_009 | 10 · 603 | **NEAR:** func_800CD92C 247 → 15 · func_800CD674 174 → 2 (`…/opus/`) · **QUEUED Haiku:** func_800CD464 25 · func_800CD558 24 · func_800CD408 23 · func_800CD5B8 23 · func_800CD4C8 22 · func_800CD520 22 (twin ov_SC03_011:0x8017dbd8 d=3) · func_800CD614 22 · func_800CD3B8 21 |
| md_SC03_053 | 2 · 116 | **MATCH-unbanked (Sonnet):** func_801EF734 44 (`.run/P32/t3/sonnet/func_801EF734.c`) · func_801EF7E4 72 (`…/sonnet/func_801EF7E4.c`) → the module reaches 100% C |
| md_SC03_054 | 3 · 698 | **MATCH-unbanked:** func_801EF6D8 — targets.json nins 663 = 604 code ins + six jump tables (B-CARVE; `…/opus/func_801EF6D8.c`) · **QUEUED Haiku:** func_801F0048 20 · func_801F00C8 15 (twin md_SC03_053:0x801ef9dc d=5 — `family_remap` refused, reloc-count 1≠2, hand-adapt) |
| md_SC03_056 | 1 · 23 | QUEUED Haiku func_801CBB80 23 (twin ov_SC06_025:0x8017ded8 d=5) |
| ov_SC03_105 | 2 · 595 | NEAR func_80185810 489 → 35 (`…/opus/func_80185810.c`) · WALL (pinned) func_801834A4 106 (`.run/S71_gate14/ov_SC03_105*/func_801834A4.c` 6-off) |
| ov_SC06_022 | 1 · 119 | WALL (pinned) func_8017DF28 119 (`.run/S79w/sonnet/func_8017DF28.c` 2-off) |
| ov_SC07_002 | 1 · 346 | NEAR func_8017DC80 346 → 46 (`…/opus/func_8017DC80.c`) |
| main | 7 · 1,450 | **NEAR (backlog):** func_80039308 518 → 17 (`.run/P32/t3/opus/func_80039308.c`, TU `src/800_c.c`) · func_8001BC6C 69 → 6 REGALLOC-PERM `$v0↔$v1` (`…/opus/func_8001BC6C.c`, TU `src/800.c`) · **WALLS (pinned, `config/wave_exclude.txt`, T4):** func_80011380 192 (boot −O0; `.run/m3/opus/func_80011380.c` DIFF 6) · func_80032A74 422 (800_b_2; census closeness 1 from a stored draft — the S79w draft is a CC1 FAIL in the TU, §376 re-probe first) · func_80020DA4 100 (`.run/S79w/sonnet/func_80020DA4.c` DIFF 2) · func_80039DEC 74 (S79w drafts CC1 FAIL — def-side decl, §495) · func_800391D4 75 (S79w sonnet draft CC1 FAIL `conflicting types for D_80073140`) |
| md_MAIN_009 | 2 · 421 | NEAR func_800CD674 174 → 2 REGALLOC-PERM `$a3↔$t1` (`…/opus/func_800CD674.c`) · func_800CD92C 247 → 15 §S7 prologue weave (`…/opus/func_800CD92C.c`) |
| md_MAIN_007 | 2 · 427 | NEAR func_800CF408 178 → 49 [permuter] 3 hunks · func_800CF6D0 249 → 137 sched1 class tie (`…/opus/`) |
| md_MAIN_003 | 1 · 469 | NEAR func_800CF3E8 469 → 27 pinned-base alias basin §500-D1 (`…/opus/func_800CF3E8.c`) — the ONE untested lever: an unpinned alias of `p6` for the tag load alone |
| ov_SC03_105 | 2 · 595 | NEAR func_80185810 489 → 35 [permuter] 4 emission windows (`…/opus/func_80185810.c`) · WALL (pinned) func_801834A4 106 (`.run/S71_gate14/ov_SC03_105*/func_801834A4.c` DIFF 6) |
| ov_SC06_022 | 1 · 119 | WALL (pinned) func_8017DF28 119 (`.run/S79w/sonnet/func_8017DF28.c` DIFF 2) |
| ov_SC07_002 | 1 · 346 | NEAR func_8017DC80 346 → 46 reload-slot frame + `la $a0` slot (`…/opus/func_8017DC80.c`) |
**FAIL rows:** haiku func_801EF734 (47 vs 44 — superseded by the Sonnet MATCH); haiku func_800CF3B0 (leaf-exact 22/22; the
TU decl). **The 10 BANKED in T3 so far (1,063 ins):** md_SC03_054 func_801EF558 96 (`commit:3923`, sha `06bd73df…`) ·
md_SC03_053 func_801EF49C 49 (`commit:3924`), func_801EF6B0 33 + func_801EF95C 20 (`commit:3927`), func_801EF624 35
(`commit:3928`) (all `c0848f30…`) · resident func_800D06E8 344 (`commit:3925`, `8e17e02f…` — the resident is 145/145 C; its
`jtbl_80113FA4` carved by `jtbl_carve --func`) · main func_80039B20 79 (`commit:3926`), func_80023BF0 281 (`commit:3930`),
func_80038698 74 (`commit:3931`) (all `143dbb89…` via `gate_main`) · md_MAIN_007 func_800CEE2C 52 (`commit:3929`, `2ff702b6…`).
Modules at 100% C after S83: resident (145/145), md_SC03_053, md_SC03_054, md_SC03_056. **The 38 T3 banks:** the 10 of the
launching session (§500-A) + S83's 28 (`git log --oneline commit:3934..HEAD`). Backlog: `docs/backlog.md` 15 open near-misses
(the 9 NEAR rows carry class · closeness · best draft · cost "1 Opus agent, 30–70 min", R41).
### 5. NEXT — the T3 resume order (each step's evidence quoted; R42: commit before the next command that can touch src/)
### 4. NEXT — in order (R42: commit before the next command that can touch src/; a bank that lands goes through bank.sh)
0. **Preflight:** `git status --short | grep -v ghidra/` (empty) · `.venv/bin/python tools/verbatim_check.py --strict` (5 == 5)
· `make check-all` → **218 passed, 0 failed of 218, exit 0** (R22 baseline before any bank; if any binary is red, fix the
baseline first — R56) · read cookbook §500-B for each MATCH's plumbing note.
1. **md_SC03_053 ×2 (Sonnet MATCH):** for `func_801EF734` then `func_801EF7E4`: `.venv/bin/python tools/rtu_match.py <fn>
--split md_SC03_053 --source md_SC03_053 --c .run/P32/t3/sonnet/<fn>.c --asm-subdir asm/md_SC03_053/nonmatchings/md_SC03_053
--work .run/P32/t3/verify/<fn>` (expect `MATCH (N ins)`) → splice the draft over the one `INCLUDE_ASM("asm/md_SC03_053/
nonmatchings/md_SC03_053", <fn>);` line (python: assert the line occurs once, replace with the draft text) → `make build
BINARY=md_SC03_053 -j8` (read `${PIPESTATUS[0]}`, R53) → `sha1sum build/md_SC03_053/md_SC03_053` == `config/check.md_SC03_053.sha`
(`c0848f30…`) → `git add src/md_SC03_053/md_SC03_053.c` + commit ("T3 (10) …") → **md_SC03_053 is 100% C.**
2. **main ×2 (Opus MATCH):** write `.run/P32/t3/gate/slate_main2.json` = `[{"fn":"func_80015B6C","draft":"/home/musashi/
bfm-decomp/.run/P32/t3/opus/func_80015B6C.c"},{"fn":"func_8002FDE8","draft":"/home/musashi/bfm-decomp/.run/P32/t3/opus/
func_8002FDE8.c"}]` (ABSOLUTE paths) → `.venv/bin/python tools/gate_main.py .run/P32/t3/gate/slate_main2.json --apply`
(a clean main rebuild; read the "slate 2 -> N compatible" and the "BANKED n main functions -- 143dbb89… BYTE-IDENTICAL"
lines; on a drop, read the BODY/TABLE/PLUMBING/MIXED verdict) → `git add src/800.c src/800_b_2.c` + commit. Keep
`func_8002FDE8`'s block-scope `extern s16 D_800A46D2;` — the scalar spelling IS the lever (§500-B).
3. **md_SC03_054 `func_801EF6D8` (604 + six jtbls):** `.venv/bin/python tools/jtbl_carve.py md_SC03_054 --func func_801EF6D8`
(as T3 (3) did for the resident) → `make extract BINARY=md_SC03_054` (EXIT CODE — a failed extract leaves a stale linker
script, §498) → splice → `make build BINARY=md_SC03_054 -j8` → sha `06bd73df…` → `.venv/bin/python tools/pads_audit.py
md_SC03_054` + `tools/interleave_check.py md_SC03_054` (R60) → commit the carve state (ONLY this binary's `config/overlays.mk`
lines + `config/splat.md_SC03_054.yaml`) + the bank. Alternative: `tools/parallel_gate.py … --r22` (it carves). The draft's
rtu_match MATCH was re-confirmed against the CURRENT TU after `func_801EF558` landed.
4. **md_MAIN_007 (six):** FIRST the byte-neutral plumbing commit (the S77 law): `src/md_MAIN_007/md_MAIN_007.c:91`
`extern void func_800CF3B0(void *a0, void *a1, void *a2);` → `extern s32 func_800CF3B0();` (no-proto, the §376
`fix_arity_callers` class — keeps `func_800CF390`'s 3-arg call legal and admits the `s32 (void)` definition) → `make build
BINARY=md_MAIN_007 -j8` → sha `2ff702b6…` UNCHANGED → commit. (If the sha moves, keep the 3-param decl with `s32` return
and define `func_800CF3B0` with three unused pointer params instead — the gate decides.) Then `rtu_match` each of
func_800CEEFC, func_800CEF94, func_800CF068, func_800CF148 (drop its block-scope `s32 func_800CF3B0(void)` redeclaration
only if cc1 objects), func_800CF2BC, func_800CF3B0 → splice → one build → sha → commit (per bank, or per verified same-TU
batch).
5. **After 1–4:** `.venv/bin/python tools/twin_rescan.py` (a bank changes the twin graph — the queued md_MAIN_009 rows may
gain twins; it prints ready `family_remap` command lines) · `verbatim_check --strict` · R22 `make clean && make
extract-all && make check-all` → quote **218 passed / 0 failed, exit 0** (R58) · `make tools-health` → OK · refresh this
block + commit. Expected census after 1–4: **33 stubs / ~4,250 ins.**
6. **Ledger the 9 NEAR** in the backlog (`grep -n add_argument tools/backlog.py` first — the dead session's query on keys
`addr`/`fn` returned nothing for the wall rows, so confirm the row schema; then `tools/backlog.py log …` per row with
closeness · class · best draft · cost "1 Opus agent, 30–70 min" (R41) · `tools/backlog.py render`): func_800CD674 2
REGALLOC-PERM `$a3↔$t1` · func_8001BC6C 6 REGALLOC-PERM `$v0↔$v1` (qty_compare one span unit; pinned seed → §494
`permuter_ils … --cycles 8 --secs 150 --j 3`) · func_800CD92C 15 §S7 prologue weave · func_80039308 17 sched2 +
cross-block regalloc · func_800CF3E8 27 pinned-base alias basin (§500-D1) · func_80185810 35 [permuter] 4 emission
windows · func_8017DC80 46 reload-slot frame + `la $a0` slot · func_800CF408 49 [permuter] 3 hunks · func_800CF6D0 137
sched1 rank_for_schedule class tie.
7. **Launch the 17 queued Haiku rows** from `.run/P32/t3/pending_launch.txt` with the prompts in
`.run/P32/t3/PROMPT_TEMPLATE.md` (substitute fn / binary / nins / sub / asm / tu / twin; keep the arm; the packs are at
`.run/P32/t3/packs/<fn>.md` — regenerate with `claude_wave_packs` if missing): **dequeue the row (`sed -i '/^<binary>
<fn> /d' pending_launch.txt`) BEFORE launching; ≤20 concurrent** ("Concurrent subagent limit reached. … Do not retry" =
wait for a completion); each agent's final message is now the JSON line only (BRIEF amended). Per result, never in bulk:
`grep -c '\.ent\|\.word' <draft>` (0) → your OWN `rtu_match` → splice/build/sha → commit → `twin_rescan`. A Haiku FAIL
whose note names a C-structure residual at near-exact length → escalate to Sonnet with the shape hint (the
PROMPT_TEMPLATE has the escalation prompt); a TU `conflicting types` → the §376 plumbing commit first.
8. **The NEAR tail (bounded):** permuter on the two REGALLOC-PERM seeds (func_800CD674, func_8001BC6C) via the repaired
`permuter_ils`; ONE Opus second look only where §500 names an untested lever (func_800CF3E8: an unpinned alias of `p6`
for the tag load alone). Plateaus stay in the backlog. **Kill gate stands:** a session with no bank and no new verdict
ends T3.
9. **T3 close:** any new idiom from steps 7–8 → cookbook §500 addendum (R16/R30) + `harvest_notes.md`; regenerate
`docs/progress.fleet.md` (`make report`); then **T4**.
· `make check-all` → **218 passed, 0 failed of 218, exit 0** (the R22 baseline before any bank; if any binary is red, fix the baseline first — R56).
1. **T3 step 8 — the bounded NEAR tail (xHigh; the kill gate stands: no bank + no new verdict ends T3):**
(a) `permuter_ils` on the two REGALLOC-PERM seeds, §494 recipe, run in the background with logs (R55):
`.venv/bin/python tools/permuter_ils.py func_800CD674 --draft .run/P32/t3/opus/func_800CD674.c --asm-subdir
asm/md_MAIN_009/nonmatchings/md_MAIN_009 --klass REGALLOC --cycles 8 --secs 150 --j 3 > .run/P32/t3s3/ils_func_800CD674.log 2>&1`
and the same for `func_8001BC6C` (`--draft .run/P32/t3/opus/func_8001BC6C.c --asm-subdir asm/nonmatchings/800` — confirm the
asm dir from `corpus.stubs('main')`/`targets.json` `asm` field before running). **Read every reported score's DIFF before
calling it a closeness (R63)**; a 0 → `rtu_match` in the real TU → bank.sh (main: gate_main slate instead).
(b) ONE Opus second look at `func_800CF3E8` (md_MAIN_003, 469 → 27) with the single untested lever named in §500-D1 /
the backlog row (an unpinned alias of `p6` for the tag load alone); prompt shape = PROMPT_TEMPLATE's Opus row +
`.run/P32/t3/reports/func_800CF3E8__opus__*.md` as the prior; draft path `.run/P32/t3/opus/func_800CF3E8_s83.c` (never
overwrite the ledger's best draft); the agent's final message is the JSON line only. Plateaus stay in the backlog
(`tools/backlog.py log … --closeness N`), each with its cost (R41).
2. **T3 step 9 — close:** any new idiom → cookbook §500-G (R16/R30) + `harvest_notes.md`; `make report` (regenerates
`docs/progress*.md`, `docs/difficulty.md`); `frontier_classify --json .run/P32/frontier_t3_close.json`; refresh this
block; commit; **progress report to Drew**; mark harness #8/#9/#10 done.
3. **T4 (xHigh, no drafting)** — §6 below. 4. **T5 (Max, Tier 1 — prompt R27; WAIT for gate 2)** — §6 below.
### 6. Files, tools, exact invocations, gotchas
- **`.run/P32/t3/` (git-tracked unless noted):** `reports/<fn>__<arm>__<id>.md` (**the 31 agents' full final reports — start
here for any row**) · `BRIEF.md` (agent brief, amended) · `SYS.md` (the laws) · `targets.json`
(47 rows: name, binary, nins, sub, asm, tu, klass, closeness, model, twin, twin_d) · `pending_launch.txt` (17 rows
`binary fn nins [twin=…]`) · `verdicts.jsonl` (31) · `LAUNCHED.md` (recovery route + status) · `harvest_notes.md` ·
`PROMPT_TEMPLATE.md` · `{opus,sonnet,haiku}/func_*.c` (the deliverables: 12 + 4 + 11) · `restored/sweep_func_80039308.py`
(the dead-local sweeper an agent wrote — a tool candidate) · untracked: `packs/<fn>.md` (47; regenerable), `verify/` +
`verify_*.txt` + `gate/slate_*.json` (the coordinator's own checks), `work/` `rtu/` (agent scratch), `opus/_scratch/`
`opus/x/` `opus/var/` `opus/_h/` `opus/_wk_8017DC80/` `opus/sweep/` (agent leftovers — ignorable), `restored/*.c`
(transcript replays — inferior to the on-disk finals). Census jsons: `.run/P32/frontier_*.json` (tracked).
- **Transcripts:** `~/.claude/projects/-home-musashi-bfm-decomp/c6a5fb71-f2ae-4846-a4a9-a43a4c1c3496/subagents/agent-<id>.jsonl`
(31; `/tmp/claude-1000/-home-musashi-bfm-decomp/7beebba8-05e9-4d18-98ea-ce208f45370f/tasks/<id>.output` are symlinks to
them; the id→function map is the `file` field of each `verdicts.jsonl` row). Never cat one; use `agent_verdicts.py` (JSON verdicts) /
`agent_reports.py` (full final reports) / `agent_drafts_restore.py` (rebuild a missing draft) / `transcript_dump.py` (a
session's own transcript).
### 5. Files, tools, exact invocations, gotchas
- **`.run/P32/t3s3/` (S83; tracked: `*.sh *.py *.log *.txt prompts/ gate/*.json gate/*.log`; untracked: `verify*/` compile
dirs):** `splice.py <tu> <asmdir> <fn> <draft>` (asserts the INCLUDE_ASM line occurs once, replaces it with the draft) ·
`bank.sh <binary> <tu> <asmdir> <arm> "<commit title>" fn…` (the per-TU bank chain; refuses on `__asm__`/`.word` in a
draft, any rtu non-MATCH, build rc≠0 or sha mismatch, and never commits on red — the tree is left for diagnosis) ·
`backlog_near.sh` (the 9 rows, re-runnable) · `prompts/<fn>.txt` (the 17 launched prompts) · `gate/slate_main2.json` +
`gate/gate_main2.log` · `r22_*.log` / `r22b_*.log` / `tools_health.log` / `build_*.log` / `bank_*.log` / `twin_rescan*.log`.
- **`.run/P32/t3/`:** `verdicts.jsonl` now 48 rows (31 + 17; the S83 rows carry `"session": "491895ad"`) · `haiku/` 28 drafts
(all banked) · `opus/` 12 (2 banked S83: func_80015B6C, func_8002FDE8, func_801EF6D8 → 3 banked; 9 NEAR) · `sonnet/` 4 (all
banked) · `reports/` (the 31 S82 reports + 3 Haiku reports) · `pending_launch.txt` (EMPTY — all 17 launched 10:57) ·
`BRIEF.md` (amended: §304 + exact-TU-spelling) · `PROMPT_TEMPLATE.md` · `harvest_notes.md`.
- **Transcripts of the 17 S83 agents:** `~/.claude/projects/-home-musashi-bfm-decomp/491895ad-3c84-4037-b04f-bf7e5ee16a0c/subagents/agent-<id>.jsonl`
(`/tmp/claude-1000/-home-musashi-bfm-decomp/491895ad-3c84-4037-b04f-bf7e5ee16a0c/tasks/a*.output` are symlinks; the
`b*.output` there are this session's Bash jobs). All 17 verdicts are already in `verdicts.jsonl`; `agent_verdicts.py
<tasks>/a*.output` rebuilds them; `agent_reports.py` saves the full reports.
- **`rtu_match`:** `--split <sub> --source <binary> --c <draft> --asm-subdir <asmdir> --work <dir>`; **main adds `--tu
src/<sub>.c`**; `<sub>`/`<asmdir>`/`<tu>` come from `targets.json` or `corpus.stubs(<binary>)` (`asm_path`, `path`). The
verdict line starts `MATCH`/`DIFF`/`CC1`. It compiles the WHOLE TU with the draft spliced — the gate predictor.
- **Build check:** `make build BINARY=<b> -j8 2>&1 | grep -v "warning\|In function" | tail -2; rc=${PIPESTATUS[0]}` then
`sha1sum build/<b>/<b>` vs `config/check.<b>.sha`. R53: exit code, never the file (a failed build leaves the old binary).
- **`gate_main`:** the ONLY way to gate main (incremental builds false-pass/false-diff on main, R43/§S52); slate = JSON list
of `{fn, draft(ABSOLUTE)}`; `--apply` keeps the splice on success; then `git add` the TU + commit.
- **Carves:** `jtbl_carve.py <b> --func <fn>` → extract (rc) → build; `pads_audit.py <b>`, `interleave_check.py <b>`; a
DIFF that starts at the first code byte is a stale linker script, never the draft (§498).
- **Gotchas that bit this week:** `set -o pipefail` + `grep -c` exits 1 on zero matches (a "no ghidra staged" guard
aborted a good commit) · never `cd` inside a compound command (the cwd persists into later calls) · `masked_diff.py`
leaves `src/.masked_diff_probe.<pid>.c` while running — they are other agents' live probes, never delete them · the
`.run/P32/t3/<arm>/` dirs are SHARED (agents are now told not to touch siblings) · the SessionStart hook launches a
headless Ghidra MCP server (`.run/ghidra-mcp.log`) — T3/T4 never use it · `agent_verdicts.py` over a whole `tasks/` dir
picks up older sessions' outputs — pass `a*.output`.
src/<sub>.c`**; verdict line `MATCH (N ins)` / `DIFF` / `CC1 FAIL` (compile-only: BLIND to link-time §304 and to cross-draft
same-TU conflicts — the BUILD is the batch verdict). **Build check:** `make build BINARY=<b> -j8`, read the EXIT CODE (R53;
a failed build leaves the OLD binary in place — the printed sha is then stale). **`gate_main`:** the ONLY way to gate main
(slate JSON of `{fn, draft(ABSOLUTE)}`, `--apply`). **Carves:** for `md_*` island tables do NOT carve (§303 — the derive
stage prints the pad spec in the build log); for overlays `jtbl_carve.py <b> --func <fn>` → `make extract` (rc) → build →
`pads_audit`/`interleave_check` (R60).
- **Gotchas that bit today:** two drafts of one TU can each MATCH alone and fail together (spelling / §304 / a prototype a
sibling bank introduced) — always rtu in the CURRENT TU right before splicing (bank.sh does) · `backlog.py`/`corpus.stubs`
raise `CorpusError … NO .s on disk` while `make extract-all` is running (the instrument's environment, not a defect — R40)
· census `nins` counts `.s` lines incl. rodata `.word`s · agents read `asm/` — never launch them while a `make clean &&
make extract-all` is in flight · the harness cap is 20 concurrent subagents · never `cd` inside a compound command ·
`set -o pipefail` + `grep -c` exits 1 on zero matches.
### 7. Carried context for T4 and T5
**T4 (xHigh, no drafting) — the dead session's read-only pre-check (07:00Z):** `exclude_audit --assert-fresh`: 7 entries,
7 WALL, 0 stale. Best drafts re-run in their REAL TU: `main:func_80011380` `.run/m3/opus/func_80011380.c` DIFF 6 (the
### 6. Carried context for T4 and T5
**T4 (xHigh, no drafting) — the dead session's read-only pre-check (07:00Z) still stands:** `exclude_audit --assert-fresh`: 7
entries, 7 WALL, 0 stale. Best drafts in their REAL TU: `main:func_80011380` `.run/m3/opus/func_80011380.c` DIFF 6 (the
ledger's `.run/backlog_drafts/func_80011380.c` is MISSING — R62 path fix) · `main:func_80032A74` `.run/S79w/opus/
func_80032A74.c` **CC1 FAIL** (`redefinition of struct Slot`/`Slot`, `conflicting types for A12`/`B12` vs
`src/800_shared.h:68/95` — §376 plumbing, re-probe before a final verdict, R40) · `main:func_80020DA4` `.run/S79w/sonnet/
func_80020DA4.c` DIFF 2 · `main:func_80039DEC` both `.run/S79w/{permuter,sonnet}/func_80039DEC.c` **CC1 FAIL**
(`conflicting types for func_80039DEC` — a def-side declaration wall, §495: fix the TU's own decl first) ·
`main:func_800391D4` `.run/S79w/sonnet/func_800391D4.c` **CC1 FAIL** (`conflicting types for D_80073140` at t.c:3310 vs
:2622) · `ov_SC06_022:func_8017DF28` DIFF 2 · `ov_SC03_105:func_801834A4` S71_gate14 variants DIFF 6 (the ledger's
`.run/backlog_drafts/func_801834A4.c` is MISSING). Deliverables: each of the 7 rows PROVED vs CANDIDATE with a current
citation + an instrument-exonerated bounded attempt (R40), `exclude_audit --write`, `backlog.py render`, the wall table
into this file, cookbook §501 if a verdict changes, decision-log, accelerators. A T3 idiom naming a wall's mechanism
`src/800_shared.h:68/95` — §376 plumbing, re-probe before a final verdict, R40; the census prints closeness 1 for it from a
stored masked diff) · `main:func_80020DA4` `.run/S79w/sonnet/func_80020DA4.c` DIFF 2 · `main:func_80039DEC` both
`.run/S79w/{permuter,sonnet}/func_80039DEC.c` **CC1 FAIL** (`conflicting types for func_80039DEC` — def-side declaration,
§495: fix the TU's own decl first) · `main:func_800391D4` `.run/S79w/sonnet/func_800391D4.c` **CC1 FAIL** (`conflicting
types for D_80073140` at t.c:3310 vs :2622) · `ov_SC06_022:func_8017DF28` DIFF 2 · `ov_SC03_105:func_801834A4` S71_gate14
variants DIFF 6 (ledger `.run/backlog_drafts/func_801834A4.c` MISSING). Deliverables: each of the 7 rows PROVED vs
CANDIDATE with a current citation + an instrument-exonerated bounded attempt (R40 — the three CC1-FAIL rows get their §376
plumbing fixed byte-neutrally and are re-probed BEFORE any verdict), `exclude_audit --write`, `backlog.py render`, the wall
table into this file, cookbook §501 if a verdict changes, decision-log, accelerators. A T3 idiom naming a wall's mechanism
re-opens that row (one bounded attempt, permuter first).
**T5 (Max, Tier 1 — prompt R27; WAIT for gate 2):** P7 checkbox walk over every task above; milestone demo = R22 fleet
218/218 · `make tools-health` OK · `verbatim_check --strict` 5==5 · the final census (`tools/frontier_classify.py --json`)
· the wall ledger · parked-5 dispositions via `make audit-disc` (UNCLAIMED 0 of 220 at T2c) · `make report` all three
metrics + main `143dbb89…` WITH and WITHOUT the SDK object dirs (`.run/obj40`, `.run/obj42`; fresh-extract fallback) ·
corrected denominators (main game-code 41,556 — the 22-ins Ghidra-boundary gap; the fleet denominator grew by the five
modules' ~2,600 ins at T2b). Then `PhaseEnd_Phase32.md` (+ Roadmap delta: P33 = verify + flip; + Plain-English Recap; +
the rules table incl. R64) → **append the P32 synopsis + rules to `phase-ends/DIGEST.md` (step 3b)** → `git mv
CURRENT_PHASE.md phase-ends/logs/Phase32.md` (R19) → R23 MCP stop if it ran → leave both uncommitted for Drew (R6) → 🛑.
218/218 · `make tools-health` OK · `verbatim_check --strict` 5==5 · the final census (`tools/frontier_classify.py --json`) ·
the wall ledger · parked-5 dispositions via `make audit-disc` (UNCLAIMED 0 of 220 at T2c) · `make report` all three metrics +
main `143dbb89…` WITH and WITHOUT the SDK object dirs (`.run/obj40`, `.run/obj42`; fresh-extract fallback) · corrected
denominators (main game-code 41,556 — the 22-ins Ghidra-boundary gap; the fleet denominator grew by the five modules' ~2,600
ins at T2b). Then `PhaseEnd_Phase32.md` (+ Roadmap delta: P33 = verify + flip; + Plain-English Recap; + the rules table incl.
R64) → **append the P32 synopsis + rules to `phase-ends/DIGEST.md` (step 3b)** → `git mv CURRENT_PHASE.md
phase-ends/logs/Phase32.md` (R19) → R23 MCP stop if it ran → leave both uncommitted for Drew (R6) → 🛑.
### 8. Environment
Fleet 218; shas of the binaries T3 touches: main `143dbb89f34491258bbc27810d0a12ec8b43a8dd` · resident
`8e17e02ff8954d07c979449198f7e1645046b353` · md_SC03_053 `c0848f308342e499e2bd8c2db86f6225a29e1592` · md_SC03_054
`06bd73dfbdb10748adcbac7093ead5d76131206a` · md_MAIN_007 `2ff702b605ab5cfc18474c464c4c07e5f8ffd48c` · md_MAIN_009
`d270f695…` · md_SC03_056 `bc768a6b…` (`config/check.<b>.sha` is authoritative). Toolchain unchanged (SETUP §5.4). Harness:
20 concurrent Agent-tool subagents max; an Agent call beyond that returns "Concurrent subagent limit reached" (do not
retry — wait). Claude commits, Drew pushes. Last published metrics (P31 close, 213 binaries): instr 100.0% · distinct
99.9% · fn 99.99% — regenerate with `make report` at the T3 close (218 binaries).
### 7. Environment
Fleet 218; shas: main `143dbb89f34491258bbc27810d0a12ec8b43a8dd` · resident `8e17e02ff8954d07c979449198f7e1645046b353` ·
md_SC03_053 `c0848f308342e499e2bd8c2db86f6225a29e1592` · md_SC03_054 `06bd73dfbdb10748adcbac7093ead5d76131206a` · md_MAIN_007
`2ff702b605ab5cfc18474c464c4c07e5f8ffd48c` · md_MAIN_009 `d270f695b793b5c03db159b7aabcc066daa87eda` · md_SC03_056
`bc768a6b7baa911e0a0cb9175b33550851d6c1eb` (`config/check.<b>.sha` is authoritative). Toolchain unchanged (SETUP §5.4). The
SessionStart hook launches a headless Ghidra MCP (`.run/ghidra-mcp.log`); this session's MCP failed to connect and nothing
needed it — T4/T5 do not either (R23: never stage `ghidra/`). Harness: 20 concurrent Agent-tool subagents max. Metrics:
regenerate with `make report` at the T3 close (218 binaries; last published = P31 close, 213 binaries: instr 100.0% ·
distinct 99.9% · fn 99.99%).
### 9. Standing reminders (the rules that bite in T3)
Every bank commits before the next command that can touch `src/` (R42) · count banks from the SOURCE and quote the
fleet's green count at every close (R58) · verify a build from its exit code (R53) · a masked score is not a closeness
until its diff is read (R63) · an `__asm__` body is a verbatim, not a bank (R62) · fix the TU by a byte-neutral plumbing
commit BEFORE any gate (S77 law) · after a carve/merge touching a yaml/`.mk`: `make extract` before building, then
`pads_audit`/`interleave_check` (R60) · rules check every 4 tasks (P6) · harvest idioms into the cookbook before the next
drafting step (R16/R30) · no `Co-Authored-By` (R5) · never stage `ghidra/` (R23).
### 8. Standing reminders (the rules that bite now)
Every bank commits before the next command that can touch `src/` (R42) · count banks from the SOURCE and quote the fleet's
green count at every close (R58) · verify a build from its exit code (R53) · a masked/permuter score is not a closeness until
its diff is read (R63) · an `__asm__` body is a verbatim, not a bank (R62) · fix the TU by a byte-neutral plumbing commit
BEFORE any gate (S77 law) · re-verify in the CURRENT TU before splicing (§500-F) · rules check every 4 tasks (P6) · harvest
idioms into the cookbook before the next drafting step (R16/R30) · no `Co-Authored-By` (R5) · never stage `ghidra/` (R23).
**Plain-English recap (R18).** Last night thirty-one AI agents were set on the leftover functions; twenty produced exact
matches, but the coordinator ran out of memory after banking the first ten and one agent accidentally swept the others'
finished files into a side folder. This session read the whole record, pulled every result back out, confirmed each one
byte-for-byte, put the swept files back, wrote the lessons into the cookbook and the playbook, and — at Drew's direction —
made session start cheaper (a one-page digest of all 32 phases instead of reading them all) and made this checkpoint the
complete hand-off the next session replays verbatim. The next session's first jobs: re-verify the fleet, bank the ten
ready matches, then launch the seventeen queued small functions.
**Plain-English recap (R18).** This session banked twenty-eight functions in about an hour: first the ten exact matches the
overnight agents had already produced (after re-checking each one byte-for-byte), then seventeen small functions drafted by
seventeen cheap agents launched together, every one of which came back exact on the first try. Three of the game's code
modules are now fully rebuilt from C, and the whole 218-file set still rebuilds identically. What is left is sixteen
functions: seven long-standing "walls" that get their final written verdicts next, and nine near-misses that are a few
instructions off, which get one bounded round with the brute-force polisher and one careful second look before the phase
closes.
+4 -1
View File
@@ -900,7 +900,10 @@ def build_carve(ov, funcs):
f"island, which a tail carve cannot reach. That is the island split (§260): "
f"jr_isolate_all.py --only {f}, then `jtbl_carve.py {ov} --island-split "
f"--func {f}` — automated at gate time by harvest_verify._jtbl_prep_one "
f"(docs/tool-designs/jtbl-island-split-review.md).")
f"(docs/tool-designs/jtbl-island-split-review.md). "
f"FOR AN md_* MODULE, §303 SUPERSEDES THIS: no isolation, no carve state — splice and "
f"`make build`; the Makefile's jtbl_rodata_pads --derive stage reproduces the island pads at "
f"build time (P32 S83: md_SC03_054/func_801EF6D8, 7 tables, 0,0t1,0t1,0t1,0t1,0t1,0).")
s_vram, e_vram = jtbl_range(ov, jh, labels, region_end_vram, fn=f, sub=sub)
s_off, e_off = s_vram - base, e_vram - base
if s_off in have: