Printable idea sheet
incremental_extension_build
reqlan rq/development/build.rq:18
Extension builds fingerprint inputs and outputs per independently cacheable artifact:
- Langium generated sources / TextMate grammar
- generated shared graph-physics source
- logo media
- generated marketplace README
- each of the five Vite webviews separately
- extension-host / language-server / lazy sql. js esbuild outputs
A step is skipped only when its command / input fingerprint and current output-content fingerprint both match the cache under `packages/extension/out/`.
Missing, changed, or manually edited output invalidates that step.
Webview output fingerprints cover each complete emitted directory, including future lazy chunks. Host-bundle inputs include bundled phonebook data and the sql. js vendor source as well as workspace package output.
TypeScript retains its native `tsc -b` project-reference incrementality.
TextMate syntax copies are cached by content; Cursor-skill sync still runs because it targets workspace-external state.
`pnpm run build:force` / `node scripts/build.mjs --force` bypasses all cache entries; `vscode:prepublish` uses this forced mode for release correctness.
`clean` removes `out/`, including the cache, so clean builds remain cold.
Root `pnpm run build:ext` delegates only to the extension package. The extension build generates Langium / physics artifacts when their fingerprints change, then its `tsc -b` builds language / analytical project references before downstream fingerprints are evaluated. It does not rebuild unrelated CLI, MCP, site, or test projects.
Status: done
Interactive page: incremental_extension_build