Block a user
fix: capture thought timestamp at cycle start, not after LLM call
refactor: break up _record_utterance() into focused helpers
refactor: break up _record_utterance() into focused helpers
refactor: break up voice_loop.py::run() into helpers
refactor: break up search_memories() into focused helpers
refactor: break up search_memories() into focused helpers