-- Migration 0004 — v0.5 Live Assist (D-062, REQ-NFR-ASSIST-04, D-060 layer 3, REQ-IDEATE-09). -- Additive: existing practice sessions are unaffected (defaults preserve v0.1-v0.4 behavior). -- session_type: 'practice' (default, existing) | 'assist' (new v0.5). -- SQLite ALTER TABLE ADD COLUMN with a DEFAULT keeps existing rows as 'practice'. ALTER TABLE sessions ADD COLUMN session_type TEXT NOT NULL DEFAULT 'practice'; -- guardrail_verdict_json: per-turn guardrail verdict (D-060 layer 3, REQ-IDEATE-09). -- Nullable — only assist turns populate it; existing practice turns stay NULL. ALTER TABLE turns ADD COLUMN guardrail_verdict_json TEXT; -- Index for the mode-conflict check (REQ-IDEATE-03): find active sessions by type. -- ended_at IS NULL means the session is still active (no end timestamp). CREATE INDEX IF NOT EXISTS idx_sessions_active_by_type ON sessions (learner_id, session_type, ended_at);