Idea detail
incremental_extension_build
reqlan rq/development/build.rq:20
Summary
Extension builds fingerprint inputs and outputs per independently cacheable artifact:
- Langium generated sources / TextMate grammar
- logo media
- generated marketplace README
- each of the five Vite webviews separately
- extension-host / language-server esbuild outputs
Host napi staging ( extension_host_native_stage ) always runs: cargo is incremental locally; Azure stages matrix artifacts and skips a second cargo compile in the package job.
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.
Fingerprint walks skip `node_modules` so Vite scratch files under `.vite-temp` and installed deps do not race or inflate hashes; dependency identity stays in `pnpm-lock.yaml` via shared inputs.
Webview output fingerprints cover each complete emitted directory, including future lazy chunks. Host-bundle inputs include bundled phonebook data 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 forced mode with `--skip-native` so `vsce package --target` cannot replace a staged per-target `native/` with the packaging agent's host binary ( vsix_export ).
`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 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.
Navigation
Attributes
| Key | Value |
|---|---|
| status | done |
| tests | incremental-build.test.ts, incremental-build.test.ts:ignores node_modules when fingerprinting a directory tree, native-packaging.test.ts |
Ancestor context
No ancestor chain recorded.
Outbound references
Inbound references
| Kind | Idea | Path | Snippet |
|---|---|---|---|
| references | extension_build | reqlan rq/development/build.rq | incremental_extension_build |
Unresolved references
| Kind | Idea | Path | Snippet |
|---|---|---|---|
| None | |||
Local graph
Initialising graph…