Rename coolant to water

This commit is contained in:
2026-05-14 10:00:08 +02:00
parent 4ac8a77e8e
commit c149fe02a3
36 changed files with 157 additions and 157 deletions

View File

@@ -8,7 +8,7 @@ This backlog tracks what must change so the implementation matches `docs/design.
- Existing tests cover older behavior. They are useful regression scaffolding, but they do not prove the latest design rules.
- The simulation has a working `SimulationEngine`, network propagation, consumers, structural integrity, leaks, reactor readiness, forecasts, serialization, editor helpers, and Godot session bridge.
- Godot currently has a usable UX scaffold and grid renderer, but it still exposes older interaction concepts such as a player-facing `EndTurn` action and always-available underground layer controls.
- Existing campaign data is the older three-level placeholder set: `coolant_restart.json`, `fuel_bleed.json`, and `black_start.json`. These levels and manifest entries must be replaced by the tutorial plus six-group campaign from `docs/CAMPAIGN.md`.
- Existing campaign data is the older three-level placeholder set: `water_restart.json`, `fuel_bleed.json`, and `black_start.json`. These levels and manifest entries must be replaced by the tutorial plus six-group campaign from `docs/CAMPAIGN.md`.
- Unrelated Godot metadata or generated `.uid` files are not part of this backlog unless a later implementation task intentionally touches them.
## P0 Simulation Contract
@@ -27,34 +27,34 @@ This backlog tracks what must change so the implementation matches `docs/design.
- Block intentional underground propagation across the authored branch boundary.
- Preserve downstream starvation/readiness consequences for consumers and reactor feed.
- Add editor placement, validation, serialization, and rendering support.
- [ ] Add `SprinklerControlProp` and wall-mounted `CoolantSprinklerValve`.
- A `SprinklerControlProp` links to exactly one `CoolantSprinklerValve`.
- [ ] Add `SprinklerControlProp` and wall-mounted `SprinklerValve`.
- A `SprinklerControlProp` links to exactly one `SprinklerValve`.
- The valve is wall-mounted, not directly interactive, and has exactly one outlet/access floor face.
- Discharge creates `SprinklerWater` only while linked control is `Enabled` and the coolant branch is fed.
- Discharge applies deterministic local coolant pressure debt.
- Discharge creates `Water` only while linked control is `Enabled` and the water branch is fed.
- Discharge applies deterministic local water pressure debt.
- Add editor placement/linking, validation, serialization, and rendering support.
- [ ] Rework surface coolant into `SprinklerWater`.
- Rename code-facing concepts where practical; otherwise make names and UI text consistently mean sprinkler water, not a generic coolant hazard.
- `Coolant` pipe failures should inject `SprinklerWater`, not a second damaging liquid.
- `SprinklerWater` alone must not cause `UnsafeEntryLoss`.
- [ ] Rework surface water into `Water`.
- Rename code-facing concepts where practical; otherwise make names and UI text consistently mean water, not a generic hazard.
- `water` pipe failures should inject `Water`, not a damaging liquid.
- `Water` alone must not cause `UnsafeEntryLoss`.
- [ ] Update leak injection.
- Leaks inject only when the underground leak cell has positive amount and positive pressure/voltage after propagation.
- Isolating a leak stops fresh injection without repairing the underlying fault.
- Repair restores structural integrity and stops future injection but does not clean existing surface values.
- [ ] Implement the approved surface interaction order.
- Resolve leak/sprinkler injection per `Step`.
- Resolve coolant mitigation before ignition and electrical spread.
- Resolve water mitigation before ignition and electrical spread.
- Implement `Dilute`, `Quench`, value-based `Evaporate`, wet-electric `Conduct`, and `Ignite`.
- Preserve deterministic same-cell and adjacent-cell delta accumulation.
- Closed powered doors and remedy blocks must gate only the interactions they explicitly block.
- [ ] Implement value-based evaporation.
- Add balance values for ambient evaporation, heat-driven evaporation, and evaporation cooling.
- Hot cells should evaporate `SprinklerWater` faster than cold cells.
- Hot cells should evaporate `Water` faster than cold cells.
- Evaporation happens during useful action pulses; there is no campaign wait command.
- [ ] Implement `Unsafe` as derived movement safety.
- `Unsafe` is recalculated after authored setup and after each `Pulse`.
- `Unsafe` is caused by unsafe `Heat`, unsafe `LeakedElectricity`, or the wet-electric unsafe rule.
- `LeakedFuel` alone and `SprinklerWater` alone are not `Unsafe`.
- `LeakedFuel` alone and `Water` alone are not `Unsafe`.
- `UnsafeEntryLoss` happens only when `MoveRobot` enters an `Unsafe` destination without applicable protection.
- A `Pulse` must not kill a stationary robot just because the current cell becomes `Unsafe`.
- [ ] Implement powered prop behavior.
@@ -72,7 +72,7 @@ This backlog tracks what must change so the implementation matches `docs/design.
## P0 Simulation Tests
- [ ] Update existing tests so their names and assertions use `Pulse`, `Step`, `SprinklerWater`, `Unsafe`, and `ReactorReadiness` terminology.
- [ ] Update existing tests so their names and assertions use `Pulse`, `Step`, `Water`, `Unsafe`, and `ReactorReadiness` terminology.
- [ ] Add tests for fixed pulse length.
- Every accepted `LengthyAction` advances one `Pulse`.
- Each pulse resolves the configured number of `Step`s.
@@ -84,18 +84,18 @@ This backlog tracks what must change so the implementation matches `docs/design.
- Open valve allows branch propagation.
- Closed valve isolates damaged branches and can starve downstream consumers/reactor feed.
- Toggling a valve triggers exactly one `Pulse`.
- [ ] Add tests for `SprinklerControlProp` and `CoolantSprinklerValve`.
- Valve discharge requires a linked enabled control and fed coolant branch.
- [ ] Add tests for `SprinklerControlProp` and `SprinklerValve`.
- Valve discharge requires a linked enabled control and fed water branch.
- Direct valve interaction is invalid or unavailable.
- Discharge creates `SprinklerWater` at the authored outlet and applies pressure debt.
- Discharge creates `Water` at the authored outlet and applies pressure debt.
- Disabling the linked control or isolating the sprinkler branch stops fresh discharge.
- [ ] Add tests for updated leak injection.
- Fed fuel, coolant, and electricity leaks inject to the correct access face.
- Fed fuel, water, and electricity leaks inject to the correct access face.
- Isolated leaks stop new surface injection.
- Repairs restore structural integrity without cleaning existing surface values.
- [ ] Add tests for surface interactions.
- `SprinklerWater` dilutes `LeakedFuel`.
- `SprinklerWater` quenches `Heat`.
- `Water` dilutes `LeakedFuel`.
- `Water` quenches `Heat`.
- Evaporation removes water and cools heat according to balance values.
- Wet cells conduct electricity faster than dry cells.
- Fuel plus electricity or heat can ignite and create heat while consuming fuel.
@@ -126,7 +126,7 @@ This backlog tracks what must change so the implementation matches `docs/design.
- [ ] Update serialization round trips for new fields.
- `IsolationValveProp` carrier and open/closed state.
- `SprinklerControlProp` enabled/disabled state and linked valve id or position.
- `CoolantSprinklerValve` wall position, outlet/access face, linked control, and coolant connection.
- `SprinklerValve` wall position, outlet/access face, linked control, and water connection.
- Powered terminal active state if it becomes serialized runtime state.
- [ ] Update `LevelEditor` tools.
- Add isolation valve placement.
@@ -137,7 +137,7 @@ This backlog tracks what must change so the implementation matches `docs/design.
- [ ] Update `LevelValidator`.
- Validate powered doors have valid geometry and local electricity.
- Validate terminal power requirements where needed.
- Validate wall-mounted sprinkler valve geometry, outlet/access face, coolant connection, and exactly one linked control.
- Validate wall-mounted sprinkler valve geometry, outlet/access face, water connection, and exactly one linked control.
- Validate isolation valves sit on exactly one matching underground carrier.
- Warn on initially unready reactors, initially starved required consumers, unused supplies, and sprinkler valves with no useful suppression or pressure tradeoff.
- [ ] Replace placeholder campaign files.
@@ -167,7 +167,7 @@ This backlog tracks what must change so the implementation matches `docs/design.
- Show why terminal access is unavailable when unpowered or away from the terminal.
- Use `Pulse +N` wording in forecast UI.
- [ ] Update grid rendering and inspector text.
- Render `SprinklerWater` separately from underground `Coolant`.
- Render `Water` separately from underground `water`.
- Render `Unsafe` cells with a distinct movement warning treatment.
- Render isolation valve state, sprinkler control state, wall-mounted sprinkler outlet, powered door state, and powered terminal state.
- Inspector should display visible surface values, prop state, consumer per-carrier state, and underground values only when terminal access allows it.
@@ -182,7 +182,7 @@ This backlog tracks what must change so the implementation matches `docs/design.
- [ ] Add campaign completion flow for the final Group 6 level.
- [ ] Add loading and malformed-level error states for campaign level loading.
- [ ] Verify Win2D editor export and Godot loader compatibility for the new schema.
- [ ] Revisit art labels/icons for `SprinklerWater`, `Unsafe`, powered props, and sprinkler controls after mechanics are implemented.
- [ ] Revisit art labels/icons for `Water`, `Unsafe`, powered props, and sprinkler controls after mechanics are implemented.
## Verification Rules