bb8cb8d014
Accepting a proposed routine gives the tick loop a standing new reason to speak. DESIGN.md § "surface caps authority" puts that at layer 3, and says voice is structurally incapable of layer 3 because a room mic is reachable by anyone in the room. The /routines button was gated at step-up; the voice path accepted outright. The two surfaces disagreed, so one of them was wrong. A spoken "да" now leaves the row 'proposed' and sends him to /routines, where the gated button is. A spoken "нет" still dismisses: declining does not move the boundary outward, so voice keeps it. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018CotYKycuio1GwLbYh9jfc