mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-09-28 23:00:29 -04:00
2351c43e66
Pulled ahead of T1: the Fable5 sprint's agents work inside .run/, and its Phase-25
seed recons were untracked — an agent overwriting .run/giants/*.opus.c would have
destroyed irreplaceable input. 5 minutes to remove that risk.
- .gitignore: /.run/ -> contents-exclude form (/.run/* + ! exceptions), following the
/tools/bin/*.sha256 precedent. Resolves R20 (commit irreplaceable RE work) vs R12
(.run/ is scratch) by splitting the directory on the real axis: what a rerun CANNOT
reproduce.
- PRESERVED (~2.2M / 31 files): the 6 Phase-25 *.opus.{c,md} giant seed recons (49K);
the func_80178004 gdb-on-cc1 harness + ORACLE_PROOF.md + the v00-v07 draft ladder +
the sched/combine .lst evidence (~110K — the distilled output of a 477k-token Fable5
pass, and the method §52 lever 6 depends on); backlog.jsonl (1.9M) + fuel_manifest.json.
- STILL IGNORED (regenerable, R33): dumps_v00..v07/ and d_pf*.i.* gcc RTL scratch —
12.3M reproducible via runorc.sh + the .gdb scripts; the MCP log; draft scratch.
The plan said "track the dirs"; the bytes said the dirs are 96% regenerable.
- VERIFIED both directions: git add --dry-run stages exactly the 30 intended files and
0 bulk; negative control — ghidra-mcp.log / dumps_v00 / d_pf.i.sched / d_pf.s all
still IGNORED. No db.*.gbf staged (R23 restart-noise).
26 lines
1.1 KiB
Python
26 lines
1.1 KiB
Python
import re, sys
|
|
# compact listing of an RTL dump: insn uid + one-line summary
|
|
txt = open(sys.argv[1]).read()
|
|
# split on top-level (insn/(jump_insn/(call_insn/(note/(code_label
|
|
toks = re.split(r'\n(?=\((?:insn|jump_insn|call_insn|note|code_label|barrier))', txt)
|
|
def summ(t):
|
|
m = re.match(r'\((insn|jump_insn|call_insn|note|code_label|barrier) (-?\d+)', t)
|
|
if not m: return None
|
|
kind, uid = m.group(1), m.group(2)
|
|
if kind == 'note':
|
|
nm = re.search(r'NOTE_INSN_(\w+)', t)
|
|
return ('note', uid, nm.group(1) if nm else '')
|
|
if kind == 'code_label': return ('label', uid, '')
|
|
if kind == 'barrier': return ('barrier', uid, '')
|
|
body = ' '.join(t.split('\n')[0:6])
|
|
body = re.sub(r'\s+', ' ', body)
|
|
# find set dest and src heads
|
|
m2 = re.search(r'\(set \(([a-z_]+)[:/ ]([A-Za-z0-9 ]*)', t)
|
|
s = ''
|
|
for pat, rep in [(r'\(set \(reg:SI (\d+)\)\s*\(const_int (-?\d+)\)', lambda g: 'r%s = %s' % (g[0], hex(int(g[1])&0xffffffff))),]:
|
|
pass
|
|
return (kind, uid, body[:150])
|
|
for t in toks:
|
|
s = summ(t)
|
|
if s: print('%s %s | %s' % (s[0][:4], s[1], s[2]))
|