State machine on a single persistent input stream: IDLE → BEEPING → RECORDING → PLAYBACK → IDLE. Detector gated during non-IDLE states; WakewordModel.Reset() called on IDLE re-entry to clear stale ring buffers and re-arm the warmup guard.