Phase 0: Gate A' green -- the shipping configuration is the spec

Static lib + OoT-only + Release together: 19/19 identical plus the
vanilla-then-MQ pair. Flags verified from the generated cache rather than
assumed, so Phase 2's CMake block and TorchExtract.cpp can be
transcriptions of this build and RunOnce respectively.

Archive bytes turn out to be configuration-independent -- the pair
produced exactly the sizes the Debug static-lib run did, phases=1450 on
both runs. Extraction 11.8s mean, so the static-lib wrapper costs nothing
over Gate C.

Confirms both Phase 2 dependency risks in the configuration that actually
ships: zlib fetched with BUILD_STORMLIB=OFF and no zlib.h includes,
tinyxml2 fetched with BUILD_NAUDIO=OFF removing its only consumers. Both
FetchContent declarations are unconditional.
This commit is contained in:
briaguya
2026-07-25 00:02:57 -04:00
parent 4689ae3940
commit fe2f52248f
+35 -1
View File
@@ -439,7 +439,7 @@ Current state: `soh.o2r` at the repo root, **1,042 entries** = 1,041 files under
| A2 | both archives in a two-extraction process identical — especially the second | ✅ **green** — see below |
| B | 19/19 identical | ✅ **green** — see below |
| C | 19/19 identical | ✅ **green** — see below |
| A | 19/19 identical, plus the pair run | |
| A | 19/19 identical, plus the pair run | ✅ **green** — see below |
| E | `manifests/soh_o2r.json` (1,042 entries) + input hashes + version + SHA committed | ⬜ |
"Identical" means `test_assets.py` reports **`0 failed, 0 not generated, 0 not in reference`** —
@@ -606,6 +606,40 @@ the OoT-only flags cost nothing. What's still unmeasured is **ZAPD's** time on t
so "does it regress?" remains formally open; but at ~11 s the answer is unlikely to need a
"this takes N minutes" note in the UI.
### Gate A result — 2026-07-24 — ✅ green
The shipping configuration, all variables at once. **19/19 identical**, plus the pair run
**PASS/PASS**. Verified as genuinely that combination, not assumed:
```
USE_STANDALONE=OFF CMAKE_BUILD_TYPE=Release BUILD_OOT=ON PORT_VERSION_ENDIANNESS=ON
BUILD_{SM64,MK64,SF64,PM64,FZERO,BK64,MARIO_ARTIST,NAUDIO}=OFF BUILD_UI=OFF
BUILD_STORMLIB=OFF ROM_CRC_BSWAP=OFF
```
**That flag set is now the spec.** Phase 2's root-`CMakeLists.txt` block is a transcription of it
and `main.cpp`'s `RunOnce` a transcription into `TorchExtract.cpp` — copy, don't re-derive.
- **libgfxd is absent here too**, in the exact combination that ships: `_deps/` holds only
tinyxml2, yaml-cpp and zlib. The Binary export path is gfxd-free under Release as well as Debug.
- **Archive bytes are configuration-independent.** The pair produced 33,154,599 (`pal_gc`) and
33,120,244 (`pal_mq`) — identical to the Debug static-lib run in Gate A2, and both runs reported
`phases=1450` including the second. Debug/Release and CLI/static-lib all agree.
- **Extraction: 11.8 s mean per ROM**, matching Gate C's Release number. The static-lib wrapper
costs nothing.
**Both Phase 2 dependency risks are now confirmed in the shipping configuration, not merely
predicted:**
- **zlib is fetched** under `USE_STANDALONE=OFF` + `BUILD_STORMLIB=OFF` despite zero `zlib.h`
includes in `torch/src` (risk #1).
- **tinyxml2 is fetched** even though `BUILD_NAUDIO=OFF` removes its only Torch consumers — the
`FetchContent_Declare(... OVERRIDE_FIND_PACKAGE)` is unconditional, so it will hijack
libultraship's `find_package(tinyxml2 REQUIRED)` regardless.
Neither affects archive bytes; both are link/configure concerns for Phase 2, and both are now
observed facts rather than readings of the CMake.
---
## Cost