nexu-io/open-design · error · SystemExit

job manifest not found: {path}

Error message

job manifest not found: {path}

What it means

Raised by load_manifest in pet_job_status.py when run_dir/imagegen-jobs.json does not exist. The status tool reads that manifest to compute ready/blocked job counts, so without it there is nothing to report.

Source

Thrown at skills/hatch-pet/scripts/pet_job_status.py:14

#!/usr/bin/env python3
"""Show ready and pending $imagegen jobs for a Codex pet run."""

from __future__ import annotations

import argparse
import json
from pathlib import Path


def load_manifest(run_dir: Path) -> dict[str, object]:
    path = run_dir / "imagegen-jobs.json"
    if not path.exists():
        raise SystemExit(f"job manifest not found: {path}")
    return json.loads(path.read_text(encoding="utf-8"))


def jobs(manifest: dict[str, object]) -> list[dict[str, object]]:
    raw = manifest.get("jobs")
    if not isinstance(raw, list):
        raise SystemExit("invalid imagegen-jobs.json: jobs must be a list")
    return [job for job in raw if isinstance(job, dict)]


def completed_ids(manifest: dict[str, object]) -> set[str]:
    return {
        str(job["id"])
        for job in jobs(manifest)
        if job.get("status") == "complete" and isinstance(job.get("id"), str)
    }

View on GitHub (pinned to 5be4028344)

Solutions

  1. Confirm --run-dir points at the directory that contains imagegen-jobs.json.
  2. If no run dir exists yet, create one with prepare_pet_run.py first.
  3. Check ls <run_dir>/imagegen-jobs.json actually exists.
  4. Re-run pet_job_status.py with the correct path.

Example fix

// before
python pet_job_status.py --run-dir /tmp/pets
# SystemExit: job manifest not found: /tmp/pets/imagegen-jobs.json

// after
python pet_job_status.py --run-dir /tmp/pets/sprout-20260101T000000Z
Defensive patterns

Strategy: validation

Validate before calling

from pathlib import Path

def manifest_exists(run_dir: Path) -> bool:
    return (run_dir / "imagegen-jobs.json").exists()

Prevention

When it happens

Trigger: Running pet_job_status.py against a directory that is not a pet run dir, or against a run dir that has not yet been initialized by prepare_pet_run.py.

Common situations: Typo in --run-dir; pointing at the parent of the run dir; running status before prepare_pet_run.py; the run dir was deleted/moved.

Related errors


AI-assisted analysis of nexu-io/open-design@5be4028344 (2026-08-12). Data as JSON: /api/errors/ab1ba060c7519ab2. Report an issue: GitHub.