affaan-m/ECC · error · ValueError
asset requires verified alpha
Error message
asset requires verified alpha: {asset} What it means
When a placement is marked as requiring alpha (alpha=True), tasteforge only trusts an explicit verified has_alpha=True in the asset's probed metadata. Anything else (missing key, false, unverified) throws this error because compositing an opaque asset would silently lose transparency.
Solutions
- Verify the asset actually has an alpha channel and fix the probe metadata to report has_alpha=True
- Set alpha=False on the placement if transparency is not required
- Re-export the asset with an alpha-capable codec (ProRes 4444, PNG sequence)
- Update the probe implementation so it detects the codec's alpha support
Example fix
// before
plan = allocate_placements([{"asset": "overlay.mov", "alpha": True}], probe=my_probe) # my_probe omits has_alpha
// after
plan = allocate_placements([{"asset": "overlay_prores4444.mov", "alpha": True}], probe=probe_with_alpha_detection) Defensive patterns
Strategy: validation
Validate before calling
if placement.get("alpha") and probe(asset).get("has_alpha") is not True:
raise ValueError(f"{asset} lacks verified alpha; re-probe or set alpha=False") Type guard
def has_verified_alpha(info: dict) -> bool:
return info.get("has_alpha") is True Prevention
- Only use alpha-capable codecs (ProRes 4444, PNG sequence) for overlays
- Make your probe function assert has_alpha explicitly for every asset
- Only set alpha=True for assets verified on the target Resolve host
- Test one overlay composite before batch applying
When it happens
Trigger: allocate_placements called with a placement where alpha is true but the probe result for the asset does not set has_alpha to exactly True (prober doesn't detect alpha, or codec/container has no alpha channel).
Common situations: Using ProRes 4444 vs ProRes 422 mistakenly; a probe function that never reports has_alpha; PNG/MOV re-encoded without alpha; passing alpha=True for assets that were never verified on this Resolve host.
Understand the failure class
Background: Schema validation failed / invalid input schema: payload rejected because its shape doesn't match the expected schema — this error's family across 28 libraries.
Related errors
- apply_local needs at least one media clip
- asset contains too few frames
- candidate fps/duration/retime ambiguity
- Crop must contain four finite values
- FileNotFoundError(source)
AI-assisted analysis of affaan-m/ECC@8321021c54 (2026-09-16).
Data as JSON: /api/errors/f481be531c7c1945.
Report an issue: GitHub.
Appendix: source
Thrown at skills/taste-application/scripts/tasteforge/resolve.py:131
raw_asset = event.get("asset")
if not isinstance(raw_asset, (str, Path)) or not str(raw_asset):
raise ValueError("asset must be a local regular file")
asset = Path(raw_asset).expanduser().resolve()
if not asset.is_file():
raise ValueError(f"asset must be a local regular file: {asset}")
alpha = event.get("requires_alpha", False)
if not isinstance(alpha, bool):
raise ValueError("requires_alpha must be boolean")
key = str(asset)
if key not in metadata:
metadata[key] = probe(asset)
info = metadata[key]
if _fps(info.get("fps")) != rate:
raise ValueError(f"asset fps differs from timeline: {asset}")
if _integer(info.get("frames"), "asset frames", 1) < frames:
raise ValueError(f"asset contains too few frames: {asset}")
if alpha and info.get("has_alpha") is not True:
raise ValueError(f"asset requires verified alpha: {asset}")
checked.append(
{
"id": identifier,
"asset": key,
"record_frame": start,
"frames": frames,
"opacity": opacity,
"composite": composite,
}
)
if not checked:
raise ValueError("at least one placement is required")
ends, allocated = [], {}
for event in sorted(checked, key=lambda entry: entry["record_frame"]):
index = next(
(i for i, end in enumerate(ends) if end <= event["record_frame"]), len(ends)
)
if index == len(ends):View on GitHub (pinned to 8321021c54)