mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-09-27 05:56:00 -04:00
d71836107c
The third agent produced no bank and a precise refutation plus a generator, which is the deliverable the brief asks for. - it refuted the a2 hypothesis on its own body: git grep returns 1,770 declarations in two forms, both (s32 a0), no (void) anywhere, and the pin is on a local rather than the parameter. Three lever-free spellings reach the target's complete register assignment, so the class is reachable from plain C. - its best is score 2, class ORDER, 89/89 instructions, every register correct, one displaced bystander store. The target's sw sits inside the lbu->addiu window and that position is forced: anti_dependence and true_dependence (sched.c:817/845) both hold, so the store can neither hoist nor sink. Post-sched1 stream and reg_live_length then match ours, leaving reg_n_refs — computed by flow on the pre-combine RTL — as the only remaining input. - R18 moves one simple statement to each other position in its own block, up to six away. R9's adjacent swap is the special case; the distance is the point. It costs no instruction where R7's LOOP notes are a full sched1 barrier and always cost one displaced insn, so R18 is ranked ahead of R7 in every class. - two wrong spellings before the known-true check passed: identifier-disjointness as a requirement offered three candidates and none of them the agent's (it is only an ordering preference now — byte-identical output is the same program, so the oracle is the whole correctness proof, which is R9's own footing), and a blank line counted as an obstacle, so the generator never offered the very move it was written from. It now reproduces that body exactly: bystander @21->17. - delever_pack.py now writes each trace candidate's residual class beside its score, from the agent's method note: a bare number hid that a move had already turned this body's residual from REG into ORDER. - delever --selftest OK (3 new controls incl. the nested-block refusal); delever_search --selftest OK; tool_census OK.