{"record":{"id":"9f60f30b574c6fed","repo":"nexu-io/open-design","slug":"vela-video-task-returned-unsupported-status-last","errorCode":null,"errorMessage":"Vela video task returned unsupported status ${lastStatus}","messagePattern":"Vela video task returned unsupported status (.+?)","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"apps/daemon/src/media/vela.ts","lineNumber":509,"sourceCode":"        );\n      }\n      lastStatus = nonEmptyString(task.status) ?? 'missing';\n      const elapsedSeconds = Math.round((Date.now() - startedAt) / 1000);\n      input.onProgress?.(`Vela video status ${lastStatus}; elapsed ${elapsedSeconds}s`);\n\n      if (lastStatus === 'succeeded') {\n        const bytes = await readNonEmptyOutput(outputPath, 'video get');\n        return {\n          bytes,\n          providerNote: `vela/${wireModel} · ${ratio} · ${input.length ?? 5}s · ${DEFAULT_VELA_VIDEO_RESOLUTION} default · ${bytes.length} bytes`,\n          suggestedExt: '.mp4',\n        };\n      }\n      if (lastStatus === 'failed' || lastStatus === 'cancelled' || lastStatus === 'canceled') {\n        throw new Error(`Vela video task ended with status ${lastStatus}: ${videoTaskError(task)}`);\n      }\n      if (lastStatus !== 'queued' && lastStatus !== 'running') {\n        throw new Error(`Vela video task returned unsupported status ${lastStatus}`);\n      }\n    }\n\n    throw new Error(\n      `Vela video task timed out after ${totalTimeoutMs}ms; last status ${lastStatus}`,\n    );\n  } finally {\n    await rm(tempDir, { recursive: true, force: true });\n  }\n}\n","sourceCodeStart":491,"sourceCodeEnd":520,"githubUrl":"https://github.com/nexu-io/open-design/blob/5be4028344c2eb4c667c5a97bda8f750c5597ef7/apps/daemon/src/media/vela.ts#L491-L520","documentation":"The polled task status is not one of the six recognized values: succeeded, failed, cancelled, canceled, queued, running. After checking for succeeded, then failed/cancelled/canceled, then asserting queued/running, any other status string hits this guard.","triggerScenarios":"The Vela API introduces a new status value the daemon doesn't handle (e.g. 'paused', 'pending_review'); the status field contains unexpected casing or a typo; the response is malformed and contains an arbitrary string.","commonSituations":"Vela CLI/API version upgrade adds a new intermediate status; a localized or aliased status string leaks through; backend returns a transient diagnostic status.","solutions":["Update the Vela CLI and daemon to mutually compatible versions","Inspect the raw status string in the poll response to identify the new value","Report the unrecognized status to maintainers if running the latest version"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"try {\n  const result = await renderVelaVideo(input);\n} catch (err) {\n  if (err.message.includes('unsupported status')) {\n    logger.error('Vela returned unrecognized task status', err);\n    throw err;\n  }\n  throw err;\n}","preventionTips":["Keep the Vela CLI and daemon at mutually compatible versions","Report unrecognized status strings to maintainers promptly","Monitor Vela API changelogs for new status values"],"tags":["vela","video","status-handling","api-compat"],"backgroundTag":null,"analyzedSha":"5be4028344c2eb4c667c5a97bda8f750c5597ef7","analyzedAt":"2026-08-12T12:03:58.812Z","schemaVersion":2},"datasetVersion":"2026-08-12T18:17:37.767Z"}