From fe2f52248f63d1212a4ab47867cc940b91e54a5e Mon Sep 17 00:00:00 2001 From: briaguya <70942617+briaguya0@users.noreply.github.com> Date: Sat, 25 Jul 2026 00:02:57 -0400 Subject: [PATCH] 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. --- torch-migration/PHASE0.md | 36 +++++++++++++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/torch-migration/PHASE0.md b/torch-migration/PHASE0.md index 3727bfca46..8d3f5cba85 100644 --- a/torch-migration/PHASE0.md +++ b/torch-migration/PHASE0.md @@ -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