Documents' helpers are compiled into the kernels they feed, so a document calling a VM-only helper (Motion's prog/pulse/spring_step, the native ease(@name, u)) could not share it with a kernel; the P(DOOM) plates carried their own copies for that reason.
- std/shared.splash (documents, shaders, kernels): prog(t, a, b) (0 at a, 1 at b, held outside; b below a runs from 1 down to 0, a = b steps), remap(x, a, b, c, d), pulse(t, t0, half_life), spring_step(t, freq, damping). The kernel prelude's remap and std.anim's pulse (an exp form of the same curve) are deleted; anim.pulse_sum uses the shared one.
- The kernel parser reads `@name` and lowers ease(@ease_x, u) to std.ease's x(u) (@linear: clamp; @ease_in/@ease_out/@ease_in_out: quad), Motion's formulas; an ease(…) without an @name is an ordinary call (a kernel's own `ease`).
Checked: cargo test --release -p makepad-script-compute --features vm (all, the AI-style corpus with its own ease functions included); every P(DOOM) plate rendered through the commercial change on top.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>