mirror of
https://github.com/openglow-org/forgefirm.git
synced 2026-09-27 16:51:12 -07:00
Bench (image 20260817124714): motion.lid-cancel-home FAILED on a machine that did the right thing twice. Both phases logged the cancel, the reset banner and "returned to the job start" with grbl drift 0.000, and the counters ended at the true rest position - but the hold phase's REFERENCE was 2.87 mm off, so the comparison measured a transient. The reference was sampled straight after the jogs that close the running phase, and those wait on grblHAL's Idle. grblHAL is Idle when its planner is empty; the kernel is still playing the stream depth and the decel tail behind that. A counter read in that window records a position the head is only passing through - and the resulting drift reads exactly like the failure this check exists to catch, a move counted by grbl but never played by the machine. So the check stays as strict as it is (it is the one that caught the stranded ring on 2026-08-17): what changes is where the reference comes from. kernel_start() waits for the MACHINE to be idle - the helper the motion tests already end on - before reading the counters, and every reference capture in the lid, interlock and live cancel tests goes through it.