mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-09-26 21:36:06 -04:00
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:
+12
@@ -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
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
]
|
||||
@@ -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"
|
||||
}
|
||||
]
|
||||
@@ -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>,
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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++;
|
||||
}
|
||||
}
|
||||
@@ -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++;
|
||||
}
|
||||
}
|
||||
@@ -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++;
|
||||
}
|
||||
@@ -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++;
|
||||
}
|
||||
}
|
||||
@@ -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++;
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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,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)
|
||||
|
||||
@@ -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
|
||||
@@ -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)
|
||||
@@ -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.
|
||||
@@ -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"}
|
||||
|
||||
@@ -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
|
||||
@@ -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)
|
||||
@@ -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 @@
|
||||
cookbook index -> docs/cookbook-index.md (1168 sections, 14 symptom buckets)
|
||||
@@ -0,0 +1,4 @@
|
||||
slate 2 -> 2 compatible, 0 dropped for in-TU decl conflict
|
||||
|
||||
BANKED 2 main functions -- 143dbb89f34491258bbc27810d0a12ec8b43a8dd BYTE-IDENTICAL
|
||||
EXIT=0
|
||||
@@ -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"}]
|
||||
@@ -0,0 +1 @@
|
||||
ILS func_8001BC6C: 8 cycles x 150s @ -j3, klass=REGALLOC
|
||||
@@ -0,0 +1 @@
|
||||
ILS func_800CD674: 8 cycles x 150s @ -j3, klass=REGALLOC
|
||||
@@ -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)
|
||||
@@ -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.
|
||||
@@ -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.
|
||||
@@ -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.
|
||||
@@ -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.
|
||||
@@ -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.
|
||||
@@ -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.
|
||||
@@ -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.
|
||||
@@ -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.
|
||||
@@ -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.
|
||||
@@ -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.
|
||||
@@ -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.
|
||||
@@ -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.
|
||||
@@ -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.
|
||||
@@ -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.
|
||||
@@ -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.
|
||||
@@ -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.
|
||||
@@ -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.
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -0,0 +1 @@
|
||||
clean: removed build/, expected/, and the regenerated splat tree (asm/, assets/, include macros, undefined_*_auto.txt).
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -0,0 +1 @@
|
||||
clean: removed build/, expected/, and the regenerated splat tree (asm/, assets/, include macros, undefined_*_auto.txt).
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
@@ -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
|
||||
@@ -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
@@ -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
@@ -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
@@ -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
|
||||
|
||||
@@ -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
@@ -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
File diff suppressed because one or more lines are too long
+143
-199
@@ -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
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user