-- Migration 003 — Phase 6 calendar write (AGENTS.md §4 FR-8, §11 Phase 6). -- -- Important school events are written to Sam's Home Assistant calendar. The -- write must be idempotent: the Home Assistant event id is stored on the item, -- so a re-run updates nothing and never duplicates an event. The push log is -- append-only, so a failed calendar write is visible and loud instead of being -- swallowed (FR-12). ALTER TABLE items ADD COLUMN ha_event_uid TEXT NOT NULL DEFAULT ''; ALTER TABLE items ADD COLUMN ha_pushed_at TEXT; -- One row per calendar write attempt. ok = 0 with an error is a loud failure. CREATE TABLE IF NOT EXISTS calendar_pushes ( id INTEGER PRIMARY KEY, item_id INTEGER NOT NULL REFERENCES items(id), entity_id TEXT NOT NULL, uid TEXT, ok INTEGER NOT NULL DEFAULT 0, error TEXT, created_at TEXT NOT NULL DEFAULT (datetime('now')) ); CREATE INDEX IF NOT EXISTS idx_calendar_pushes_item ON calendar_pushes(item_id); CREATE INDEX IF NOT EXISTS idx_calendar_pushes_created ON calendar_pushes(created_at);