abi/screenshot-to-code · warning · HTTPException
Eval set {request.set_name!r} has no images
Error message
Eval set {request.set_name!r} has no images What it means
400 raised inside _resolve_set_run in backend/routes/evals.py:132 when the requested set exists but set_info.image_count is 0. A set with no images has nothing to evaluate, so the run is rejected before a session is resolved.
Source
Thrown at backend/routes/evals.py:132
set_name: Optional[str] = None
def _resolve_set_run(
request: RunEvalsRequest,
) -> tuple[Optional[str], Optional[eval_sessions.EvalSession], Dict[str, set[str]]]:
"""Validate the requested set and resolve the session + per-model skips."""
if not request.set_name:
return None, None, {}
try:
set_info = eval_sets.get_set(request.set_name)
except eval_sets.InvalidSetNameError as e:
raise HTTPException(status_code=400, detail=str(e))
except eval_sets.EvalSetNotFoundError:
raise HTTPException(
status_code=404, detail=f"Eval set not found: {request.set_name}"
)
if set_info.image_count == 0:
raise HTTPException(
status_code=400, detail=f"Eval set {request.set_name!r} has no images"
)
try:
session = eval_sessions.resolve_session_for_run(request.set_name)
except eval_sessions.SessionSetMismatchError as e:
raise HTTPException(
status_code=400,
detail=(
f"Active session {e.active_session.name!r} is pinned to set "
f"{e.active_session.eval_set!r}. Start a new session for set "
f"{request.set_name!r} first (POST /eval-sessions)."
),
)
skip_per_model: Dict[str, set[str]] = {}
if request.diff_mode:
for model in request.models:
skip_per_model[model] = eval_sessions.completed_eval_inputs(
session.session_id, model, str(request.stack)View on GitHub (pinned to d026163f58)
Solutions
- Add images to the set using the eval-set upload endpoint, then retry.
- Verify with the set-info endpoint that image_count > 0 before starting a run.
- If the set is meant to be text-only, check whether the run path supports briefs for this operation.
Defensive patterns
Strategy: validation
Validate before calling
const info = await (await fetch(`/eval-sets/${setName}`)).json();
if (info.image_count === 0) throw new Error('Set has no images; upload inputs first'); Prevention
- Enforce a non-empty image count in set creation/upload UI before allowing runs.
- Surface image_count in the set picker so empty sets are visible.
When it happens
Trigger: POST /run_evals_stream with a well-formed, existing set_name whose inputs directory contains no images (set created but uploads never completed, or images were removed).
Common situations: Set-creation flow interrupted before image upload; images uploaded to the wrong subfolder; set created from a text brief when the run path expects images.
Related errors
- Invalid eval set name: {set_name!r}
- Not a set image: {filename!r}
- Invalid eval set name: {set_name!r}
- Invalid run id
- max_age_days must be >= 1
AI-assisted analysis of abi/screenshot-to-code@d026163f58 (2026-08-14).
Data as JSON: /api/errors/ddff835863536186.
Report an issue: GitHub.