c1c9f6cbc45f8d89f66777f6871889679d4438fe
The validity-indicator debounce was two locals in the event loop (indicator_pending + app.input_indicator) with no unit coverage — ADR-0027's as-built notes flag it as untested async glue. The decision logic is now an IndicatorDebounce struct: note_event (a keystroke hides + arms; non-key events leave it be), settle (the quiet window elapsed → show the verdict + disarm), is_armed (drives the recv timeout), visible (mirrored into app.input_indicator for the renderer). No behaviour change — the tokio timer and terminal stay in the loop. 7 unit tests cover the debounce contract: the keystroke / settle cycle, clean verdicts, and that a background event mid-typing does not cancel the owed recompute. 1125 passing, clippy clean.
Description
No description provided