-- e2e_runs: una fila por corrida completa de e2e_checks de la app (fase 4 del bucle reactivo). -- Diferente de e2e_tests (004): aquella es por test definido, esta es por suite ejecutada. CREATE TABLE IF NOT EXISTS e2e_runs ( id TEXT PRIMARY KEY, app_id TEXT NOT NULL, started_at INTEGER NOT NULL, finished_at INTEGER, status TEXT NOT NULL, -- pass|fail|partial checks_total INTEGER NOT NULL, checks_pass INTEGER NOT NULL, checks_fail INTEGER NOT NULL, checks_warn INTEGER NOT NULL DEFAULT 0, summary_json TEXT NOT NULL DEFAULT '[]', triggered_by TEXT NOT NULL DEFAULT 'manual', -- manual|git_push|cron|reactive_loop git_sha TEXT NOT NULL DEFAULT '' ); CREATE INDEX IF NOT EXISTS e2e_runs_app_idx ON e2e_runs(app_id, started_at DESC); CREATE INDEX IF NOT EXISTS e2e_runs_status_idx ON e2e_runs(status, started_at DESC);