- Calibration: still derived in angle space via the 180-degree flip, but now
APPLIED in vector space as a reference-orientation rotation (Rodrigues
alignment for Surface, Z-rotation for Edge), exact away from zero; tests
at 30 degrees, cross-axis, and edge-polarity cases.
- Angle relative zero: stores the gravity direction vector; relative reading
is the angle between directions, so cross-axis movement is honest.
- Edge mode: precise geometry documented (either long edge down, gravity
along +/-X), placement-validity guard so e.g. Edge mode never locks on a
phone lying flat; UI shows repositioning hints.
- Lock/readout coherence: locked label states the tolerance (exit threshold)
so the rounded readout can never contradict it; pipeline acceptance tests
pin the invariant.
- Sensor-vector contract: documented and pinned by SensorContractTest. The
suggested negation of gravity/accelerometer fallbacks is NOT applied: per
Android SensorEvent docs, a stationary flat device reads +9.81 on Z (the
gravity reaction), matching the rotation-vector path as-is. The contract
tests prove all paths agree.
38 tests passing.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>