Skip to content

Process-local software-only launcher

Status: Guard implemented; harmless regression verification complete. No real runner, build, repository test assembly or engine execution is part of this increment. Base fedd77fbf5bfbd1737854da45f326c931fb551ef remains preserved.

The approved scope is to prevent a repeat of the inherited BEMGEN_ENERGYPLUS incident, preserve its uncertain completion inventory, prepare a generated-only MediumOffice data summary and return an exact-composition proposal for coordinator review. No new production geometry contract is implemented.

The launcher clears actual known activation names plus defensive engine/weather/filter/settings names in its process, asserts absence, accepts only SoftwareOnly, excludes the 18 reviewed annotated methods by fixed fully-qualified-name prefixes, and checks a reviewed source/build/script fingerprint before each runner operation. Failure/exception/unknown policy or source drift prevents further work; no policy refresh is automatic. CLI has no runner/filter injection. Module fake seams are trusted regression inputs, not an arbitrary-code sandbox. No persistent environment edits or user-process actions.

Semantic RED witnessed six failures and one pass before implementation. One intermediate attempt retained a suffix-matching failure; corrected matching passed. Additional fake tests cover post-build activation, invalid output and test exit propagation. A checkout-newline regression witnessed one failure before normalization, then passed. Eleven final fake-only checks cover Windows PowerShell 5.1 and PowerShell 7. No actual dotnet or engine is needed to verify the guard.

One bounded independent static review found no important or critical issues within the stated trusted-checkout scope; no review execution, digest recomputation or default-runner exercise was claimed. Test-runner override names were subsequently added to the existing inheritance regression; launcher logic is unchanged. Exact commands, exits, initial failures, reviewed inventory and preservation state are saved in the external guard evidence record. See usage and incident boundary (scripts/software-only/README.md).