Part of #64.
Problem
Most compile-closure failures are not the function itself — they are unported types/symbols it references. Porting each fully is wasteful; a thin shim satisfies the compiler and is written once, reused everywhere.
Shims to build/extend
Done when
Remaining: psychrometric shims. Otherwise the dependency-boundary shim library is in place.
🤖 Generated with Claude Code
Part of #64.
Problem
Most compile-closure failures are not the function itself — they are unported types/symbols it references. Porting each fully is wasteful; a thin shim satisfies the compiler and is written once, reused everywhere.
Shims to build/extend
Array1D/Array2D→ List-backed 1-based arrays inep_prelude.mojo, mirrored bystd::vector-backed structs inep_oracle.h(C++ keepsa(i)/a(i,j)call syntax, Mojo uses[]; both 1-based). ✅ landedmain61db4bfConstant::*→ extended (addedSigma,UniversalGasConstant,Gravity); kept Mojo/C++ values identical. ✅sinlinks under-Xlinker -ldl(no-lm) — trig links as intrinsic (myth busted; matches the libm-link finding). ✅pvstarstub exists; real psychro shims still TODO — keep open.Done when
scripts/sft/diff_verify_ep.pyconsumes these uniformly (and its deadenergyplus-mojo/.pixiMojo path is fixed →MOJO_HOME-overridable, live NuMojo default).Array1D+Constant.Sigma+sinfunction compiles + numerically matches C++ throughdiff_verify_ep.py(1/1). Existing items unaffected (9/10 spot-check; the 1 fail is a pre-existingstd::cout-without-<iostream>harness gap).Remaining: psychrometric shims. Otherwise the dependency-boundary shim library is in place.
🤖 Generated with Claude Code