From 280ceee84935e7b21101a3bb89d0c7ab3d6cb71c Mon Sep 17 00:00:00 2001 From: ScottW514 Date: Tue, 13 Oct 2026 19:10:00 -0400 Subject: [PATCH] laser_stream_test: rule 24's pause holds the window open: one arm Rule 24 proved the pause tier holds lit to the stop, masks FIRE while held, never writes the latch and resumes lit on the clean verdict. What only laser_lifecycle_test's verdict-pause session held was that the window stayed open through it: the resume armed nothing new. Rule 24 now counts the arms, so that session can leave. - verdict-rehold: exactly one "laser armed" across the pause, the re-hold and the resume. Proof: laser_stream_test passes whole on a null-sink build of the grblHAL-glowforge working tree under Linux. pyflakes is clean. Acceptance: none. The harness runs in grblHAL-glowforge's CI. --- scripts/bench/laser_stream_test.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/scripts/bench/laser_stream_test.py b/scripts/bench/laser_stream_test.py index 6e388e8..d20807d 100644 --- a/scripts/bench/laser_stream_test.py +++ b/scripts/bench/laser_stream_test.py @@ -1319,6 +1319,9 @@ def main(): fail("[verdict-rehold] the client did not resume its own hold once the verdict cleared") if "fire masked, job held" not in text: fail("[verdict-rehold] the pause tier did not report the masked hold") + if text.count("laser armed") != 1: + fail("[verdict-rehold] armed %d times: the pause tier closed the window and the " + "resume re-armed it (it must hold under the open window)" % text.count("laser armed")) if "latch locked" in text.split("Pgm End")[0]: fail("[verdict-rehold] the pause tier locked the latch") if "ALARM" in text: