af7205bea5
Review follow-up: the sweeper is right that the first commit only cured half the dead config — the TUI gateway builds its recorder params explicitly, so the cap never reached recordings started from the TUI. - start_continuous() grows a max_recording_seconds param (default 0.0 = disabled, so existing callers keep today's behaviour) and applies it to the shared recorder next to the silence params - tui_gateway voice.record start forwards the validated cap; corruption semantics now mirror the silence params everywhere: non-numeric/bool falls back to the documented 120 default (a hand-edited `max_recording_seconds: true` must not become a 1-second cap), while an explicit numeric <= 0 disables the cap - cli.py wiring updated to the same corruption semantics New coverage, per review: - TestMaxRecordingCap drives the mocked InputStream callback past the cap during continuous loud speech (the silence branch physically can't fire there) and asserts the one-shot callback fires exactly once; plus the disabled-cap negative - TestMaxRecordingSecondsConfigReal pins the CLI config assignment for the valid / zero / bool / garbage cases via _voice_start_recording - test_voice_record_start_forwards_max_recording_seconds pins the TUI forwarding for the same matrix