AiM Tours · Engineering & Product Reference

Listing Video Failure Catalog

Every explicit, code-defined failure currently reachable from Listing Video creation: request validation, preflight, provider calls, narration, Presenter generation, Scene creation, transitions, final assembly, persistence, orchestration, and failure notification.

Code snapshot: July 15, 2026 Scope: Tours render pipeline Public-safe: no credentials, customer data, or private URLs

Scope and completeness

This is exhaustive for explicit error codes, preflight issue codes, deliberate failure messages, and validation branches defined in the current Tours Listing Video path. It cannot enumerate arbitrary runtime text from operating-system failures, FFmpeg, Supabase, Trigger.dev, Resend, or third-party provider response bodies. Those variable failures are listed by boundary and normalized outcome.

Important: most internal failures should not be shown verbatim to customers. The public email currently says creation failed, confirms the Listing is saved, and links back to the Listing. Detailed causes belong in the Listing UI only when they produce a clear customer action; raw diagnostics belong in logs and Internal QA.

Failure landscape

The same underlying outage can surface at more than one layer. Counts below describe contracts, not mutually exclusive incidents.

21preflight blocker codes
75typed stage error codes
13OpenRouter transport/provider codes
13voice/Presenter eligibility reasons
Customer can fix Retry / wait Engineering / provider Informational terminal state

Catalog

1. Request, access, credits, and task startup
Error / responseWhy it happensRecommended surface
SIGN_IN_REQUIRED
“Sign in to access Tours.”
No authenticated Supabase user exists for the request.Sign in
TOURS_UNAVAILABLE
“Tours is not available for this account.”
The TOURS feature flag is off or the account is not on the required Pro tier.Account action
LISTING_LOOKUP_FAILEDThe scoped Listing query returned a database error.Retry
LISTING_NOT_FOUNDThe Listing id is absent, belongs to another user/Profile, or is unavailable under the active Profile scope.Open Listings
LISTING_ARCHIVEDThe request requires an open Listing, but the Listing has been archived.Use active Listing
INVALID_RENDER_OPTIONSThe options payload is not an object; contains an unsupported top-level key; has an invalid render mode; uses non-boolean reuse flags; has invalid transition settings; or supplies a non-string script/Scene model id.Client contract bug
CREATION_NOT_CONFIRMEDInitial creation was requested before Photo Permission and the Listing Overview were confirmed.Finish Overview
OVERVIEW_INCOMPLETEA later Listing Video was requested while the saved creation plan is still incomplete.Finish Overview
ACTIVE_PROFILE_MISSINGThe user has no active Profile when credits and provider ownership are resolved.Choose Profile
INSUFFICIENT_CREDITSThe AiM credit reservation reports a balance below the calculated base, per-Scene, and Presenter cost. This is separate from a connected provider account running out of its own credits.Add AiM credits
PRICING_FAILEDThe credit system cannot calculate or reserve a valid price for the requested render.Retry
RUN_CREATION_FAILEDPreflight passed, but reusable assets could not be invalidated, renderable context could not be loaded, or the database could not create/complete the render-run row.Engineering
TRIGGER_ENQUEUE_FAILED
“Could not start the render task. Try again.”
Trigger.dev did not return a run handle within three seconds, rejected the enqueue, or the enqueue call threw.Retry
SUPERSEDED_BY_NEW_RENDERA newer Listing Video was started for the same Listing. The older active run is cancelled intentionally.Not a failure
USER_CANCELLEDThe user explicitly stopped a queued or running Listing Video.Not a failure

Exact option validation variants

options must be an object; unsupported option key; invalid renderMode; non-boolean reuseExistingAssets; non-object reuse; unsupported or non-boolean reuse.*; non-object sceneTransitions; unsupported sceneTransitions.*; unsupported transition effect; non-string scriptPlanningModelId; non-string sceneClipProviderModelId.

2. Authoritative preflight blockers (21 codes)
CodeWhy it happensRecommended surface
project_not_foundThe Listing cannot be loaded for this user and Profile.Open Listings
project_archivedThe Listing status is not open.Use active Listing
invalid_creation_planThe persisted creation-plan schema is unsupported or invalid.Create new video
missing_listing_media_permissionA valid creation plan exists but Photo Permission has not been acknowledged.Confirm permission
no_included_scenesNo Scene remains included in the Listing Video.Add a Scene
missing_authoritative_source_photoAn included Scene does not have its required main Photo.Add Photo
unsupported_render_modeThe mode is neither ken_burns_ffmpeg nor provider_image_to_video.Contract/config
missing_custom_scene_movementA provider image-to-video Scene uses Custom Scene Movement but its instructions are empty.Describe movement
missing_elevenlabs_keyThe resolved narration strategy requires ElevenLabs, but the active Profile has no usable key.Connect ElevenLabs
missing_elevenlabs_voice_idElevenLabs narration is selected but no Narration Voice id is frozen into the run.Choose Voice
elevenlabs_voice_ineligibleThe selected voice exists but is processing, not ready, failed, unsupported, incomplete, or unavailable.Choose/repair Voice
elevenlabs_voice_catalog_unavailableThe key cannot be loaded, the voice lookup fails/times out, or ElevenLabs returns invalid catalog data.Reconnect/retry
missing_narration_voice_idA HeyGen combined Presenter flow resolves no default voice for the selected Presenter.Choose Presenter
missing_heygen_keyThe resolved Presenter strategy requires HeyGen, but the active Profile has no usable key.Connect HeyGen
missing_heygen_avatar_idPresenter Presentation is selected but no HeyGen avatar/look id is configured.Choose Presenter
missing_heygen_avatar_placementPresenter Presentation is selected without saved Presenter positioning.Position Presenter
heygen_presenter_ineligibleThe selected Presenter is unavailable, processing, failed, missing metadata/preview/default voice, or incompatible with the required HeyGen engine.Choose/repair Presenter
heygen_presenter_catalog_unavailableThe key cannot be loaded, the Presenter lookup fails/times out, or HeyGen returns invalid catalog data.Reconnect/retry
listing_media_unreadableSupabase cannot read one or more main Photos from listing-media storage.Re-upload Photo
provider_media_unreachableThe signed source URL exists but cannot be reached from the provider-visible origin, commonly because a local tunnel is missing or broken.Environment
generated_media_unwritableThe generated-media bucket write probe fails.Storage/ops
3. Voice and Presenter eligibility reason codes
Reason codeWhy it happensRecommended surface
voice_processingAn ElevenLabs Professional Voice Clone reports queued, fine-tuning, or delayed.Wait/choose another
voice_not_readyThe Professional Voice Clone reports draft, not started, or not verified.Finish setup
voice_training_failedEvery reported Professional Voice Clone training state is failed.Repair/replace
model_unsupportedReserved in the reason-code contract; the current resolver does not emit it.Declared only
metadata_incomplete (voice)ElevenLabs omits enough training/category data to establish eligibility, or does not identify a supported Instant Voice Clone.Choose/retry
voice_unavailableThe selected ElevenLabs voice lookup returns no matching voice.Choose another
look_unavailableThe selected HeyGen look no longer exists.Choose another
look_processingHeyGen reports pending, processing, queued, training, or draft.Wait/choose another
look_failedHeyGen returns a provider error or failed/error/rejected/deleted/disabled status.Repair/replace
metadata_incomplete (Presenter)Status is not completed, or dimensions required for placement are absent/invalid.Choose/retry
engine_unsupportedThe Presenter does not support the avatar_v engine required by Tours.Choose another
preview_unavailableNo preview image or video is available for Presenter positioning.Choose another
default_voice_unavailableThe HeyGen combined-narration strategy requires a default voice, but the Presenter has none.Choose another
4. Provider catalog and OpenRouter transport errors
CodeWhy it happensRecommended surface
ELEVENLABS_VOICES_FAILEDVoice catalog network error, timeout, or non-success HTTP response.Reconnect/retry
ELEVENLABS_VOICES_RESPONSE_INVALIDThe catalog response is not the expected JSON shape.Provider/ops
ELEVENLABS_VOICES_PAGINATION_INVALIDPagination token is missing/repeated or exceeds the 100-page safety limit per category.Provider/ops
HEYGEN_AVATARS_FAILEDPresenter catalog network error, timeout, or non-success HTTP response.Reconnect/retry
HEYGEN_AVATARS_RESPONSE_INVALIDResponse shape is invalid, a required next token is absent/repeated, or pagination exceeds 1,000 pages.Provider/ops
OPENROUTER_CONFIGURATION_ERRORThe OpenRouter API key is absent.Configuration
OPENROUTER_AUTH_ERROROpenRouter returns HTTP 401.Fix credential
OPENROUTER_CREDITS_ERROROpenRouter returns HTTP 402 for insufficient provider credits.Add provider credits
OPENROUTER_RATE_LIMITOpenRouter returns HTTP 429.Retryable
OPENROUTER_BAD_REQUESTOpenRouter returns HTTP 400 or another non-5xx status not mapped separately.Request/model
OPENROUTER_FORBIDDENOpenRouter returns HTTP 403.Permission/policy
OPENROUTER_TIMEOUTOpenRouter returns HTTP 408.Retryable
OPENROUTER_PROVIDER_ERROROpenRouter returns HTTP 502 or another 5xx provider/platform error.Retryable
OPENROUTER_NETWORK_ERRORThe request throws before any HTTP response is received.Retryable
OPENROUTER_MALFORMED_RESPONSEHTTP succeeds but JSON is invalid, chat JSON is malformed, or a video job id is absent.Provider/ops
OPENROUTER_MISSING_CONTENTChat content or the completed video output URL is missing.Provider/ops
OPENROUTER_VIDEO_JOB_FAILEDVideo status becomes failed, cancelled, or expired.Provider failure
OPENROUTER_VIDEO_JOB_TIMEOUTThe job does not complete within the configured polling attempts.Retryable
5. Script planning errors (5 codes)
CodeWhy it happensStored safe message
PROJECT_HAS_NO_INCLUDED_SCENESPlanning is called after all Scenes have been excluded/removed.Script planning failed.
SIGNED_IMAGE_URL_MISSINGA main Photo path cannot be converted to a signed provider URL.Source photo URLs could not be signed for script planning.
PROVIDER_RESPONSE_INVALIDThe planner output lacks Scene timings, narration, automatic movement/Transition selections, or valid camera-directed movement; it may also contain malformed JSON.The specific normalized planner message.
SCRIPT_PLAN_UPLOAD_FAILEDThe normalized plan cannot be written to generated-media storage.Script plan upload failed.
SCRIPT_PLAN_ASSET_CREATE_FAILEDStorage succeeds but the database asset row cannot be created.Script plan asset could not be recorded.
6. Narration and Presenter narration errors (26 codes)
CodeWhy it happensStored safe message family
MISSING_SCRIPT_TEXTThe planned narration text is empty.Voiceover generation failed.
MISSING_NARRATION_VOICE_IDThe frozen narration plan has no voice id.Voiceover generation failed.
MISSING_ELEVENLABS_API_KEYElevenLabs is selected but its Profile key is absent at execution time.ElevenLabs API key is not configured…
MISSING_ELEVENLABS_VOICE_IDThe ElevenLabs provider is called without a selected voice id.ElevenLabs voice id is not configured…
MISSING_HEYGEN_API_KEYHeyGen narration is selected but its Profile key is absent at execution time.Voiceover generation failed.
ELEVENLABS_TTS_FAILEDThe ElevenLabs TTS request throws or returns non-success.ElevenLabs voiceover generation failed.
ELEVENLABS_TTS_RESPONSE_INVALIDThe response lacks audio/alignment or contains empty audio.ElevenLabs voiceover response was invalid.
HEYGEN_TTS_FAILEDThe HeyGen speech request fails or returns a provider failure.Voiceover generation failed.
HEYGEN_TTS_RESPONSE_INVALIDThe speech response has no audio URL or otherwise violates the expected contract.Voiceover generation failed.
HEYGEN_AUDIO_DOWNLOAD_FAILEDThe generated narration URL cannot be downloaded or returns empty audio.HeyGen narration media could not be prepared.
HEYGEN_TIMESTAMPS_MISSINGThe HeyGen speech result omits word timestamps.HeyGen narration timing could not be validated.
HEYGEN_TIMESTAMPS_INVALIDTimestamps are malformed/non-monotonic or do not cover the narration script.HeyGen narration timing could not be validated.
HEYGEN_DURATION_MISMATCHTimestamp coverage does not match the downloaded audio duration.HeyGen narration timing could not be validated.
HEYGEN_PRESENTER_CREATE_FAILEDPresenter creation fails or returns no video id.HeyGen presenter narration generation failed.
HEYGEN_PRESENTER_POLL_FAILEDPresenter status becomes failed or does not complete before polling times out.HeyGen presenter narration generation failed.
HEYGEN_PRESENTER_DOWNLOAD_FAILEDThe completed Presenter video cannot be downloaded.HeyGen narration media could not be prepared.
HEYGEN_SUBTITLES_INVALIDSubtitles cannot be downloaded/parsed, are non-monotonic, mismatch audio, or do not cover the script.HeyGen narration timing could not be validated.
HEYGEN_AUDIO_EXTRACTION_FAILEDFFmpeg cannot extract narration audio from the Presenter video.HeyGen narration media could not be prepared.
VOICEOVER_AUDIO_UPLOAD_FAILEDNarration audio cannot be uploaded.Voiceover assets could not be persisted.
VOICEOVER_TRANSCRIPT_UPLOAD_FAILEDNarration timing JSON cannot be uploaded.Voiceover assets could not be persisted.
VOICEOVER_AUDIO_ASSET_CREATE_FAILEDThe audio database asset row cannot be created.Voiceover assets could not be persisted.
VOICEOVER_TRANSCRIPT_ASSET_CREATE_FAILEDThe transcript database asset row cannot be created.Voiceover assets could not be persisted.
PRESENTER_VIDEO_UPLOAD_FAILEDThe combined HeyGen Presenter video cannot be uploaded.Voiceover assets could not be persisted.
PRESENTER_VIDEO_ASSET_CREATE_FAILEDPresenter configuration is missing or its database asset row cannot be created.Voiceover assets could not be persisted.
TRANSCRIPT_ALIGNMENT_FAILEDElevenLabs alignment arrays disagree, are empty, or cannot map narration phrases to valid times.Voiceover transcript timing could not be aligned.
UNSUPPORTED_PHRASE_SEGMENTATIONPhrase mode is unsupported or wordsPerPhrase is not a positive integer.Voiceover generation failed.
ElevenLabs provider credits exhausted
Known classification gap
ElevenLabs accepts the configured key but rejects TTS because that provider account has insufficient credits or quota. The pipeline cannot reliably know this until it attempts generation; today the response is collapsed into ELEVENLABS_TTS_FAILED.Name ElevenLabs, explain that its account needs credits, and do not retry automatically.
HeyGen provider credits exhausted
Known classification gap
HeyGen accepts the configured key but rejects speech or Presenter creation because that provider account has insufficient credits or quota. The pipeline cannot reliably know this until it attempts generation; today it is collapsed into HEYGEN_TTS_FAILED, HEYGEN_PRESENTER_CREATE_FAILED, or HEYGEN_CREATE_FAILED.Name HeyGen, explain that its account needs credits, and do not retry automatically.
7. Transition timing errors (8 codes)
CodeWhy it happensStored safe message
PROJECT_HAS_NO_INCLUDED_SCENESBoundary detection is called without any included Scenes.Generic render fallback.
TRANSCRIPT_INVALIDTranscript is absent/empty, has no usable timed chunks, or a reused transcript asset is malformed/missing storage.Scene transition timing could not be validated.
PROVIDER_RESPONSE_INVALIDOpenRouter key/request/JSON fails; transitions are missing; count/order/Scene ids are wrong; or a boundary entry is malformed.Scene boundary detection returned an invalid response.
TRANSITION_TIMING_INVALIDChunk ids are missing/out of order, time ranges are non-positive/too short, or stored durations do not map to current Scenes/transcript chunks.Scene transition timing could not be validated.
TRANSITIONS_UPLOAD_FAILEDBoundary JSON cannot be uploaded.Generic render fallback.
DURATIONS_UPLOAD_FAILEDScene duration JSON cannot be uploaded.Generic render fallback.
TRANSITIONS_ASSET_CREATE_FAILEDThe boundary database asset row cannot be created.Generic render fallback.
DURATIONS_ASSET_CREATE_FAILEDThe duration database asset row cannot be created.Generic render fallback.
8. Scene creation errors (10 codes)
CodeWhy it happensStored safe message
PROJECT_HAS_NO_INCLUDED_SCENESScene creation is called with no included Scenes.Scene clip rendering failed.
SCENE_DURATION_MISSINGA Scene lacks derived duration or its Transition handle plan.Scene clip rendering failed.
SOURCE_PHOTO_DOWNLOAD_FAILEDA main Photo cannot be downloaded for local FFmpeg movement rendering.Scene clip rendering failed.
SIGNED_SOURCE_PHOTO_URL_MISSINGA main Photo cannot be signed for provider image-to-video.Scene clip rendering failed.
SCENE_CLIP_RENDER_FAILEDFFmpeg movement rendering or provider-output normalization fails.Scene clip rendering failed.
SCENE_CLIP_PROVIDER_FAILEDThe image-to-video provider/key is absent or OpenRouter rejects/fails/times out.Scene clip rendering failed.
SCENE_CLIP_PROVIDER_OUTPUT_IMPORT_FAILEDThe provider output URL cannot be fetched or stored locally.Scene clip rendering failed.
SCENE_CLIP_DURATION_INVALIDThe imported/normalized Scene video duration cannot be read or is shorter/different than required.Scene clip duration could not be validated.
SCENE_CLIP_UPLOAD_FAILEDThe completed Scene video cannot be uploaded.Scene clip upload failed.
SCENE_CLIP_ASSET_CREATE_FAILEDThe Scene video database asset row cannot be created.Scene clip asset could not be recorded.
9. Presenter overlay errors (13 codes)
CodeWhy it happensStored safe message family
MISSING_HEYGEN_API_KEYThe Presenter stage reaches execution without a HeyGen key.HeyGen API key is not configured…
MISSING_HEYGEN_AVATAR_IDThe Presenter stage is called without a HeyGen avatar id.HeyGen avatar id is not configured…
MISSING_AVATAR_SOURCEA reusable Presenter asset is missing, lacks storage metadata, or cannot be downloaded.Avatar rendering failed.
HEYGEN_CREATE_FAILEDHeyGen creation fails or returns no video id.Avatar rendering failed.
HEYGEN_POLL_FAILEDStatus polling fails, reports provider failure, or times out.Avatar rendering failed.
HEYGEN_DOWNLOAD_FAILEDThe completed HeyGen video cannot be downloaded.Avatar rendering failed.
AVATAR_ALPHA_ANALYSIS_FAILEDFFprobe/FFmpeg metadata or RGBA-frame analysis fails, no frames decode, or no non-transparent pixels are found.Avatar rendering failed.
AVATAR_LAYOUT_FAILEDPlacement cannot be resolved from an empty alpha bounding box.Avatar rendering failed.
AVATAR_VIDEO_UPLOAD_FAILEDThe processed Presenter video cannot be uploaded.Avatar render assets could not be persisted.
AVATAR_METADATA_UPLOAD_FAILEDCompositing metadata cannot be uploaded.Avatar render assets could not be persisted.
AVATAR_VIDEO_ASSET_CREATE_FAILEDThe Presenter video database asset row cannot be created.Avatar render assets could not be persisted.
AVATAR_METADATA_ASSET_CREATE_FAILEDThe Presenter metadata database asset row cannot be created.Avatar render assets could not be persisted.
FRAME_CHECK_FAILEDA sampled Presenter frame cannot be exported for visual safety analysis.Avatar rendering failed.
10. Final assembly errors (13 codes)
CodeWhy it happensStored safe message
NO_SCENE_CLIPSFinal assembly is invoked without any Scene videos.Final video rendering failed.
SCENE_CLIP_STORAGE_MISSINGA Scene asset lacks its generated-media bucket/path.Final video rendering failed.
SCENE_CLIP_DOWNLOAD_FAILEDA stored Scene video cannot be downloaded.Final video rendering failed.
VOICEOVER_STORAGE_MISSINGA narration asset lacks its generated-media bucket/path.Final video rendering failed.
VOICEOVER_DOWNLOAD_FAILEDStored narration audio cannot be downloaded.Final video rendering failed.
AVATAR_STORAGE_MISSINGA Presenter asset lacks its generated-media bucket/path.Final video rendering failed.
AVATAR_DOWNLOAD_FAILEDStored Presenter video cannot be downloaded.Final video rendering failed.
CONCAT_FAILEDTransition assembly, Scene path mapping, FFmpeg concat, or joined-duration validation fails.Scene clips could not be joined.
MUX_FAILEDFFmpeg cannot combine joined video with narration/Presenter overlay.Final video mux failed.
JOINED_SCENES_UPLOAD_FAILEDThe intermediate joined video cannot be uploaded.Joined scene video upload failed.
JOINED_SCENES_ASSET_CREATE_FAILEDThe intermediate joined-video database asset row cannot be created.Joined scene video asset could not be recorded.
FINAL_VIDEO_UPLOAD_FAILEDThe finished Listing Video cannot be uploaded.Final video upload failed.
FINAL_VIDEO_ASSET_CREATE_FAILEDThe finished Listing Video database asset row cannot be created.Final video asset could not be recorded.

Raw transition and duration invariants folded into CONCAT_FAILED

  • Scene path count differs from the Transition-handle plan count.
  • A multi-Scene Transition join receives fewer than two Scene videos.
  • A single-Scene join receives anything other than exactly one Scene video.
  • The requested Transition effect is unsupported.
  • Transition duration is zero/negative.
  • A Scene target duration is not longer than its Transition.
  • A required incoming Transition handle is missing or too short.
  • A downloaded Scene path is missing.
  • FFprobe cannot read a video duration.
  • A normalized/joined duration is shorter than or differs from the canonical expected duration.
11. Orchestration, unknown exceptions, and notification failures
FailureWhy it happensOutcome
Render run not foundThe Trigger payload references a run that cannot be reloaded under project/user scope.Attempts to mark the run failed.
Profile cannot be resolvedThe Listing/user has no usable platform Profile during worker execution.Run marked failed.
Renderable context cannot loadThe Listing/Scenes disappear or repository read fails after preflight.Run marked failed.
Script/narration/Transition provider not configuredA dependency was not injected or environment configuration is incomplete.Run marked failed.
Voiceover audio missing/unreachable for PresenterStored audio cannot load/sign or the URL is not reachable by HeyGen, often due to local tunnel configuration.Run marked failed.
Presenter result/metadata missingThe child task returns no Presenter result or reusable metadata cannot be loaded for compositing.Run marked failed.
Media child task failedAny Scene or Presenter child reports ok: false, including child OOM/timeout/platform failure.Parent records generic failure and can send email if it remains alive.
Final-video child task failedThe final child reports ok: false, including typed final errors or child platform failure.Parent records generic failure and can send email if it remains alive.
Media batch returned no resultThe batch-runner contract unexpectedly resolves undefined.Generic safe fallback.
Final video saved, run completion failedThe final file exists, but the database cannot transition the run to completed.Run marked failed; file may need ops recovery.
Unknown exceptionAny untyped database, filesystem, FFmpeg, fetch, or programming error thrown inside the main generation try.“Tour render failed before rendering could complete.”
Repository construction failureThe repository is created before the generation try; a throw here bypasses normal run failure persistence.Trigger task fails; email is not guaranteed.
Parent Trigger.dev OOM/crash/max-durationThe process is killed before application catch/finalization code executes.No application-level failure email can be guaranteed.
Child Trigger.dev OOM/crash/max-durationA child process dies, but the parent survives and receives a failed child result.Usually becomes generic media/final-child failure; email can still send.
PLATFORM_RESEND_API_KEY missingThe failure-email task cannot construct the Resend client.Email task retries, then parent logs notification failure.
Resend rejects failure emailResend returns an API error, transport fails, or sender/recipient policy rejects the message.Email task retries up to three attempts.
Failure-email task failsThe retryable email task returns ok: false.Parent logs it but preserves the original render failure.
Recipient/project missingThe email task reload guard cannot find the failed run/Listing/user email, or the run is no longer failed.Email is safely skipped.

Recommended customer disclosure policy

Failure classCustomer should seeKeep internal
Customer-fixable preflightSpecific cause + saved-work assurance + one direct action, ideally deep-linked.Internal code and ids.
Credential/provider eligibilityName ElevenLabs or HeyGen only when reconnecting, waiting, repairing, or selecting another item will help.Provider payloads and account identifiers.
Provider account credits exhausted“Your ElevenLabs/HeyGen account does not have enough credits to finish this Listing Video. Add credits with that provider, then try again.” Keep the Listing link and saved-work assurance.Raw provider response, provider account id, balance, quota, and billing metadata.
Transient provider/platform“We couldn’t create your Listing Video. Your Listing is saved. Try again.”HTTP status, model, provider response, retry metadata.
Internal media/persistence invariantGeneric retry; after repeated failure, offer a help path with a safe support reference.FFmpeg text, storage paths, asset/run ids, stack traces.
Trigger.dev parent process deathBest-effort monitoring should detect stale runs; ordinary application code cannot promise an immediate email.Machine/OOM diagnostics.