Files
BFM-decomp/.gitignore
T
Drew T e6e059a286 docs(phase-29): T31 — the 6 wave NEAR measured; 2 improved, 0 banked; the ADDRESSING route is the finding
NOTHING BANKED — no draft reached closeness 0. Recorded as such (P9). No src/ or config/ change,
so the fleet is untouched at HEAD's verified 140/140; R22 deliberately NOT re-run and NOT claimed.

- VERIFIED the checkpoint's six closeness numbers against the bytes (R14/R35): 217/10/11/6/7/9 all
  reproduce EXACTLY through match_one --json, with asm_subdir/-O0 DERIVED from wave22_targets.json
  rather than guessed. All six are reach-138 cores = ~135,516 templated ins (~1.04pp) if cracked.
  Reproducer .run/near6_measure.py.
- PERMUTER (only 2 of 6 are §60a-admissible): func_80177B5C 11->7, func_80140958 10->6, both
  re-measured with match_one — an oracle INDEPENDENT of the permuter's scorer (R34) — agreeing
  exactly. Both plateaued after cycle 1. Seeds preserved + allowlisted.
- THE FINDING: residual_class routes ADDRESSING -> permuter, but gcc-2.7.2-map/cse_expr.md §2
  documents that exact class (hoist-vs-remat) as STEERABLE by a byte-proven C recipe. The tool
  spends CPU searching for what the map says has a deterministic fix, and both ADDRESSING targets
  plateaued exactly as that predicts. R35-shaped instrument defect, not a compiler wall.
- NEGATIVE RESULT, byte-tested on func_80132F40 (6 variants): the §83d CSE fork is REAL (s32 fixes
  the min-block opcodes but hoists &v[0] into a 5th callee-saved reg, 47 mism), and the §2 kill
  moves it (47->40) but does NOT dissolve it in 3 placements. §2 has an unstated boundary: proven
  where the address's only uses are call arguments; a STRUCT-COPY source address survives the kill.
  close=6 (s16) remains the best known state — the wave agent's verdict, independently re-earned.
- NEW DIAGNOSIS: func_80140958's post-permuter residual is not scheduling — my draft CONSTANT-FOLDED
  a loop value the target keeps live (li v0,3 / li a3,3 / li t3,12 vs addu/sll from $v1). Untried.
- NOT SPENT, deliberately: func_80176734 (already a no-bank Fable5 pass, §H), func_80140D68 (~200
  compiles already), func_8012E364 (~2500 variants already).
- tools-health exit 0 (green, fail-closed) at preflight.
2026-07-28 10:23:27 -06:00

192 lines
8.3 KiB
Plaintext

# ============================================================
# ROM-content policy — see PROJECT_CONTEXT.md rule H1
#
# While the repo is PRIVATE, ROM-derived content MAY be committed
# (asm/, assets/, extracted/, decompressed .CD output). Compliance is
# handled by a pre-public history scrub + a rom->decoder regeneration
# tool. Two things stay ignored regardless:
# 1. the raw multi-GB disc dump (GitHub rejects >100 MB files; it is
# trivially reproducible from the disc), and
# 2. pure regenerated build churn / large binary caches.
# Re-add asm/ assets/ extracted/ to this list before going public.
# ============================================================
# Raw disc dump — never committed (size + reproducible)
/Brave Fencer Musashi (USA)/
/disks/
# RAM-dump corpus (dumps/*.bin) is COMMITTED while private (H1 relaxed; static, not regenerable;
# off-machine backup). Joins the pre-public ROM-content scrub. INDEX.md documents each.
# Project-local runtime scratch (MCP server log + stop sentinel) — replaces /tmp use.
# Contents-exclude form (the /tools/bin/*.sha256 precedent) so the IRREPLACEABLE recon
# commits while the regenerable bulk stays ignored (R20 backup vs R12 scratch; Phase-27 T3).
# Rule of thumb: commit what a rerun CANNOT reproduce (hand/Fable5 analysis, harnesses,
# ledgers); leave anything a script regenerates (RTL dumps, build logs, drafts) ignored.
/.run/*
# --- Preserved recon (R20) ---
# Giant crack recon: the Phase-25 *.opus.{c,md} seeds, the byte-verified pf*.c
# regression ladder, the dump/monitor harnesses, and — cited BY cookbook §45 as its
# worked example — func_80133CD4.fable.{c,md} + the fable_cd4/ gdb oracle.
# The d_pf*.i.* / *.s / dumps_*/ gcc RTL scratch beside them is regenerable via
# dump.sh and stays ignored, as do the permuter/ILS .log files.
!/.run/giants/
/.run/giants/*
!/.run/giants/*.c
!/.run/giants/*.md
!/.run/giants/*.sh
!/.run/giants/*.py
!/.run/probe_jtbl/
/.run/probe_jtbl/*
!/.run/probe_jtbl/verdict.md
!/.run/probe_jtbl/rodata_verbatim.objdump
!/.run/probe_jtbl/rodata_filtered.objdump
!/.run/giants/fable_cd4/
/.run/giants/fable_cd4/*
!/.run/giants/fable_cd4/*.c
!/.run/giants/fable_cd4/*.md
!/.run/giants/fable_cd4/*.sh
!/.run/giants/fable_cd4/*.gdb
!/.run/giants/fable_cd4/*.txt
# Phase-26 gdb-on-cc1 oracle harness + proof + draft ladder for func_80178004 (the
# distilled output of a 477k-token Fable5 pass; the method §52 lever 6 depends on).
# dumps_*/ are regenerable via runorc.sh + the .gdb scripts -> stay ignored.
!/.run/fable_80178004/
/.run/fable_80178004/*
!/.run/fable_80178004/*.c
!/.run/fable_80178004/*.md
!/.run/fable_80178004/*.gdb
!/.run/fable_80178004/*.sh
!/.run/fable_80178004/*.py
!/.run/fable_80178004/*.lst
# The frontier ledgers every survey, worklist and plan consumes.
!/.run/backlog.jsonl
!/.run/fuel_manifest.json
# Phase-27 pin-crash characterization: the minimal repro + gdb harness (the irreplaceable ~KB
# core; pin_crash_sigabrt.md above is already covered by giants/*.md). The 260M of RTL dumps +
# bisection .s/.c beside them are regenerable via abort.gdb -> stay ignored (R33).
!/.run/giants/pincrash/
/.run/giants/pincrash/*
!/.run/giants/pincrash/minimal_repro.c
!/.run/giants/pincrash/*.gdb
!/.run/giants/pincrash/*.md
# Regenerated build output (deterministic churn)
/build/
/expected/
# Regenerated splat outputs — recreated by `make extract` from the committed
# config/splat.us.exe.yaml + config/symbols.us.txt + the EXE. The durable RE record
# is the symbol file, not these (build scaffolding, not committed work).
/asm/
/assets/
/include/include_asm.h
/include/macro.inc
/include/labels.inc
/include/gte_macros.inc
/undefined_syms_auto.txt
/undefined_funcs_auto.txt
# Ghidra project — COMMITTED as the irreplaceable RE-work backup (private repo; rule R20,
# Drew 2026-06-15). NOT regenerable by hand (annotations/types/structs beyond symbols.us.txt).
# Track the project; exclude ONLY live-session transients so a running/restarted MCP server
# doesn't dirty the tree. Re-commit after significant RE + a Ghidra save. (Ghidra pinned at
# 12.1 -> the committed .rep restores directly.) Joins the pre-public ROM-content scrub list.
/ghidra/*.lock
/ghidra/**/*.lock
/ghidra/*.lock~
/ghidra/**/*.lock~
/ghidra/**/tmp*.ps
# Toolchain downloads & caches (not source)
/.venv/
__pycache__/
# Compiler binaries are ignored (regenerable downloads); the committed *.sha256
# checksum record is re-included so a fresh clone can verify its download (sotn
# pattern). Contents-exclude form (not /tools/bin/) so the !re-include can apply.
/tools/bin/*
!/tools/bin/*.sha256
# PsyQ SDK — Sony-copyrighted (stays PRIVATE; excluded from the public mirror, like ROM content).
# Back up the SMALL gathered working artifacts (lib40/ *.LIB, lib40_elf/ *.a, the PsyQ *.EXE tools,
# psyq-obj-parser, conv47/) — hard to re-source if the upstream archives go down (rule R20). Ignore
# ONLY the >100MB raw source archives (GitHub rejects them; the working libs are already extracted
# from them — the disc-dump-equivalent, re-sourceable from redump if ever truly needed).
/tools/psyq/psyq40usa.zip
/tools/psyq/*.bin
/tools/psyq/*.cue
/tools/pcsx-redux/
*.tar.gz
# ...EXCEPT the old-gcc cc1 compiler tarballs — back them up (gathered compilers; small; verified by
# tools/bin/CHECKSUMS.sha256). Extracted cc1 binaries stay ignored (regenerated by `tar xzf`, SETUP §4.7). R20.
!/tools/bin/*.tar.gz
# Cross-validation scratch: compiled brave oracle + its ROM-derived .dir output
/tools/brave-CUE/_build/
# Phase-18 compiler-quirk research reference repos (gitignored; re-clonable from GitHub, exact SHA
# recorded in docs/SETUP.md). pmret/gcc-papermario = the gcc-2.7.2 source (read the reload/CSE/
# scheduling/regalloc passes) + ladysilverberg/xenogears-decomp = our exact compiler's decomp (mine
# transferable idioms). Research reference, not a build dependency — not committed (avoids repo bloat).
/tools/reference/
# Editor / OS noise
.vscode/
Thumbs.db
# Asset/EXE extraction: commit the tooling + manifest + the retail EXE, NOT the
# bulk payloads (deterministically regenerable from the dump; ~hundreds of MB
# incl. FMV) and NOT the prototype EXEs. Per-ROM subfolders under extracted/:
# extracted/retail/ — retail SLUS-00726 disc extraction (3 files committed)
# extracted/proto/ — prototype main EXEs (ROM-derived; fully ignored)
# Nested allowlist: ignore everything under extracted/, re-include only the 3
# retail committed files (EXE + manifest + manifest hash — always safe; sotn
# precedent). This keeps the "zero ROM-derived bulk staged" guarantee.
/extracted/*
!/extracted/retail/
/extracted/retail/*
!/extracted/retail/SLUS_007.26
!/extracted/retail/manifest.jsonl
!/extracted/retail/manifest.sha1
# NOTE (H1 relaxed, private phase): assets/ and other ROM-derived content stay
# committable while the repo is private. asm/ + the splat-generated include macros +
# undefined_*_auto.txt are IGNORED above: `make extract` regenerates them deterministically
# from the committed yaml + symbols, so they are build scaffolding, not durable RE work.
# (Phase 5 refined the earlier "commit asm/" stance once the regeneration flow existed;
# the durable record is config/symbols.us.txt.)
# Gen2 matching-model corpus + weights (R20: large artifacts out of git)
datasets/
models/
*.gguf
*.safetensors
.venv-train/
unsloth_compiled_cache/
.venv-serve/
.env
# Phase 29 SESSION-22 — the wave22 UNBANKED drafts. 13 of the 18 (6 NEAR with precise residual
# diagnoses + 7 that reached match_one MATCH but did not bank whole-binary) are the next session's
# named fuel and cost ~2.59M subagent tokens. They lived only on disk, i.e. one `git clean -fdx`
# from gone — the same exposure the .run/giants Fable5 cracks had before Phase 27 curated them.
!/.run/wave22/
/.run/wave22/*
!/.run/wave22/*.c
!/.run/wave22_targets.json
# Phase 29 SESSION-23 — the NEAR-6 measurement corpus + the improved ILS seeds. The two
# permuter waypoints (func_80177B5C 11->7, func_80140958 10->6) are CPU-bought and second-oracle
# verified; the f132F40_v*.c ladder is the byte-evidence for a NEGATIVE result (the §2 remat
# recipe does not dissolve this hoist), which is exactly the kind of finding that gets re-derived
# expensively if it is lost. near6_measure.{py,json} is the reproducer.
!/.run/near6/
/.run/near6/*
!/.run/near6/*.c
!/.run/near6_measure.py
!/.run/near6_measure.json
!/.run/near6_ils_*.log