Files
BFM-decomp/.run/fable_80178004/seq.py
T
Drew T 2351c43e66 chore(phase-27 T3): preserve the irreplaceable .run/ recon (R20) — 2.2M, not 12.3M
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).
2026-07-15 17:32:59 -06:00

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]))