mirror of
https://github.com/openglow-org/forgefirm.git
synced 2026-09-27 08:41:13 -07:00
The Z soft limit belongs to the driver, not to $20. glowforge_homing.c owns sys.work_envelope, sys.homed and sys.soft_limits for Z, because Z is always referenced, to the lens hall edge or to where the lens stands, and the core knows neither. The core recomputes both masks from the settings and drops Z when it does: $20 clears the soft-limit mask inside its setter, and a $13x write clears the homed bit for the axis as well. z_envelope_test.py drives the null-sink controller over TCP and holds the rule. It checks that an unreferenced Z is collapsed to where the lens stands and refuses a move each way, that X and Y stay free so the reassert is Z's alone, and that neither write frees Z. It restores $132. The harness runs in the grblHAL repo's CI, next to the laser stream and lifecycle harnesses.