fix(FN-1473): recover no-progress task_done failures

This commit is contained in:
gsxdsm
2026-04-12 12:13:06 -07:00
parent ce82e94153
commit 494b7da5f1
8 changed files with 395 additions and 4 deletions

View File

@@ -606,6 +606,12 @@ export class TaskExecutor {
return task.steps.every((s) => s.status === "done" || s.status === "skipped");
}
private isNoProgressNoTaskDoneFailure(task: Task): boolean {
return task.status === "failed" &&
task.error?.includes("without calling task_done") === true &&
task.steps.every((step) => step.status === "pending");
}
private async clearResumeFailureState(task: Task): Promise<void> {
if (task.status === "failed" || task.error) {
await this.store.updateTask(task.id, { status: null, error: null });
@@ -736,6 +742,11 @@ export class TaskExecutor {
continue;
}
if (this.isNoProgressNoTaskDoneFailure(task)) {
executorLog.log(`${task.id} failed without task_done and has no step progress — leaving for self-healing requeue`);
continue;
}
executorLog.log(`Resuming ${task.id}: ${task.title || task.description.slice(0, 60)}`);
try {
await this.clearResumeFailureState(task);