nexu-io/open-design · error · SystemExit
unknown job id(s): {', '.join(sorted(missing))}
Error message
unknown job id(s): {', '.join(sorted(missing))} What it means
Raised by select_jobs in generate_pet_images.py when one or more requested job ids (from --job-id, or the defaults: 'base' plus every entry in --states) cannot be found among the manifest's job ids. The missing ids are reported sorted.
Source
Thrown at skills/hatch-pet/scripts/generate_pet_images.py:70
return [job for job in jobs if isinstance(job, dict)]
def select_jobs(
manifest: dict[str, object],
*,
states: list[str],
skip_base: bool,
job_ids: list[str],
) -> list[dict[str, object]]:
selected_ids = set(job_ids)
if not selected_ids:
if not skip_base:
selected_ids.add("base")
selected_ids.update(states)
selected = [job for job in manifest_jobs(manifest) if job.get("id") in selected_ids]
missing = selected_ids - {str(job.get("id")) for job in selected}
if missing:
raise SystemExit(f"unknown job id(s): {', '.join(sorted(missing))}")
return selected
def _multipart_body(fields: list[tuple]) -> tuple[bytes, str]:
boundary = uuid.uuid4().hex
parts = []
for name, value in fields:
if isinstance(value, tuple):
fname, data, ct = value
parts.append(
f'--{boundary}\r\nContent-Disposition: form-data; name="{name}"; filename="{fname}"\r\nContent-Type: {ct}\r\n\r\n'.encode()
+ data + b"\r\n"
)
else:
parts.append(f'--{boundary}\r\nContent-Disposition: form-data; name="{name}"\r\n\r\n{value}\r\n'.encode())
parts.append(f"--{boundary}--\r\n".encode())
return b"".join(parts), f"multipart/form-data; boundary={boundary}"
View on GitHub (pinned to 5be4028344)
Solutions
- Inspect imagegen-jobs.json and list the existing job ids; only pass ids that appear there.
- If 'base' is missing, either create it or pass --skip-base.
- Use --states all to target exactly the states that have corresponding jobs.
Example fix
// before generate_pet_images.py --run-dir r --job-id sleep // after generate_pet_images.py --run-dir r --job-id idle
Defensive patterns
Strategy: validation
Validate before calling
known_ids = {str(j.get('id')) for j in jobs}
requested = set(args.job_id) or ({'base'} if not args.skip_base else set()) | set(states)
if missing := requested - known_ids:
raise ValueError(f'unknown job ids: {sorted(missing)}') Prevention
- List job ids from imagegen-jobs.json before passing --job-id.
- Pass --skip-base only when the manifest genuinely has no base job.
- Prefer --states all to match the jobs that actually exist.
When it happens
Trigger: selected_ids (explicit --job-id values, or 'base' + the parsed states) contains an id that does not match any job.get('id') in the manifest.
Common situations: Passing --job-id for a job that was never created; using --skip-base when 'base' was expected but the manifest lacks it; a state name that does not correspond to a job id in this manifest.
Related errors
- job manifest not found: {path}
- running-left mirror source must be decoded/running-right.png
- running-left mirror output must be decoded/running-left.png
- job {job_id} was marked as a local/synthetic row ({', '.join
- job {job_id} has invalid secondary fallback provenance
AI-assisted analysis of nexu-io/open-design@5be4028344 (2026-08-12).
Data as JSON: /api/errors/356067ea0764453e.
Report an issue: GitHub.