zed-industries/zed · error · FileNotFoundError

suite not found: {namespace}/{suite_id}

Error message

suite not found: {namespace}/{suite_id}

What it means

Raised as FileNotFoundError by the Modal function suite_status(namespace, suite_id) when scan_rows over /data/runs finds no run whose recorded metadata matches both the namespace and the suite_id. Suite ids are minted at launch (mint_suite_id / prepare_benchmark_suite) and stored in each run's request/state on the volume; this endpoint simply reports nothing matched.

Source

Thrown at crates/eval_cli/zed_eval/modal_app.py:611

                    if entry:
                        history.append(entry)
            result["history"] = history
        return result
    return load_json(root / "index.json") or {"baselines": []}


@app.function(
    image=controller_image,
    cpu=1,
    memory=512,
    timeout=300,
    volumes={"/data": volume},
)
def suite_status(namespace: str, suite_id: str) -> list[dict[str, Any]]:
    reload_volume()
    rows = scan_runs(namespace=namespace, suite_id=suite_id)
    if not rows:
        raise FileNotFoundError(f"suite not found: {namespace}/{suite_id}")
    rows.sort(key=lambda row: row.get("created_at") or row.get("run_id") or "")
    return rows


def write_run_inputs(run_dir: pathlib.Path, run_request: dict[str, Any]) -> None:
    write_json(run_dir / "request.json", run_request)
    write_json(run_dir / "run-metadata.json", harness_command.run_metadata(run_request))
    task_names = run_request.get("task_names") or []
    (run_dir / "selected-tasks.txt").write_text(
        "\n".join(task_names) + ("\n" if task_names else "")
    )


@app.function(
    image=controller_image,
    cpu=1,
    memory=512,
    timeout=300,

View on GitHub (pinned to bc538def45)

Solutions

  1. List what actually exists: zed-eval list (list_runs) with --namespace to see real experiment names and run/suite ids.
  2. Re-run suite status with the correct namespace: the identifier is namespace/suite_id.
  3. If the runs were pruned, relaunch; if they predate suite_id bookkeeping, query by run id instead.

Example fix

# before
zed-eval suite-status swe-atlas-20260101-ab12   # wrong namespace
# -> FileNotFoundError: suite not found: me/swe-atlas-20260101-ab12

# after
zed-eval list --namespace jane          # find the real namespace
zed-eval suite-status swe-atlas-20260101-ab12 --namespace jane
Defensive patterns

Strategy: try-catch

Validate before calling

rows = list_function.remote(namespace=namespace)
known_suites = {row.get("suite_id") for row in rows if row.get("suite_id")}
if suite_id not in known_suites:
    # discover what exists instead of calling suite_status and failing
    print("known suites:", sorted(known_suites))

Try / catch

try:
    rows = suite_status_function.remote(namespace, suite_id)
except FileNotFoundError:
    # fall back to a namespace-wide listing to discover the right id
    rows = list_function.remote(namespace=namespace, limit=100)
    rows = [r for r in rows if r.get("suite_id") == suite_id]

Prevention

When it happens

Trigger: Querying a suite id with a typo or wrong case; passing the wrong --namespace (suite ids are only unique within a namespace); the suite's runs were pruned by cleanup; runs launched by an older CLI that did not record suite_id in run metadata; querying before any run of the suite finished creating its record.

Common situations: Monitoring a teammate's suite without setting --namespace; copying a suite id from a truncated terminal line; retrying a status command days later after volume cleanup deleted old artifacts.

Related errors


AI-assisted analysis of zed-industries/zed@bc538def45 (2026-08-16). Data as JSON: /api/errors/7d50faab31c68715. Report an issue: GitHub.