Problem
The public tree no longer tracks proprietary SDK notice text and the native CMake play target no longer compiles historical libultra/Rare libaudio implementation sources. The remaining conservative provenance risk is narrower now: SDK/libultra-lineage compatibility material is still present for the in-progress N64 matching target, mostly under include/PR/, src/libultra/{gu,io,libc,os}/, and src/libultrare/{io,libc,os}/.
This is documented in THIRD_PARTY.md, ROADMAP.md, and docs/STATUS.md, but it is still not accurate to describe the repository as fully clean-room while that matching-target surface remains in-tree.
Current state
- Proprietary SDK notice text: 0 tracked paths per
./scripts/ci/check_release_ready.sh.
- Native CMake target: compiles zero
src/libultra/audio/*.c and zero src/libultrare/audio/*.c; tools/check_native_sdk_surface.py guards against reintroducing the removed audio/native SDK surface.
- Matching libaudio path: routes through
src/libultra/audio/clean_compat.c, a notice-free wrapper around the shared project-owned src/platform/audio_compat.c implementation.
- Removed from public tree: obsolete top-level compatibility headers, several unused
include/PR/* headers, include/PR/ultraerror.h, and the unbuilt split libaudio helper/wrapper sources that had increased the public SDK surface.
- Remaining matching-target surface: 162 tracked paths under
include/PR, src/libultra, and src/libultrare, including SDK-shaped headers plus GU/IO/libc/OS implementation files used by src/libultrare/Makefile.libultrare and the N64 linker scripts.
- Matching target also requires local user-supplied SGI IDO/IRIX compiler files under
tools/irix/root and separate data-table link work tracked by the N64 byte-matching data-table issue.
Desired end state
Pick one deliberate policy and implement it consistently:
- Replace matching-target SDK/libultra implementation files with clean-room equivalents where practical; or
- Move matching-target-only SDK implementation source out of the default public branch/release archive while keeping native play and public docs honest; or
- Keep a minimal, explicit, documented matching-target exception inventory with provenance rationale and make the release guard hard-fail outside that list.
Do not simply strip provenance/comments from SDK-lineage implementation files without replacing, isolating, or explicitly documenting the implementation.
Validation
./scripts/ci/check_release_ready.sh
python3 tools/check_native_sdk_surface.py --repo-root .
cmake --build build --parallel 4
ctest --test-dir build --output-on-failure
If touching matching-target behavior, document and run the relevant make/COMPARE flow or explain the current blocker.
Problem
The public tree no longer tracks proprietary SDK notice text and the native CMake play target no longer compiles historical libultra/Rare libaudio implementation sources. The remaining conservative provenance risk is narrower now: SDK/libultra-lineage compatibility material is still present for the in-progress N64 matching target, mostly under
include/PR/,src/libultra/{gu,io,libc,os}/, andsrc/libultrare/{io,libc,os}/.This is documented in
THIRD_PARTY.md,ROADMAP.md, anddocs/STATUS.md, but it is still not accurate to describe the repository as fully clean-room while that matching-target surface remains in-tree.Current state
./scripts/ci/check_release_ready.sh.src/libultra/audio/*.cand zerosrc/libultrare/audio/*.c;tools/check_native_sdk_surface.pyguards against reintroducing the removed audio/native SDK surface.src/libultra/audio/clean_compat.c, a notice-free wrapper around the shared project-ownedsrc/platform/audio_compat.cimplementation.include/PR/*headers,include/PR/ultraerror.h, and the unbuilt split libaudio helper/wrapper sources that had increased the public SDK surface.include/PR,src/libultra, andsrc/libultrare, including SDK-shaped headers plus GU/IO/libc/OS implementation files used bysrc/libultrare/Makefile.libultrareand the N64 linker scripts.tools/irix/rootand separate data-table link work tracked by the N64 byte-matching data-table issue.Desired end state
Pick one deliberate policy and implement it consistently:
Do not simply strip provenance/comments from SDK-lineage implementation files without replacing, isolating, or explicitly documenting the implementation.
Validation
./scripts/ci/check_release_ready.sh python3 tools/check_native_sdk_surface.py --repo-root . cmake --build build --parallel 4 ctest --test-dir build --output-on-failureIf touching matching-target behavior, document and run the relevant
make/COMPARE flow or explain the current blocker.