snowline: bring the stations in, focus the lens on the skier, open the exposure, give the run a near field, drop the dev bench
---
S1 spine: make every part's grade apply, and give the cuts a contract
fx.module: resolve a shipped post shader by identity instead of reading a
'source' key the preset contract does not carry, so fog, vignette, colorGrade
and color_correction register for the first time and nine parts stop losing
their sky, light rig, render stack and IBL capture to the raise. Each grade key
is isolated, so one stale key costs that key alone. 'tonemap' routes to the
__display__ pass's curve and exposure, which is where a frame's tone curve
actually lives, so twelve authored exposures reach the film; 'tonemap = false'
means the linear curve. chromatic_aberration and motion_blur are reachable now
that the preset table is no longer the gate. The chain is asked whether a pass
is registered rather than a local flag, so eviction and re-entry stay in step.
director.module: the cut contract. Per-part 'bars' and 'resolutionScale' set
before enter, so a part whose enter fails still cuts like the film. Every post
pass that is not the engine's and not the film's own bloom/demo_fade is evicted
at the boundary with a warning naming it. The outgoing part reaches full black
0.15 s before the boundary, so a cut and whatever it costs are spent on black.
A part whose world area differs from the outgoing part's is built during that
fade, at 90% black. M.running() lets a scene script tell a stopped sequencer
from a running one.
volume.module: the composite is removed when the last volume goes rather than
disabled, and M.ensure re-adds it if the boundary took it out.
glow.shader: the four rings keep their radii and their share of the light, and
their taps are redistributed by weight. The outermost ring was spending 20 taps
of 57 to carry 1% of the glow. post.bloom 1.663 ms -> 0.691 ms at the same
frame, the two frames differing by 0.07 of a code value.
main.scene entrypoint: occlusion culling and a 2 px minimum screen size for the
film, restored on unload; update() restarts a sequencer a reload left stopped.
Docs: the scene README is the twelve-part 275 s film and the cut contract,
DESIGN.md says it is the retired seven-part reference, the demo-parts skill
names parts that exist and the channel that actually carries its verbs, and
/source/README.md is the world's front door.
Deleted, unreferenced: transport, lineup, p2_substance, p3_metropolis, metro,
trail_lab.scene, replay_discharge_materials.luau.
---
S1 spine: record the deletions of the unreachable modules and the dev bench
transport, lineup, p2_substance, p3_metropolis, metro and the trail_lab bench
scene. Nothing in the running order or in any module the scene entrypoint
reaches names them; p3_metropolis was the only reader of metro, transport the
only reader of lineup, and trail_lab the only reader of the ski trail bench.