Actions, execution, and timing
Mental model
Story time advances through ordered actions plus explicit waits. The script is an action list, but bake does not simply “sleep between commands.” It binds each action as a typed Sibling Object, executes it inside lexical scopes, collects completion sources, and advances the shared clock only when waits resolve against those sources.
Responsibilities and boundaries
create,set,destroy,morph,motion,playback,speak, layout actions, and track actions all use the same descriptor-backed action model.- The root scope owns scene-wide names, root world/screen composition, and the persistent
cameraandworldproperty objects. - Composite scopes own private identities, private layouts, bindings, and child timelines. Parents see only public fields and actions.
- Waits observe visible completion sources; they do not create forward promises.
Stable current behavior
- Named creates and named action calls publish waitable aggregate sources.
- Bare wait selectors such as
done,settle,rest,speak,audio, andvideoobserve currently visible work in lexical scope. - Assignment animation intent flows through exact-type bindings, so one authored
with:can animate a downstream property graph. - Action-created private sprites persist after the action finishes until they are explicitly destroyed or their owner is permanently removed.
- Speech and video timing join the same completion model as other actions, so narration, playback, and property animation all participate in one timeline.
Current limitations
$reads current model targets, not sampled presentation state.- Named waits can only target sources that already exist in visible scope.
motionupdates sampled path position outside the property-binding runtime, so it does not drive exact-type=bindings.- Cross-scope access stays lexical: parent/root state does not leak into private Composite internals, and private lookup does not fall back upward.
How the pieces connect
- Compilation binds each action against descriptor metadata and exact field types.
- Bake executes the root timeline and any child timelines in deterministic registration order.
- Each action collects immediate work, finite blocking work, or detached owner work.
- Wait actions resolve visible sources and move Story time to the next boundary.
- Snapshots captured at those boundaries become the shared playback, export, preview, and diagnostic substrate.
Go deeper
- Learn: Animation and timing, Preview, live, and export
- Examples: Settle demo, Path motion and trim, TTS demo
- Reference: Story syntax, Story CLI
- Specs: RUNE-1001