Conversation
🌱 graft blast radius1 area changed → 6 areas can be affected. 22 dependent symbols, depth 2. flowchart TB
A0(("Pull Request Review<br/>8 symbols"))
A1(("Workspace Graph Freshness<br/>6 symbols"))
A2(("MCP Tool Invocation<br/>3 symbols"))
A3(("Graph CLI Entry<br/>3 symbols"))
A4(("Viewer Build Script<br/>1 symbol"))
AX(("1 smaller area<br/>1 symbol"))
classDef reached fill:#D9EDF3,stroke:#3AA7C9,stroke-width:1.5px,color:#0E313C;
class A0,A1,A2,A3,A4 reached;
classDef tail fill:#EEF2F3,stroke:#9AA4A9,stroke-width:1px,color:#3A4247;
class AX tail;
Who knows this code — 3 people across 7 areas
Ownership is git history over each area's own files, weighted towards recent work (120-day half-life). Merge commits and bots are dropped, and you are dropped from your own PR. A name with no All 22 dependent symbols, grouped by areaPull Request Review — 8 symbols in 6 files
Workspace Graph Freshness — 6 symbols in 4 files
MCP Tool Invocation — 3 symbols in 1 file
Graph CLI Entry — 3 symbols in 2 files
Viewer Build Script — 1 symbol in 1 file
Synchronous Claude Run — 1 symbol in 1 file
Test signal per changed area — 1 ⚠Reached = a node under a test path has a resolved edge into the changed symbol. It undercounts anything called indirectly — through a CLI, a spawned process or a dynamic import — so read a low ratio as “look here”, never as a coverage gate.
36 test suites also reference this code47 symbols, kept out of the diagram and the table so they cannot crowd out the areas a reviewer has to look at.
Open the interactive graph → — click an area to see its dependent symbols at file:line. |
Frankie-Xu
left a comment
There was a problem hiding this comment.
Lazy-loading native grammars so a missing tree-sitter-kotlin does not take down graft --version or a TypeScript-only build is the right direction, and the dlopen probe tests are useful.
The product question for a required missing binding is already answered on Ready #214 / #119: fall back to the WASM grammar rather than throw. This PR's extractFile(Main.kt, …) path still throws No native build was found, and the README documents that as intentional. That is the opposite of #214 — on Windows without MSVC, or Node 26 without a prebuild, Kotlin (and PHP, Swift, …) would still fail the whole file instead of using tree-sitter-wasm.
src/graph/extract.ts is also the file #214 rewrites for the WASM fallback and Swift completion. I would not layer another native-loading pass onto #214 unless a maintainer wants these two merged. If this lands first, the remaining work is still throw → WASM, not more native require plumbing.
Not opening a parallel extract.ts PR.
Fix for native binding is missing for macOS ARM64 / Node 26.6.0.