mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-10-01 07:40:42 -04:00
90 KiB
90 KiB
| 1 | path | phase | portability | need | what | adapts | status | successor_or_product |
|---|---|---|---|---|---|---|---|---|
| 2 | tools/ab_score.py | P5 | ADAPT | re-score both arms of an experiment with the standalone matcher as ground truth | Re-scores every draft of two experiment arms with the standalone matcher as ground truth | repo scratch paths | LIVE | |
| 3 | tools/agent_drafts_restore.py | P8 | ADAPT | rebuild an agent's final draft by replaying its transcript writes | Replays an agent's writes from its transcript to rebuild its final deliverable | agent transcript paths | LIVE | |
| 4 | tools/agent_reports.py | P8 | ADAPT | save each subagent's full final report to one file per target | Saves each subagent's full final prose report to one file per target | agent transcript paths | LIVE | |
| 5 | tools/agent_verdicts.py | P8 | ADAPT | pull the final structured verdict out of each subagent transcript | Pulls the final structured verdict out of subagent transcripts | agent transcript paths | LIVE | |
| 6 | tools/alloc_table.py | P7 | PORTABLE | list each pseudo-register's refs, live length and allocation priority from compiler dumps | Prints each pseudo's refs, live length, block and allocation priority from compiler pass dumps | compiler pass-dump format, repo dump root | LIVE | |
| 7 | tools/api_agent.py | P8 | ADAPT | give an external chat model the same multi-turn tool harness an agent gets | Gives an external chat model the same multi-turn tool harness an agent gets | provider endpoint, repo doc paths | LIVE | |
| 8 | tools/api_draft.py | P8 | ADAPT | draft one function against any chat-completions endpoint, provider-agnostic | Provider-agnostic single-shot drafting worker against any chat completions endpoint | provider endpoint, repo doc paths | LIVE | |
| 9 | tools/api_rate.py | P8 | ADAPT | measure a drafting provider's real request rate and rate-limit attribution | Reports measured request rate and rate-limit attribution from append-only telemetry | repo telemetry path | STILL-NEEDED | measure a drafting provider's true request rate and rate-limit attribution |
| 10 | tools/aprop_autodraft.py | P6 | ADAPT | draft a family member mechanically from a seed body and symbol rebase | Mechanically drafts a family member from the seed body plus a positional symbol rebase | repo scratch paths | FROZEN | tools/share_body.py |
| 11 | tools/aprop_symfix.py | P6 | ADAPT | rebase a remapped draft's stale seed symbols onto the target's own | Rebases stale seed symbols in a mechanically adapted draft onto the target's own symbols | repo symbol/config sources | LIVE | |
| 12 | tools/asm_verbatim.py | P10 | ADAPT | emit a function's target assembly as an inline-assembly body | Emits the file-scope inline-assembly body form from a disassembly file | repo asm layout | LIVE | |
| 13 | tools/atlas.py | P5 | ADAPT | partition every open function into exactly one lever-labelled work group | Partitions all open functions into exactly one lever-labelled work group | repo scratch paths | LIVE | |
| 14 | tools/atlas_features.py | P5 | ADAPT | extract one deterministic feature record per function across every registered binary | Extracts one deterministic feature record per function across all registered binaries | repo signature files | LIVE | |
| 15 | tools/audit_binaries.py | P5 | ADAPT | assert every consumer knows about each newly onboarded binary | Gate asserting every consumer knows about each newly onboarded binary | repo config/registry paths | LIVE | |
| 16 | tools/audit_digest.py | P5 | ADAPT | recompute headline metrics and fail if the committed digest disagrees | Recomputes headline metrics from the current tree and fails if the committed digest disagrees | repo docs paths | LIVE | |
| 17 | tools/audit_frontier.py | P5 | ADAPT | check that the independent what-remains views agree with the corpus oracle | Checks that the independent "what remains" views agree with the corpus oracle | repo paths | LIVE | |
| 18 | tools/audit_header_sigs.py | P5 | ADAPT | find shared-header declarations that contradict a function's banked definition | Finds shared-header declarations that contradict the banked definition | repo shared-header paths | SUPERSEDED | tools/conform_decls.py |
| 19 | tools/audit_public.py | P9 | ADAPT | gate a first push: prove no derived bytes among tracked files | The first-push gate: no derived bytes among tracked files, four independent checks | repo purge-set and path lists (the kit's template reads `config/firewall.txt` instead) | LIVE | |
| 20 | tools/audit_text_sources.py | P5 | ADAPT | assert every tracked source is plain text so text searches never skip it | Every tracked C source must be plain text, or text searches silently skip it | repo src paths | LIVE | |
| 21 | tools/auto_driver.py | P8 | ADAPT | loop a stub worklist through scaffold, draft and gate without any model | Autonomous model-free driver looping a stub worklist through scaffold, draft and gate | canonical source binary, repo paths | LIVE | |
| 22 | tools/auto_status.sh | P8 | ADAPT | print an unattended run's heartbeats and recent progress for a remote check-in | Prints the unattended run's heartbeats and recent progress for a remote check-in | repo scratch paths | LIVE | |
| 23 | tools/auto_stop.sh | P8 | ADAPT | request a safe exit of an unattended run through a stop sentinel | Requests a safe exit of the unattended run via a stop sentinel | repo scratch paths | LIVE | |
| 24 | tools/auto_supervisor.sh | P8 | ADAPT | keep an unattended driver alive across crashes until a clean exit | Keeps an unattended driver alive across crashes until a clean or requested exit | repo scratch paths | LIVE | |
| 25 | tools/autopsy.py | P7 | ADAPT | recompile every open draft and classify its failure into a residual corpus | Materializes the residual corpus by recompiling every open draft and classifying its failure | repo scratch/build paths | LIVE | |
| 26 | tools/backlog.py | P5 | ADAPT | keep a ranked ledger of every close-but-not-matching attempt | Near-miss ledger: every close-but-not-matching attempt, ranked for hand sessions | repo scratch/doc paths | LIVE | |
| 27 | tools/bank_exemplar.py | P6 | ADAPT | bank one cracked exemplar through the carve, splice and staged-recovery ladder | Banks one cracked exemplar through the carve, splice and staged-recovery ladder | repo src/config layout | SUPERSEDED | tools/gate_stage.py |
| 28 | tools/bfm_extract/__init__.py | PROJECT-ONLY | PROJECT-ONLY | expose a disc extraction pipeline's stages as one package | Package entry for one title's disc pipeline; names its own container stages | project-only | LIVE | |
| 29 | tools/bfm_extract/cd_archive.py | PROJECT-ONLY | PROJECT-ONLY | read a bespoke container's table of contents to locate its files | Reader for one game's bespoke container table-of-contents format | project-only | LIVE | |
| 30 | tools/bfm_extract/crosscheck.py | PROJECT-ONLY | PROJECT-ONLY | cross-validate an extraction against an independent third-party tool | Cross-validates against a third-party tool written for that specific game | project-only | LIVE | |
| 31 | tools/bfm_extract/extract.py | PROJECT-ONLY | PROJECT-ONLY | walk the whole medium and extract every file deterministically | Full-disc extractor bound to one disc's root file list and audio-track handling | project-only | LIVE | |
| 32 | tools/bfm_extract/extract_exe.py | PROJECT-ONLY | PROJECT-ONLY | extract the console executable and hard-validate its name, size and header | Hard-validates one executable's exact name, size, hash and header field values | project-only | LIVE | |
| 33 | tools/bfm_extract/extract_proto_exe.py | PROJECT-ONLY | PROJECT-ONLY | extract a prototype build's executable, allowing for its known deviations | Companion for one title's prototype discs and their specific deviations | project-only | LIVE | |
| 34 | tools/bfm_extract/iso9660.py | P1 | PORTABLE | walk a raw data track's filesystem and extract files by name | Reusable reader for a raw 2352-byte-sector data track; walks the filesystem and extracts files by name | none | LIVE | |
| 35 | tools/bfm_extract/lzss.py | PROJECT-ONLY | PROJECT-ONLY | decode a bespoke compression format, cross-checked against its own length field | Decoder for one game's non-generic compression semantics, verified against its own decompressor | project-only | LIVE | |
| 36 | tools/bfm_extract/manifest.py | P1 | ADAPT | build and verify a deterministic sorted checksum manifest of an extraction tree | Builds and verifies a deterministic sorted SHA1 manifest of an extraction tree | the extraction output root | LIVE | |
| 37 | tools/bfm_extract/pac.py | PROJECT-ONLY | PROJECT-ONLY | parse a bespoke archive-chain header format | Parser for one game's bespoke archive-chain header format | project-only | LIVE | |
| 38 | tools/bfm_extract/test_lzss.py | PROJECT-ONLY | PROJECT-ONLY | unit-test a bespoke compression decoder against known cases | Unit tests for that game-specific compression variant | project-only | LIVE | |
| 39 | tools/bisect_slate.py | P8 | ADAPT | isolate the byte-wrong drafts in a batch, with a null control first | Isolates the byte-wrong drafts in a batch, with a null control first | repo build paths | SUPERSEDED | tools/gate_main_parallel.py |
| 40 | tools/blast_radius.py | P8 | ADAPT | measure a change's write set and name the verification it actually requires | Measures a change's write set and names the verification it actually requires | repo tree layout | LIVE | |
| 41 | tools/blocker_probe.py | P5 | ADAPT | explain with two oracles why a byte-correct draft fails the whole-binary gate | Read-only two-oracle explanation of why a byte-correct draft fails the whole-binary gate | repo build paths | FROZEN | tools/share_body.py |
| 42 | tools/bootstrap.sh | P9 | ADAPT | set up a fresh clone idempotently: packages, environments, pinned tools | Idempotent fresh-clone setup: check packages, create environments, fetch pinned tools | repo layout, package names | LIVE | |
| 43 | tools/build_engine_types.py | P10 | ADAPT | extract inline-defined types and typedefs from a source file into a shared header | Extracts inline-defined named types and typedefs from a source file into a shared header | repo shared-header path | LIVE | |
| 44 | tools/build_fuel_manifest.py | P8 | ADAPT | unify live stubs into one ranked, class-tagged, cache-annotated target pool | Unifies live stubs into one ranked, class-tagged, cache-annotated target pool | canonical source binary, repo scratch paths | LIVE | |
| 45 | tools/build_wave.py | P8 | ADAPT | build the next drafting wave from a card pool by fleet leverage | Builds the next wave from a card pool, ranked by fleet leverage | repo scratch paths | SUPERSEDED | tools/draw_waves.py |
| 46 | tools/build_wave_args.py | P8 | ADAPT | emit drafting-workflow arguments for a wave from a target manifest | Emits workflow arguments for a wave from the target manifest, resolving each path | repo asm/scratch layout | SUPERSEDED | tools/wave_args.py |
| 47 | tools/build_wave_atlas.py | P8 | ADAPT | build a wave from the frontier atlas, optimized for gate throughput | Builds a wave from the frontier atlas, optimized for gate throughput | repo scratch paths | LIVE | |
| 48 | tools/bulk_harvest.py | P8 | ADAPT | mass-draft small stubs with a served model and gate them in parallel | Phase-separated bulk drafting plus a parallel gate farm, for throughput | repo scratch paths, GPU endpoint | STILL-NEEDED | mass-draft small stubs with a served model and byte-gate them in parallel |
| 49 | tools/burndown.py | P5 | ADAPT | track per-session yield and velocity so a diminishing-returns close is visible | Tracks per-session yield and velocity so a diminishing-returns close is visible | repo ledger paths | STILL-NEEDED | see when per-session yield floors out so a diminishing-returns close is defensible |
| 50 | tools/campaign_status.py | P8 | ADAPT | report every concurrent lane with its own metrics, not only the loud one | One status view covering every lane, not only the loud one | lane names, repo scratch paths | STILL-NEEDED | report every concurrent lane with its own metrics, not only the loud one |
| 51 | tools/canon_draft_decls.py | P6 | ADAPT | canonicalize a draft's extern and data declarations to the banked-consistent set | Canonicalizes a draft's extern and data declarations to the banked-consistent set | repo shared-header paths | SUPERSEDED | tools/sig_unify.py |
| 52 | tools/canon_resident_calls.py | P6 | ADAPT | rewrite address-named calls in a draft to their curated symbol names | Rewrites address-named calls in a draft to the curated symbol name when one exists | repo symbol file path | LIVE | |
| 53 | tools/canon_sig_reconcile.py | P6 | ADAPT | reconcile a definition's typed signature with what its destination unit declares — part of banking against a canonical type layer from Phase 6; again at readability (Phase 10) | Reconciles a definition's typed signature with what its destination unit already declares | repo src layout | FROZEN | the types phase (Phase 37) |
| 54 | tools/cast_call_sites.py | P10 | ADAPT | add per-site function-pointer casts so a draft can call a differently typed callee | Adds per-site function-pointer casts so a draft can call a differently typed callee | repo src layout | LIVE | |
| 55 | tools/cast_self_callers.py | P6 | ADAPT | let a unit keep calling, through per-site casts, the function it now defines | Lets a unit keep calling, through a per-site cast, the function it is about to define | repo src layout | LIVE | |
| 56 | tools/cc1_dumps.sh | P4 | ADAPT | dump every compiler pass file for a self-contained draft | Dumps every compiler pass file for a self-contained draft into a private directory | compiler triple, repo scratch paths | LIVE | |
| 57 | tools/cc1_dumps_tu.sh | P4 | ADAPT | dump every compiler pass file for the spliced real translation unit | Same pass dumps for the spliced real translation unit, the faithful compile | absolute repo path, compiler triple | LIVE | |
| 58 | tools/cdecl.py | P6 | PORTABLE | parse C declarators once, for every declaration tool to share | The single recursive-descent C declarator parser every declaration tool shares | C89 grammar only | LIVE | |
| 59 | tools/cdtrace.py | PROJECT-ONLY | PROJECT-ONLY | observe a live loader's requests to learn which payload loads where | Reads one game's loader request structures at fixed RAM addresses | project-only | STILL-NEEDED | observe a live loader's requests to learn which payload is read to which address |
| 60 | tools/claude_wave_packs.py | P8 | ADAPT | build the per-function prompt packs a drafting agent wave works from | Builds the per-function prompt packs an agent wave drafts from | repo scratch paths, agent harness | LIVE | |
| 61 | tools/compile_only.py | P9 | ADAPT | compile every eligible translation unit with the pinned toolchain, using no derived bytes | Compiles every eligible translation unit with the pinned toolchain, without any game bytes | compiler triple, repo makefile parsing | LIVE | |
| 62 | tools/conform_decls.py | P6 | ADAPT | conform every declaration of a function fleet-wide to its byte-true definition — width and signedness proven by the bytes at bank time (Phase 6) | Conforms every declaration of a function fleet-wide to its byte-true definition | repo src/shared-header layout | FROZEN | the types phase (Phase 37) |
| 63 | tools/cookbook_index.py | P9 | ADAPT | generate a symptom-keyed index of a large technique document | Generates a symptom-keyed index of the large technique document | repo doc paths | LIVE | |
| 64 | tools/corpus.py | P5 | ADAPT | answer from one derived model whether each function is open, matched or shared | The single derived model of the source tree: open, matched or shared, per function | repo src/config layout | LIVE | |
| 65 | tools/decl_from_use.py | P6 | ADAPT | infer a minimal extern for a data symbol the destination unit does not declare | Infers a minimal extern for a data symbol a draft uses but its destination does not declare | repo src layout | LIVE | |
| 66 | tools/decl_prior.py | P6 | ADAPT | compute the fleet's consensus declaration for every symbol, as card fuel — the seed of a canonical type layer (Phase 6) | Computes the fleet's consensus declaration for every symbol, as card fuel | repo src layout | LIVE | |
| 67 | tools/decompile.py | P4 | ADAPT | turn one function's disassembly into a C scaffold to start a match | Wrapper locating a function's disassembly and running the C-scaffold generator on it | repo asm paths, decompiler target name | STILL-NEEDED | turn one function's disassembly into a C scaffold to start a match |
| 68 | tools/decompme_replica.sh | P4 | ADAPT | reproduce an external reference toolchain locally and compare its words to target | Runs a function through an external reference toolchain build and compares words against the target | pinned toolchain versions, network fetch | STILL-NEEDED | kept: a public preset request needs the replica of the community toolchain to prove equivalence |
| 69 | tools/dedup_extend.py | P6 | ADAPT | extend an existing code-share registry to newly onboarded binaries | Extends the existing share registry to newly onboarded binaries | repo config/src layout | SUPERSEDED | tools/share_body.py |
| 70 | tools/dedup_integrate.py | P6 | ADAPT | validate a code-share registry byte-honestly, failing closed on signature drift | Byte-honesty validator for the code-share registry; fails closed on signature drift | repo config registry path | LIVE | |
| 71 | tools/dedup_propagate.py | P6 | ADAPT | lift one matched body into a shared macro and instantiate it everywhere | Lifts one matched body into a shared macro and instantiates it at every duplicate site | repo shared-header/src layout | SUPERSEDED | tools/share_body.py |
| 72 | tools/delever.py | P10 | ADAPT | take register pins, asm statements, volatile and register levers out of matched C, byte-gated per site | The Phase-36 de-lever engine and campaign tool: positional rewrites per lever class (pin -> plain declaration, barrier/keep-alive deleted, a launder deleted or turned into the assignment it is, a hand-placed instruction -> its C, the zero-register variable -> 0, a macro-carried site deleted/valued/refused by its macro's shape, volatile/register dropped); per body replay -> rung A strip-all -> rung B greedy through delever_oracle; the file is the write unit and its final compile through every recipe the proof; --plan/--apply batches (TUs parallel, exemplar files first; headers serial, includers parallel), the ledger keyed by tu+fn+addr with the body's nhash before/after, !FAKE markers on class A/B survivors, --redraw for bodies refused by an older tool, --restore from inflight.json, --scrub for orphan markers, --apply-body for T6/T7, --recipes (rung R: the byte-neutral shape recipes — the formerly-pinned declarations permuted, one moved through the declaration run, an initializer split — each judged by the oracle, with an identity control on both the splice and the oracle), --selftest with a stub oracle, --probe (T2) | the census site records, the oracle | LIVE | |
| 73 | tools/delever_permute.py | P10 | ADAPT | search the compiler's own shape space for a lever-free body that keeps the bytes | The Phase-36 rung D: one exemplar per residue text class from the delever ledger (largest class first — a match banks every copy), each prepared as a single-function translation unit (delever's rung-A rewrite of every removable site, every other definition reduced to a prototype, shared-header includes to their prototypes, INCLUDE_ASM and file-scope asm dropped, the build's own CPPFLAGS through cpp -P) against a target regenerated from the ROM image in both the assemblable and the splat form; every attempt calibrates itself first (the LEVERED body must be MATCH, or the harness is not measuring that function) and records the lever-free body's starting distance; decomp-permuter through permuter_ils with the weight profile chosen from the NEEDED kinds; a score-0 winner is banked only through delever --apply-body and the GTE re-fold; scratch, winners and the outcome ledger keyed by alias+fn | the ledger, the permuter harness, the target regenerator | LIVE | |
| 74 | tools/delever_search.py | P10 | ADAPT | find a lever-free spelling of a body by a guided search on the byte distance, not a blind test | The Phase-36 rung G: the same shape generators as rung R (declaration order/move, initializer split, commutative swap, temp inlined/introduced/hoisted, block wrap/unwrap, adjacent swap) and the same per-TU oracle, but every candidate SCORED — the function's instructions read out of the scratch object and compared, reloc-masked, with the fleet run's baseline object, as an edit distance — the residual CLASSIFIED (REG caller/callee, COUNT, ORDER, MIXED) to choose the move families, and a beam search composing two and three moves under a compile budget; a score-0 verified on every recipe and banked through delever --apply-body, then --propagate to the class. Controls: the tree's own text must score 0 (per body), --positive-control perturbs a matching body and requires the way back, --selftest. | repo scratch paths; the recipe oracle | LIVE | |
| 75 | tools/delever_pack.py | P10 | ADAPT | build the pack one agent needs to read and crack one residue exemplar, without touching the tree | The Phase-36 T7 pack builder (one agent at a time): per residue exemplar of ≥N copies a directory under .run/P36/agents/ with the TU path, the body as the tree has it, the lever-free body (the seed), the residual as mnemonic blocks from delever_search --try (a scratch compile, no tree write), the ledger's NEEDED sites, and every engine attempt with its best moves; ORDER.tsv ranks the exemplars by the best distance reached, then copies. PROMPT.md beside them is the agent's brief. | repo scratch paths; the engine's outcomes and traces | LIVE | |
| 76 | tools/delever_regen.py | P10 | ADAPT | re-run newly harvested generator families over the whole residue and bank what closes, without re-sweeping | The Phase-36 regen pass (S103): for every residue class, the lever-free body and the engine's best text are fed to delever.recipe_candidates with ONLY the named families (default R22 R23) and every candidate is scored read-only through delever_search --try --body, one worker per class; a TSV under .run/P36/regen/ lists each class's best; --bank re-scores each score-0 row on the current tree, then apply_body_core + --propagate (the one writer). Built because no search ever revisits a residue class after a new generator lands. | repo scratch paths, the delever generator registry | LIVE | |
| 77 | tools/localalloc_sim.py | P10 | ADAPT | see which register local-alloc gives each value inside one basic block, and why, before trying a register move | Simulates gcc 2.7.2's block_alloc for the block containing a given insn from a .lreg dump: quantity births/deaths, ties (combine_regs), copy suggestions, qty_compare_1 priority, find_free_reg — and prints the simulated hard register beside the one the dump records (0 mismatches over 150 validated block simulations, S103). Complements alloc_table.py, which shows global allocation only. | the cc1 dump format | LIVE | |
| 78 | tools/delever_oracle.py | P10 | ADAPT | judge one translation-unit edit by the bytes of its object in under a second | The Phase-36 fast byte oracle: every object's exact build command captured once via make -n -W (the Makefile's own recipe, pad stage and -O0 overrides included), a candidate compiled in place with -o/-MF redirected to scratch and compared with the fleet run's object; --calibrate proves 100 % equality untouched, twin == primary and a positive control before any verdict is trusted | the Makefile's object rules, the twin rule | LIVE | |
| 79 | tools/gte_consolidate.py | P10 | ADAPT | consolidate the GTE coprocessor inline-asm macros under Sony's names in one header and sweep dead lever macros | The Phase-36 T5 tool: every asm-bearing macro definition and direct GTE statement SIGNED by the build's own maspsx→as tail (template bytes with operands bound to fixed registers, operand counts, clobbers); one canonical text per signature named by PsyQ's inline_c.h convention (Sony's file supplies names and clobber lists, never opcode words) written to include/gte_inline.h; per file the canonical duplicates deleted, private names renamed, a variant with extra clobbers tried as canonical and kept as a marked <name>_m lever only when the object differs, direct statements rewritten into canonical calls (a concatenation of two included); every file judged through every recipe; --sweep deletes dead asm-bearing macros and drops a compound macro's inner asm when byte-neutral | Sony's inline_c.h path, the census sites, the oracle | LIVE | |
| 80 | tools/demacroize.py | P6 | ADAPT | escape a shared-header declaration conflict locally by unmacroizing one body | Per-binary local escape from a shared-header declaration conflict by unmacroizing one body | repo shared-header layout | FROZEN | tools/share_body.py |
| 81 | tools/diff_autopsy.sh | P7 | ADAPT | find which words diverge when the whole-binary gate says different but not where | Reproduces exactly what the gate saw, then decodes the diverging words and restores the tree | repo src/build paths | STILL-NEEDED | find WHICH words diverge when the whole-binary gate says DIFF but not where |
| 82 | tools/diff_regions.py | P7 | ADAPT | classify where a remapped sibling's compiled bytes diverge from its target | Classifies where a remapped member's compiled bytes diverge from its target | repo build paths | STILL-NEEDED | classify where a mechanically remapped sibling's compiled bytes diverge from its target |
| 83 | tools/difficulty.py | P5 | ADAPT | rank unmatched functions easiest-first by size, control flow and call count | Ranks unmatched functions easiest-first by size, control flow, table presence and call count | repo asm layout | LIVE | |
| 84 | tools/disc_audit.py | PROJECT-ONLY | PROJECT-ONLY | account for every byte of the medium, leaving zero unexplained residue | Byte partition over one disc, importing the game-specific container and compression modules — the partition itself (every byte of the medium accounted for, residue zero) is a Phase-1 task | project-only | LIVE | |
| 85 | tools/distill_scan.py | P8 | ADAPT | decide which harvested waves still need mining into the technique document | One pass of the distillation lane deciding which harvested waves still need mining | repo scratch paths | LIVE | |
| 86 | tools/doc_links.py | P9 | ADAPT | check that every relative link in the public docs resolves | Checks that every relative link in the public docs resolves and the link policy holds | repo doc paths | LIVE | |
| 87 | tools/draft_prechecks.py | P4 | ADAPT | skip a draft doomed to fail before any compile is spent | Static pre-checks that skip a draft doomed to fail before any compile is spent | repo symbol/config sources | LIVE | |
| 88 | tools/draw_waves.py | P8 | ADAPT | draw several drafting waves off the open frontier, cheapest-first | Draws several drafting waves off the open frontier, cheapest-first | repo scratch paths | LIVE | |
| 89 | tools/dup_report.py | P5 | ADAPT | report byte-identical and structurally identical function groups within and across binaries | Reports byte-identical and structurally identical function groups within and across binaries | repo signature files | LIVE | |
| 90 | tools/eval_lora.py | P8 | ADAPT | evaluate a fine-tuned matching model gate-truthfully on held-out banked functions | Gate-true evaluation of a fine-tuned model on held-out banked functions | dataset paths, repo corpus | STILL-NEEDED | evaluate a fine-tuned matching model gate-truthfully on held-out banked functions |
| 91 | tools/exclude_audit.py | P6 | ADAPT | classify every exclude-list entry by its current blocker and regenerate the list | Classifies every exclude-list entry by its current blocker and regenerates the list | repo config path | LIVE | |
| 92 | tools/exemplar_miner.py | P6 | ADAPT | route every residual stub to its lever and rank the highest-reach work | Routes every residual stub to its lever and ranks the highest-reach work | census file paths, canonical source binary | SUPERSEDED | tools/atlas.py |
| 93 | tools/export_pairs.py | P8 | ADAPT | mine gate-verified assembly-to-source pairs into a fine-tuning corpus | Mines gate-verified assembly-to-source pairs into a fine-tuning corpus | repo src/build layout | STILL-NEEDED | mine gate-verified assembly-to-source pairs into a fine-tuning corpus |
| 94 | tools/family_align.py | P6 | ADAPT | classify drifted structural siblings by aligned words and expand their constants | Length-tolerant aligned classifier plus the mechanical constant-expansion engine for drifted members | repo scratch paths | LIVE | |
| 95 | tools/family_cousins.py | P6 | ADAPT | cluster the open frontier one tier looser than exact skeleton hashing | Similarity clustering one tier looser than exact skeleton hashing over the open frontier | repo signature files | LIVE | |
| 96 | tools/family_hseq.py | P6 | ADAPT | rank clusters of the unmatched frontier by mnemonic-skeleton hash | Ranked clustering of the unmatched frontier by mnemonic-skeleton hash | repo signature files | LIVE | |
| 97 | tools/family_manifest.py | P6 | ADAPT | name the one exemplar to draft per structural family, ranked | Ranked structural-family target manifest naming the one exemplar to draft per family | repo signature files | LIVE | |
| 98 | tools/family_remap.py | P6 | ADAPT | remap a matched exemplar's source onto a structural sibling by positional symbol pairing | Mechanically remaps a matched exemplar's C onto a structural sibling by positional symbol pairing | repo src layout | FROZEN | tools/share_body.py |
| 99 | tools/family_sweep.py | P6 | ADAPT | sweep a matched exemplar across every same-structure sibling, gate-arbitrated | Sweeps a matched exemplar across every same-structure sibling, gate-arbitrated | repo src/config layout | FROZEN | tools/share_body.py |
| 100 | tools/fetch_psyq.sh | P9 | ADAPT | acquire and checksum-verify vendor SDK pieces for a linked build | Optional acquisition and checksum verification of vendor SDK pieces for the linked build | PS1 SDK sources, repo paths | LIVE | |
| 101 | tools/find_addr_refs.py | P2 | PORTABLE | find code that materializes an absolute address, tracking registers rather than pairing windows | Register-tracked scan for code that materializes an absolute address; never window-paired | MIPS encodings, repo binary registry | LIVE | |
| 102 | tools/fix_arity_callers.py | P6 | ADAPT | repair a shared caller's argument-count conflict for the no-prototype failure class | Repairs the shared-caller argument-count conflict for the no-prototype failure class | repo shared-header layout | LIVE | |
| 103 | tools/fix_decl_mirror.py | P6 | ADAPT | bind a void definition to a symbol the destination declares as returning a value | Binds a void definition to its symbol when the destination declares a value return | repo src layout | LIVE | |
| 104 | tools/fix_header_decl.py | P6 | ADAPT | rewrite a shared-header caller declaration to a draft's byte-true signature | Rewrites a shared-header caller declaration to a draft's byte-true signature | repo shared-header path | SUPERSEDED | tools/conform_decls.py |
| 105 | tools/fix_tu_ret_decls.py | P6 | ADAPT | retype a unit's stale forward declarations to a draft's byte-true return, reverting on failure | Retypes a binary's own stale forward declarations to a draft's byte-true return, revert-on-fail | repo src layout | LIVE | |
| 106 | tools/format_finetune.py | P8 | ADAPT | turn mined pairs into a chat-template instruction dataset | Turns the mined pairs into a chat-template instruction dataset | dataset paths, model chat template | LIVE | |
| 107 | tools/fragment_check.py | P8 | ADAPT | refuse a draft that swallows a neighbouring symbol inside one function's range | Refuses drafts that subsume a neighbouring symbol, the enclosing-function trap | repo asm layout | STILL-NEEDED | refuse a draft that swallows a neighbouring symbol inside one function's range |
| 108 | tools/frogress_upload.py | P9 | ADAPT | publish progress metrics to a hosted progress service | Posts the progress JSON to a hosted progress service, dry-run by default | service URL, project/version names | STILL-NEEDED | publish progress metrics to a hosted decomp progress service |
| 109 | tools/frontier_classify.py | P5 | ADAPT | name the true blocker of every remaining open function, deterministically | Classifies every remaining open function by its true blocker, deterministically | repo paths | STILL-NEEDED | name the true blocker of every remaining open function, deterministically |
| 110 | tools/frozen.py | P10 | PORTABLE | refuse, from one place, the command line of a tool the project has frozen | The one refusal a FROZEN tool prints from its main(): the tool, the successor and why; imports never exit (libraries stay usable) | nothing | LIVE | |
| 111 | tools/gap_triage.py | P8 | ADAPT | pre-filter agents' knowledge-gap reports against the existing technique document | Pre-filters a wave's knowledge-gap reports against the existing documentation | repo doc paths | STILL-NEEDED | pre-filter agents' knowledge-gap reports against the existing technique document |
| 112 | tools/gate_lane.py | P8 | ADAPT | drive a wave's gate accepting either result shape and an explicit draft path | The wave gate driver, accepting either result shape and an explicit draft path | repo scratch paths | LIVE | |
| 113 | tools/gate_main.py | P8 | ADAPT | gate the executable's drafts the only trustworthy way: a clean rebuild with bisect | Gates a batch of executable drafts the only trustworthy way: a clean rebuild with bisect | repo build/make targets | LIVE | |
| 114 | tools/gate_main_parallel.py | P8 | ADAPT | discover an executable slate's bankable drafts concurrently, then bank once serially | Discovers the executable's bankable drafts concurrently, then banks them once, serially | repo build/make targets | STILL-NEEDED | discover an executable slate's bankable drafts concurrently, then bank once serially |
| 115 | tools/gate_stage.py | P8 | ADAPT | run the one shared recovery, byte-gate and log ladder every producer calls | The shared deterministic recovery, gate and log ladder every producer calls | repo src/config layout | LIVE | |
| 116 | tools/gate_triage.py | P8 | ADAPT | route a gate result set to the repair tool its own verdict names | Routes a gate result set to the repair tool its own verdict names | repo scratch paths | LIVE | |
| 117 | tools/gate_wave.py | P8 | ADAPT | gate a whole wave by splitting table-bearing drafts off and running lanes concurrently | Gates a whole wave by splitting table-bearing drafts off and running both lanes concurrently | repo scratch/config layout | LIVE | |
| 118 | tools/gater_lane.py | P8 | ADAPT | drain finished drafts into the gate continuously while drafting still streams | Continuous gater draining a wave's finished drafts into the parallel gate, grouped by binary | repo scratch paths | STILL-NEEDED | drain finished drafts into the gate continuously while drafting still streams |
| 119 | tools/gccmap_cites.py | P7 | ADAPT | tag every compiler-source citation with the source tree it refers to | Tags every compiler-source citation in the codegen-map docs with the tree it refers to | repo doc/reference paths | LIVE | |
| 120 | tools/gen_engine_decls.py | P6 | ADAPT | declare every shared function and data symbol once, canonically, in a generated header | Declares every shared function and data symbol once, canonically, in a generated header | repo shared-header path | SUPERSEDED | tools/conform_decls.py |
| 121 | tools/gen_harvest_targets.py | P8 | ADAPT | generate a callee-signature-aware target manifest with per-function fleet reach | Generates a callee-signature-aware target manifest with per-function fleet reach | canonical source binary, repo paths | FROZEN | tools/share_census.py |
| 122 | tools/gen_lib_subsegs.py | P3 | ADAPT | generate segment lines and a stub list for a multi-block vendor library region | Generates segment lines and a stub list for a multi-block vendor library region | repo config layout, PS1 SDK libs | LIVE | |
| 123 | tools/ghidra_annotations_delta.py | P2 | ADAPT | derive the hand-authored annotations by subtracting a fresh analysis baseline | Derives the hand-authored annotation rows by subtracting a fresh rebuild baseline | repo paths | LIVE | |
| 124 | tools/ghidra_apply_symbols.sh | P10 | ADAPT | mirror the curated symbol file into the analysis database with a real save | Mirrors the curated symbol file into the analysis program headlessly, with a real save | repo symbol path, project name | STILL-NEEDED | mirror the curated symbol file into the analysis database headlessly with a real save |
| 125 | tools/ghidra_export_annotations.sh | P2 | ADAPT | export a program's annotations to byte-stable line-delimited records, read-only | Read-only export of a program's annotations to byte-stable line-delimited JSON | repo paths | LIVE | |
| 126 | tools/ghidra_import.sh | P2 | ADAPT | import and auto-analyze a console executable headlessly with the platform loader | Headless import and auto-analysis of a console executable with the platform loader | PS1 executable loader, project name | LIVE | |
| 127 | tools/ghidra_import_raw.sh | P2 | ADAPT | import a flat headerless blob at a given base with the right processor spec | Headless import of a flat headerless blob at a given base with the right processor spec | PS1 processor spec, project name | LIVE | |
| 128 | tools/ghidra_mcp_start.sh | P2 | ADAPT | start the disassembler's automation server detached on a fixed local port | Starts the headless disassembler MCP server detached on a fixed local port | repo paths, project name, port | LIVE | |
| 129 | tools/ghidra_mcp_stop.sh | P2 | ADAPT | close the analysis program cleanly so its edits actually persist | Clean save-and-close via a sentinel file; the only persistence event | repo paths, project name | LIVE | |
| 130 | tools/ghidra_mcp_verify.sh | P2 | ADAPT | re-open read-only to confirm a symbol edit survived the save | Read-only re-open confirming a symbol edit actually persisted after save-shutdown | repo paths, project name | LIVE | |
| 131 | tools/ghidra_rebuild.sh | P2 | ADAPT | rebuild an analysis program from committed text plus extracted bytes, proving equality | Rebuilds one analysis program from committed text plus extracted bytes, and proves equality | repo paths, project layout | LIVE | |
| 132 | tools/ghidra_roster.py | P2 | ADAPT | generate and check a roster of committed analysis programs from the registry | Generates and checks a roster of committed analysis programs from the build registry | repo config paths | LIVE | |
| 133 | tools/ghidra_scripts/ApplySymbols.java | P10 | PORTABLE | apply curated names and signatures inside the analysis tool and save | The in-tool half of that mirror: apply curated names and signatures, save on exit | none | LIVE | |
| 134 | tools/ghidra_scripts/BfmMcpServer.java | P2 | ADAPT | serve the analysis tool over an automation protocol, saving on a sentinel stop | The headless MCP server itself; holds an open transaction and saves on a sentinel stop | repo sentinel path, server port | LIVE | |
| 135 | tools/ghidra_scripts/DecompileAt.java | P2 | ADAPT | decompile one function at a given address straight from the analysis database | Headless script decompiling the function at one address and printing its C | default address | STILL-NEEDED | decompile one function at a given address straight from the analysis database |
| 136 | tools/ghidra_scripts/DecompileFunctions.java | P2 | PORTABLE | batch-decompile an address list into one source file per function | Headless batch decompile of an address list into one C file per function | none | LIVE | |
| 137 | tools/ghidra_scripts/DefineFunctions.java | P2 | ADAPT | create functions at externally validated entry points listed in a file | Disassembles and creates functions at externally validated entry points listed in a file | repo scratch path | LIVE | |
| 138 | tools/ghidra_scripts/DumpFunctionSignatures.java | P2 | PORTABLE | dump per-function fingerprints in three hash tiers for cross-binary correspondence | Read-only per-function fingerprint dump in three hash tiers for cross-binary correspondence | none | LIVE | |
| 139 | tools/ghidra_scripts/DumpProgramInfo.java | P2 | PORTABLE | print a program's language, compiler spec, image base and function count | Prints program metadata: language, compiler spec, image base, function count, properties | none | LIVE | |
| 140 | tools/ghidra_scripts/ExportAnnotations.java | P2 | PORTABLE | serialize types, signatures, data, comments and labels to stable records | Read-only serialization of types, signatures, data, comments, bookmarks and labels to stable JSONL | none | LIVE | |
| 141 | tools/ghidra_scripts/ExportSymbols.java | P2 | PORTABLE | export the analysis database's hand-authored symbols to a committable text file | Exports user-defined symbols to a committable text file so annotations are version-controlled | none | STILL-NEEDED | export the analysis database's hand-authored symbols to a committable text file |
| 142 | tools/ghidra_scripts/GetSymbolAt.java | P2 | PORTABLE | print the symbol name at one address for scripted persistence checks | Prints the function or symbol name at one address for scripted persistence checks | none | LIVE | |
| 143 | tools/ghidra_scripts/ImportAnnotations.java | P2 | PORTABLE | import annotations back into a program, comparing before writing | Idempotent compare-before-write import of the annotation JSONL back into a program | none | LIVE | |
| 144 | tools/ghidra_scripts/ImportPsyqGdt.java | P2 | ADAPT | resolve a vendor SDK type archive into the program's type manager | Headlessly resolves a vendor SDK type archive into the program's type manager | PS1 SDK type archive name | LIVE | |
| 145 | tools/ghost_census.py | P7 | PORTABLE | find pseudo-registers with references but no remaining occurrences, and their frame slots | Frame-residue oracle: finds pseudos with references but no remaining occurrences, and their slots | compiler pass-dump format | LIVE | |
| 146 | tools/gitignore_template_check.py | P9 | ADAPT | assert a documented ignore-file template equals the shipped template byte for byte | Asserts the ignore-file template in the docs equals the kit's template byte for byte | repo doc and template paths | LIVE | |
| 147 | tools/glm_parallel.sh | P8 | ADAPT | split a target list into slices and run concurrent drafting workers | Splits a target list into slices and runs concurrent drafting workers against one endpoint | provider endpoint, repo paths | SUPERSEDED | tools/ox_campaign.py |
| 148 | tools/glm_reconcile.py | P8 | ADAPT | aim a reasoning model at the declaration wall and capture its reasoning | Aims a reasoning model at the declaration wall and captures its reasoning for reuse | provider endpoint, repo paths | ONE-OFF | the measured verdict that the declaration wall is a reconciliation problem, plus the captured reasoning distilled into the cookbook (Phase 23 T10.7 A/B) |
| 149 | tools/grinder.py | P7 | ADAPT | grind the closest near-misses with the permuter and bank through the gate | Token-free permuter daemon grinding the closest near-misses and banking through the gate | repo scratch paths | LIVE | |
| 150 | tools/harvest_verify.py | P8 | ADAPT | substitute, build, keep only if byte-identical, else revert | The whole-binary byte gate: substitute, build, keep only if identical, else revert | repo src/build layout | LIVE | |
| 151 | tools/idiom_harvest.py | P8 | ADAPT | pull newly learned idioms out of a wave's logs into candidate notes | Pulls the newly learned idioms out of a wave's shard logs into candidate notes | repo log paths | LIVE | |
| 152 | tools/idiom_hunt.py | P8 | ADAPT | discover new compiler idioms from grouped near-misses with a reasoning model | Uses a reasoning model on grouped near-misses to discover new compiler idioms | provider endpoint, repo paths | LIVE | |
| 153 | tools/idiom_loop.py | P8 | ADAPT | drain the easy fuel, learn the next idiom, hand off, repeat | Never-ending meta-loop: drain the easy fuel, learn the next idiom, hand off | repo scratch paths | SUPERSEDED | tools/idiom_serial.py |
| 154 | tools/idiom_serial.py | P8 | ADAPT | learn idioms serially so each target inherits what the previous one taught | The serial idiom-learning lane where each step inherits what the previous learned | repo scratch paths | LIVE | |
| 155 | tools/idxtab_map.py | PROJECT-ONLY | PROJECT-ONLY | decode an on-disc index table into a payload-to-binary naming map | Decodes one game's on-disc index table and its payload-to-binary naming convention — the load map itself is a Phase-2 task | project-only | LIVE | |
| 156 | tools/inject_capped_externs.py | P6 | ADAPT | free duplicate matches a share propagation skips as not self-contained | Frees high-reach inline matches skipped as not self-contained by injecting their file-scope externs | repo shared-header layout | FROZEN | tools/share_body.py |
| 157 | tools/integration_resolver.py | P8 | ADAPT | re-judge already byte-correct drafts and bank them for zero model tokens | Zero-token lane re-judging drafts that are already byte-correct and banking them | repo scratch paths | LIVE | |
| 158 | tools/interleave_check.py | P6 | ADAPT | assert a read-only-data carve's interleave order equals the segment sequence | Asserts the carve interleave order equals the segment sequence, position by position | repo config layout | STILL-NEEDED | assert a read-only-data carve's interleave order equals the segment sequence |
| 159 | tools/journal_notes.py | P8 | ADAPT | mine each function's own past-attempt history out of agent journals | Mines per-function past-attempt notes out of the agent journals into card fuel | agent transcript paths | LIVE | |
| 160 | tools/jr_isolate.py | P6 | ADAPT | isolate one switch function into its own segment for an independent table carve | Isolates one switch function into its own code segment for an independent table carve | repo config/src layout | SUPERSEDED | tools/jr_isolate_all.py |
| 161 | tools/jr_isolate_all.py | P6 | ADAPT | isolate every switch function in a binary in one multi-cut resegment | One-shot multi-cut resegment isolating every switch function in a binary | repo config/src layout | LIVE | |
| 162 | tools/jtbl_carve.py | P6 | ADAPT | set up the read-only-data carve for a binary's matched jump-table functions | Sets up the read-only-data carve for a binary's matched jump-table functions | repo config/build layout | LIVE | |
| 163 | tools/jtbl_family_bank.py | P6 | ADAPT | bank a matched jump-table exemplar across its siblings, reverting on failure | Banks a matched jump-table exemplar across its structural siblings, revert-on-fail | repo config/src layout | LIVE | |
| 164 | tools/jtbl_lane.py | P8 | ADAPT | carve, draft and bank jump-table functions as their own lane | Carve, draft and bank lane for jump-table functions, with the carve deliberately outside it | repo config/src layout | LIVE | |
| 165 | tools/jtbl_pads_fix.py | P6 | ADAPT | repair a stale padding spec by search plus byte proof, never by guessing | Repairs a stale padding spec by search plus byte proof, never by guessing | repo config layout | LIVE | |
| 166 | tools/jtbl_rodata_pads.py | P6 | ADAPT | reproduce the original inter-table padding in a multi-table carve | Post-assembler filter reproducing the original inter-table padding in a multi-table carve | compiler/assembler behaviour, repo build paths | LIVE | |
| 167 | tools/kit_coverage.py | P9 | ADAPT | assert that the distilled kit cites or dispositions every rule and every hindsight entry of the source project (no silent gap in the distillation) | Derives the rule and accelerator populations from the digest and the ledger, matches them against the kit's provenance lines, refuses an uncovered entry unless config/kit_coverage_map.tsv dispositions it | repo digest/ledger/kit paths + the provenance citation forms | LIVE | |
| 168 | tools/kit_lint.py | P9 | ADAPT | keep a portable starter kit free of one project's names, paths and numbers | Keeps the day-one kit free of the source project's names, paths, addresses and rule numbers, honours its placeholder contract, and syntax-checks its scripts | the kit path and the source project's leak pattern | LIVE | |
| 169 | tools/lane_inflight.py | P8 | ADAPT | know authoritatively which drafting agents are currently live | The authoritative ledger of which drafting agents are currently live | repo scratch paths | LIVE | |
| 170 | tools/lanes/bounce_drafter_on_queue.sh | P8 | ADAPT | restart a drafting worker at a queue boundary so new arguments apply | Waits for the in-flight wave to queue, then restarts the drafting process | lane script paths | SUPERSEDED | tools/lanes/relaunch_drafter_shell.sh |
| 171 | tools/lanes/campaign.sh | P8 | ADAPT | run two drafting pools against one serial gate | Dual-pool campaign lane: two drafting pools, one serial gate | provider config, repo paths | LIVE | |
| 172 | tools/lanes/distill.sh | P8 | ADAPT | run distillation beside drafting so learned idioms reach the next wave | The distillation lane, running beside drafting and never in front of it | repo scratch paths | STILL-NEEDED | run distillation beside drafting so learned idioms reach the next wave |
| 173 | tools/lanes/drafter.sh | P8 | ADAPT | keep drafting running continuously, touching only scratch state | The drafting lane that must never stop; touches only scratch state | repo scratch paths, provider config | LIVE | |
| 174 | tools/lanes/elastic.sh | P8 | ADAPT | spend spare provider capacity on other work when the gate is the constraint | Spends spare provider capacity on extra work when the main lane cannot | provider config, repo paths | STILL-NEEDED | spend spare provider capacity on other work when the gate is the constraint |
| 175 | tools/lanes/forever.sh | P8 | ADAPT | keep an unattended campaign loop alive across run caps and crashes | Keeps the wave campaign running indefinitely across caps and crashes | repo scratch paths | STILL-NEEDED | keep an unattended campaign loop alive across run caps and crashes |
| 176 | tools/lanes/gater.sh | P8 | ADAPT | run a restartable gating lane that is safe to kill at any time | The restartable gating lane, safe to kill and relaunch at any time | job count, repo paths | LIVE | |
| 177 | tools/lanes/grinder_lane.sh | P8 | ADAPT | run the token-free permuter grinder beside a saturated gate | Runs the model-free permuter grinder beside a saturated gater | repo scratch paths | STILL-NEEDED | run the token-free permuter grinder beside a saturated gate |
| 178 | tools/lanes/launch_ox.sh | P8 | ADAPT | launch a sharded unattended campaign run with a tag and shard count | Launcher for a sharded campaign run with a tag and shard count | provider key file, repo paths | ONE-OFF | the sharded overnight campaign run it launched (its key file, endpoint and model are that campaign's) |
| 179 | tools/lanes/main.sh | P8 | ADAPT | run the executable's own lane loop on its clean-rebuild cadence | The executable's own lane loop, on its clean-rebuild cadence | repo make targets | LIVE | |
| 180 | tools/lanes/maintenance.sh | P8 | ADAPT | run the free recovery and re-judgement passes whenever the gate is idle | The maintenance lane running the free recovery and re-judgement passes | repo scratch paths | STILL-NEEDED | run the free recovery and re-judgement passes whenever the gate is idle |
| 181 | tools/lanes/relaunch_drafter_shell.sh | P8 | ADAPT | restart the drafting lane's shell at a queue boundary so new arguments apply | Waits for a wave to queue, then restarts the drafting lane's shell so new arguments apply | lane script paths | STILL-NEEDED | restart the drafting lane's shell at a queue boundary so new arguments apply |
| 182 | tools/lanes/resolver_lane.sh | P8 | ADAPT | re-judge, verify twice, stage and gate correct drafts for zero tokens | The zero-token resolver lane: re-judge, verify twice, stage, gate, commit | repo scratch paths | STILL-NEEDED | re-judge, double-verify, stage and gate already-correct drafts for zero model tokens |
| 183 | tools/lanes/restart_gater_when_idle.sh | P8 | ADAPT | restart the gating lane's shell between gates so a jobs change lands | Restarts the gating lane's shell once the current gate finishes | lane script paths | STILL-NEEDED | restart the gating lane's shell between gates so a jobs change lands |
| 184 | tools/lanes/restart_main_lane_when_idle.sh | P8 | ADAPT | restart the executable lane's shell at its one safe boundary | Restarts the executable lane's shell at its one safe boundary | lane script paths | STILL-NEEDED | restart the executable lane's shell at its one safe boundary without losing work |
| 185 | tools/lanes/sibling_lane.sh | P8 | ADAPT | drive structural sibling sweeps with synthesized declarations, free of model tokens | The free sibling lane driving structural sweeps with synthesized declarations | repo paths | STILL-NEEDED | drive structural sibling sweeps with synthesized declarations, free of model tokens |
| 186 | tools/lanes/stallguard.sh | P8 | ADAPT | detect and repair lane stalls automatically on measured conditions | Detects and repairs lane stalls on measured conditions every minute, logging each action | lane names, repo paths | STILL-NEEDED | detect and repair lane stalls automatically on measured conditions |
| 187 | tools/lanes/toolwork.sh | P8 | ADAPT | run tooling-design briefs against an external model with the build config | Runs tooling-design briefs against an external model with build config as context | provider config, repo paths | ONE-OFF | the tooling-design briefs it ran against an external model (its key, endpoint and model are that era's) |
| 188 | tools/lanes/wait_distill.sh | P8 | ADAPT | block until a background lane raises its next batch, without polling | Blocks until the distillation lane raises the next batch, then exits | repo scratch paths | STILL-NEEDED | block until a background lane raises its next batch, without polling |
| 189 | tools/launch_check.py | P8 | ADAPT | refuse to launch an agent at a target that is already banked | Refuses to launch an agent at a target that is already banked | repo src layout | LIVE | |
| 190 | tools/ld_interleave.py | P3 | ADAPT | reorder a generated linker script to reproduce the original section interleaving | Reorders a generated linker script to reproduce the original section interleaving | repo build paths | LIVE | |
| 191 | tools/len_tells.py | P7 | ADAPT | classify a length-drift near-miss against its own target and build its routing card | Classifies a length-drift near-miss against its own target and builds the routing card | repo scratch paths | LIVE | |
| 192 | tools/lenmiss_route.py | P7 | ADAPT | route a length-drift near-miss pile through the documented lenses, re-verified | Routes the length-drift near-miss pile through the documented lenses, re-verified against the tree | repo scratch paths | ONE-OFF | the routed outcome of one length-drift near-miss pile (it consumes that audit's classified ledger) |
| 193 | tools/lever_progress.py | P10 | ADAPT | keep the lever count as a series a chart and a story can be drawn from | The Phase-36 lever series: a milestone row appended per census snapshot (its totals by class with the tree's HEAD, since a census is a moment that cannot be recovered later) plus the campaign table derived from the de-lever ledger on every render — per batch the rungs used, the bodies first judged, the sites removed and rewritten, and, scored as a transition against what that body's previous row left, the sites a later rung closed and the bodies it made lever-free; renders both into docs/levers.md's generated block and --check refuses a series that is not this tree's | the census json, the delever ledger | LIVE | |
| 194 | tools/lever_census.py | P10 | ADAPT | census every compiler-forcing construct in the C and gate the levers-off phase | The Phase-36 census of lever sites (register pins, asm statements by kind, volatile levers, bare register, asm-label aliases, builtins, attributes; the whole-body hand-asm routines and the GTE ops set apart) derived from the shared-body scanner with a per-token coverage assertion against the raw text, four known-true controls, the !FAKE marker split, --check (0 unmarked pins/asm, 0 orphan markers) and --strict (0 pins, 0 asm) gates, --sites for the delever ledger, a fixture self-test | repo paths, the shared-body scanner | LIVE | |
| 195 | tools/lift_types.py | P6 | ADAPT | lift a named list of types fleet-wide into the shared type header — the canonical type layer from the first bank (Phase 6, the multiplier); again at readability (Phase 10) | Lifts a named list of types fleet-wide into the shared type header | repo shared-header path | LIVE | |
| 196 | tools/lint_symbol_refs.py | P10 | ADAPT | flag address-named references whose address now has a curated name | Flags address-named references in committed sources whose address now has a curated name | repo symbol/src paths | LIVE | |
| 197 | tools/lora_grind.py | P8 | ADAPT | rotate binaries drafting small stubs with a served model, gating and propagating | Mass-run driver rotating binaries, drafting small stubs with a served model, gating, propagating | repo scratch paths, model endpoint | LIVE | |
| 198 | tools/macro_draft.py | P6 | ADAPT | materialize a shared macro body back into a compilable standalone draft | Materializes a shared macro body back into a compilable standalone draft | repo shared-header layout | ONE-OFF | the per-function headers under src/shared/ (Phase 35 T4; the macro form is gone) |
| 199 | tools/macro_to_header.py | P10 | PROJECT-ONLY | convert a shared-body macro header into per-function plain-C headers included at each site | The Phase-35 converter: every DEFINE_ macro body becomes a plain-C header under src/shared/<space>/ included at its site, the legacy name-parameterized headers converted, the registry text-edited, the macro header deleted; --plan / --apply / --finalize / --verify | the macro form is this project's; a kit-born project shares headers from its first bank | LIVE | |
| 200 | tools/main_diff_locate.py | P7 | ADAPT | turn a red whole-binary result into a named list of divergent symbols | Turns a red whole-binary result into a named list of divergent symbols | repo build/config layout | LIVE | |
| 201 | tools/main_lane.py | P8 | ADAPT | run the executable's own draft, gate and commit cadence beside other lanes | The executable's own draft, gate and commit cadence beside the other lanes | repo build/make targets | LIVE | |
| 202 | tools/main_queue_rebuild.py | P8 | ADAPT | rebuild the executable lane's queue from the tree, never from a stale list | Rebuilds the executable lane's queue from the tree, never from a stale list | repo src layout | LIVE | |
| 203 | tools/main_seed_ends.py | P2 | ADAPT | emit function start and length seeds for the executable's own code objects | Emits function start/length seeds for the executable's game-code objects, derived from the build | repo build paths | LIVE | |
| 204 | tools/make_apicard_used.py | PROJECT-ONLY | PROJECT-ONLY | list the interface library's objects and address window the executable actually links | Hard-codes one executable's interface-library address window and object roster | project-only | LIVE | |
| 205 | tools/make_libgs.sh | PROJECT-ONLY | PROJECT-ONLY | assemble a vendor graphics library's object list and address blocks for linking | Hard-codes one executable's exact vendor object list and address blocks | project-only | LIVE | |
| 206 | tools/make_snd_used.py | PROJECT-ONLY | PROJECT-ONLY | list a sound library's address window and per-address exclusions | Hard-codes one executable's sound-library address window and per-address exclusions | project-only | LIVE | |
| 207 | tools/masked_diff.py | P4 | PORTABLE | compare instructions with relocations masked, shared by matcher and scorer | Shared relocation-masked instruction comparison used by the matcher and the permuter scorer | MIPS relocation encodings | LIVE | |
| 208 | tools/masked_scorer.py | P7 | ADAPT | score permuter candidates on true masked code closeness, not mnemonic diff | Drop-in permuter scorer scoring true relocation-masked code closeness instead of mnemonic diff | permuter internals, repo module paths | LIVE | |
| 209 | tools/match_one.py | P4 | ADAPT | compile one function standalone and compare its masked bytes to the target | Compiles one function standalone with the pinned toolchain, masks relocations, compares to target bytes | compiler triple, repo build flags | LIVE | |
| 210 | tools/match_protos.py | P6 | ADAPT | join two related builds' signature dumps into a function correspondence | Joins per-function signature dumps of two related builds into a function correspondence | repo signature files | LIVE | |
| 211 | tools/mine_hindsight.py | P9 | ADAPT | gather every recorded hindsight into one document with file and line anchors | Gathers every recorded hindsight with file and line anchors into one document | repo doc paths | STILL-NEEDED | kept: every project writes its retrospective from anchored records — the PhaseEnd narrative axis feeds exactly this tool |
| 212 | tools/mk_write.py | P3 | ADAPT | write the generated binary-registry makefile safely, validating before replacing | The only safe writer of the generated binary-registry makefile; validates before replacing | repo config path | LIVE | |
| 213 | tools/neighbor_ref.py | P8 | ADAPT | rank already-matched functions worth reading as worked examples for an open stub | For an open stub, ranks already-matched functions worth reading as worked examples | repo signature files | LIVE | |
| 214 | tools/new_binary.sh | P3 | ADAPT | onboard any flat blob in one command: config, registry entry, first build | One-command onboarding of any flat blob: config from template, registry entry, first build | repo config/template paths, the source game's payload classes | LIVE | |
| 215 | tools/new_overlay.sh | PROJECT-ONLY | PROJECT-ONLY | onboard one payload by its container and file-index naming | Takes one game's container and file-index naming as its command-line contract | project-only | LIVE | |
| 216 | tools/normalize_self_decls.py | P6 | ADAPT | normalize a function's own declaration when a templated definition lands in a new unit | Normalizes a function's own declaration when a templated definition lands in a new unit | repo src layout | FROZEN | tools/share_body.py |
| 217 | tools/o0_boundary.py | P6 | ADAPT | find and bank unoptimized functions stranded at an optimized region's boundary | Finds and banks unoptimized functions stranded at the end of an unoptimized region | repo config layout | STILL-NEEDED | find and bank unoptimized functions stranded at an optimized region's boundary |
| 218 | tools/o0_detect.py | P6 | ADAPT | answer from a prologue whether a function was built unoptimized | The single place that answers whether a function was built unoptimized, from its prologue | compiler prologue shape | LIVE | |
| 219 | tools/o0_subsplit.py | P6 | ADAPT | route an unoptimized address range sitting inside an otherwise optimized object | Routes an unoptimized address range that sits inside an otherwise optimized object | repo config layout | FROZEN | the Makefile -O0 globs (tools/rollout_o0.py) |
| 220 | tools/objdiff_report.py | P9 | PORTABLE | convert progress metrics into an external progress-report schema | Converts the progress JSON into the external progress-report schema | external report schema | LIVE | |
| 221 | tools/oracle/reg_renumber_swap.sh | P7 | ADAPT | decide whether a residual reorder is scheduling or a register-grant consequence | Mechanized oracle separating a register-allocation swap from a scheduling reorder | compiler triple, repo scratch paths | STILL-NEEDED | decide whether a residual reorder is a scheduling choice or a register-grant consequence |
| 222 | tools/oracle_reorder.py | P5 | ADAPT | decide whether a near-miss residual is a source defect or an assembler artifact | Decides whether a near-miss residual is a source defect or an assembler artifact | pinned assembler flags | LIVE | |
| 223 | tools/orchestrator.py | P8 | ADAPT | pick the pool, emit the batch and record the cycle, deterministically | The deterministic half of the unattended loop: pick the pool, emit the batch, record the cycle | repo scratch paths | LIVE | |
| 224 | tools/overlay_src_split.py | P6 | ADAPT | partition a source file at object boundaries, aware of comment state | Comment-state-aware partition of a source file, the oracle for the split chain | repo src layout | LIVE | |
| 225 | tools/ox_campaign.py | P8 | ADAPT | loop draw, draft, pre-filter, gate, commit and ledger unattended | The unattended wave loop: draw, draft, pre-filter, gate, commit, ledger, repeat | repo scratch paths, provider config | LIVE | |
| 226 | tools/p16_improve.py | P5 | ADAPT | revert known answers to stubs and categorize every harness failure it exposes | Known-answer loop: reverts matched functions to stubs and measures the real pipeline | repo src/build paths | FROZEN | tools/share_body.py |
| 227 | tools/p16_known_answer.py | P5 | ADAPT | validate a scaffold pipeline against known answers across difficulty bands | Graduated known-answer validation of the scaffold pipeline across difficulty bands | repo paths | SUPERSEDED | tools/p16_improve.py |
| 228 | tools/p16_permute.py | P7 | ADAPT | drive the permuter per function, building base, target and settings | Per-function permuter driver building base, target and settings, then reporting closeness | repo scratch paths, permuter layout | LIVE | |
| 229 | tools/pads_audit.py | P6 | ADAPT | derive an object's inter-table padding spec from the bytes instead of searching | Derives each object's padding spec from the bytes instead of searching for it | repo build/config layout | STILL-NEEDED | derive an object's inter-table padding spec from the bytes instead of searching |
| 230 | tools/parallel_gate.py | P8 | ADAPT | gate many binaries concurrently in isolated worktrees and merge only passers | Gates many binaries concurrently in isolated worktrees and merges only the passers | repo worktree/build layout | LIVE | |
| 231 | tools/payload_base_evidence.py | P2 | ADAPT | rank candidate load addresses for a payload that was never onboarded | Ranks candidate load addresses for an unonboarded payload from pointers, self-calls and upper-half reach | the source game's payload map | STILL-NEEDED | rank candidate load addresses for a payload that was never onboarded |
| 232 | tools/permuter/compile.sh | P7 | ADAPT | compile a permuter candidate exactly as the build rule does | The permuter's compile command, mirroring the build rule exactly so objects are build-faithful | compiler triple, repo build flags | LIVE | |
| 233 | tools/permuter/compile_o0.sh | P7 | ADAPT | compile a permuter candidate unoptimized, exactly as the build rule does | Unoptimized variant of the same permuter compile command | compiler triple, repo build flags | LIVE | |
| 234 | tools/permuter/run_masked.py | P7 | ADAPT | run the permuter with a masked scorer rebound, without patching it | Runs the permuter with the masked scorer rebound before its entry point, without patching it | permuter internals, repo module paths | LIVE | |
| 235 | tools/permuter_ils.py | P7 | ADAPT | warm-restart the permuter from its best waypoint each cycle | Iterated-local-search wrapper warm-restarting the permuter from the best waypoint each cycle | permuter layout, repo scratch paths | LIVE | |
| 236 | tools/permuter_sweep.py | P7 | ADAPT | hand a batch's near-misses to the permuter, only the ones worth CPU | Hands a batch's near-misses to the permuter, but only the ones worth the CPU | repo scratch paths | LIVE | |
| 237 | tools/permuter_weights.py | P7 | PORTABLE | steer permuter mutation toward the lever family the residual class implies | Directs permuter mutation toward the lever family the residual class implies | permuter settings format | LIVE | |
| 238 | tools/plumbing_groups.py | P5 | ADAPT | group recorded declaration-conflict failures into sweepable work groups | Groups recorded declaration-conflict failures into sweepable work groups from the ledgers | repo ledger paths | SUPERSEDED | tools/gate_triage.py |
| 239 | tools/prefetch_fleet.py | P2 | ADAPT | batch-decompile one representative per distinct open class into a cache | Batch headless decompilation of one representative per distinct open class into a cache | repo paths, binary registry | LIVE | |
| 240 | tools/pregate_check.py | P8 | ADAPT | validate a batch's declaration compatibility in seconds without building it | Validates a batch without building it, in seconds instead of minutes | repo src layout | LIVE | |
| 241 | tools/progress.py | P9 | ADAPT | compute and publish progress metrics as report, machine data and per-binary breakdowns | Computes and publishes the progress metrics as report, JSON and per-binary breakdowns | repo src/config layout | LIVE | |
| 242 | tools/psyq_bss_probe.py | P3 | ADAPT | ask whether an object's scattered zero-init section can be placed byte-exactly | Asks whether an object's scattered zero-init section can be split and placed byte-exactly | PS1 SDK object shape | LIVE | |
| 243 | tools/psyq_bss_split.py | P3 | PORTABLE | split one zero-init section of an object into per-base no-bits pieces | Rewrites an ELF object, splitting one zero-init section into per-base no-bits pieces | ELF32 REL layout | LIVE | |
| 244 | tools/psyq_build_libs.sh | P3 | ADAPT | convert vendor library members to the linker's format and archive them | Converts vendor library members to ELF and archives them per library | PS1 SDK, repo scratch paths | LIVE | |
| 245 | tools/psyq_identify.py | P3 | ADAPT | locate where vendor library objects are linked in a target image | Locates where vendor library objects are linked in a target image via relocation-masked patterns | PS1 SDK objects | LIVE | |
| 246 | tools/psyq_integrate.py | P3 | ADAPT | wire real library objects into the split build, replacing stub subsegments | Wires real library objects into the split build, replacing stub subsegments | repo config/build paths | LIVE | |
| 247 | tools/psyq_lib_split.py | P3 | ADAPT | split a vendor library archive into its member objects | Splits a vendor linker-format library archive into its member objects | PS1 SDK archive format | LIVE | |
| 248 | tools/psyq_libs_from_disc.py | P3 | ADAPT | extract vendor SDK library files from the vendor's runtime-library disc | Extracts vendor SDK library files from the vendor's runtime-library disc image | vendor disc layout, PS1 SDK | LIVE | |
| 249 | tools/psyq_link.py | P3 | ADAPT | link one vendor object at a fixed address so its code is byte-identical | Links one vendor object at a fixed address so its code is byte-identical to the target | PS1 SDK, repo build paths | LIVE | |
| 250 | tools/psyq_link_lib.py | P3 | ADAPT | link every used object of a vendor library and byte-verify each | Driver linking every used object of a library and byte-verifying each | PS1 SDK, repo paths | STILL-NEEDED | link every used object of a vendor library and byte-verify each |
| 251 | tools/psyq_link_region.py | P3 | ADAPT | link a whole library's objects in place of stubs, placing data no-load | Links a whole library's objects in place of stubs, placing non-code sections as no-load | PS1 SDK, repo paths | LIVE | |
| 252 | tools/public_rewrite/absent_scan.py | P9 | ADAPT | assert nothing purged remains in any object, message or ref | Asserts nothing purged remains in any object, message or ref | repo scratch paths | STILL-NEEDED | kept: the history-rewrite package is one unit — the runbook's "if bytes got in anyway" path needs it whole |
| 253 | tools/public_rewrite/build_commit_map.py | P9 | ADAPT | emit the public ordinal-to-hash map and the private old-to-new map | Emits the public ordinal-to-new-hash map and the private old-to-new map | repo doc/scratch paths | LIVE | |
| 254 | tools/public_rewrite/common.py | P9 | ADAPT | share the purge rules and derived hash sets across the rewrite package | Shared purge rules, derived hash sets and helpers for the history-rewrite package | repo scratch paths | LIVE | |
| 255 | tools/public_rewrite/gate_scan.py | P9 | ADAPT | prove no derived blob is reachable from the refs about to be pushed | History gate: no derived blob reachable from the given refs, four derived checks | repo declaration files | LIVE | |
| 256 | tools/public_rewrite/hash_dict.py | P9 | ADAPT | map every old commit hash to an inert token, privately | Builds the private dictionary mapping every old commit hash to an inert token | repo scratch paths | LIVE | |
| 257 | tools/public_rewrite/probe_github.sh | P9 | ADAPT | probe whether old commit hashes still resolve on the hosting service | Probes whether old commit hashes still resolve on the hosting service after a purge | hosting service API, repo name | LIVE | |
| 258 | tools/public_rewrite/resolve_tokens.py | P9 | ADAPT | turn ordinal tokens back into shortest-unique hashes at the rewritten tip | Turns ordinal tokens back into shortest-unique hashes at the rewritten tip | repo tracked text files | LIVE | |
| 259 | tools/public_rewrite/run_filter.py | P9 | ADAPT | run a history rewrite inside a bare clone, refusing to run elsewhere | Composes and runs the history rewrite inside a bare clone, refusing to run elsewhere | rewrite tool version, repo scratch paths | STILL-NEEDED | kept: the history-rewrite package is one unit — the runbook's "if bytes got in anyway" path needs it whole |
| 260 | tools/public_rewrite/scrub.py | P9 | ADAPT | scrub one text with the rewrite's rules, with a sample and self-test | The single scrub function of the history rewrite, plus its sample and self-test | purge rules, repo scratch paths | LIVE | |
| 261 | tools/public_rewrite/verify_rewrite.py | P9 | ADAPT | prove pairwise that a rewrite changed only what it was told to | Pairwise proof that the rewrite changed only what it was told to change | repo scratch paths | LIVE | |
| 262 | tools/r22_verify.sh | P8 | ADAPT | verify the whole fleet exclusively on a clean tree and clear deferred debt | Exclusive clean-tree fleet verification that also clears deferred-check debt | repo make targets | LIVE | |
| 263 | tools/ram_probe.py | P2 | ADAPT | capture and diff live console memory across scenarios to type struct fields | Captures, diffs and reads emulator main RAM over its web API for field typing | emulator host/port, 2 MB console RAM map | STILL-NEEDED | capture and diff live console RAM across scenarios to type struct fields |
| 264 | tools/reconcile_slate.py | P6 | ADAPT | drive a whole batch to declaration-compatible before any rebuild is spent | Drives a whole batch to declaration-compatible before any rebuild is spent | repo src layout | SUPERSEDED | tools/pregate_check.py |
| 265 | tools/reconcile_tu.py | P6 | ADAPT | conform a draft's data declarations to what its destination unit can see | Conforms a draft's data declarations to what the destination translation unit can actually see | repo src layout | LIVE | |
| 266 | tools/recover_drafts.py | P8 | ADAPT | recover deleted agent draft files from a run's transcripts | Recovers agent-written draft files from a run's transcripts after they were deleted | agent transcript paths | SUPERSEDED | tools/agent_drafts_restore.py |
| 267 | tools/recover_giant.py | P8 | ADAPT | recover a large draft rejected only on declaration plumbing, with canonical externs | Canonical-extern recovery for a large draft rejected only on declaration plumbing | repo shared-header layout | FROZEN | tools/share_body.py |
| 268 | tools/recover_integration.py | P8 | ADAPT | drive batch integration recovery over a directory of correct-but-rejected drafts | Batch integration recovery driver over a wave directory of correct-but-rejected drafts | repo scratch/src layout | LIVE | |
| 269 | tools/recover_rejects.py | P8 | ADAPT | turn pre-gate rejects back into bankable drafts for zero model tokens | Turns pre-gate rejects back into bankable drafts for zero model tokens | repo scratch paths | LIVE | |
| 270 | tools/recover_route.py | P8 | ADAPT | name the one recovery tool that actually applies to a drop verdict | Given a drop verdict, names the one recovery tool that actually applies | repo scratch paths | LIVE | |
| 271 | tools/reloc_identity.py | P5 | ADAPT | check the symbol identity the masked comparison deliberately hides | Disagreeing oracle checking the symbol identity the masked comparison deliberately hides | repo build paths | LIVE | |
| 272 | tools/reloc_verify.py | P5 | ADAPT | resolve every relocation in a draft and compare the resolved words to target | Resolves every relocation in a draft and compares the resolved words to the target | repo build paths | STILL-NEEDED | catch a wrong-symbol or wrong-address draft the masked comparison scores as matching |
| 273 | tools/reorder_passthrough.py | P3 | ADAPT | restore the assembler-reorder build path for objects originally assembled that way | Restores the assembler-reorder build path for the objects originally assembled that way | pinned assembler flags, repo build paths | LIVE | |
| 274 | tools/residual_class.py | P7 | PORTABLE | map a residual to a named codegen class by decoding its words | Deterministic decoder-based classifier mapping a residual to a named codegen class | MIPS encodings | LIVE | |
| 275 | tools/residual_rules.py | P7 | ADAPT | turn a measured residual into the specific documented lever that addresses it | Turns a measured residual into the specific documented lever that addresses it | repo doc paths | SUPERSEDED | tools/residual_rules_b.py |
| 276 | tools/residual_rules_b.py | P7 | ADAPT | classify a residual's shape to its documented lever, as an independent implementation | Independent second implementation of residual-shape to rule classification, for head-to-head | repo doc paths | LIVE | |
| 277 | tools/restage_matching.py | P8 | ADAPT | re-stage only drafts that match in their real unit so one failure is isolated | Re-stages only the drafts that compile and match in their real unit, so one failure is isolated | repo src layout | STILL-NEEDED | re-stage only drafts that match in their real unit so one failure is isolated |
| 278 | tools/restore_dropped_decls.py | P6 | ADAPT | restore file-scope declarations a share propagation deleted with the body | Puts back file-scope declarations a share propagation deleted with the body | repo src layout | FROZEN | tools/share_body.py |
| 279 | tools/rollout_o0.py | P6 | ADAPT | roll an unoptimized definition atomically across every binary carrying it | Generalized two-file atomic rollout of an unoptimized definition across every binary carrying it | repo src/config layout | LIVE | |
| 280 | tools/rtu_match.py | P4 | ADAPT | splice a candidate into a copy of its real translation unit and compare bytes | Splices a candidate into a copy of the real translation unit and checks the same bytes | repo src layout, compiler triple | LIVE | |
| 281 | tools/rtu_second_chance.py | P4 | ADAPT | re-judge standalone compile failures against their real translation unit before dropping | Re-judges standalone compile-failures against their real translation unit before dropping them | repo scratch paths | LIVE | |
| 282 | tools/rtu_shadow.py | P5 | ADAPT | measure gate inversion by running the real-unit check in shadow beside the gate | Runs the real-translation-unit check in shadow beside the gate to measure gate inversion | repo scratch paths | ONE-OFF | the measured gate-inversion decision (whether the cheap real-unit check should become the gate's stage 0) |
| 283 | tools/scan_leftovers.py | P8 | ADAPT | re-verify every draft already on disk and bank the free wins | Re-verifies every draft already on disk and banks the free wins | repo scratch paths | SUPERSEDED | tools/integration_resolver.py |
| 284 | tools/scope_data_externs.py | P6 | ADAPT | place a templated body's data externs at a scope the destination accepts | Places a templated body's data externs at the scope the destination unit can accept | repo src layout | LIVE | |
| 285 | tools/scope_demote_drafts.py | P6 | ADAPT | demote declaration scope as one rung of the recovery ladder | The scope-demote step, wired as a rung of the recovery ladder | repo src layout | LIVE | |
| 286 | tools/scope_tu_externs.py | P6 | ADAPT | move a unit's file-scope data externs down into their consumers | Moves a unit's own file-scope data externs down into their consumers to legalize a block-scope type | repo src layout | LIVE | |
| 287 | tools/seed_ref.py | P8 | ADAPT | find an already-banked body that matches an open stub, near and contained tiers | For an open stub, finds the already-banked body that matches it, including near and contained tiers | repo signature files | LIVE | |
| 288 | tools/serve_local.py | P8 | ADAPT | serve a fine-tuned model locally behind a chat-completions endpoint | Serves the fine-tuned model locally behind a chat-completions endpoint | training venv, GPU assumptions | LIVE | |
| 289 | tools/share_body.py | P10 | ADAPT | share one byte-identical function class across its binaries through an include-at-site header, gated per binary | The Phase-35 successor of dedup_propagate + dedup_extend for the include-at-site form: exemplar by majority text, the header written once, every private copy replaced by the include at its position, per-binary byte gate with object comparison, bisect on red, the registry appended or extended by text, the exception ledger on refusal; --plan / --apply --bucket extend|new | repo paths, the registry and signature schemas | LIVE | |
| 290 | tools/share_body_cycle.sh | P10 | ADAPT | run the share-body batch cycle unattended: batch, verify by exit code, log, commit, periodic clean fleet check | The Phase-35 T5 driver for bucket new: per batch share_body --apply --bucket new --batches 1 --label new<k>, the gated N/N line read, the phase log entry appended, the bank committed the moment it is green, the clean fleet run every N batches — stops on the first red | repo paths, the phase-log format, the fleet count from config/check.*.sha | LIVE | |
| 291 | tools/delever_cycle.sh | P10 | ADAPT | run the de-lever batch cycle unattended: batch, verify by exit code, clean fleet gate, census, log, commit | The Phase-36 T3/T4 driver: per batch a clean-tree check, the oracle recalibrated when stale, delever --apply read by exit code and its final X/X line, the clean fleet run as the outer gate (218/218), the census rerun, the phase-log entry and the checkpoint headline, one commit per batch; stops on the first red with the files in place for --restore | the batch size, the aliases, the fleet count | LIVE | |
| 292 | tools/share_census.py | P10 | ADAPT | measure duplicate function bodies across the fleet and assert one source per unique function | The census of byte-identical function classes across every binary with their source forms and verdicts, plus the S1 invariant check with its exception ledger and a fixture self-test | repo paths, the registry and signature schemas | LIVE | |
| 293 | tools/shared_lock.py | P8 | ADAPT | hold one reader/writer lock over the shared source state for concurrent lanes | One reader/writer lock over the shared source state for concurrent lanes | repo lock paths | LIVE | |
| 294 | tools/sig_image.py | P6 | PORTABLE | sign every function of a flat image at a known base, without a disassembler | Disassembler-free per-function signer for a flat image at a known base, field-identical to the dumper | MIPS encodings, repo scratch paths | LIVE | |
| 295 | tools/sig_unify.py | P6 | ADAPT | unify a draft's callee externs and its own signature to the banked-canonical set | Unifies a draft's callee externs and its own definition signature to the banked-canonical set | repo shared-header paths | LIVE | |
| 296 | tools/split_indicator.py | P2 | ADAPT | name the code segments that must be split before their switch functions carve | Names code segments that must be split before their switch functions can be sectioned | repo config layout | LIVE | |
| 297 | tools/split_src_region.py | P3 | ADAPT | split a source file at object boundaries, preserving matched code and stubs | Splits a source file at object boundaries, preserving matched code and stub blocks | repo src/config layout | LIVE | |
| 298 | tools/strand_census.py | P5 | ADAPT | check whether an open target already has a draft on disk | Lists every draft already on disk whose function is still open, with its blocker | repo scratch paths | STILL-NEEDED | check whether an open target already has a draft on disk before drafting it |
| 299 | tools/stub_invariant_audit.py | P5 | ADAPT | negative-control the comparer: every stub's built object must equal its target | Negative control: for every stub the built object must equal the target assembly exactly | repo build paths | STILL-NEEDED | negative-control the masked comparer: every stub's built object must equal its target |
| 300 | tools/sweep_citations.py | P7 | ADAPT | localize every compiler-source citation in a document against the pinned sources | Deterministically localizes every compiler-source citation in a document against the pinned sources | repo reference tree paths | SUPERSEDED | tools/gccmap_cites.py |
| 301 | tools/sweep_parallel.py | P8 | ADAPT | gate pre-staged draft directories across distinct binaries in parallel | Gates pre-staged draft directories across distinct binaries in parallel | repo scratch paths | LIVE | |
| 302 | tools/symcheck.py | P5 | ADAPT | diff the symbol set a draft references against the target's, before gating | Pre-gate guard diffing the symbol set a draft references against the target's | repo build paths | SUPERSEDED | tools/reloc_verify.py |
| 303 | tools/sync_tu_decls.py | P6 | ADAPT | bank a refused draft by copying the destination unit's own declarations into it — the declaration-conflict class a canonical type layer prevents (Phase 6) | Banks a refused draft by copying the destination unit's own declarations into it | repo src layout | LIVE | |
| 304 | tools/t5_bank.sh | P8 | ADAPT | judge each arm of a wave and bank the union, refusing if unsafe | Post-draft half of an agent wave: refuse if unsafe, judge each arm, bank the union | repo paths, lane conventions | SUPERSEDED | tools/gate_wave.py |
| 305 | tools/t5_cards.py | P8 | ADAPT | build the card fuel for one wave's own targets, keyed per binary | Builds the card fuel for one wave's own targets, keyed correctly per binary | repo scratch paths | LIVE | |
| 306 | tools/t5_distill_args.py | P8 | ADAPT | build the post-wave distillation slate from a wave's directories | Builds the post-wave distillation slate from a wave's directories | repo scratch paths | SUPERSEDED | tools/distill_scan.py |
| 307 | tools/t5_targets.py | P8 | ADAPT | draw one routed slate from the classified frontier | Draws one routed slate from the frontier classes | repo scratch paths | SUPERSEDED | tools/draw_waves.py |
| 308 | tools/t7_bank.py | P8 | ADAPT | bank a batch, reconciling declarations at bank time before the whole-binary gate | Batch banking driver applying reconcile-at-bank-time plus the whole-binary gate | repo src/config layout | SUPERSEDED | tools/gate_stage.py |
| 309 | tools/test_jtbl_parse_config.py | P5 | ADAPT | regression-test the table-carve configuration parser with a negative control | Regression plus negative control for the table-carve configuration parser | repo config fixtures | LIVE | |
| 310 | tools/test_o0_detect.py | P5 | ADAPT | negative-control the detector that decides a function's optimization level | Negative control for the matcher's optimization-level auto-detection | repo paths | STILL-NEEDED | negative-control the detector that decides a function's optimization level |
| 311 | tools/test_reconcile_ledger.py | P5 | ADAPT | exercise a guarded repair path the full negative control never reaches | Targeted proof of the propagation ledger guard the full control never exercised | repo paths | ONE-OFF | the S45p7 reconcile-ledger proof, retired with its subject dedup_propagate |
| 312 | tools/test_residual_class.py | P5 | PORTABLE | unit-test a residual classifier on hand-encoded words, not its own decoder | Synthetic hand-encoded unit tests for the deterministic residual classifier | MIPS encodings | STILL-NEEDED | unit-test a residual classifier on hand-encoded words, not on its own decoder |
| 313 | tools/timeline.py | P9 | ADAPT | build a progress timeline from the repository's own committed digests | Builds a progress timeline from the repository's own committed digests, with a self-check | repo doc paths | LIVE | |
| 314 | tools/tool_census.py | P5 | ADAPT | derive the tool census, the need-keyed index, the kit manifest and the verbatim corpora from one dictionary | Derives the tool census, the need-keyed tool index, the kit manifest and the verbatim corpora from one dictionary, coverage-asserted both ways | repo layout (tools/, docs/SETUP.md rows, the kit paths) | LIVE | |
| 315 | tools/train_lora.py | P8 | ADAPT | fine-tune a code model into a matching specialist on a mined corpus | Fine-tunes a code model into a matching specialist and saves the adapter | dataset paths, training venv | STILL-NEEDED | fine-tune a code model into a matching specialist on the mined corpus |
| 316 | tools/transcript_dump.py | P8 | ADAPT | condense a session transcript into readable text for a successor session | Condenses a session transcript into readable text for a successor session | agent transcript paths | LIVE | |
| 317 | tools/treelock.sh | P8 | ADAPT | hold one mutex over tree-writing campaigns, with status and stale detection | The mutex wrapper for tree-writing campaigns, with status and stale detection | repo lock paths | SUPERSEDED | tools/shared_lock.py |
| 318 | tools/triage_ladder.py | P8 | ADAPT | decide before and after drafting whether a target needs an agent at all | Zero-token pass deciding whether a target needs an agent at all, before and after drafting | repo scratch paths | LIVE | |
| 319 | tools/twin_rescan.py | P6 | ADAPT | report which open stubs became mechanical remaps the moment one was banked | After a bank, reports which open stubs just became mechanical remaps instead of drafts | repo signature files | STILL-NEEDED | report which open stubs became mechanical remaps the moment one was banked |
| 320 | tools/twin_sweep.py | P6 | ADAPT | bank every open stub that already has a banked structural twin | Banks every open stub that has an already-banked structural twin, for near-zero tokens | repo signature files | LIVE | |
| 321 | tools/uniquify_type.py | P10 | ADAPT | give each conflicting camp of a same-named type its own name | Gives each conflicting camp of a same-named type its own name so every camp becomes liftable | repo src layout | STILL-NEEDED | give each conflicting camp of a same-named type its own name so both become liftable |
| 322 | tools/validate_targets.py | P8 | ADAPT | gate every target list for validity before agents are spawned | The validity gate every target list must pass before agents are spawned | repo scratch paths | LIVE | |
| 323 | tools/verbatim_check.py | P10 | ADAPT | guard that every inline-assembly body still reproduces its target bytes | Regression guard that every inline-assembly body still reproduces its target bytes | repo src layout | LIVE | |
| 324 | tools/verbatim_target_s.py | P10 | ADAPT | regenerate a splitter-format target disassembly for a function no longer stubbed | Regenerates a splitter-format target disassembly for a function that is no longer a stub; --gas emits the assemblable gas-syntax form ($-registers, .L labels, noreorder) that a web diff service accepts as a pasted target | repo build/asm layout | LIVE | |
| 325 | tools/verbatim_to_stub.py | P10 | ADAPT | turn an inline-assembly body back into a stub the toolchain can reach | Turns an inline-assembly body back into an include-assembly stub | repo src/asm layout | STILL-NEEDED | turn an inline-assembly body back into a stub the toolchain can reach |
| 326 | tools/verify_binary.py | P3 | ADAPT | byte-verify one binary by hand the only correct way, re-extract included | The correct hand verification of one binary: full re-extract plus rebuild, then hash compare | repo make targets | STILL-NEEDED | byte-verify one binary by hand the only correct way, re-extract included |
| 327 | tools/verify_contract.sh | P9 | ADAPT | prove the whole byte-identity contract end to end, step by step | The recorded end-to-end verification run of the byte-identity contract, step by step | repo make targets, output dir | STILL-NEEDED | prove the whole byte-identity contract end to end from a committed tree |
| 328 | tools/verify_map_findings.py | P7 | ADAPT | machine-check an audit's findings against the actual compiler sources | Machine-checks a codegen-map audit's findings against the actual compiler sources | repo reference tree paths | ONE-OFF | the machine-checked verdicts of one codegen-map audit (docs/gcc-2.7.2-map/regalloc.md) |
| 329 | tools/verify_worktree.py | P8 | ADAPT | check a commit out into its own worktree and verify it there | Checks a commit into its own worktree, provisions build deps, and verifies it there | repo worktree/build layout | LIVE | |
| 330 | tools/wall_sweep.py | P5 | ADAPT | enumerate fleet-wide every instance of one known assembler-level blocker class | Enumerates fleet-wide instances of one known assembler-level blocker class | repo asm layout, toolchain quirk | LIVE | |
| 331 | tools/wall_taxonomy.py | P5 | ADAPT | size each avenue by classifying every unmatched residual by blocker class | Census-classifies every unmatched residual by blocker class to size each avenue | canonical source binary name | SUPERSEDED | tools/frontier_classify.py |
| 332 | tools/warmstart.py | P7 | ADAPT | feed the permuter warm-start drafts built from banked exemplars and routed fuel | Feeds the permuter warm-start drafts built from banked exemplars and routed fuel | repo scratch paths | SUPERSEDED | tools/permuter_sweep.py |
| 333 | tools/wave_args.py | P8 | ADAPT | emit the exact drafting-workflow arguments, asserting every target is still open | Emits the exact workflow arguments for a wave, asserting every target is open | repo scratch paths | LIVE | |
| 334 | tools/wave_card_fuel.py | P8 | ADAPT | compute in one library the per-target card fuel a prompt pack carries | The single library computing the per-target card fuel a pack carries | repo scratch paths | LIVE | |
| 335 | tools/wave_judge.py | P8 | ADAPT | gate each arm on the whole binary with a tree reset between arms | Per-arm whole-binary gate with tree reset between arms, then gates the best-of union | repo scratch/src layout | LIVE | |
| 336 | tools/wave_snapshot.py | P8 | ADAPT | give a wave its own immutable copy of the disassembly its agents read | Gives a wave its own immutable copy of the disassembly files its agents read | repo asm paths | LIVE | |
| 337 | tools/wave_targets.py | P8 | ADAPT | select a worker wave's target batch from the manifest with cache filters | Selects a worker-wave target batch from the target manifest with cache filters | repo scratch paths | LIVE | |
| 338 | tools/weave_sweep.py | P6 | ADAPT | apply one proven codegen lever everywhere the bytes say it belongs | Applies one known prologue-scheduling lever everywhere the bytes say it belongs | repo src layout, compiler behaviour | STILL-NEEDED | apply one proven codegen lever everywhere the bytes say it belongs |
| 339 | tools/wiki_render.py | P9 | ADAPT | render doc trees into wiki page names, rewriting every relative link | Renders the doc trees into wiki page names with every relative link rewritten deterministically | repo doc paths | LIVE | |
| 340 | tools/wiki_sync.sh | P9 | ADAPT | render and publish the docs to a hosted wiki, replacing its pages | Renders and publishes the docs to the hosted wiki, replacing its pages | wiki remote URL, repo paths | LIVE | |
| 341 | tools/work_evidence.py | P8 | ADAPT | assert that a tool actually did the work it reports | Assertions that a tool actually did the work it reports | repo scratch paths | LIVE | |
| 342 | tools/worklist.py | P5 | ADAPT | join the target pool and near-miss ledger into one byte-weighted queue | Joins the target pool and the near-miss ledger into one byte-weighted ranked queue | repo scratch paths | LIVE | |
| 343 | tools/xsig/tests/make_fixtures.sh | P6 | ADAPT | regenerate the signature tool's fixtures with the pinned toolchain | Regenerates the signature-tool fixtures with the pinned toolchain | compiler triple, repo tool paths | LIVE | |
| 344 | tools/xsig/tests/test_xsig.py | P6 | PORTABLE | property-test the signature tool on committed fixtures, needing no compiler | Property tests for the signature tool on committed fixtures, needing no compiler | fixture paths | LIVE | |
| 345 | tools/xsig/xsig.py | P6 | PORTABLE | sign functions with relocations masked for cross-project code identification | Relocation-masked per-function signatures for cross-project code identification | MIPS/relocation model only | LIVE | |
| 346 | tools/argcheck.py | P10 | ADAPT | find every call site whose in-scope declaration is narrower than the callee real definition | The static filter for the missing-argument class: six T7 agents independently reached score 0 by restoring an argument the decompiled source had dropped (m2c drops them at unprototyped and indirect call sites), and no candidate generator can reach it because every family rewrites statements and declarations while this changes a call ARITY. Reads the real arity from the DEFINITION wherever it lives (a .c under src/ or a shared body header) and reports each narrower declaration with the scope that says which fix is available: the cast route is body-only at either scope, widening the declaration itself needs block scope. Known blind spot, stated in the docstring: it cannot see a definition that is uniformly wrong. | repo paths; the census walk | LIVE | |
| 347 | tools/decl_repair.py | P10 | ADAPT | widen every call declaration that lies, and measure on the bytes which repairs are free | The free-correctness half of the missing-argument class: a declaration is repaired only when every call to that function in the unit ALREADY passes the arguments, so the code is right and only the promise is wrong. Each candidate is compiled from a scratch copy through the unit own recipe and compared on .text/.rodata/.data (never whole-object: the object records its own source path, which made the first fleet run return 0 free of 3,634 units). Every unit is negative-controlled by compiling it UNCHANGED first, and a unit whose control fails is reported as a harness failure rather than a result. --apply writes only the units this run judged identical. | repo paths; the recipe oracle | LIVE | |
| 348 | tools/readability_progress.py | P10 | ADAPT | track how honest and how readable the matched C is over time, as a generated series | The Gen3 companion to docs/levers.md: levers are only one way the source is untrue. Counts lying call declarations (a call site whose in-scope declaration names fewer parameters than the callee definition, split by the K&R-empty and (void) forms, and how many sit in a body that still holds an argument-register pin) and raw cast dereferences against struct member reads, which is the struct debt. Appends a dated row carrying its commit to docs/readability-progress.tsv and renders docs/readability.md; --check asserts the last row is this tree. | repo paths | LIVE |