# lint, validate, inspect, snapshot The correctness pipeline. Run in this order: `lint` (static, fast) → `validate` (runtime, headless Chrome) → `inspect` (layout sweep). `snapshot` is a separate utility for capturing still frames. ## Discipline (motion-heavy work) When the composition is animation-driven, run the checks before you reach for `preview` or `render`: - Run `lint` after the first HTML pass — earlier, not later. - Capture `snapshot` at meaningful timeline states; look at the PNGs. - Inspect snapshots _before_ tuning automated warnings — your eye catches what the auditor misses. - Treat layout warnings as defects unless a snapshot proves the overflow is intentional, in which case mark it with `data-layout-allow-overflow`. - State motion intent in a `*.motion.json` sidecar so `inspect` checks it automatically — entrances firing under seek, stagger order, in-frame, liveness. This is the closest automated proxy for "watch the MP4" and catches render-≠-preview bugs the eye misses (see **Motion verification** below). ## lint ```bash npx hyperframes lint # current directory npx hyperframes lint ./my-project # specific project npx hyperframes lint --verbose # info-level findings npx hyperframes lint --json # machine-readable ``` Lints `index.html` and all files in `compositions/`. Reports errors (must fix), warnings (should fix), and info (with `--verbose`). Catches missing `data-composition-id`, overlapping tracks on the same `data-track-index`, and unregistered timelines. **Blind spot — media inside a sub-composition (not yet a lint rule).** A `