Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 6 additions & 18 deletions config/decl-agreement-baseline.json
Original file line number Diff line number Diff line change
Expand Up @@ -14379,19 +14379,11 @@
"src/unnamed/ov063/func_ov063_02118ddc.cpp": ["param:#1 int", "param:#2 char *", "return:int"]
},
"func_02012718": {
"include/decl_common.h": ["param:#1 int"],
"src/actors/dMgJump3DMario_c.cpp": ["param:#1 int"],
"src/actors/dScMgCurling2_c.cpp": ["param:#1 int"],
"src/func_ov006_020cb838.cpp": ["param:#1 int"],
"src/func_ov006_020cbd7c.cpp": ["param:#1 int"],
"src/func_ov006_020d1ba0.cpp": ["param:#1 int"],
"src/func_ov006_020e1854.c": ["param:#1 int"],
"src/func_ov006_020e1dc8.cpp": ["param:#1 int"],
"src/func_ov006_020fd17c.c": ["param:#1 int"],
"src/func_ov006_0210076c.c": ["param:#1 int"],
"src/func_ov006_02102d6c.c": ["param:#1 int", "param:#2 unsigned int"],
"src/func_ov006_02125f68.cpp": ["param:#1 int"],
"src/minigames/d_s_mg_trampoline.cpp": ["param:#1 int"]
"src/_ZN12dScMgSlot1_c8BehaviorEv.cpp": ["param:#1 void *"],
"src/func_ov006_020d27dc.cpp": ["param:#1 void *"],
"src/func_ov006_020e20bc.c": ["param:#1 void *"],
"src/func_ov006_020e5450.cpp": ["param:#1 void *"],
"src/func_ov006_020fdaf0.c": ["param:#1 void *"]
},
"func_0201277c": {
"include/decl_common.h": ["param:#1 int"],
Expand Down Expand Up @@ -14490,8 +14482,7 @@
"src/minigames/d_s_mg_memory.cpp": ["param:#1 int", "return:void"]
},
"func_020127ec": {
"src/func_020126ac.c": ["return:int"],
"src/func_02012718.c": ["param:#2 void *"]
"src/func_020126ac.c": ["return:int"]
},
"func_02012dd0": {
"src/func_ov004_020aeb24.cpp": ["param:#1 int"],
Expand Down Expand Up @@ -19174,9 +19165,6 @@
"func_ov006_020e513c": {
"src/func_ov006_020e5e3c.c": ["param:#1 char *"]
},
"func_ov006_020e5450": {
"src/func_ov006_020e5b70.c": ["arity:0"]
},
"func_ov006_020e6118": {
"src/func_ov006_020e5ffc.c": ["param:#1 char *"]
},
Expand Down
3 changes: 2 additions & 1 deletion config/match_attempts.jsonl
Original file line number Diff line number Diff line change
Expand Up @@ -1697,7 +1697,7 @@
{"schemaVersion":1,"functionId":"ov006:0x020e513c","id":"ov006:0x020e513c","attemptId":"a728fff7fe434b769644da66a49eff3a","parentAttemptId":null,"module":"ov006","addr":34492732,"name":"func_ov006_020e513c","status":"no_progress","kind":"ai","model":"grok-4.6","reasoning":"high","harness":"grok-build","author":"lunavyqo","divergences":291,"improvedNearMiss":false,"srcPath":"scratch/func_ov006_020e513c.c","note":"two-pass 0x30-slot push; s64 scale*0x1a+0x800; prop+SR off for self/off shuffle; frame 0x28 vs 0x1c, idx stacked not fp, z/x load order, size 0x31c vs 0x314","usedNearMissDraft":false,"usedGhidraDraft":true,"base":{"kind":"scratch"},"sessionScope":"focused","batchSize":1}
{"schemaVersion":1,"functionId":"ov006:0x020ea914","id":"ov006:0x020ea914","attemptId":"35a672d341e34aab9871d05a45a688c4","parentAttemptId":null,"module":"ov006","addr":34515220,"name":"func_ov006_020ea914","status":"near_miss","kind":"ai","model":"grok-4.6","reasoning":"high","harness":"grok-build","author":"lunavyqo","divergences":113,"prevBestDivergences":999,"improvedNearMiss":true,"srcPath":"try/func_ov006_020ea914.c","note":"size-exact 0x324; first loop byte-OK; i@sb; shape-identical; residual coloring (n4000 spilled, p1000@r4, -1@fp, A@r8, B@r7). SR-off + pts[5][2] + volatile pos.","usedNearMissDraft":false,"usedGhidraDraft":true,"base":{"kind":"matched_sibling"},"sessionScope":"focused","batchSize":1}
{"schemaVersion":1,"functionId":"ov006:0x020ea914","id":"ov006:0x020ea914","attemptId":"540a2223d34849d4a09be3526e0ea65d","parentAttemptId":"35a672d341e34aab9871d05a45a688c4","module":"ov006","addr":34515220,"name":"func_ov006_020ea914","status":"no_progress","kind":"ai","model":"grok-4.6","reasoning":"high","harness":"grok-build","author":"lunavyqo","divergences":113,"prevBestDivergences":113,"improvedNearMiss":false,"srcPath":"try/func_ov006_020ea914.c","note":"permuter ~1000it floor score 2020->1220 (size 0x328, not a match.py win). Residual coloring: n4000 spilled vs r4, p1000@r4 vs fp, -1@fp vs stack, A@r8/B@r7 vs r6/r5.","usedNearMissDraft":false,"usedGhidraDraft":true,"base":{"kind":"previous_attempt","attemptId":"35a672d341e34aab9871d05a45a688c4","divergences":113},"sessionScope":"focused","batchSize":1}
{"schemaVersion":1,"functionId":"ov006:0x020e5450","id":"ov006:0x020e5450","attemptId":"0e798b61bcba4bd9a20bba0e038588a3","parentAttemptId":null,"module":"ov006","addr":34493520,"name":"func_ov006_020e5450","status":"near_miss","kind":"ai","model":"grok-4.6","reasoning":"high","harness":"grok-build","author":"lunavyqo","divergences":29,"improvedNearMiss":false,"srcPath":"build/func_ov006_020e5450.c","note":"common_subs off; for-loop with found body inside; slot=self+m forms px/pz; loop guards via p+0x4689 split. Prologue and loop tests byte-ok except branch offsets. Residual: z/x pair load order, frame 0x64 vs 0x7c, size 0x52c vs 0x560, found-body s64/pointer schedule.","usedNearMissDraft":false,"usedGhidraDraft":true,"base":{"kind":"scratch"},"sessionScope":"focused","batchSize":1}
{"schemaVersion": 1, "functionId": "ov006:0x020e5450", "id": "ov006:0x020e5450", "attemptId": "0e798b61bcba4bd9a20bba0e038588a3", "parentAttemptId": null, "module": "ov006", "addr": 34493520, "name": "func_ov006_020e5450", "status": "near_miss", "kind": "ai", "model": "grok-4.6", "reasoning": "high", "harness": "grok-build", "author": "lunavyqo", "divergences": null, "improvedNearMiss": false, "srcPath": "build/func_ov006_020e5450.c", "note": "common_subs off; for-loop with found body inside; slot=self+m forms px/pz; loop guards via p+0x4689 split. Prologue and loop tests byte-ok except branch offsets. Residual: z/x pair load order, frame 0x64 vs 0x7c, size 0x52c vs 0x560, found-body s64/pointer schedule. [CORRECTION 2026-09-13: this row recorded divergences 29. The note above records \"size 0x52c vs 0x560\", i.e. the candidate was 52 bytes shorter than the target, so the 29 was a truncated verdict scored over a window 52 bytes short of the function and is not a divergence count for func_ov006_020e5450. The field is cleared rather than rescored because this attempt's source (build/func_ov006_020e5450.c) is no longer in the tree. The honest measurement at the exact size 0x560 is 191 divergent words of 344, banked in nearmiss/db.jsonl and logged as a separate attempt row.]", "usedNearMissDraft": false, "usedGhidraDraft": true, "base": {"kind": "scratch"}, "sessionScope": "focused", "batchSize": 1, "size": 1376}
{"schemaVersion":1,"functionId":"arm9:0x020717c0","id":"arm9:0x020717c0","attemptId":"fab1390a-e07c-47f9-8d16-9ef75722f2c1","parentAttemptId":null,"module":"arm9","addr":34019264,"name":"func_020717c0","status":"near_miss","kind":"ai","model":"grok-4.6","reasoning":"high","harness":"grok-build","author":"lunavyqo","divergences":999,"improvedNearMiss":true,"srcPath":"scratch/func_020717c0.c","note":"0x70 int[28] frame, uninit locals for r4-r11 slots, old-sp as ctx+28, three zero words, call callee. size 0x58 vs 0x4c (stmdb lr + epilogue; slots all r3).","usedNearMissDraft":false,"usedGhidraDraft":false,"base":{"kind":"scratch"},"sessionScope":"focused","batchSize":1}
{"schemaVersion":1,"functionId":"arm9:0x020717c0","id":"arm9:0x020717c0","attemptId":"d0ddf7e6-399c-4735-9c48-1cd8b3a71266","parentAttemptId":"fab1390a-e07c-47f9-8d16-9ef75722f2c1","module":"arm9","addr":34019264,"name":"func_020717c0","status":"no_progress","kind":"ai","model":"grok-4.6","reasoning":"high","harness":"grok-build","author":"lunavyqo","divergences":999,"prevBestDivergences":999,"improvedNearMiss":false,"srcPath":"scratch/func_020717c0_inf.c","note":"for(;;) after call drops add/ldm/bx; size 0x50 still vs 0x4c. leftover stmdb lr + b-self; still r3 slots not r4-r11; no str lr / mov ip,sp.","usedNearMissDraft":false,"usedGhidraDraft":false,"base":{"kind":"previous_attempt","attemptId":"fab1390a-e07c-47f9-8d16-9ef75722f2c1","divergences":999},"sessionScope":"focused","batchSize":1}
{"schemaVersion":1,"functionId":"arm9:0x020717c0","id":"arm9:0x020717c0","attemptId":"9afdb424-2280-4e56-af1b-4073084e1ca5","parentAttemptId":"fab1390a-e07c-47f9-8d16-9ef75722f2c1","module":"arm9","addr":34019264,"name":"func_020717c0","status":"no_progress","kind":"ai","model":"grok-4.6","reasoning":"high","harness":"grok-build","author":"lunavyqo","divergences":999,"prevBestDivergences":999,"improvedNearMiss":false,"srcPath":"scratch/func_020717c0_throw.cpp","note":"C++ throw; is a 0xc long-call veneer to this symbol, not the body.","usedNearMissDraft":false,"usedGhidraDraft":false,"base":{"kind":"previous_attempt","attemptId":"fab1390a-e07c-47f9-8d16-9ef75722f2c1","divergences":999},"sessionScope":"focused","batchSize":1}
Expand Down Expand Up @@ -2071,6 +2071,7 @@
{"schemaVersion":1,"functionId":"ov021:0x021116c8","id":"ov021:0x021116c8","attemptId":"97b2e23cebb04fde8edab07ab51a23a5","parentAttemptId":"1ab94e30c7d64f2e8a6159bc347d02fa","module":"ov021","addr":34674376,"name":"_ZN12WorkElevator8BehaviorEv","status":"matched","kind":"human","author":"tangosdev","improvedNearMiss":false,"srcPath":"src/_ZN12WorkElevator8BehaviorEv.cpp","label":"m100-rest3","note":"Converted the tracked NONMATCHING attempt into a relocation-verified C++ method.","usedNearMissDraft":true,"base":{"kind":"previous_attempt","attemptId":"1ab94e30c7d64f2e8a6159bc347d02fa"},"sessionScope":"batch","batchSize":4}
{"schemaVersion":1,"functionId":"ov004:0x020ae5c4","id":"ov004:0x020ae5c4","attemptId":"039f4f45697847119e8467c46b7422fa","parentAttemptId":"ae9efdbd99be49839f66a097fe8e19a7","module":"ov004","addr":34268612,"name":"func_ov004_020ae5c4","status":"matched","kind":"human","author":"tangosdev","improvedNearMiss":false,"srcPath":"src/func_ov004_020ae5c4.cpp","label":"m100-rest3","note":"Refined the tracked near-miss to a relocation-verified match.","usedNearMissDraft":true,"base":{"kind":"previous_attempt","attemptId":"ae9efdbd99be49839f66a097fe8e19a7"},"sessionScope":"batch","batchSize":4}
{"schemaVersion":1,"functionId":"ov006:0x0212a764","id":"ov006:0x0212a764","attemptId":"5f9e263893044a37b21e12b9eb1cdcf2","parentAttemptId":"b18e76db9d244203b1927b594716d343","module":"ov006","addr":34776932,"name":"func_ov006_0212a764","status":"matched","kind":"human","author":"tangosdev","divergences":0,"prevBestDivergences":44,"improvedNearMiss":true,"srcPath":"src/func_ov006_0212a764.cpp","label":"m100-ov63a","note":"Final exact source from the OV63 lane; relocation-aware header fan-out verification included.","usedNearMissDraft":true,"base":{"kind":"previous_attempt","attemptId":"b18e76db9d244203b1927b594716d343","divergences":44},"sessionScope":"batch","batchSize":4}
{"schemaVersion":1,"functionId":"ov006:0x020e5450","id":"ov006:0x020e5450","attemptId":"dd3f356375e7438d92ac4c9433f6bc77","parentAttemptId":null,"module":"ov006","addr":34493520,"name":"func_ov006_020e5450","status":"near_miss","kind":"ai","model":"claude-opus-5","reasoning":"high","harness":"claude-code","author":"andrewboudreau","divergences":191,"prevBestDivergences":191,"improvedNearMiss":false,"note":"Re-measurement at the EXACT ROM size 0x560 (1376 bytes, 344 words): 191 divergent words of 344 under the banked evaluator 2004/b56 metric 2. Supersedes the cleared 29 on attempt 0e798b61bcba4bd9a20bba0e038588a3, which was scored over a 0x52c candidate against the 0x560 target and was therefore a truncated verdict, not a divergence count. Source is the banked c_source for ov006:0x020e5450 in nearmiss/db.jsonl; the bank row already reads 191 and is unchanged. The structurally better 193 variant (object hash db5e3dcf) is the cell notes/mwccarm-codegen.md section 6cz identifies as schedule-exact but hiding a two-register swap of the two i-loads; 6cz carries that line further to 187, so consult it rather than re-deriving from this row.","usedGhidraDraft":false,"base":{"kind":"near_miss_draft"},"sessionScope":"focused","batchSize":1}
{"schemaVersion": 1, "functionId": "ov006:0x0211e72c", "id": "ov006:0x0211e72c", "attemptId": "68ddb5ba2b6b4377ac70616f731c42bd", "parentAttemptId": "05d30e71fc614dd099be509a09fda4e1", "module": "ov006", "addr": 34727724, "name": "func_ov006_0211e72c", "status": "near_miss", "kind": "ai", "model": "claude-opus-5", "harness": "claude-code", "author": "Claude", "divergences": 22, "prevBestDivergences": 26, "improvedNearMiss": true, "usedNearMissDraft": true, "label": "laneC-ov006 e72c-0913", "note": "26 -> 22 (-4 on the attempts ledger; the near-miss bank row was 27 and re-scores to exactly 27 under this evaluator, so -5 there). Source banked in nearmiss/db.jsonl, which carries the full floor prose. Two paying levers: a four-of-six `volatile` mask on the field loads (x/lo/hi/y volatile, gate/flag/priority plain) acting as a SCHEDULING BARRIER that pins load order without changing an emitted instruction, and the mode-select polarity `int mode = 1; if (flag == 0) mode = -1;`. The better row to hand on is NOT the banked 22: a 26-scoring variant (banked source + volatile flag + that mode polarity + inline array subscript instead of a tbl local) reproduces push/sub sp,#0x1c/ldr fp,[pc,#0x90]/epilogue/bx lr byte-exactly and is the ROM function with exactly one callee-saved rank-list element displaced -- the -1 sits at rank 2 and belongs at rank 6. Open question: produce a -1 whose first use is at argument 10 while argument 5 still emits -1. Scope limit measured here: callee-saved rank is set by order of first USE in the loop body, not declaration order, because mwcc constant-propagates function-scope constant locals and erases the declaration before allocation; the declaration rule is still live for the locals that survive to allocation (reversing declaration order moved cnt and tbl, 22 -> 25). Exhausted: the entire callee signature (14 variants, all identical; arity independently settled by the callee's own source and by a module-constrained census of OAM::Render's 131 call sites, 71 arm9-resident, r0-r3 at 131/131), 210 inner declaration permutations, six function-scope orders, twelve spellings of the -1, eleven mode spellings, 20 pragmas, and a 700-sample randomized structural search that peaked at 24.", "base": {"kind": "previous_attempt", "attemptId": "05d30e71fc614dd099be509a09fda4e1", "divergences": 26}, "sessionScope": "single"}
{"schemaVersion":1,"functionId":"ov071:0x02121734","id":"ov071:0x02121734","attemptId":"60d147ec2c8c40bebd93fb90446f8719","parentAttemptId":null,"module":"ov071","addr":34740020,"name":"_ZN3MrI13InitResourcesEv","status":"matched","kind":"ai","model":"claude-opus-5","reasoning":"high","harness":"claude-code","author":"andrewboudreau","improvedNearMiss":false,"srcPath":"src/_ZN3MrI13InitResourcesEv.cpp","note":"banked","base":{"kind":"scratch"},"sessionScope":"focused","batchSize":1}
{"schemaVersion":1,"functionId":"arm9:0x0202cc0c","id":"arm9:0x0202cc0c","attemptId":"f4bcf77d3d6f4445b520ab5bf714b10c","parentAttemptId":null,"module":"arm9","addr":33737740,"name":"_ZN5Stage13InitResourcesEv","status":"matched","kind":"ai","model":"claude-opus-5","reasoning":"high","harness":"claude-code","author":"tangosdev","improvedNearMiss":false,"srcPath":"src/_ZN5Stage13InitResourcesEv.cpp","note":"banked","base":{"kind":"scratch"},"sessionScope":"focused","batchSize":1}
2 changes: 1 addition & 1 deletion config/tu_manifest.d/ov006/dScMgCurling2_c.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
"boundary_evidence": [
"PARTIAL RUN, 31 of 52. tools/tu_map.py calls 0x020e3854..0x020e6bf4 one contiguous linker run of 52 function(s) (build/tu_map.json), and queue_audit.py extends it over the zero-gap factory dScMgCurling2_c_classInit at 0x020e6bf4 for 53 in a 0x020e3854..0x020e6c28 span. This TU licenses 0x020e3854..0x020e5450, 31 function(s), ROM ordinals 0..30. The other 21 keep their own shards and their own delinks.txt entries; the 22nd is the sourceless hole in EDGE 1 below, which has neither.",
"class label(s): dScMgCurling2_c",
"EDGE 1 -- a sourceless hole splits the run, and it is the only edge. ROM ordinal 31, func_ov006_020e5450 (0x020e5450, size 0x560), has no source anywhere in the tree: it carries a symbols.txt row but NO src/ file and NO entry in config/arm9/overlays/ov006/delinks.txt at all (the blocks jump from 0x020e513c-0x020e5450 straight to 0x020e59b0), so the cartridge's own bytes cover that range. It is a banked near-miss whose best recorded attempt sits at 29 divergences (config/match_attempts.jsonl). It sits in the MIDDLE of the run, and no delink block and no TU manifest in this tree expresses a .text claim with a hole in it, so the run can only be licensed as one of its two contiguous sides.",
"EDGE 1 -- a sourceless hole splits the run, and it is the only edge. ROM ordinal 31, func_ov006_020e5450 (0x020e5450, size 0x560), has no source anywhere in the tree: it carries a symbols.txt row but NO src/ file and NO entry in config/arm9/overlays/ov006/delinks.txt at all (the blocks jump from 0x020e513c-0x020e5450 straight to 0x020e59b0), so the cartridge's own bytes cover that range. It is a banked near-miss measured at 191 divergent words of 344 at the exact size 0x560 (nearmiss/db.jsonl). An older config/match_attempts.jsonl row read 29, but that attempt was scored over a 0x52c candidate against the 0x560 target, so the 29 was a truncated verdict and not a divergence count for this function; that row's divergences field has been cleared. It sits in the MIDDLE of the run, and no delink block and no TU manifest in this tree expresses a .text claim with a hole in it, so the run can only be licensed as one of its two contiguous sides.",
"WHY THE LOWER SIDE. This TU is the larger side by member count: 31 below the hole against 21 above it. It is also the side that holds the class's key function -- the destructor, which include/dScMgCurling2_c.h declares out of line and declares FIRST -- so it is the side that can emit and license the class's _ZTV/_ZTI/_ZTS. It is the larger side in bytes too: 0x1bfc against the upper side's 0x1278. The upper side holds four of the six own vtable overrides (InitResources, Behavior, Render, OnYoshiTryEat) and the classInit factory, but not the key function, so a promotion there would carry compiler_only_output: 0 -- the dScMgCoin_c outcome -- and would leave the destructor pair enrolled as shards.",
"module sinit corroboration: 31 sinit(s) / 31 .ctor entries, sinit_vs_tu=ok, corroborated=False (module-wide, NOT narrowed to this one TU -- see notes/tu-reconstruction-pilot-report.md sec 2 for the by-hand narrowing step)"
],
Expand Down
Loading
Loading