Follow-up from the issue #81 fix. Correcting the east and west pumpjack pipe corners changes every pipe layout, and the Aquilo heat router does measurably worse on the corpus afterward. The fix itself is right; this issue is about winning the ground back.
What was measured
The 61-blueprint small list, unchanged by that work, planned with AddHeatPipes = true and AddBeacons = false:
|
Before (2.0 corners) |
After (2.1 corners) |
| Fields needing zero pumpjack drops |
35 of 61 |
34 of 61 |
| Pumpjacks dropped in total |
51 |
64 |
Both runs used the same corpus and differ only in Helpers.TerminalOffsets, so this is a like-for-like comparison.
The invariant that broke
PlannerTest.EnablingBeaconsNeverForcesMoreHeatDrops says turning beacons on must never cost more pumpjacks than heat-only would. Small-list index 35 now breaks it: heat-only keeps every pumpjack, beacons-on drops one. Index 55 moved the other way, from 3 drops to 1.
That rule is emergent, not enforced. AddPipes.SelectBestSolution ranks layouts by unheated-target count first, then drops one pumpjack and replans whenever the best layout still leaves a target uncovered. Nothing stops a beacon layout from being the one that costs a pumpjack, and the design says an unheatable beacon should be dropped instead. Worth checking whether index 35 is that case.
Where it is pinned today
PlannerTest.HeatOnlyFullyHeatsEveryFieldAndRarelyDrops floor lowered from 35 to 34.
PlannerTest.BeaconsCostAPumpjackIndex pins index 35 to the known-bad numbers rather than skipping it, so fixing the router fails the test and points here.
Reproducing
Plan each small-list blueprint twice, beacons off and on, and compare Summary.HeatDroppedPumpjacks. Flipping the two offsets in Helpers.TerminalOffsets back to (2,-1) and (-2,1) reproduces the before column.
Follow-up from the issue #81 fix. Correcting the east and west pumpjack pipe corners changes every pipe layout, and the Aquilo heat router does measurably worse on the corpus afterward. The fix itself is right; this issue is about winning the ground back.
What was measured
The 61-blueprint small list, unchanged by that work, planned with
AddHeatPipes = trueandAddBeacons = false:Both runs used the same corpus and differ only in
Helpers.TerminalOffsets, so this is a like-for-like comparison.The invariant that broke
PlannerTest.EnablingBeaconsNeverForcesMoreHeatDropssays turning beacons on must never cost more pumpjacks than heat-only would. Small-list index 35 now breaks it: heat-only keeps every pumpjack, beacons-on drops one. Index 55 moved the other way, from 3 drops to 1.That rule is emergent, not enforced.
AddPipes.SelectBestSolutionranks layouts by unheated-target count first, then drops one pumpjack and replans whenever the best layout still leaves a target uncovered. Nothing stops a beacon layout from being the one that costs a pumpjack, and the design says an unheatable beacon should be dropped instead. Worth checking whether index 35 is that case.Where it is pinned today
PlannerTest.HeatOnlyFullyHeatsEveryFieldAndRarelyDropsfloor lowered from 35 to 34.PlannerTest.BeaconsCostAPumpjackIndexpins index 35 to the known-bad numbers rather than skipping it, so fixing the router fails the test and points here.Reproducing
Plan each small-list blueprint twice, beacons off and on, and compare
Summary.HeatDroppedPumpjacks. Flipping the two offsets inHelpers.TerminalOffsetsback to(2,-1)and(-2,1)reproduces the before column.