Talk to the Director →
designesy.

Sibling contract

Motion

Motion is structural communication, not ornament. If motion files are malformed or violate the non-negotiable standards, they degrade trust, clarity, and usability.

Version 0.1.0 · provisional · machine export

Source authority

Primary standard

Lottie Animation Community Specification v1.0.1 (2025-06-26)

Reference validator

ajv 8.20.0 (draft 2020-12 via ajv/dist/2020) + ajv-formats 3.0.1

Ten Non-Negotiable Motion Standards

01Easing is deliberateUse contract cubicBezier tokens, not bare CSS keywords
02Properties are explicitNever transition:all. Name exact properties.
03Entrances have opacityAnimate from scale(0.9-0.97) + opacity, never scale(0)
04Keyboard is stillNo motion on keyboard-initiated or high-frequency interactions
05Layout is not animatedNever animate width/height/margin/padding/top/left. Use transform/opacity.
06Touch is gated:hover motion on touch surfaces requires explicit gating
07Duration is boundedUI animation ≤ 300ms unless justified
08Reduced-motion is handledEvery animation has prefers-reduced-motion path
09Press is asymmetricPress and release use asymmetric timing
10Easing is never ease-inNo ease-in. Deceleration (ease-out) or custom curves only.

Verification — 10 checks

01m01 · Lottie file validates against LAC v1.0.1 JSON SchemaPASS: Schema valid · FAIL: Schema violation
02m02 · Required fields present (v, fr, ip, op, w, h, layers)PASS: All present · FAIL: Any missing
03m03 · No deprecated Bodymovin version (v: "4.x")PASS: v >= "5.x" · FAIL: v: "4.x"
04m04 · markers array present (reduced-motion support)PASS: Present · FAIL: Missing
05m05 · meta object present (attribution, author, description)PASS: Present · WARN: Missing (attribution gap)
06m06 · prefers-reduced-motion path documented (§3.4)PASS: Documented · FAIL: Not handled · WARN: External wrapper noted
07m07 · Easing uses deliberate curves (§16.1, §16.10)PASS: Custom curves · FAIL: ease/linear/ease-in
08m08 · Duration ≤ 300ms for UI motion (§16.7)PASS: <= 300ms · FAIL: > 300ms without justification
09m09 · No layout-property animation (§16.5)PASS: transform/opacity only · FAIL: width/height/margin/padding/top/left
10m10 · No motion on keyboard-initiated actions (§16.4)PASS: Still · FAIL: Motion on keyboard

10 checks. PASS=1, WARN=0.5, FAIL=0. Score = (points/10) × 100. A≥90, B≥80, C≥70, D≥60, F<60.

Open questions

Sibling contract to the design system v0.3.0. Machine export at /contracts/motion.json.