{"record":{"id":"dfa4d697653b6e88","repo":"affaan-m/ECC","slug":"blender-did-not-complete-every-requested-render-frame","errorCode":null,"errorMessage":"Blender did not complete every requested render frame","messagePattern":"Blender did not complete every requested render frame","errorType":"exception","errorClass":"RuntimeError","httpStatus":null,"severity":"error","filePath":"skills/taste-application/scripts/blender_prop.py","lineNumber":143,"sourceCode":"               radius / math.sin(min(horizontal_half, vertical_half)) * 1.05)\n\n\ndef linearize_action(action) -> None:\n    \"\"\"Blender 4 legacy actions and Blender 5 slotted action channel bags.\"\"\"\n    if hasattr(action, \"fcurves\"):\n        curves = action.fcurves\n    else:\n        curves = [curve for layer in action.layers for strip in layer.strips\n                  for bag in getattr(strip, \"channelbags\", ()) for curve in bag.fcurves]\n    for curve in curves:\n        for point in curve.keyframe_points:\n            point.interpolation = \"LINEAR\"\n\n\ndef verify_render(status, render_dir: Path, frames: int) -> None:\n    expected = [render_dir / f\"turn_{frame:04d}.png\" for frame in range(1, frames + 1)]\n    if \"FINISHED\" not in status or not all(path.is_file() and path.stat().st_size > 0 for path in expected):\n        raise RuntimeError(\"Blender did not complete every requested render frame\")\n\n\ndef _sha256(path: Path) -> str:\n    with path.open(\"rb\") as stream:\n        return hashlib.file_digest(stream, \"sha256\").hexdigest()\n\n\ndef build(mesh: Path, pack: Path, out: Path | None, frames: int, size: int,\n          render_dir: Path | None, *, width: int | None = None,\n          height: int | None = None, fps: float = 24,\n          receipt: Path | None = None) -> None:\n    width = size if width is None else width\n    height = size if height is None else height\n    validate_settings(frames, width, height, fps)\n    if not mesh.is_file():\n        raise ValueError(f\"mesh is not a regular file: {mesh}\")\n    for path in (out, receipt, render_dir):\n        if path is not None:","sourceCodeStart":125,"sourceCodeEnd":161,"githubUrl":"https://github.com/affaan-m/ECC/blob/8321021c54d670126ce3b2969d5deb880b4b0c2a/skills/taste-application/scripts/blender_prop.py#L125-L161","documentation":"Render verification in verify_render: Blender did not report FINISHED or one or more expected per-frame PNGs (turn_0001.png..turn_NNNN.png) is missing or empty, so the render is incomplete and unusable.","triggerScenarios":"Thrown at skills/taste-application/scripts/blender_prop.py:143 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Check Blender's console/log output for render errors before the failure","Freeze no longer needed — reduce frames or resolution and re-render to a new output","Verify disk space; zero-byte frames often mean a full disk"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"8321021c54d670126ce3b2969d5deb880b4b0c2a","analyzedAt":"2026-09-16T10:08:13.343Z","contentChangedAt":"2026-09-16T10:08:13.343Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}