You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
PR #202 landed libtotapi_mono.so as a macOS-verified PoC. The Makefile branches on platform via ifeq ($(UNAME_S),Darwin) for SO_SONAME_MONO, and reuses SO_GROUP_BEGIN/END + SO_UNDEFINED from the existing libtotapi.so block which already has different Darwin / Linux flag sets:
The mono target reuses these (no duplication), but the Linux branch is untested for the mono path — the existing python-tests.yml workflow only builds the default libtotapi.so. Linux ld differs from Apple ld in archive-ordering semantics and unresolved-symbol handling; a flag combination that works on macOS may fail on Linux with link errors, dlopen errors, or silent corruption.
Scope
Add a build-only CI job (or extend an existing one) that runs on Ubuntu:
make -C tot libtotapi_mono.so
make -C tot libtotapi_mono_inspect
Acceptance:
libtotapi_mono.so builds on Linux x86_64 with gfortran 13.x.
The 8-bpsd-storage-symbol invariant in libtotapi_mono_inspect passes.
ldd libtotapi_mono.so shows no lib*api.so deps (only system libs + libgfortran).
This is build-only validation. The 1e-10 equivalence and BPSD smoke tests against the mono build are deferred to #201 (which adds the unified graphics stubs needed to make it dlopen-loadable).
Why now vs later
Filing this now (vs as part of #201's Phase 2a) so:
Context
PR #202 landed
libtotapi_mono.soas a macOS-verified PoC. The Makefile branches on platform viaifeq ($(UNAME_S),Darwin)forSO_SONAME_MONO, and reusesSO_GROUP_BEGIN/END+SO_UNDEFINEDfrom the existinglibtotapi.soblock which already has different Darwin / Linux flag sets:The mono target reuses these (no duplication), but the Linux branch is untested for the mono path — the existing python-tests.yml workflow only builds the default
libtotapi.so. Linux ld differs from Apple ld in archive-ordering semantics and unresolved-symbol handling; a flag combination that works on macOS may fail on Linux with link errors, dlopen errors, or silent corruption.Scope
Add a build-only CI job (or extend an existing one) that runs on Ubuntu:
Acceptance:
libtotapi_mono.sobuilds on Linux x86_64 with gfortran 13.x.libtotapi_mono_inspectpasses.ldd libtotapi_mono.soshows nolib*api.sodeps (only system libs + libgfortran).This is build-only validation. The 1e-10 equivalence and BPSD smoke tests against the mono build are deferred to #201 (which adds the unified graphics stubs needed to make it dlopen-loadable).
Why now vs later
Filing this now (vs as part of #201's Phase 2a) so:
Effort
~30 min: copy the existing macOS-tested job's setup steps, add the two
makeinvocations, gate on PR-changing-the-mono-target paths.References
tot/Makefilelines 575-665 (mono target + inspect helper)docs/superpowers/specs/2026-05-14-l7b-ii-monolithic-poc-findings.md