mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-09-27 14:02:04 -04:00
360 lines
14 KiB
Plaintext
360 lines
14 KiB
Plaintext
# ============================================================
|
||
# ROM-content policy — PROJECT_CONTEXT.md rule H1, IN FORCE (Phase 33, the public flip).
|
||
#
|
||
# The repository ships NO ROM-derived bytes and NO proprietary SDK: the game disc, the
|
||
# extracted payloads (`extracted/`, regenerated from YOUR dump by `make disc-extract` and
|
||
# verified against the committed manifest), the splat disassembly (`asm/`, `assets/`), the
|
||
# RAM-dump corpus (`dumps/*.bin`), the Ghidra project (`ghidra/`, whose database embeds the
|
||
# program bytes — regenerable from text via tools/ghidra_rebuild.sh), Sony's PsyQ SDK
|
||
# (`tools/psyq/`, optional and user-supplied), the session-transcript archive, and
|
||
# redistributed third-party binaries. Symbol names, addresses, hashes, configs and the
|
||
# decompiled C are what a decomp publishes (sotn precedent). The private history that
|
||
# carried these while the repo was private (rule R1, 2026-06-10 .. 2026-09-06) lives in the
|
||
# archive repo only.
|
||
# ============================================================
|
||
|
||
# Raw disc dump — never committed (size + reproducible; your own dump goes here)
|
||
/Brave Fencer Musashi (USA)/
|
||
/disks/
|
||
|
||
# RAM-dump corpus — 28 × 2 MB images of the running game (local-only; dumps/INDEX.md +
|
||
# dumps/CHECKSUMS.sha1 stay tracked and describe them)
|
||
/dumps/*.bin
|
||
|
||
# The Claude Code session-transcript archive (private; the archive repo holds it)
|
||
/session archive/
|
||
|
||
# Redistributed third-party binaries: download per docs/SETUP.md (sha256 recorded there)
|
||
/tools/ghidra-ext/*.zip
|
||
/tools/brave-CUE/brave.exe
|
||
|
||
# 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
|
||
# P30 S42 serial crack drafts — ~680k subagent tokens of work, both NEAR and both the best
|
||
# base any future attempt has. They were gitignored, i.e. one `git clean` from gone (R20).
|
||
!/.run/s42/
|
||
/.run/s42/*
|
||
!/.run/s42/*/
|
||
!/.run/s42/*/*.c
|
||
# P30 S43 — the permuter-ILS improvement on the same function (63 -> 42 mismatched), the best
|
||
# base that exists for it. Same R20 reasoning as s42 above.
|
||
!/.run/s43/
|
||
/.run/s43/*
|
||
!/.run/s43/*.c
|
||
!/.run/s43/*.log
|
||
!/.run/s43/*.py
|
||
!/.run/s43/*.json
|
||
!/.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
|
||
# S79/S80 task #9 — one-agent-per-function drafting: the arm drafts (the NEAR seeds), the briefs' laws, the
|
||
# target list and the verdict ledger (the PhaseEnd's wall-proof source). Scratch under opus/w_* etc. stays ignored.
|
||
!/.run/S79w/
|
||
/.run/S79w/*
|
||
!/.run/S79w/SYS.md
|
||
!/.run/S79w/targets.json
|
||
!/.run/S79w/verdicts/
|
||
/.run/S79w/verdicts/*
|
||
!/.run/S79w/verdicts/*.jsonl
|
||
!/.run/S79w/haiku/
|
||
/.run/S79w/haiku/*
|
||
!/.run/S79w/haiku/func_*.c
|
||
!/.run/S79w/sonnet/
|
||
/.run/S79w/sonnet/*
|
||
!/.run/S79w/sonnet/func_*.c
|
||
!/.run/S79w/opus/
|
||
/.run/S79w/opus/*
|
||
!/.run/S79w/opus/func_*.c
|
||
!/.run/S79w/permuter/
|
||
/.run/S79w/permuter/*
|
||
!/.run/S79w/permuter/func_*.c
|
||
!/.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.*.yaml + config/symbols*.txt + the extracted payloads. The durable RE record
|
||
# is the symbol file, not these (build scaffolding, not committed work). The four splat preset
|
||
# headers (include/include_asm.h, macro.inc, labels.inc, gte_macros.inc) are TRACKED since P33 B1:
|
||
# generic presets, identical for every binary, ROM-free — the compile-only CI needs them.
|
||
/asm/
|
||
/assets/
|
||
/undefined_syms_auto.txt
|
||
/undefined_funcs_auto.txt
|
||
|
||
# Ghidra project — its database embeds the program bytes (ROM-derived), so it is not tracked
|
||
# (P33 B1; it was committed while private under rule R20). The RE work it holds is exported to
|
||
# text (config/ghidra/*.jsonl) and the project is rebuilt from that + the disc by
|
||
# tools/ghidra_rebuild.sh. NEVER `git clean -x` here — that deletes the working database.
|
||
/ghidra/
|
||
|
||
# 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; OPTIONAL and user-supplied (tools/fetch_psyq.sh), never distributed.
|
||
# The whole directory is ignored (P33 B1; the small working artifacts were committed while private
|
||
# under rule R20 and live in the archive repo). The build is byte-identical without it (the
|
||
# INCLUDE_ASM fallback tiles); with it, main links Sony's real objects (`make sdk-dual` proves both).
|
||
# The checksums of the archives a user must supply are tracked at tools/psyq_CHECKSUMS.sha256.
|
||
/tools/psyq/
|
||
/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 2 manifest
|
||
# files (hashes, never bytes — the oracle `make disc-extract` verifies YOUR extraction
|
||
# against). The EXE itself left the tree at P33 B1 (H1): it is regenerated from your disc.
|
||
/extracted/*
|
||
!/extracted/retail/
|
||
/extracted/retail/*
|
||
!/extracted/retail/manifest.jsonl
|
||
!/extracted/retail/manifest.sha1
|
||
|
||
# NOTE: asm/ + assets/ + undefined_*_auto.txt are IGNORED above: `make extract` regenerates
|
||
# them deterministically from the extracted payloads
|
||
# 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
|
||
# P30 S45 — the L3 tour's irreplaceable evidence (R20): the state-change tour log + hit records,
|
||
# the watcher/derivation scripts, and the module rosters. The 104 ram_*.bin dumps (~208 MB) stay
|
||
# LOCAL-ONLY: regenerable via another debug-menu tour; the byte-proofs live in the jsonl + docs.
|
||
!/.run/s45/
|
||
/.run/s45/*
|
||
!/.run/s45/*.py
|
||
!/.run/s45/*.sh
|
||
!/.run/s45/*.jsonl
|
||
!/.run/s45/*.tsv
|
||
!/.run/s45/onboard*.log
|
||
|
||
# P32 T3 (2026-09-05): the one-agent-per-function wave's ledger + drafts (R20 — the drafts are the only copy of
|
||
# byte-verified MATCH/NEAR bodies outside the harness transcripts; scratch dirs stay ignored)
|
||
!/.run/P32/
|
||
/.run/P32/*
|
||
!/.run/P32/*.json
|
||
!/.run/P32/t3/
|
||
/.run/P32/t3/*
|
||
!/.run/P32/t3/SYS.md
|
||
!/.run/P32/t3/BRIEF.md
|
||
!/.run/P32/t3/LAUNCHED.md
|
||
!/.run/P32/t3/targets.json
|
||
!/.run/P32/t3/verdicts.jsonl
|
||
!/.run/P32/t3/pending_launch.txt
|
||
!/.run/P32/t3/harvest_notes.md
|
||
!/.run/P32/t3/PROMPT_TEMPLATE.md
|
||
!/.run/P32/t3/reports/
|
||
/.run/P32/t3/reports/*
|
||
!/.run/P32/t3/reports/*.md
|
||
!/.run/P32/t3/haiku/
|
||
/.run/P32/t3/haiku/*
|
||
!/.run/P32/t3/haiku/func_*.c
|
||
!/.run/P32/t3/sonnet/
|
||
/.run/P32/t3/sonnet/*
|
||
!/.run/P32/t3/sonnet/func_*.c
|
||
!/.run/P32/t3/opus/
|
||
/.run/P32/t3/opus/*
|
||
!/.run/P32/t3/opus/func_*.c
|
||
!/.run/P32/t3/restored/
|
||
/.run/P32/t3/restored/*
|
||
!/.run/P32/t3/restored/sweep_*.py
|
||
# P32 T3 session 491895ad (S83): the resume session's helpers, prompts, gate slates and logs (not the verify/ compile dirs)
|
||
!/.run/P32/t3s3/
|
||
/.run/P32/t3s3/*
|
||
!/.run/P32/t3s3/*.sh
|
||
!/.run/P32/t3s3/*.py
|
||
!/.run/P32/t3s3/*.log
|
||
!/.run/P32/t3s3/*.txt
|
||
!/.run/P32/t3s3/prompts/
|
||
!/.run/P32/t3s3/gate/
|
||
/.run/P32/t3s3/gate/*
|
||
!/.run/P32/t3s3/gate/*.json
|
||
!/.run/P32/t3s3/gate/*.log
|
||
# P32 T4 (S83): the walls' re-probe artefacts — synced/variant drafts only (the sandbox TU copies and rtu compile dirs are regenerable)
|
||
!/.run/P32/t4/
|
||
/.run/P32/t4/*
|
||
!/.run/P32/t4/drafts/
|
||
!/.run/P32/t4/v32A74/
|
||
/.run/P32/t4/v32A74/*
|
||
!/.run/P32/t4/v32A74/*.c
|
||
!/.run/P32/t4/v391D4/
|
||
/.run/P32/t4/v391D4/*
|
||
!/.run/P32/t4/v391D4/*.c
|
||
# P32 T4b/T5x (S83): the hand-pass notes + measured variant drafts, and the Fable pass's brief/targets/drafts/reports
|
||
!/.run/P32/t4b/
|
||
/.run/P32/t4b/*
|
||
!/.run/P32/t4b/func_*/
|
||
/.run/P32/t4b/func_*/*
|
||
!/.run/P32/t4b/func_*/*.md
|
||
!/.run/P32/t4b/func_*/*.c
|
||
!/.run/P32/t4b/*.log
|
||
!/.run/P32/t5x/
|
||
/.run/P32/t5x/*
|
||
!/.run/P32/t5x/BRIEF.md
|
||
!/.run/P32/t5x/targets.json
|
||
!/.run/P32/t5x/fable/
|
||
/.run/P32/t5x/fable/*
|
||
!/.run/P32/t5x/fable/func_*.c
|
||
!/.run/P32/t5x/reports/
|
||
/.run/P32/t5x/reports/*
|
||
!/.run/P32/t5x/reports/*.md
|
||
!/.run/P32/t5x/verdicts.jsonl
|
||
!/.run/P32/t5x/resume_queue.txt
|
||
# P32 T4b hand pass (S84, 2026-09-06): notes, mechanism probes, verdict drafts and the private dump script (not the dumps_*/ or rtu/ dirs)
|
||
!/.run/P32/t4c/
|
||
/.run/P32/t4c/*
|
||
!/.run/P32/t4c/*.sh
|
||
!/.run/P32/t4c/*.py
|
||
!/.run/P32/t4c/*.md
|
||
!/.run/P32/t4c/*.log
|
||
!/.run/P32/t4c/*.json
|
||
!/.run/P32/t4c/func_*/
|
||
/.run/P32/t4c/func_*/*
|
||
!/.run/P32/t4c/func_*/*.c
|
||
!/.run/P32/t4c/func_*/*.md
|
||
# P32 T4b hand pass row (d) (S85, 2026-09-06): the sibling-port variants, their rtu verdict logs, the notes and the banked body (not the rtu/ compile dirs)
|
||
!/.run/P32/t4d/
|
||
/.run/P32/t4d/*
|
||
!/.run/P32/t4d/*.c
|
||
!/.run/P32/t4d/*.md
|
||
!/.run/P32/t4d/*.log
|
||
!/.run/P32/t4d/bank/
|
||
/.run/P32/t4d/bank/*
|
||
!/.run/P32/t4d/bank/*.c
|
||
# P32 T4c hand pass (S85, 2026-09-06): the two main rows' variants, rtu logs, notes, reproducers, bank bodies, slates, gate/R22 logs (not dumps_*/ or rtu/)
|
||
# P33 A5 (S87, 2026-09-06): THE recorded contract run — tools/verify_contract.sh's per-step logs, the two link
|
||
# maps of the with/without-SDK dual and SUMMARY.md (quoted by docs/verification.md). Evidence, tracked.
|
||
!/.run/P33/
|
||
/.run/P33/*
|
||
!/.run/P33/verify/
|
||
/.run/P33/verify/*
|
||
!/.run/P33/verify/*.log
|
||
# P33 E1 (S89, 2026-09-07): the decomp.me toolchain-replica verdict log (tools/decompme_replica.sh) — the log only; the
|
||
# regenerated target .s (game disassembly, H1), the probe objects and the old-gcc tarball under .run/P33/e1/ stay ignored
|
||
!/.run/P33/e1/
|
||
/.run/P33/e1/*
|
||
!/.run/P33/e1/decompme_replica.log
|
||
!/.run/P33/verify/*.map
|
||
!/.run/P33/verify/*.md
|
||
!/.run/P33/verify/*.txt
|
||
!/.run/P32/t4e/
|
||
/.run/P32/t4e/*
|
||
!/.run/P32/t4e/*.c
|
||
!/.run/P32/t4e/*.md
|
||
!/.run/P32/t4e/*.log
|
||
!/.run/P32/t4e/*.json
|
||
!/.run/P32/t4e/*.sh
|
||
!/.run/P32/t4e/*.py
|
||
!/.run/P32/t4e/bank/
|
||
/.run/P32/t4e/bank/*
|
||
!/.run/P32/t4e/bank/*.c
|
||
!/.run/P32/t4e/ghost/
|
||
/.run/P32/t4e/ghost/*
|
||
!/.run/P32/t4e/ghost/*.c
|