affaan-m/ECC · error · SystemExit

pack ' ' has no stills - run mint.py first

Error message

pack '{genre}' has no stills - run mint.py first

What it means

mint3d.py, in the stills-based (non-plate) mode, calls sp.stills() and aborts with SystemExit when the stylepack contains no still images. Image-to-3D generation needs at least one reference view from the previously minted pack.

Solutions

  1. Run mint.py for the genre first: python mint.py --genre <genre> --refs <media>
  2. Ensure mint3d uses the same --root as the mint run (default 'stylepacks')
  3. Verify stylepacks/<genre>/ contains still images in the stills directory
  4. If a previous mint failed, fix the references and re-mint before mint3d

Example fix

// before
python mint3d.py noir --prompt "rusty lamp"   # pack has no stills
// after
python mint.py noir --refs ref.mp4
python mint3d.py noir --prompt "rusty lamp"
Defensive patterns

Strategy: validation

Validate before calling

from pathlib import Path
stills_dir = Path(root) / genre
has_stills = any(stills_dir.rglob("*.png")) or any(stills_dir.rglob("*.jpg"))
if not has_stills:
    raise SystemExit("run mint.py first: no stills in pack")

Try / catch

try:
    mint3d(...)
except SystemExit as e:
    if 'has no stills' in str(e):
        run_mint_first(genre, refs)

Prevention

When it happens

Trigger: Running mint3d on a genre whose stylepack directory has no stills - typically because mint.py was never run for that genre/root, was run with different --root, or its references were unreadable so no stills were exported.

Common situations: Forgetting the mint.py step in the chain, pointing mint3d at a different --root than mint used, pack directory wiped between steps, or mint run that hit the 'no readable references' error so no stills were produced.

Understand the failure class

Background: 'Could not be found', 'does not exist', 'not found in database': the resource-not-found family when an ID, slug, key, or URI lookup comes back empty — this error's family across 20 libraries.

Related errors


AI-assisted analysis of affaan-m/ECC@8321021c54 (2026-09-16). Data as JSON: /api/errors/9ae66fe4f1c761de. Report an issue: GitHub.

Appendix: source

Thrown at skills/taste-application/scripts/mint3d.py:157

        world = ", ".join(str(v) for v in (spec.get("mood_adjectives") or [])[:3])
        plate_prompt = f"{prompt}. {PLATE_RULES}"
        if world:
            plate_prompt += f" The object belongs to a world that reads as: {world}."
        print(f"  plate          : generating clean single-object reference ...")
        plate_urls = falapi.text_to_image(plate_prompt)
        record["plate_prompt"] = plate_prompt
        record["plate_url"] = plate_urls[0]
        if not falapi.is_dry_run():
            plate_path = props_dir / f"{asset}_plate.png"
            falapi.download(plate_urls[0], plate_path)
            record["plate"] = str(plate_path)
            print(f"      plate -> {plate_path}")
        print(f"  image-to-3d    : from generated plate")
        mesh_url = falapi.image_to_3d(plate_urls[0], pbr=pbr, face_count=face_count)
    else:
        stills = sp.stills()
        if not stills:
            raise SystemExit(f"pack '{genre}' has no stills - run mint.py first")
        n = max(1, min(int(from_stills or 1), 8, len(stills)))
        chosen = stills[:n]
        print(f"  image-to-3d    : {n} view(s) - {', '.join(p.name for p in chosen)}")
        urls = [falapi.upload(p) for p in chosen]
        mesh_url = falapi.image_to_3d(urls, pbr=pbr, face_count=face_count)
        record["stills"] = [p.name for p in chosen]

    record["mesh_url"] = mesh_url
    # The generated PBR original remains canonical, even if remeshing loses
    # materials. Persist it before requesting any optional derivative.
    mesh_path = props_dir / f"{asset}.glb"
    falapi.download(mesh_url, mesh_path)
    record["mesh"] = str(mesh_path)
    print(f"  mesh           : {mesh_path}")

    if retopo:
        print("  retopology     : quad remesh ...")
        try:

View on GitHub (pinned to 8321021c54)