Files
BFM-decomp/requirements-python.txt
Drew T fca3839049 feat(phase-33): C1 the history-rewrite tooling — tools/public_rewrite/ (git-filter-repo 2.47.0), PROVEN by two trial rewrites on a scratch bare clone
- hash_dict (4,420 commit objects -> commit:NNNN / twin / orphan; 150,280 prefixes; 0 ambiguous; 0 collisions with 1,480
  cited content hashes; scratch mailmap), scrub (12/12 self-test; HEAD sample 731 distinct tokens == git's own lookup),
  gate_scan (+ expected_offenders.txt fixture: the R39 negative control, PASS over 16.8 GB in 2 m 25 s; rom_blob_ids =
  content/signature hits U purge-path blobs not shared with any other path), run_filter (module API; --force only for the
  deleted tag), verify_rewrite (pairwise proof + no purge path survives + pruned set == derived purge-only set),
  build_commit_map (0 old hashes asserted; unchanged commits exempted), resolve_tokens, absent_scan (positive control on the
  current repo: FAIL 82,362), probe_github.sh (skips unchanged commits)
- trial #1 found two defects the plan had not foreseen: the EMPTY blob in the strip list (--strip-blobs-with-ids then
  undid every "file emptied" change in history and pruned a restore commit) and the byte-identical Initial commit keeping
  its hash; both fixed with controls
- trial #2: filter 269 s, exactly 1 pruned, verify 4,029 pairs / 0 failures, map 4,030 rows, absent_scan + gate PASS on
  the clone, 1,231 tokens resolved at a trial tip (residue 7: the pruned commit x3, orphans x4), aggressive repack 500 -> 80 MB
- SETUP P33 C1 section + rows (R21); runbook §3/§5/§6/§10 measured; requirements-python.txt; CURRENT_PHASE -> NEXT = C2
2026-09-06 22:37:10 -06:00

45 lines
1.5 KiB
Plaintext

# requirements-python.txt — Python venv deps for the BFM-decomp toolchain.
# The .venv itself is gitignored; THIS file is the durable, committed record so the
# environment is reproducible and hard-won findings are never re-debugged.
#
# Recreate the venv:
# python3 -m venv .venv && .venv/bin/pip install -r requirements-python.txt
#
# Phase 4 deferred this freeze to "after Phase-5 green"; created at Phase-6 close (2026-06-14).
# Exact versions from `pip freeze` on the working machine.
#
# IMPORTANT pins / notes:
# - pycparser is held <3.0 (==2.23): pycparser 3.0 removed the `plyparser` module that the
# pinned decomp-permuter imports. Upgrading WILL break the permuter (cost real debugging;
# see docs/matching-cookbook.md §3). Keep it <3.0.
# - splat64 0.41.0 pulls spimdisasm/rabbitizer/PyYAML/etc.; asm-differ needs
# watchdog/Levenshtein/cxxfilt/colorama; decomp-permuter needs pycparser/toml/PyNaCl.
# --- build / splat (Phase 4) ---
splat64==0.41.0
spimdisasm==1.41.0
rabbitizer==1.16.2
crunch64==0.6.2
PyYAML==6.0.3
pylibyaml==0.1.0
intervaltree==3.1.0
sortedcontainers==2.4.0
tqdm==4.67.1
n64img==0.3.3
pygfxd==1.0.5
pypng==0.20220715.0
# --- asm-differ runtime (Phase 6) ---
watchdog==6.0.0
Levenshtein==0.27.3
RapidFuzz==3.14.5
cxxfilt==0.3.0
colorama==0.4.6
# --- decomp-permuter (Phase 6) ---
pycparser==2.23
toml==0.10.2
PyNaCl==1.6.2
cffi==2.0.0
git-filter-repo==2.47.0 # P33 C1: the public-flip history rewrite (tools/public_rewrite/); pure Python