{"record":{"id":"1c5765877033a499","repo":"abi/screenshot-to-code","slug":"eval-set-not-found-set-name-1c5765","errorCode":null,"errorMessage":"Eval set not found: {set_name}","messagePattern":"Eval set not found: (.+?)","errorType":"http","errorClass":"HTTPException","httpStatus":404,"severity":"error","filePath":"backend/routes/eval_sets.py","lineNumber":155,"sourceCode":"    try:\n        info = eval_sets.get_set(set_name)\n        if info.kind == \"text\":\n            briefs = eval_sets.list_set_briefs(set_name)\n            return EvalSetDetailModel(\n                **_set_info_to_model(info).model_dump(),\n                images=[],\n                briefs=[\n                    EvalSetBriefModel(\n                        id=b.id, title=b.title, brief=b.brief, tests=b.tests\n                    )\n                    for b in briefs\n                ],\n            )\n        images = eval_sets.list_set_images(set_name)\n    except eval_sets.InvalidSetNameError as e:\n        raise HTTPException(status_code=400, detail=str(e))\n    except eval_sets.EvalSetNotFoundError:\n        raise HTTPException(status_code=404, detail=f\"Eval set not found: {set_name}\")\n    return EvalSetDetailModel(\n        **_set_info_to_model(info).model_dump(),\n        images=[\n            EvalSetImageModel(\n                filename=image.filename,\n                sha256=image.sha256,\n                size_bytes=image.size_bytes,\n                tags=image.tags,\n            )\n            for image in images\n        ],\n    )\n\n\n@router.get(\"/eval-sets/{set_name}/images/{filename}\")\nasync def get_eval_set_image(set_name: str, filename: str) -> FileResponse:\n    try:\n        path = eval_sets.resolve_set_image_path(set_name, filename)","sourceCodeStart":137,"sourceCodeEnd":173,"githubUrl":"https://github.com/abi/screenshot-to-code/blob/d026163f586dfa8c5c10d28c36edd59a9d3b0e88/backend/routes/eval_sets.py#L137-L173","documentation":"Raised by GET /eval-sets/{set_name} (404) when the set name is valid but no such set exists — the underlying evals module raises EvalSetNotFoundError because the set directory (or its briefs.json / inputs) is absent under the evals sets directory. Distinguish it from the 400 invalid-name error: 400 means bad format, 404 means well-formed but missing.","triggerScenarios":"GET /eval-sets/{set_name} for a set that was never created, was deleted, or whose directory was renamed/moved outside the tool; also when get_set_kind finds neither inputs/ nor briefs.json.","commonSituations":"Typo in a valid-format name ('jul-21-evals' vs 'jun-21-evals'); evals data dir not synced to this machine; set created in a different environment.","solutions":["GET /eval-sets to list existing names and use one of them.","Verify the set directory exists under the configured EVALS_DIR/sets.","If the set should exist, check the evals data dir configuration and re-create the set."],"exampleFix":"# before\nGET /eval-sets/jun-21-evalss  # 404 (typo)\n\n# after\nnames = [s[\"name\"] for s in requests.get(url + \"/eval-sets\").json()]\nGET /eval-sets/{names[0]}","handlingStrategy":"validation","validationCode":"names = [s[\"name\"] for s in requests.get(url + \"/eval-sets\").json()]\nif set_name not in names:\n    raise LookupError(f\"eval set {set_name!r} not in {names}\")","typeGuard":"def eval_set_exists(name: str, listing: list[dict]) -> bool:\n    return any(s.get(\"name\") == name for s in listing)","tryCatchPattern":"resp = requests.get(url + f\"/eval-sets/{set_name}\")\nif resp.status_code == 404:\n    listing = requests.get(url + \"/eval-sets\").json()\n    raise LookupError(f\"set gone; available: {[s['name'] for s in listing]}\")\nresp.raise_for_status()","preventionTips":["List sets before referencing one by name.","Re-list after deletes/renames.","Watch for 400 vs 404: 400 = bad name format, 404 = name fine but missing."],"tags":["fastapi","http-404","eval-sets","lifecycle"],"backgroundTag":null,"analyzedSha":"d026163f586dfa8c5c10d28c36edd59a9d3b0e88","analyzedAt":"2026-08-14T22:02:06.951Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}