zed-industries/zed · error · ValueError
no fetched job at . Run `zed-eval fetch --experiment-name `…
Error message
no fetched job at {candidate}. Run `zed-eval fetch {run_id} --experiment-name <benchmark>` first, or pass --job-dir. What it means
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.
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
Example fix
# before zed-eval report <run_id> # ValueError: no fetched job at ~/.cache/harbor/jobs/<run_id> # after zed-eval fetch <run_id> --experiment-name my-benchmark ls ~/.cache/harbor/jobs/<run_id> # confirm extraction zed-eval report <run_id>
Defensive patterns
Strategy: validation
Validate before calling
from pathlib import Path
jobs_dir = Path(getattr(args, "jobs_dir", None) or Path.home() / ".cache/harbor/jobs")
job_dir = jobs_dir / run_id
if not job_dir.is_dir():
subprocess.run(["zed-eval", "fetch", run_id, "--experiment-name", experiment_name], check=True)
assert job_dir.is_dir(), f"fetch did not produce {job_dir}" Try / catch
try:
job_dir = locate_job_dir(args)
except ValueError as err:
if "no fetched job" in str(err):
subprocess.run(["zed-eval", "fetch", run_id, "--experiment-name", experiment], check=True)
job_dir = locate_job_dir(args)
else:
raise Prevention
- 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
When it happens
Trigger: 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.
Common situations: 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.
Related errors
- provide a run_id or --job-dir
- failed to fetch revision
- Failed to install or start judge proxy
- missing Content-Type header
- no run id given and the local run index is empty. Launch a…
AI-assisted analysis of zed-industries/zed@f4178619ac (2026-08-20).
Data as JSON: /api/errors/37e20e83361f5825.
Report an issue: GitHub.
Appendix: source
Thrown at crates/eval_cli/zed_eval/report.py:437
"""Resolve the fetched Harbor/Pier job directory for a `report` invocation,
fetching it first when asked."""
job_dir = getattr(args, "job_dir", None)
if job_dir:
return Path(job_dir)
run_id = getattr(args, "run_id", None)
if not run_id:
raise ValueError("provide a run_id or --job-dir")
jobs_dir = Path(getattr(args, "jobs_dir", Path.home() / ".cache/harbor/jobs"))
candidate = jobs_dir / run_id
if getattr(args, "fetch", False) or not candidate.exists():
# Reuse the existing fetch command to download + extract the archive.
from .volume import command_fetch
command_fetch(args)
if not candidate.exists():
raise ValueError(
f"no fetched job at {candidate}. Run `zed-eval fetch {run_id} "
f"--experiment-name <benchmark>` first, or pass --job-dir."
)
return candidate
def _timeout_is_failure(args: Any) -> bool:
"""Agent timeouts count as failures on test-scored benchmarks. Derived from
the benchmark's scoring (via --experiment-name), with an explicit override."""
override = getattr(args, "timeouts_as_failures", None)
if override is not None:
return bool(override)
from . import benchmarks
experiment = getattr(args, "experiment_name", None)
benchmark = benchmarks.BENCHMARKS.get(experiment) if experiment else None
return bool(benchmark and benchmark.scoring == benchmarks.SCORING_TESTS)
View on GitHub (pinned to f4178619ac)