# Native Homing and Status Validation Date: 2026-09-09. Local URL: http://127.0.0.1:5175/. This records local execution, not deployment or a full LinuxCNC port. ## Implementation - The selected XYZAC case compiles the pinned `homing.c` and `simple_tp.c`. - HAL allocation and ideal motor feedback are adapted; the homing state machine is not rewritten in JavaScript. - `task.state` is machine state; interpreter state is `task.interpState`. - `motion.traj.mode` is FREE/COORD/TELEOP; `motion_type` is separate. - `home_state` comes from homemod's state underlying `joint.N.home-state`. - The monitor displays task mode/state, interpreter state, motion mode/type and Homing. Per-joint status and history remain in the snapshot; their table and history list were removed from the visible panel at the user's request. - Numeric Home Joint replaces the world-axis-to-joint alias. Original control ID `manual-home-axis` is retained; `manual-home-joint-select` selects 0..4. - Home acceptance is asynchronous. Completion is determined by homemod, not by the coordinated planner queue. ## Verified - Native C test: `ctest --test-dir build-native -R sim_native_homing_test`. - WASM/Worker: `node web/worker/test_native_homing.mjs`. - All five joints: Jog then native no-search re-home resets joint coordinates while preserving simulated physical motor position and updating motor offset. - A test INI with HOME=5 executes the original free_tp final move; intermediate positions are nonzero, homed stays false until completion, coordinated TP queue remains empty. - Partial home remains FREE; the native all-homed edge switches to TELEOP. - AUTO+PAUSED rejects switching to MANUAL; abort and E-stop cancel homemod without marking interrupted joints homed; subsequent re-home works. - Native state save/restore preserves positions and offsets. - Existing Step, WAITING/MDI Pause/Resume, rerun, touch-off, source widget gates and Live Plot lifecycle regression tests pass with asynchronous Home setup. - Source Tcl oracle: 576 scenarios, 7488 assertions. Control inventory: 83 IDs. - Visible Chrome tests: `scripts/test_xyzac_home_reset_browser.mjs` and `scripts/test_xyzac_panel_buttons_browser.mjs` with `HEADED=1`. - Desktop/mobile screenshots and canvas pixel checks pass. General browser audit covers 51 buttons with no page errors. - React type checking and production build pass. Screenshots: `/tmp/axis-native-home-desktop.png`, `/tmp/axis-native-home-mobile.png`. ## Remaining Boundaries Task/interpreter status still uses the existing WASM adapter. Physical switch, encoder and unlock hardware have not been validated; the selected INI uses zero search/latch velocities. Full Joint/World jogging is not exposed. General recovery retains the existing planner/HAL endpoint differences and large RECOVER envelope stack limitation documented in the source-flow contract.