The Windows installer now bundles the WSL2 engine runtime so the installed app works out of the box. - forge.config.js: configure the Squirrel maker (setupExe name, setup icon) and require the rootfs for any Windows build, throwing a clear error if packaging/wsl2/out/ is empty so the .exe can never ship without its engine. - wsl-runtime.js: rootfsCandidates now checks the flat resources/ path first, which is where forge's extraResource copies the archive (the wsl-runtime/ subdirectory and the dev-checkout path remain as fallbacks). - package.json: add package:win / make:win scripts that build the static engine, the rootfs, then package/make for win32. - tests: cover the flat-first rootfs lookup. - README/CHANGELOG: document the .exe build, its Wine+Mono cross-build prerequisite on Linux, and the required-rootfs guard.
Regression test set
The tests/ tree contains the 13 target configurations used as the reference
regression set for the TRIM.SP-NL modernization. Together they contain 143
energy-configuration points.
The committed .out files intentionally retain the banner TrimSPNL v1.3.2:
they are the historical RANLUX reference outputs used to check
behavior-preserving refactoring. They should therefore not be mechanically
regenerated or replaced when preparing a new release.
For changes intended to preserve behavior, current RANLUX output should agree with these references apart from nondeterministic timing fields and quantities affected by explicitly documented corrections. PCG32 and xoshiro256** generate different Monte Carlo histories and are therefore compared statistically rather than by bitwise output identity.
The configurations are:
6element_plus_multilayer7layer_stackSiO2_Al2O3_TiN_Si_4layerthin_Au_Cr_SiAu_Cr_Si_3layerAlCoCrFeNiTi_6elementsSiO2_Si_2layerSiO2_1layerSi_1layerthin_C_foilthin_C_Au_CLi8-Si_1layerLi8-thin_C_Au_C
When running an individual case manually, copy the relevant input deck to a scratch directory first so the committed reference files are not overwritten. The transport executable accepts an optional RNG backend as its second argument, for example:
trimspNL run_basename ranlux
trimspNL run_basename pcg32
trimspNL run_basename xoshiro
Omitting the second argument selects RANLUX.