The network_all_tech test scenario has a non-unique LP optimum, so its golden CSVs are not bit-portable across platforms and it fails cross-platform CI.
Symptom: on macOS (both 3.12 and 3.13), tests/test_scenarios.py::test_scenario[network_all_tech] fails on unit__outputNode__dt.csv, column ('dr_shift_demand', 'dr_storage') — e.g. 0.0 vs 30.18 at row 0. The objective is identical; HiGHS simply selects a different, equally-optimal vertex than the Linux-generated golden. The degeneracy comes from the demand-response shift (dr_shift_demand / dr_storage): the timing of shifted demand is free when it carries no cost, so many shift patterns are equally optimal.
Current state: the scenario is skipped via a new skip_reason field in tests/scenarios.yaml (see the network_all_tech entry). The skip_reason mechanism was added to tests/test_scenarios.py::_load_scenarios.
Proposed fix: reformulate the scenario so the optimum is unique, then remove the skip_reason to re-enable it. Options:
- Add a tiny tie-breaking cost to the demand-response shift (a negligible other_operational_cost / storage-cost on dr_storage) so exactly one shift pattern is optimal.
- Or pin the demand-response parameters so no genuine timing freedom exists in this scenario.
Acceptance: with the reformulation, test_scenario[network_all_tech] produces identical output on Linux, Windows, and macOS; drop the skip_reason and regenerate the golden.
The network_all_tech test scenario has a non-unique LP optimum, so its golden CSVs are not bit-portable across platforms and it fails cross-platform CI.
Symptom: on macOS (both 3.12 and 3.13), tests/test_scenarios.py::test_scenario[network_all_tech] fails on unit__outputNode__dt.csv, column ('dr_shift_demand', 'dr_storage') — e.g. 0.0 vs 30.18 at row 0. The objective is identical; HiGHS simply selects a different, equally-optimal vertex than the Linux-generated golden. The degeneracy comes from the demand-response shift (dr_shift_demand / dr_storage): the timing of shifted demand is free when it carries no cost, so many shift patterns are equally optimal.
Current state: the scenario is skipped via a new skip_reason field in tests/scenarios.yaml (see the network_all_tech entry). The skip_reason mechanism was added to tests/test_scenarios.py::_load_scenarios.
Proposed fix: reformulate the scenario so the optimum is unique, then remove the skip_reason to re-enable it. Options:
Acceptance: with the reformulation, test_scenario[network_all_tech] produces identical output on Linux, Windows, and macOS; drop the skip_reason and regenerate the golden.