ReadonlyalphaHow far the frame sits between the previous and the current fixed step:
TimeState.interpolationAlpha (§9, §10), in [0, 1]. PoseBuffer clamps
it, so an out-of-range or non-finite value degrades to an endpoint rather
than extrapolating a pose the simulation never produced.
ReadonlyposeThe engine's previous/current pose store (§37, §43) — one per application, owned by whoever captures into it.
Where a frame's §43 render poses come from, and how far between the last two fixed steps it is (§10, §43).
A backend given this record draws the interpolated pose of every node the buffer tracks — position lerped, rotation slerped — instead of the pose the last fixed step left behind; a backend given
undefineddraws the resolved world transforms (§7). Both are legitimate: the second is what a still frame, a picking pass, or a headless determinism run wants, because it is exactly the simulation state and nothing else.Nothing here is written to. §43's rule — "the render transform should not feed back into the physics state" — is the reason the pose buffer is passed as a source per frame rather than as something the renderer owns or updates; a renderer only ever calls
computeRenderPose(decision, WP-3.6).The record may be a per-frame scratch object.
Applicationreuses one (plan D7: the frame loop allocates nothing), so a backend must readposeBufferandalphaduring therendercall and never retain the record itself — the same rule the views array and the pooled render items follow.