decomp-tu-buildlisted
Install: claude install-skill tangosdev/sm64ds-decomp
# The TU rebuild / verify loop
`src/` holds ~11k one-function files, a shape the original build never had.
`tools/tu_map.py` recovers the real `.cpp` boundaries; **this skill is about executing
the merge and proving it**. For deciding *which* functions belong together, read
`decomp-tu-slicing` first — a class is not a file.
## 0. Prerequisites, in this exact order
```sh
python tools/rtti_extract.py # -> build/rtti.json
python tools/rtti_vtables.py # -> build/rtti_vtables.json
python tools/tu_map.py # -> build/tu_map.json
```
`build/` is gitignored, so a fresh worktree has none of this — always regenerate.
**Nothing enforces that order.** `tu_map.py` reads `build/rtti_vtables.json` if it is
present and silently falls back to an empty label table if it is not, so a missing
prerequisite produces a complete, self-consistent, **wrong** map — 516 TUs instead of
532 — with every gate passing and **exit 0**. Verify the prerequisites yourself; no exit
code will do it for you, and `--check` will not either (it exits 0 on failure too). The
full damage table is in `decomp-tu-slicing` §0.
`tubuild.py` regenerates the map only when it is *entirely absent*; a stale-but-present
map is reported as a note and then used as-is.
`--blind` is a negative control, not an opt-out: it drops the mangled-name signal and
scores what the map retains on RTTI alone, which is the honest measure for the anonymous
overlays. It is not something to reach for in a normal run. There is no