{"type":"entity","name":"BUG_27_Session","entityType":"bug_fix","observations":["current_task = BUG #27: Voice Assistant button not working","stage = INVESTIGATE","hypothesis = none yet","relevant_lesson = SILENCE_TIMEOUT too aggressive (5s)","stage = BUILD","hypothesis = CONFIRMED: Web Speech API fails on iOS Safari PWA but code doesn't fallback to Whisper","root_cause = recognition.start() fails silently on iOS PWA, no fallback to Whisper transcription","solution = Wrap recognition.start() in try-catch with fallback to MediaRecorder+Whisper","stage = DEPLOYED","commit = 0d648bf","fix_verified = Pushed to main, awaiting Railway deploy","test_required = iOS Safari PWA: tap Voice Assistant, speak command","SECOND FIX: Android Chrome early cutoff (3-5s)","root_cause_2 = Android Chrome fires onend after brief pause even with continuous=true","solution_2 = Auto-restart recognition in onend if no command processed and not manually stopped","commit_2 = d0c59c5","commit_3 = 91fa8d4 (LESSONS.md)"]} {"type":"entity","name":"current_task","entityType":"task","observations":["FEATURE: Rivet Voice Assistant - Inbound Calls + Task Delegation","Task ID: 2f963e0ca7d5812ea030d2f3930b22b4","Priority: P1 High","Status: To Do"]} {"type":"entity","name":"stage","entityType":"workflow","observations":["Current stage: INVESTIGATE","Stage: PLAN","Findings: No existing Vapi integration - Twilio infrastructure exists","Existing VoiceAssistant is frontend component not phone system","Need: Vapi webhook, task parser, async execution, callback system","Stage: COMPLETE","Built full Vapi voice assistant system","Code committed and pushed","Documentation created","Ready for manual migration and testing"]}