calesthio/OpenMontage · error · AtlasError
Prediction {prediction_id} reported '{last_status}' but retu
Error message
Prediction {prediction_id} reported '{last_status}' but returned no outputs. What it means
Raised by poll when the prediction reaches a terminal-success status (e.g. succeeded) but the outputs list in the response is empty or missing. The job claims completion yet produced nothing downloadable, which the client treats as a hard failure rather than returning an empty result that downstream code would mis-handle.
Source
Thrown at tools/atlas_client.py:169
consecutive_transport_errors += 1
if consecutive_transport_errors >= 5:
raise AtlasError(
f"Polling prediction {prediction_id} failed after "
f"{consecutive_transport_errors} consecutive transport errors: {exc}"
) from exc
time.sleep(interval)
elapsed += interval
continue
_raise_for_status(response, f"Atlas Cloud poll for {prediction_id}")
consecutive_transport_errors = 0
data = _payload_of(response)
last_status = str(data.get("status", "unknown")).lower()
if last_status in TERMINAL_SUCCESS:
outputs = data.get("outputs") or []
if not outputs:
raise AtlasError(
f"Prediction {prediction_id} reported '{last_status}' but returned no outputs."
)
return data
if last_status in TERMINAL_FAILURE:
error = data.get("error") or "no error detail provided"
raise AtlasError(f"Atlas Cloud generation failed ({last_status}): {error}")
time.sleep(interval)
elapsed += interval
raise AtlasError(
f"Prediction {prediction_id} did not finish within {timeout:.0f}s "
f"(last status: {last_status}). The job may still complete — "
f"check {PREDICTION_ENDPOINT}/{prediction_id}"
)
def upload_media(file_path: str | Path, api_key: str, timeout: int = 120) -> str:View on GitHub (pinned to 95e1c3d0ab)
Solutions
- Retry the generation — if it was a transient storage/render glitch the rerun succeeds
- Inspect the full prediction JSON via the documented PREDICTION_ENDPOINT/<id> to see logs/alternate output fields
- Loosen prompt/parameters if content filtering is suspected (this is speculative — check the job's error/logs fields)
- If the field was renamed by an API update, update the client's outputs key
Defensive patterns
Strategy: retry
Try / catch
try:
data = atlas_client.poll(pid, api_key)
except AtlasError as e:
if "returned no outputs" in str(e):
data = atlas_client.poll(*resubmit(endpoint, payload, api_key), api_key) # one regeneration
else:
raise Prevention
- Treat 'succeeded but empty' as a regeneration event, not a programming bug
- Inspect the full prediction record URL before retrying to check for filter/log clues
- Keep prompts and parameters within documented model constraints
When it happens
Trigger: A video/image model finishing with zero output files (server-side rendering bug, content policy silently dropping output, output upload to storage failing after render); envelope drift where outputs moved to another field name (e.g. output singular).
Common situations: Safety filters consuming the generation without setting a failure status; transient storage-upload failures on Atlas's side; API version changes renaming the outputs field; zero-second or degenerate generation parameters producing no frames.
Related errors
- Atlas Cloud returned an unexpected payload: {str(body)[:500]
- Atlas Cloud returned an unexpected 'data' field: {str(data)[
- Atlas Cloud did not return a prediction id: {str(data)[:500]
- Polling prediction {prediction_id} failed after {consecutive
- Atlas Cloud generation failed ({last_status}): {error}
AI-assisted analysis of calesthio/OpenMontage@95e1c3d0ab (2026-08-15).
Data as JSON: /api/errors/9a29ff48fd286a72.
Report an issue: GitHub.