-- task_runs: una fila por corrida del meta-orquestador fn-orquestador (issue 0069).
-- Trazabilidad completa del bucle CONSTRUIR → EJECUTAR → RECOPILAR → ANALIZAR → MEJORAR
-- ejecutado autonomamente. Vive en operations.db de la app target (o operations.db raiz
-- si la tarea es cross-cutting). El worktree puede borrarse — esta auditoria sobrevive.

CREATE TABLE IF NOT EXISTS task_runs (
    id              TEXT PRIMARY KEY,             -- task_<random-hex>
    task_id         TEXT NOT NULL,                -- issue_id (0070) o slug del task_spec
    started_at      INTEGER NOT NULL,
    finished_at     INTEGER,
    status          TEXT NOT NULL,                -- running|converged|stalled|timeout|iterations_exhausted|needs_human|aborted
    iterations      INTEGER NOT NULL DEFAULT 0,
    last_phase      TEXT NOT NULL DEFAULT '',     -- construir|ejecutar|recopilar|analizar|mejorar
    last_run_id     TEXT NOT NULL DEFAULT '',     -- e2e_runs.id de la ultima validacion
    branch          TEXT NOT NULL DEFAULT '',     -- auto/<issue_id>
    worktree_path   TEXT NOT NULL DEFAULT '',     -- /tmp/fn_orq_<issue>_<ts>
    pr_url          TEXT NOT NULL DEFAULT '',     -- URL del PR draft al converger
    progress_json   TEXT NOT NULL DEFAULT '[]'    -- log iter-por-iter: [{iter, phase, ts, subagent, summary, run_id}, ...]
);

CREATE INDEX IF NOT EXISTS task_runs_task_idx    ON task_runs(task_id, started_at DESC);
CREATE INDEX IF NOT EXISTS task_runs_status_idx  ON task_runs(status, started_at DESC);
