You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Part of #326. Batch 4 — depends on every other workstream.
#336 changes how a scenario's total duration is computed, which is a real behaviour break: a file with five transitions gets 1.5 s longer. That change sits behind "timing": "v2" so nothing breaks unasked, and the gate is only honest if there is a way across it.
Do NOT write: any schema file, anything under engine/.
Deliverables
rustmotion migrate -f x.json converts a scenario to timing: v2, compensating each scene's duration by its own transition length so the output is frame-identical to the pre-migration render. It refuses a templated file, or one using include, for-each or use, for the same reason --fix already does.
Validation ordering. Geometry runs after static folding, so a computed position is checked as the value it resolves to rather than as an expression string.
Part of #326. Batch 4 — depends on every other workstream.
#336 changes how a scenario's total duration is computed, which is a real behaviour break: a file with five transitions gets 1.5 s longer. That change sits behind
"timing": "v2"so nothing breaks unasked, and the gate is only honest if there is a way across it.Owned files
crates/rustmotion/src/cli/commands/migrate.rs(new)crates/rustmotion/src/cli/commands/validate.rs,validation.rsDo NOT write: any schema file, anything under
engine/.Deliverables
rustmotion migrate -f x.jsonconverts a scenario totiming: v2, compensating each scene's duration by its own transition length so the output is frame-identical to the pre-migration render. It refuses a templated file, or one usinginclude,for-eachoruse, for the same reason--fixalready does.Validation ordering. Geometry runs after static folding, so a computed position is checked as the value it resolves to rather than as an expression string.
The new checks wired into
validate.expression_errorandreference_cross_scenefrom Let scenario values be arithmetic expressions #327 and Let a node read another node's geometry and a text's measurements #328,unresolved_beat_unitandoff_grid_cutfrom Place scenes on an absolute timeline with a beat grid #336, with--lenientdowngrading them consistently with the existing ones.Acceptance
rustmotion migrateon the six-scene reel produces a file rendering the same 13.5 s it rendered before, frame for framesnap: "beat"renders 15.0 s with cuts on the gridrustmotion validate --reportcarries every new violation kind