Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
52 commits
Select commit Hold shift + click to select a range
3892e7d
chore: gitignore napi-generated artifacts in crates/codegraph-core
carlos-alm Jun 13, 2026
ef8ea4f
chore(tests): remove unused biome suppression in visitor.test.ts
carlos-alm Jun 13, 2026
a372b82
fix(titan-run): sync --start-from enum and phase-timestamp list with …
carlos-alm Jun 13, 2026
9a52c7c
fix(hooks): track Bash file modifications via before/after git status…
carlos-alm Jun 13, 2026
85a26df
chore(native): remove dead code (unused var, method, variant, fields)
carlos-alm Jun 13, 2026
184d221
refactor(native): extract emit_pts_alias_edges params into PtsAliasCt…
carlos-alm Jun 13, 2026
909e1df
fix(wasm): sort call targets by confidence before emit to match nativ…
carlos-alm Jun 13, 2026
66fc899
fix(bench): add 2 warmup runs and raise INCREMENTAL_RUNS to 5 for inc…
carlos-alm Jun 13, 2026
84e1a5f
ci(bench): add per-PR perf canary for extractor/graph/native changes
carlos-alm Jun 13, 2026
d07b358
fix(perf): plumb symbolsOnly through parseFilesWasmInline to skip ana…
carlos-alm Jun 13, 2026
d771be7
chore: gitignore napi-generated artifacts in crates/codegraph-core (#…
carlos-alm Jun 13, 2026
3db5d8c
fix(perf): scope runPostNativeCha to changed files on incremental builds
carlos-alm Jun 13, 2026
8b3aa3d
fix(native): add post-pass phase timings to result.phases
carlos-alm Jun 13, 2026
fd4ffd1
fix(perf): correct INLINE_BACKFILL_THRESHOLD docstring; raise thresho…
carlos-alm Jun 13, 2026
498ee21
fix(perf): guard post-native passes against unnecessary work on 1-fil…
carlos-alm Jun 13, 2026
46506fc
chore(tests): remove unused biome suppression in visitor.test.ts (#1481)
carlos-alm Jun 13, 2026
61a9839
chore(types): remove dead protoMethodsMs field and stale comment
carlos-alm Jun 13, 2026
5f5d4d2
fix: class-scope field annotation typeMap keys to prevent cross-class…
carlos-alm Jun 13, 2026
29dd101
fix(bench): update elixir/julia/objc expected-edges to module-qualifi…
carlos-alm Jun 13, 2026
9320ed2
fix(wasm): emit receiver edges for declaration-typed locals in C++/CUDA
carlos-alm Jun 13, 2026
7313330
fix(native): resolve Go factory and Python constructor receiver types…
carlos-alm Jun 13, 2026
f93d0cb
fix: align enclosing-caller attribution for variable bindings (haskel…
carlos-alm Jun 13, 2026
1915e5e
chore(lint): fix unused import and formatting in cpp/cuda extractors …
carlos-alm Jun 13, 2026
7095ffe
fix: align Java interface dispatch across wasm/native/hybrid
carlos-alm Jun 13, 2026
1875c7f
fix(wasm): align typed-receiver CHA dispatch confidence to 0.8
carlos-alm Jun 13, 2026
d87c1ee
fix(caller): use nullish coalescing for endLine to avoid treating 0 a…
carlos-alm Jun 13, 2026
d6775a8
fix(wasm): port computed methods, class exprs, array destructuring, p…
carlos-alm Jun 13, 2026
ac20e67
fix: eliminate super-dispatch self-loops in CHA post-pass
carlos-alm Jun 13, 2026
d6d352d
fix(titan-run): sync --start-from enum and phase-timestamp list (#1482)
carlos-alm Jun 13, 2026
9d4aea2
fix(cha): add self-loop guard to runPostNativeCha and TODO for confid…
carlos-alm Jun 13, 2026
4156f44
fix(hooks): track Bash file modifications to prevent false-positive c…
carlos-alm Jun 13, 2026
fa2ab71
fix(comments): correct inaccurate WASM-parity claims in runPostNative…
carlos-alm Jun 13, 2026
8d41d3b
chore(native): clean up pre-existing Rust dead-code warnings (#1484)
carlos-alm Jun 13, 2026
5510443
refactor(native): extract emit_pts_alias_edges params into struct (#1…
carlos-alm Jun 13, 2026
f9bcb29
fix(wasm): align sort_targets_by_confidence with native engine (#1486)
carlos-alm Jun 13, 2026
cf37cda
fix(bench): add warmup runs to incremental tiers in benchmark.ts (#1487)
carlos-alm Jun 13, 2026
c8b6fd4
ci(bench): add per-PR perf canary for extractor/graph/native changes …
carlos-alm Jun 13, 2026
074505c
fix(perf): pass symbolsOnly through parseFilesWasmInline (#1489)
carlos-alm Jun 13, 2026
777e5e9
fix(perf): scope runPostNativeCha to changed files on incremental bui…
carlos-alm Jun 13, 2026
80194fa
fix(native): add post-native pass timings to result.phases (#1491)
carlos-alm Jun 14, 2026
e52bc2c
fix(perf): correct INLINE_BACKFILL_THRESHOLD docstring and raise thre…
carlos-alm Jun 14, 2026
86a33a6
chore(types): remove dead protoMethodsMs field and stale comment (#1494)
carlos-alm Jun 14, 2026
126940f
fix: class-scope field annotation typeMap keys to prevent cross-class…
carlos-alm Jun 14, 2026
6f1fee9
fix(bench): update elixir/julia/objc expected-edges to module-qualifi…
carlos-alm Jun 14, 2026
2cb4a3b
fix(wasm): emit receiver edges for declaration-typed locals (cpp, cud…
carlos-alm Jun 14, 2026
1d2245f
fix(native): resolve Go factory and Python constructor receiver types…
carlos-alm Jun 14, 2026
1961363
fix: align enclosing-caller attribution for variable bindings (haskel…
carlos-alm Jun 14, 2026
55f9150
fix: align Java interface dispatch across wasm/native/hybrid (#1503)
carlos-alm Jun 14, 2026
6e09787
fix(wasm): align TypeScript CHA dispatch confidence (0.6 → 0.8) (#1505)
carlos-alm Jun 14, 2026
18d80c9
fix(wasm): port missing node extractions to JS extractor (jelly-micro…
carlos-alm Jun 14, 2026
537f957
fix: resolve merge conflicts with main (docs check acknowledged)
carlos-alm Jun 14, 2026
54931dd
fix: resolve merge conflicts with main (docs check acknowledged)
carlos-alm Jun 14, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions src/domain/graph/builder/helpers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -521,6 +521,7 @@ export function runChaPostPass(db: BetterSqlite3Database): number {
const qualifiedName = `${cls}.${methodSuffix}`;
const methodNodes = findMethodStmt.all(qualifiedName) as Array<{ id: number }>;
for (const methodNode of methodNodes) {
if (methodNode.id === source_id) continue; // skip self-loops
const key = `${source_id}|${methodNode.id}`;
if (seen.has(key)) continue;
seen.add(key);
Expand Down
15 changes: 7 additions & 8 deletions src/domain/graph/builder/stages/native-orchestrator.ts
Original file line number Diff line number Diff line change
Expand Up @@ -531,13 +531,10 @@ function runPostNativeCha(
if (row) gateAFired = true;
}

// Gate B: calls from changed-file sources to class-kind targets (or
// constructor/function-kind targets in the older native engine fallback schema)?
// Mirrors the two-shape RTA seed: primary checks `tgt.kind = 'class'`; older
// native engine schemas record constructor calls against `constructor`/`function`
// kinds instead. Including all three kinds here prevents Gate B from silently
// passing on older-schema DBs, which would incorrectly set scopeToChangedFiles
// and miss CHA edges whose RTA evidence lives in the fallback-schema rows.
// Gate B: calls from changed-file sources to class/instantiable-kind targets
// (also covers older-schema fallback and future CHA extensions to struct/record).
// Includes class/interface/trait/struct/record (future CHA extension safety) and
// constructor/function (older native engine schema fallback).
let gateBFired = false;
if (!gateAFired) {
for (let i = 0; i < changedFiles.length && !gateBFired; i += CHUNK_SIZE) {
Expand All @@ -549,7 +546,7 @@ function runPostNativeCha(
JOIN nodes src ON e.source_id = src.id
JOIN nodes tgt ON e.target_id = tgt.id
WHERE e.kind = 'calls'
AND tgt.kind IN ('class', 'constructor', 'function')
AND tgt.kind IN ('class', 'interface', 'trait', 'struct', 'record', 'constructor', 'function')
AND src.file IN (${ph})
LIMIT 1`,
)
Expand Down Expand Up @@ -665,6 +662,7 @@ function runPostNativeCha(
method_file: string | null;
}>;
for (const methodNode of methodNodes) {
if (methodNode.id === source_id) continue; // skip self-loops
const key = `${source_id}|${methodNode.id}`;
if (seen.has(key)) continue;
seen.add(key);
Expand Down Expand Up @@ -912,6 +910,7 @@ async function runPostNativeThisDispatch(
);

for (const t of targets) {
if (t.id === callerRow.id) continue; // skip self-loops
const key = `${callerRow.id}|${t.id}`;
if (seen.has(key)) continue;
seen.add(key);
Expand Down
Loading