# A102 UI and speed supervisor integration candidate

Run `./verify.sh` with clang and arm-none-eabi-gcc installed. Sources and object-only ARM compile are included; no target image or flash artifact is produced. Freestanding headers provide declarations; target runtime must supply memset.

`dui_tick` decodes A101 clicks and routes semantic requests into the A83 speed-supervisor candidate. Initial beginner mode, direction +1, 450ms click window, stopped-only mode changes, and simultaneous-command rejection are engineering choices, not measured reference behavior. Configure thresholds and gains only from actual motor/power-path validation. Always use accepted supervisor state for display; rejected mode changes must not update LCD state.

Start requires explicit `startup_ready` AND all ds_start prerequisites including validated observer lock. It does not solve rotor alignment or sensorless startup at standstill. Do not set physical-valid flags true as software defaults. The eventual HAL must normalize park sensor, debounce keys, read actual speed/current/power/fault state, calibrate ADC, and integrate FOC and startup. There is no direct GPIO/PWM/motor enable in this package. `ds_output.run_enable` is supervisor intent, not physical run authorization.

Pause requests stop immediately after the click sequence resolves. Independent hardware fault and explicit `dui_stop` paths do not wait for click timeout. A simultaneous pause while running dominates another command. Other simultaneous commands reject. An elapsed gesture is processed before new release edges. Park, missing health inputs, power/driver/calibration invalidity and faults cancel pending clicks; clearing faults is not bound to a click and does not restart.

The copied A83 `ds_update` previously returned on zero elapsed milliseconds before inspecting faults. A102 checks safety observations before that return. A standalone negative control returns running/run=1 on A83 and latched driver-fault/run=0 on A102. The production candidate A83 files have NOT been overwritten; A102 is the proposed replacement for future target integration.

ARM compile: Cortex-M4F hard float objects only. This ABI must match the final runtime; A83 target's soft-float build is not replaced or proven link-compatible by these objects. Object size does not establish full firmware Flash, RAM, timing or stack usage.

Physical testing and reference equivalence remain unverified across all three products.
