fix(code-queue): harden active state recovery

This commit is contained in:
Codex
2026-05-17 11:12:41 +00:00
parent e8d165b1a0
commit 97a647bc8d
4 changed files with 125 additions and 10 deletions
@@ -698,6 +698,7 @@ function normalizeTask(value: unknown): QueueTask {
nextPrompt: typeof record.nextPrompt === "string" ? record.nextPrompt : null,
nextMode: record.nextMode === "initial" || record.nextMode === "retry" ? record.nextMode : null,
};
if (task.status !== "running" && task.status !== "judging") task.activeTurnId = null;
task.stepCount = numberField(record.stepCount ?? record.llmStepCount, task.output.length);
task.llmStepCount = task.stepCount;
task.outputMaxSeq = Math.max(outputMaxSeq(task), numberField(record.outputMaxSeq, 0));
@@ -1254,7 +1255,7 @@ async function queueSummary(tasks?: QueueTask[], queueRecords?: QueueRecord[]):
memo[task.status] = (memo[task.status] ?? 0) + 1;
return memo;
}, {});
const orphanedActiveTaskIds = taskRows.filter((task) => task.status === "running" || task.status === "judging").map((task) => task.id).sort();
const databaseActiveTaskIds = taskRows.filter((task) => task.status === "running" || task.status === "judging").map((task) => task.id).sort();
const queueList = Array.from(summaries.values()).sort((left, right) => String(left.id).localeCompare(String(right.id)));
return {
total: taskRows.length,
@@ -1267,8 +1268,11 @@ async function queueSummary(tasks?: QueueTask[], queueRecords?: QueueRecord[]):
activeRunSlotWaiters: [],
activeTaskIds: [],
activeTaskId: null,
orphanedActiveTaskIds,
orphanedActiveTaskCount: orphanedActiveTaskIds.length,
databaseActiveTaskIds,
databaseActiveTaskCount: databaseActiveTaskIds.length,
executionStateSource: "postgres-control-plane",
orphanedActiveTaskIds: [],
orphanedActiveTaskCount: 0,
processing: false,
counts,
unreadTerminal: taskRows.reduce((total, task) => total + (terminalTaskUnread(task) ? 1 : 0), 0),