{"record":{"id":"37e20e83361f5825","repo":"zed-industries/zed","slug":"no-fetched-job-at-candidate-run-zed-eval-fetch","errorCode":null,"errorMessage":"no fetched job at {candidate}. Run `zed-eval fetch {run_id} --experiment-name <benchmark>` first, or pass --job-dir.","messagePattern":"no fetched job at (.+?)\\. Run `zed-eval fetch (.+?) --experiment-name <benchmark>` first, or pass --job-dir\\.","errorType":"exception","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"crates/eval_cli/zed_eval/report.py","lineNumber":437,"sourceCode":"    \"\"\"Resolve the fetched Harbor/Pier job directory for a `report` invocation,\n    fetching it first when asked.\"\"\"\n    job_dir = getattr(args, \"job_dir\", None)\n    if job_dir:\n        return Path(job_dir)\n\n    run_id = getattr(args, \"run_id\", None)\n    if not run_id:\n        raise ValueError(\"provide a run_id or --job-dir\")\n    jobs_dir = Path(getattr(args, \"jobs_dir\", Path.home() / \".cache/harbor/jobs\"))\n    candidate = jobs_dir / run_id\n\n    if getattr(args, \"fetch\", False) or not candidate.exists():\n        # Reuse the existing fetch command to download + extract the archive.\n        from .volume import command_fetch\n\n        command_fetch(args)\n    if not candidate.exists():\n        raise ValueError(\n            f\"no fetched job at {candidate}. Run `zed-eval fetch {run_id} \"\n            f\"--experiment-name <benchmark>` first, or pass --job-dir.\"\n        )\n    return candidate\n\n\ndef _timeout_is_failure(args: Any) -> bool:\n    \"\"\"Agent timeouts count as failures on test-scored benchmarks. Derived from\n    the benchmark's scoring (via --experiment-name), with an explicit override.\"\"\"\n    override = getattr(args, \"timeouts_as_failures\", None)\n    if override is not None:\n        return bool(override)\n    from . import benchmarks\n\n    experiment = getattr(args, \"experiment_name\", None)\n    benchmark = benchmarks.BENCHMARKS.get(experiment) if experiment else None\n    return bool(benchmark and benchmark.scoring == benchmarks.SCORING_TESTS)\n","sourceCodeStart":419,"sourceCodeEnd":455,"githubUrl":"https://github.com/zed-industries/zed/blob/f4178619acd0d47ea1f76a2025c42962c6d6638c/crates/eval_cli/zed_eval/report.py#L419-L455","documentation":"After resolving <jobs_dir>/<run_id> and running the fetch command when the directory is missing, locate_job_dir re-checks that the candidate directory exists. If it still does not, this ValueError is raised: the fetch either failed quietly, extracted somewhere else, or the run id / experiment name is wrong for what you asked to download.","triggerScenarios":"Passing a --experiment-name that does not match the launch, so fetch downloads nothing or the wrong archive; a fetch that fails on auth or network without propagating; --jobs-dir pointing at a non-default cache location that fetch did not write to; a run id typo.","commonSituations":"Switching to a machine with a fresh ~/.cache/harbor/jobs; a stale run index referencing a pruned remote artifact; benchmark renamed between launch and report; custom jobs-dir configured in one place but not the other.","solutions":["Run the suggested command with the exact benchmark name: zed-eval fetch <run_id> --experiment-name <benchmark>","Check the fetch actually produced files: ls ~/.cache/harbor/jobs/<run_id>","Verify --jobs-dir matches the directory fetch extracts into (default ~/.cache/harbor/jobs)","If the remote artifact is gone, re-run the evaluation or pass --job-dir to an existing local copy"],"exampleFix":"# before\nzed-eval report <run_id>   # ValueError: no fetched job at ~/.cache/harbor/jobs/<run_id>\n\n# after\nzed-eval fetch <run_id> --experiment-name my-benchmark\nls ~/.cache/harbor/jobs/<run_id>   # confirm extraction\nzed-eval report <run_id>","handlingStrategy":"validation","validationCode":"from pathlib import Path\n\njobs_dir = Path(getattr(args, \"jobs_dir\", None) or Path.home() / \".cache/harbor/jobs\")\njob_dir = jobs_dir / run_id\nif not job_dir.is_dir():\n    subprocess.run([\"zed-eval\", \"fetch\", run_id, \"--experiment-name\", experiment_name], check=True)\nassert job_dir.is_dir(), f\"fetch did not produce {job_dir}\"","typeGuard":null,"tryCatchPattern":"try:\n    job_dir = locate_job_dir(args)\nexcept ValueError as err:\n    if \"no fetched job\" in str(err):\n        subprocess.run([\"zed-eval\", \"fetch\", run_id, \"--experiment-name\", experiment], check=True)\n        job_dir = locate_job_dir(args)\n    else:\n        raise","preventionTips":["Always fetch with the same --experiment-name used at launch","Pin --jobs-dir explicitly in scripts instead of relying on the default cache","Verify the extracted directory exists before reporting"],"tags":["fetch","job-dir","harbor","zed-eval","report"],"backgroundTag":"fetched-artifact-missing","analyzedSha":"f4178619acd0d47ea1f76a2025c42962c6d6638c","analyzedAt":"2026-08-20T19:29:52.058Z","contentChangedAt":"2026-08-20T19:29:52.058Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}