Unique modules define the work
Reachability, styles, static collections, Zustand, client helpers, diagnostics, and Workers reuse one canonical parsed tree.
PARSE · SUMMARIZE · CLONE
ProjectSession now owns one canonical source tree and export summary per unchanged module. Every importer still receives a fresh mutable AST, keeping compiler work bounded without sharing transformer state.
MODULE OWNERSHIP
Reachability, styles, static collections, Zustand, client helpers, diagnostics, and Workers reuse one canonical parsed tree.
Direct, default, aliased, and named re-export records retain the existing compiler boundary without widening accepted syntax.
Normalization receives a deep clone of every node with independent parents, so one importer cannot mutate another's analysis.
A changed file replaces its parsed tree and export summary together. A different ProjectSession starts with no shared records.
The 100-importer A/B emits the same 382,603-byte source-result graph. No material timing claim is made from the drifting host run.
P0.8 moves declarations, aliases, re-exports, ownership sites, and call sites onto ModuleSymbol and SiteId records.
UPGRADE
npm install @kudzujs/core@^0.8.34