Project Model and Rendering

The canonical project schema is version 3. engine.js owns its limits, migration, normalization, parameters, compilation, evaluation, and rendering. Adding a persistence key or schema version requires a complete migration, normalization, import, export, and history contract rather than a UI-only patch. (engine.js:5-18, docs/ARCHITECTURE.md:28-32)

Durable project shape

A project contains identity and settings, cast definitions, variables, media, and an ordered scene list. Scenes contain duration, background, actor instances, transform keyframes, narration, and audio clips. Normalization bounds these collections, supplies stable identifiers/defaults, repairs references, and warns about malformed or oversized input. (SVG-Animator-BIBLE.md:148-157, tests/project.test.js:1-40)

The 1600 by 900 canonical stage is independent of responsive editor layout. Timeline evaluation distinguishes base-authored, selected-key-authored, evaluated, and variable-bound values; inserting a key at a quantized non-zero playhead begins from the evaluated pose. (engine.js:9-18, SVG-Animator-BIBLE.md:150-157)

Rendering and export

The engine compiles once, evaluates a global timeline position, and gives rendering a compiled scene. Editor rendering and standalone export share actor semantics even though their wrappers and animation mechanics differ. (SVG-Animator-BIBLE.md:135-145)

For the same canonical project and resolved visual inputs, export is deterministic. It embeds resolved visual assets and has no editor-only markup or runtime network dependency. Interactive audio, browser speech, provider probes, sidecar availability, and cache state are explicitly excluded from visual-export inputs; exported SVG is silent. (SVG-Animator-BIBLE.md:159-165, docs/ARCHITECTURE.md:73-75)