affaan-m/ECC · error · SystemExit
pack ' ' has no stills under - run mint.py first
Error message
pack '{genre}' has no stills under {sp.stills_dir} - run mint.py first What it means
distill() loads the style pack via pack_mod.load() and calls sp.stills() to list generated still images. If the pack directory contains no stills, it raises SystemExit instructing the user to run mint.py first, because distillation requires reference stills produced by the minting step.
Solutions
- Run mint.py for the genre first to generate stills, then re-run distill.py.
- Check the stills directory printed in the message and confirm it contains image files (ls the path).
- Verify the --root argument points to the same root used when minting the pack.
- Confirm the genre name is spelled correctly and matches an existing minted pack.
- Re-run mint.py if a previous mint attempt failed before writing stills.
Example fix
// before python distill.py cinematic # SystemExit: pack 'cinematic' has no stills under ... - run mint.py first // after python mint.py cinematic # generate stills first python distill.py cinematic
Defensive patterns
Strategy: validation
Validate before calling
from pathlib import Path
stills_dir = Path(pack_root) / "stills"
if not any(stills_dir.glob("*.png")):
raise SystemExit(f"no stills in {stills_dir}; run mint.py first") Type guard
null
Try / catch
try:
distill(genre, root)
except SystemExit as exc:
if "run mint.py first" in str(exc):
subprocess.run(["python", "mint.py", genre], check=True)
distill(genre, root)
else:
raise Prevention
- Always run mint.py before distill.py in pipeline scripts
- Check the pack's stills directory is non-empty as a preflight step
- Use the same --root value for mint and distill
- Verify genre names against the list of minted packs
- Script the full pipeline (mint -> distill) so steps can't be skipped
When it happens
Trigger: Running `distill.py <genre>` where the pack at sp.stills_dir has zero image files: mint.py was never run for this genre, the wrong --root was passed so load() found an empty/other pack, stills were deleted, or the stills_dir configured in the pack is wrong.
Common situations: Fresh checkout where only distill.py is run; pointing --root at a directory that lacks the pack's outputs; mint.py failed partway earlier leaving no stills; genre name typo resolving to an empty pack.
Related errors
- no pack at and no --refs given; nothing to measure
- Agents directory not found
- --all-harnesses and --harness are mutually exclusive.
- all overlays must be readable local files
- all takes must be readable local files
AI-assisted analysis of affaan-m/ECC@8321021c54 (2026-09-16).
Data as JSON: /api/errors/4899a17480a5a6a8.
Report an issue: GitHub.
Appendix: source
Thrown at skills/taste-distillation/scripts/distill.py:417
return {
"source_still": hero.name,
"detail_score": round(score, 3),
"mesh_url": mesh_url,
"file": dest.name,
"endpoint": falapi.ENDPOINTS["image_to_3d"],
}
def distill(
genre: str,
root: str = "stylepacks",
max_stills: int = 6,
props: bool = True,
) -> pack_mod.StylePack:
sp = pack_mod.load(genre, root=root)
all_stills = sp.stills()
if not all_stills:
raise SystemExit(
f"pack '{genre}' has no stills under {sp.stills_dir} - run mint.py first"
)
chosen = pick_stills(all_stills, max_stills)
mode = "DRY RUN" if falapi.is_dry_run() else "live"
print(f"distilling '{genre}' [{mode}] from {len(chosen)}/{len(all_stills)} stills")
urls = falapi.upload_many(chosen)
print(f" uploaded : {len(urls)} still(s)")
grounding = build_grounding(sp)
if grounding:
print(f" grounding VLM with {len(grounding.splitlines())} measured facts")
spec, provenance = describe(urls, grounding=grounding)
spec["source"] = {
"pack": genre,
"generated": datetime.now(timezone.utc).strftime("%Y-%m-%dT%H:%M:%SZ"),View on GitHub (pinned to 8321021c54)