Context
Follow-up of #376 and #377.
To do
Definition of done
- A test that fails on current
main is written first. For anything visual it is a render test (scenario → frame → pixel assertions); tests that build AnimatedProperties by hand are not enough — that is exactly how the regressions listed here slipped through.
- Each item is verified end to end: scenario JSON,
rustmotion validate, render, image inspected.
cargo fmt --all --check, cargo clippy --workspace --all-targets -- -D warnings, cargo test --workspace pass.
- Vocabulary changes update
crates/rustmotion/skills/SKILL.md, the relevant rules/ file and the exported schema. A field the validator accepts must have an effect, otherwise the validator rejects it or warns.
- No comments in Rust code (repository rule). Commits follow
<type>: <verb> <message>. No AI attribution in commits, PRs or issue comments.
Context
Follow-up of #376 and #377.
To do
draw_startis ignored onsvgoncedraw_progressreached 1 or is not animated: thepaint_resvgbranch (svg.rs, around line 514) ignores it. A stroke drawn over 0–0.5 s withdraw_start0→1 over 0.9–1.4 s is never erased. This contradicts the rule doc, which saysdraw_startalone erases a finished stroke.draw_startkeyframes validate and do nothing onarrow,connectorandshape.draw_offset(marching the drawn window along the path) is rejected as unknown.dwithtargetinside an inlinesvgare rejected ("unknown fieldtarget"); onlyshapesupports path morph.validate, prints a render-time warning and holds the first shape: resample, or raise a named validation error.arrowandconnectorpaint an 8×8 dot atdraw_progress0 (fixed forlinein draw_progress: a dot at progress 0 on line, and an unscaled stroke without caps while an svg draws #376, not for these two).Definition of done
mainis written first. For anything visual it is a render test (scenario → frame → pixel assertions); tests that buildAnimatedPropertiesby hand are not enough — that is exactly how the regressions listed here slipped through.rustmotion validate, render, image inspected.cargo fmt --all --check,cargo clippy --workspace --all-targets -- -D warnings,cargo test --workspacepass.crates/rustmotion/skills/SKILL.md, the relevantrules/file and the exported schema. A field the validator accepts must have an effect, otherwise the validator rejects it or warns.<type>: <verb> <message>. No AI attribution in commits, PRs or issue comments.