- R16 writes a local whose only assignment is one integer literal at every use and deletes it. R6 stops at a temp read exactly once, so a holder read four times was invisible to the search and its whole family with it. Deleting it is byte-neutral alone but removes a quantity from the block, which is what lets the next move reach the allocator. - R17 splits a run of consecutive same-literal assignments by moving the nearest differently-valued one into it, at each interior split point. find_free_reg's live-range scan (local-alloc.c:2109-2110): while the two constants' ranges are disjoint they share a caller-saved register; splitting makes the first live across the second and it takes another colour. - known-true check: on the seed that keeps func_80168828's semantically-forced $4 pin, R16 then R17 reaches score 0 (OTHER; mine 108 ins, target 108) — MATCH at three of the six offered split points, in ten compiles where the blind search needed 2,271. - the engine selftest's caller-saved assertion is now the ordering invariant (every targeted lever before every blind family) rather than a fixed window widened once per new generator. - delever --selftest OK (4 new controls); delever_search --selftest OK; tool_census --check OK; SETUP row (R21).
tools/
Everything under tools/ that this project wrote — the extractor, the byte gate, the matching harness, the campaign
machinery, the audits, the Ghidra scripts, the public-flip rewrite package — is licensed under the GNU Affero General
Public License v3.0 (the repository's LICENSE). There are no per-file license headers; this statement covers them.
Third-party pieces under tools/ keep their own licenses and are listed in the top-level THIRD_PARTY.md:
tools/brave-CUE/ (GPL-3.0, vendored source), the pinned submodules tools/maspsx (MIT), tools/decomp-permuter
(MIT), tools/asm-differ (Unlicense) and tools/m2c (GPL-3.0), and the gcc-2.7.2 compiler tarballs under tools/bin/
(GCC, GPL). The Sony SDK directory tools/psyq/ is never part of the repository — it is user-supplied and gitignored.
Where each tool fits and how to run it: docs/SETUP.md ("Tooling inventory"), docs/wave-playbook.md (the matching
procedure) and docs/public-flip-runbook.md (the publication procedure).