You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Surprising Connections still shows cross-language false positives (INFERRED edges between unrelated source files) #726
After the fix for issue #630 (filter cross-language INFERRED calls), surprising connections still shows clearly incorrect edges. Example from our graph:
The source files (profile.ts, wallet.ts, browse.ts) are in skills/openclaw-acp/src/commands/ but the target is claude-code-sourcemap/cli.mjs — a completely unrelated repository. This is not a "surprising connection" — it is a noise from semantic INFERRED edge generation picking up the word string (a TypeScript type annotation in one file, a JavaScript type in another) and incorrectly inferring a cross-repo call relationship.
Expected behavior
Surprising connections should filter out INFERRED edges where:
Source and target are from different Git repositories (different remote origins)
Source and target have no shared path prefix (e.g. both under skills/openclaw-acp/)
Opened #916 which is a partial fix specifically for the String() / Number() / Boolean() god-node pattern in JS/TS codebases.
Reproduced this exact symptom on a 3848-node Next.js + TypeScript codebase: String() accumulated 134 spurious edges across 30+ communities (docker/opencli/... → src/components/data-table/..., identical to the report here). After the patch: 1 edge (file containment), zero cross-community noise. Total spurious edges removed: 286.
The PR mirrors the architecture of merged #908 — name-blocklist filtering for ambiguous cross-corpus names. Blocklist is 89 entries spanning JS/TS ECMAScript builtins, Browser/Node globals, and Python builtins.
This does not address the broader cross-repository filtering you mentioned (different Git origins) — that would need a separate change. But it removes the loudest source of cross-language false positives in JS/TS codebases.
Fixed in 0.8.21 — language built-in globals (String, Number, Boolean, Object, Array, etc.) are now filtered at both same-file and cross-file call resolution in the AST extractor via _LANGUAGE_BUILTIN_GLOBALS, eliminating the god-node call-edge pollution (#916).
Activity
otyeung commentedon May 17, 2026
Opened #916 which is a partial fix specifically for the
String()/Number()/Boolean()god-node pattern in JS/TS codebases.Reproduced this exact symptom on a 3848-node Next.js + TypeScript codebase:
String()accumulated 134 spurious edges across 30+ communities (docker/opencli/...→src/components/data-table/..., identical to the report here). After the patch: 1 edge (file containment), zero cross-community noise. Total spurious edges removed: 286.The PR mirrors the architecture of merged #908 — name-blocklist filtering for ambiguous cross-corpus names. Blocklist is 89 entries spanning JS/TS ECMAScript builtins, Browser/Node globals, and Python builtins.
This does not address the broader cross-repository filtering you mentioned (different Git origins) — that would need a separate change. But it removes the loudest source of cross-language false positives in JS/TS codebases.
All 122 existing tests pass.
safishamsi commentedon May 27, 2026
Fixed in 0.8.21 — language built-in globals (
String,Number,Boolean,Object,Array, etc.) are now filtered at both same-file and cross-file call resolution in the AST extractor via_LANGUAGE_BUILTIN_GLOBALS, eliminating the god-node call-edge pollution (#916).fix(extract): skip builtin-global receiver types in TS/JS member-call…
fix(extract): skip builtin-global receiver types in TS/JS member-call…
fix(go): filter Go predeclared functions from call-target resolution
fix(extract): skip builtin-global receiver types in TS/JS member-call…
fix(go): filter Go predeclared functions from call-target resolution