-- 每个 run 只保留最新的增量 checkpoint;写入必须通过当前 worker lease fencing。 CREATE TABLE IF NOT EXISTS run_checkpoints ( run_id TEXT PRIMARY KEY REFERENCES runs(id) ON DELETE CASCADE, phase TEXT NOT NULL, step INTEGER NOT NULL, next_step INTEGER NOT NULL, messages_json TEXT NOT NULL, provider_request_id TEXT, tool_call_id TEXT, attempt INTEGER NOT NULL, updated_at INTEGER NOT NULL );