nexu-io/open-design · error · SystemExit

job manifest not found: {path}

Error message

job manifest not found: {path}

What it means

Thrown by load_manifest() in derive_running_left_from_running_right.py when the file <run-dir>/imagegen-jobs.json does not exist. The script needs the job manifest to find the running-right source and the running-left mirror policy, so a missing manifest is fatal before any work begins.

Source

Thrown at skills/hatch-pet/scripts/derive_running_left_from_running_right.py:18

#!/usr/bin/env python3
"""Conditionally derive running-left by mirroring the approved running-right strip."""

from __future__ import annotations

import argparse
import hashlib
import json
from datetime import datetime, timezone
from pathlib import Path

from PIL import Image, ImageOps


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 job_list(manifest: dict[str, object]) -> list[dict[str, object]]:
    jobs = manifest.get("jobs")
    if not isinstance(jobs, list):
        raise SystemExit("invalid imagegen-jobs.json: jobs must be a list")
    return [job for job in jobs if isinstance(job, dict)]


def find_job(manifest: dict[str, object], job_id: str) -> dict[str, object]:
    for job in job_list(manifest):
        if job.get("id") == job_id:
            return job
    raise SystemExit(f"unknown job id: {job_id}")


def file_sha256(path: Path) -> str:

View on GitHub (pinned to 5be4028344)

Solutions

  1. Confirm the run directory contains imagegen-jobs.json (ls <run-dir>/imagegen-jobs.json).
  2. Re-run the imagegen job pipeline for this pet so the manifest is (re)created.
  3. Use an absolute path for --run-dir to avoid cwd resolution ambiguity.

Example fix

# before
python derive_running_left_from_running_right.py --run-dir ./pets  # no manifest here
# after
python derive_running_left_from_running_right.py --run-dir /abs/pets/run-001
Defensive patterns

Strategy: validation

Validate before calling

from pathlib import Path
def assert_manifest_exists(run_dir):
    p = Path(run_dir) / "imagegen-jobs.json"
    if not p.exists():
        raise SystemExit(f"manifest missing: {p}")

Prevention

When it happens

Trigger: Run derive_running_left_from_running_right.py --run-dir <dir> where <dir>/imagegen-jobs.json is absent (wrong directory, manifest not yet generated, typo in path).

Common situations: Pointing --run-dir at the parent of the actual run folder; running before the imagegen pipeline produced the manifest; the manifest was moved or deleted; relative path resolved against the wrong cwd.

Related errors


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