laundry: cite the machine_state history confirming #358's tail

The reporter's machine_state history for the same two cycles flips to
idle on the exact second progress reads 'Drying' (12:08:51 and 14:01:26),
which settles what the previous commits had to infer: rep_fn returns
'Idle' whenever state isn't active, so it cannot have produced that
value, and the only remaining path was the ungated sticky_live_fn the
bypass returned in its place. Replaying the sequence against the pre-fix
path reproduces the reported Cooling, Finish, Drying, Idle exactly; the
fix holds Finish through it.

Comments only -- swap the inference for the observation that confirms it.
This commit is contained in:
Marc Billow committed 2026-08-12 14:39:18 +00:00
1 parent f12f67b2b3
commit 67b28ed10f
2 files changed
+15 -11

No files matched your search

+7 -6
View File
@@ -166,12 +166,13 @@ def test_a_new_cycle_starting_overrides_the_hold():
def test_a_running_stage_after_finish_does_not_break_the_hold():
"""Issue #358: the reporting dryer replays a running stage after
Finish -- observed twice, identically, as Cooling -> +60s Finish ->
+24s 'Drying' -> +4s settled, with `state` already idle throughout the
tail. The hold must survive it, so the cycle still reads Drying,
Cooling, Finish, Idle rather than the reported Drying, Cooling,
Finish, Drying, Idle."""
"""Issue #358: the reporting dryer resets `progress` to its course's
first stage in the same moment `state` goes idle -- observed twice,
identically, as Cooling -> +60s Finish -> +24s 'Drying' -> +4s
settled, with the reporter's machine_state history flipping to idle on
the exact second progress reads 'Drying'. The hold must survive that,
so the cycle still reads Drying, Cooling, Finish, Idle rather than the
reported Drying, Cooling, Finish, Drying, Idle."""
desc = replace(_PROGRESS_DESC, sticky_seconds=0.2)
sensor, coordinator = _sensor(desc)