affaan-m/ECC · error · SystemExit
no media and no stills in the pack - nothing to lay down
Error message
no media and no stills in the pack - nothing to lay down
What it means
resolve_ingest.py's build_clips raises SystemExit when the pack contains neither media files nor stills, so there is nothing from which to lay clips on the timeline. Cadence alone cannot produce clips - at least one media item or still is required.
Solutions
- Run mint.py first to populate the pack with stills/media
- Verify the stylepack's stills and media directories exist and are non-empty
- Ensure resolve_ingest uses the same --genre/--root as the mint run
- If media was moved, restore it into the pack before ingest
Example fix
// before python resolve_ingest.py noir --root stylepacks # empty pack // after python mint.py noir --refs ref.mp4 python resolve_ingest.py noir --root stylepacks
Defensive patterns
Strategy: validation
Validate before calling
from pathlib import Path
sp = Path(root) / genre
has_content = any((sp / 'stills').glob('*')) or any((sp / 'media').glob('*'))
if not has_content:
raise SystemExit("pack empty - run mint.py before resolve_ingest") Try / catch
try:
build_clips(...)
except SystemExit as e:
if 'nothing to lay down' in str(e):
run_mint_then_retry(genre, refs) Prevention
- Run mint.py before resolve_ingest in the same pipeline
- Check stills/media directories are non-empty after mint
- Keep pack directories intact between stages
When it happens
Trigger: Running resolve_ingest against a stylepack whose media/stills directories are empty or absent - e.g. mint never ran, mint produced no stills, or files were moved/deleted after minting.
Common situations: Pointing at the wrong --root or genre so the pack directories don't exist; a mint run that failed to export stills; manually cleaning the pack directory and re-running ingest only.
Understand the failure class
Background: EmptyResultError / "no results found": when an API or scraper succeeds but returns zero rows — this error's family across 9 libraries.
Related errors
- pack ' ' has no stills - run mint.py first
- analyze() needs at least one frame
- at least one explicit seed is required
- At least one guided harness must be selected
- at least one non-empty
AI-assisted analysis of affaan-m/ECC@8321021c54 (2026-09-16).
Data as JSON: /api/errors/28d855b2dd7584d0.
Report an issue: GitHub.
Appendix: source
Thrown at skills/taste-application/scripts/resolve_ingest.py:218
else:
print(f" !! no such media path, skipping: {e}", file=sys.stderr)
if not out:
out = sp.stills()
if out:
print(f" no --media given; using {len(out)} pack stills as an animatic")
return out
def build_clips(media: list[Path], cad: cad_mod.Cadence) -> list[dict]:
"""Marry media files to the reference's shot-length distribution.
The cadence is the payload here. Whichever list is longer sets the clip
count: extra media gets durations sampled from the reference distribution
(``Cadence.plan_shots``), extra shots cycle back through the media. Either
way the *rhythm* of the result is the reference's, not 5-seconds-a-clip.
"""
if not media:
raise SystemExit("no media and no stills in the pack - nothing to lay down")
durations = [
float(s.get("duration", 0.0)) for s in cad.shots if float(s.get("duration", 0.0)) > 0.04
]
if not durations:
durations = [max(cad.mean_shot, 1.0)]
n = max(len(media), len(durations))
if n > len(durations):
# Extend by sampling the reference's own distribution rather than
# repeating the tail, so the added shots inherit its variance.
shortfall = (n - len(durations)) * max(cad.mean_shot, 0.5)
durations = durations + list(cad.plan_shots(shortfall))
if len(durations) < n: # plan_shots is stochastic; top up by cycling
base = list(durations)
durations += [base[i % len(base)] for i in range(n - len(base))]
durations = durations[:n]
View on GitHub (pinned to 8321021c54)