affaan-m/ECC · error · RuntimeError
Blender failed to save scene
Error message
Blender failed to save scene
What it means
Save guard in build: Blender's save_as_mainfile call completed but the staged scene file is missing or zero bytes, so publishing the scene via hard link is unsafe. Indicates a Blender save failure or filesystem error.
Solutions
- Check Blender's console output for save errors
- Verify write permissions and disk space in the output directory
- Retry the build; transient I/O failures are possible
Defensive patterns
Strategy: retry
When it happens
Trigger: Thrown at skills/taste-application/scripts/blender_prop.py:289 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of affaan-m/ECC@8321021c54 (2026-09-16).
Data as JSON: /api/errors/0c12768911d026bf.
Report an issue: GitHub.
Appendix: source
Thrown at skills/taste-application/scripts/blender_prop.py:289
sc.frame_set(1)
bpy.context.view_layer.update()
if render_dir:
sc.render.filepath = str(render_dir.absolute() / "turn_")
try:
sc.render.engine = "BLENDER_EEVEE_NEXT"
except TypeError:
sc.render.engine = "BLENDER_EEVEE"
if out:
out.parent.mkdir(parents=True, exist_ok=True)
# Pack textures, then publish on the same filesystem without clobbering.
bpy.ops.file.pack_all()
with tempfile.TemporaryDirectory(prefix=".taste-blender-", dir=out.parent) as temporary:
staged = Path(temporary) / "scene.blend"
bpy.ops.wm.save_as_mainfile(filepath=str(staged), check_existing=False, copy=True)
if not staged.is_file() or staged.stat().st_size == 0:
raise RuntimeError("Blender failed to save scene")
validate_output(out)
os.link(staged, out)
print(f"[prop] scene -> {out}")
if render_dir:
validate_output(render_dir)
render_dir.mkdir(parents=True, exist_ok=False)
status = bpy.ops.render.render(animation=True)
verify_render(status, render_dir, frames)
print(f"[prop] frames -> {render_dir}")
if receipt:
if _sha256(mesh) != source_hash or (_sha256(grade) if grade.is_file() else None) != grade_hash:
raise RuntimeError("input changed during scene build")
payload = {
"schema_version": 1, "blender_version": bpy.app.version_string,
"source": {"path": str(mesh.absolute()), "sha256": source_hash},
"grade": {"path": str(grade.absolute()), "sha256": grade_hash},View on GitHub (pinned to 8321021c54)