---
description: Build + smoke-test the viewer: typecheck, production build, and a headless load of a sample asset to confirm perceived load < 3s.
---

Run, in order, quoting real output:
1. Typecheck / lint (e.g. `npm run build` — Vite runs tsc + bundle). Must exit 0.
2. Production build artifact exists under `dist/`.
3. Headless load smoke: serve `dist/`, load a sample asset (server path) via Puppeteer/playwright OR a node script using the viewer, measure time-to-first-render. Assert < 3000ms perceived.
4. (If a local-file path exists) simulate a drop of a sample GLB and confirm load + revoke.

Append timings to PROGRESS.md. If any step fails, do not mark the work done — report the failure output.

Arguments: $ARGUMENTS — optional asset path or flag to skip headless (`--no-headless`).
