nexu-io/open-design · error · SystemExit
job {args.job_id} is not ready; missing dependency result(s)
Error message
job {args.job_id} is not ready; missing dependency result(s): {', '.join(missing_deps)} What it means
Raised in record_imagegen_result.py main() when a job's depends_on list references job ids that are not yet in completed_job_ids(manifest) (status == 'complete'). The recorder enforces DAG order so a row is never recorded before the jobs it derives from (e.g. base).
Source
Thrown at skills/hatch-pet/scripts/record_imagegen_result.py:191
if not source.is_file():
raise SystemExit(f"source image not found: {source}")
source_provenance = validate_source_path(
source=source,
run_dir=run_dir,
allow_synthetic_test_source=args.allow_synthetic_test_source,
)
manifest_path = run_dir / "imagegen-jobs.json"
manifest = load_jobs(manifest_path)
job = find_job(manifest, args.job_id)
missing_deps = [
dep
for dep in job.get("depends_on", [])
if isinstance(dep, str) and dep not in completed_job_ids(manifest)
]
if missing_deps:
raise SystemExit(
f"job {args.job_id} is not ready; missing dependency result(s): {', '.join(missing_deps)}"
)
validate_required_grounding(job, run_dir)
output_raw = job.get("output_path")
if not isinstance(output_raw, str):
raise SystemExit(f"job {args.job_id} has no output_path")
output = run_dir / output_raw
if output.exists() and not args.force:
raise SystemExit(f"{output} already exists; pass --force to replace it")
output.parent.mkdir(parents=True, exist_ok=True)
shutil.copy2(source, output)
metadata = image_metadata(output)
job["status"] = "complete"
job["source_path"] = str(source)
job["source_provenance"] = source_provenanceView on GitHub (pinned to 5be4028344)
Solutions
- Record each dependency first (check order with jq '.jobs[] | {id, depends_on, status}').
- Re-record any dependency whose status was reset to pending by a repair.
- If a depends_on id is wrong/typo'd, fix it in imagegen-jobs.json.
- If the dependency is genuinely optional, remove it from depends_on.
Example fix
# before: recording 'idle' (depends_on base) before base is complete # after record_imagegen_result.py --job-id base --source ig_base.png record_imagegen_result.py --job-id idle --source ig_001.png
Defensive patterns
Strategy: validation
Validate before calling
done = completed_job_ids(manifest)
missing = [d for d in job.get("depends_on", []) if isinstance(d, str) and d not in done]
if missing:
raise SystemExit(f"record these first: {missing}") Prevention
- Record jobs in topological order (base first).
- After a repair resets a dependency to pending, re-record it before dependents.
- Keep depends_on minimal and accurate.
When it happens
Trigger: Recording a row job that depends_on 'base' before the base job is recorded; a dependency failed QA and was reopened; depends_on lists a job id that was never defined.
Common situations: Skipping the base job and jumping to rows; re-recording after a repair reset a dependency to 'pending'.
Related errors
- review does not contain row-level results
- invalid imagegen-jobs.json: jobs must be a list
- unknown row job id: {state}
- invalid imagegen-jobs.json: jobs must be a list
- unknown job id: {job_id}
AI-assisted analysis of nexu-io/open-design@5be4028344 (2026-08-12).
Data as JSON: /api/errors/56f43c5f7173e3c0.
Report an issue: GitHub.