Wearable preferences/NVS failure and reboot recovery PASS
Battery percent/filter/invalid/error retention and compact NET rates PASS
Wearable shell immediate navigation/draft and UTC clock PASS
RX8130 UTC / fixed Demo UTC+8 / day, month, year, leap rollover PASS
Wearable RAM structs: DevicePreferences=12 LoadedPreferences=24 UiState=80 NVSBlob=25 PASS
Wearable renderer round-safe Watch/Agent/Help/Settings; glance rows, battery icon, date/time order; all sizes/themes PASS
Agent Live == manual page 0; pages tile the body with no overlap/gap PASS
Watch glance host thresholds/hysteresis, task mapping, Codex percent/reset, redraw policy PASS
CJK subset generator coverage PASS (GB2312 Level 1 3755/3755, glyphs=5000, 中/这 covered)
Production raw button polling / all Settings Back paths / Settings Voice starts=0 / Approval ownership PASS (host)
Double A/B top-level only / openAgentSessionPicker reuse / Speech Mode APPLY PASS (host)
Touch virtual A/B / top-level swipe / Agent browse / History controls / Settings entries PASS (host)
Touch contact epoch ownership / stale cancellation / Long release PASS (host)
History multi-screen message paging / touch parity / reset PASS (host)
History cross-page fetch/cache traversal PASS (host)
Navigator stale-epoch ownership / legal Long finish PASS (host)
Production Voice 999/1000 CANCEL, 1001 TRANSCRIBING; Confirm/Direct once-only transcript PASS
Production shell gestures / offline settings / Apply failure / Voice / Approval modal priority PASS (host)
Raw GPIO / 30ms debounce / >600ms Hold A / Settings Back / no Voice or trailing CLICK PASS (host)
Bounded Navigator paging/empty creation/capabilities/native choice semantics PASS
tap inside slop resolves exactly one Tap PASS
tap slop boundary 18px is inclusive PASS
swipe in four directions resolves the dominant axis PASS
swipe requires >=1.5x dominant axis PASS
long press resolves Long then LongRelease PASS
movement cancels Long and never yields Tap PASS
sub-debounce contact is ignored PASS
one primary gesture per contact PASS
left/right half splits into virtual B/A PASS
TouchTransform maps, mirrors and clamps in one place PASS
Raw TouchGesture reducer / transform PASS (host)
history cache never exceeds kCachePages PASS
history append_older makes the fetched page current PASS
history cache eviction keeps traversal linear and in range PASS
history cache older/newer boundaries PASS
AgentBrowse manual page / live tail restore / reset PASS
HistoryScreen linear paging and position PASS
HistoryScreen multi-screen message paging is linear and reversible PASS
history_bounded_text truncates on a UTF-8 boundary PASS
Bounded Agent history cache / view / UTF-8 PASS (host)
production hello advertises History and preserves playback freeze PASS
70ms A/B press wholly inside display stall survives queue PASS
queued click remains bound to original UI owner PASS
shell double click / immediate Settings click preserved PASS
long and long-release survive owner change without trailing click PASS
queue overflow discards incomplete generation and recovers only after release PASS
overflow cancels active recording if its physical release was lost PASS
