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
Discovered while sweeping all 10 open PRs (#2119-#2129) on 2026-07-19/20. Every open PR showed the same "Test Node 22" / "Engine parity" CI failures regardless of what the PR actually changed — including trivial, unrelated changes like a GitHub Actions version bump (actions/setup-node, actions/setup-go, anthropics/claude-code-action) and a Gleam-only grammar bump (tree-sitter-gleam). That ruled out any of those PRs' own diffs as the cause.
Five independent sweep agents, working in isolated worktrees on unrelated PRs, each re-ran the failing jobs once and independently confirmed the exact same failure signatures reproduce deterministically — this is not occasional flakiness, it's consistently reproducible given the current main state (or very close to it). Two distinct bugs were identified:
Bug 1: Native vs WASM engine parity divergence
Both Test Node 22 and Engine parity jobs fail with real content/count mismatches between the native (Rust) and WASM engines, spanning multiple languages:
tests/engines/parity.test.ts — multiple "must agree between engines" callback-gating assertions fail for JS/TS (e.g. "callback gating must agree between engines", "identifier-arg callback gating", "Array.from positional callback gating", "inline object-literal dispatch table", "identifier args to user-defined higher-order functions recognized via parameter type")
tests/unit/call-resolver.test.ts, tests/integration/queries.test.ts, tests/parsers/ast-nodes.test.ts also showed resolver-recall/parity assertions failing well below 100% on at least one PR's run (build(deps-dev): bump commit-and-tag-version from 12.7.3 to 13.0.0 #2123) — may be the same root cause or a related symptom; needs isolation.
Per this repo's own architecture principle ("Both engines must produce identical results. If they diverge, the less-accurate engine has a bug — fix it, don't document the gap"), this is a real bug in whichever engine is wrong, not acceptable drift.
Investigation lead (unconfirmed): commit 156004ac / PR #2102 ("fix(extractors): extract bare super(...) constructor calls as call edges", merged 2026-07-17) touches extractor logic and directly involves constructor-call edges — plausible mechanism for the C# constructor-role divergence above. However, main's own official push-triggered CI run for that exact commit (2e0e94fa) passed Engine parity cleanly on all 3 platforms, while multiple PR-triggered runs against the same or near-identical commit fail consistently. That discrepancy (push-run passes, PR-runs fail) is itself worth investigating — possibly a pull_request vs push event/matrix/concurrency difference, test ordering sensitivity, or environment/caching difference between trigger types — rather than assuming the extractor change itself is deterministic-safe.
Bug 2: Native addon crash on CLI -f array arguments
A separate, also deterministically-reproducing failure:
codegraph: fatal error — Failed to convert JavaScript value Object ["math.js"] into rust type String
Confirmed identical on multiple independent PR runs. Affects:
This looks like a native (napi-rs) binding issue marshaling an array argument (-f/file-filter) as a single string, rejecting an array/object where a Rust String is expected.
Evidence this is deterministic, not flaky
Reproduced with the identical failure signature (same test names, same fixtures, same counts) across at least 5 separate CI runs triggered by completely unrelated PRs:
Discovered while sweeping all 10 open PRs (#2119-#2129) on 2026-07-19/20. Every open PR showed the same "Test Node 22" / "Engine parity" CI failures regardless of what the PR actually changed — including trivial, unrelated changes like a GitHub Actions version bump (
actions/setup-node,actions/setup-go,anthropics/claude-code-action) and a Gleam-only grammar bump (tree-sitter-gleam). That ruled out any of those PRs' own diffs as the cause.Five independent sweep agents, working in isolated worktrees on unrelated PRs, each re-ran the failing jobs once and independently confirmed the exact same failure signatures reproduce deterministically — this is not occasional flakiness, it's consistently reproducible given the current
mainstate (or very close to it). Two distinct bugs were identified:Bug 1: Native vs WASM engine parity divergence
Both
Test Node 22andEngine parityjobs fail with real content/count mismatches between the native (Rust) and WASM engines, spanning multiple languages:tests/integration/build-parity.test.ts— csharpRepositoryfixture:UserService.UserService(a constructor) classified as rolecoreby native butdead-ffiby WASMsample-project (JS)fixture ("produces identical nodes/roles")tests/engines/ast-parity.test.ts—ast_nodesrow-count parity:tests/engines/parity.test.ts— multiple "must agree between engines" callback-gating assertions fail for JS/TS (e.g. "callback gating must agree between engines", "identifier-arg callback gating", "Array.from positional callback gating", "inline object-literal dispatch table", "identifier args to user-defined higher-order functions recognized via parameter type")tests/unit/call-resolver.test.ts,tests/integration/queries.test.ts,tests/parsers/ast-nodes.test.tsalso showed resolver-recall/parity assertions failing well below 100% on at least one PR's run (build(deps-dev): bump commit-and-tag-version from 12.7.3 to 13.0.0 #2123) — may be the same root cause or a related symptom; needs isolation.Per this repo's own architecture principle ("Both engines must produce identical results. If they diverge, the less-accurate engine has a bug — fix it, don't document the gap"), this is a real bug in whichever engine is wrong, not acceptable drift.
Investigation lead (unconfirmed): commit
156004ac/ PR #2102 ("fix(extractors): extract baresuper(...)constructor calls as call edges", merged 2026-07-17) touches extractor logic and directly involves constructor-call edges — plausible mechanism for the C# constructor-role divergence above. However,main's own official push-triggered CI run for that exact commit (2e0e94fa) passed Engine parity cleanly on all 3 platforms, while multiple PR-triggered runs against the same or near-identical commit fail consistently. That discrepancy (push-run passes, PR-runs fail) is itself worth investigating — possibly apull_requestvspushevent/matrix/concurrency difference, test ordering sensitivity, or environment/caching difference between trigger types — rather than assuming the extractor change itself is deterministic-safe.Bug 2: Native addon crash on CLI
-farray argumentsA separate, also deterministically-reproducing failure:
Confirmed identical on multiple independent PR runs. Affects:
tests/cli.test.ts(-fscoping tests)tests/integration/incremental-parity.test.tsissue-1730,issue-1734,issue-1738,issue-1742,issue-1753,issue-1769This looks like a native (napi-rs) binding issue marshaling an array argument (
-f/file-filter) as a single string, rejecting an array/object where a RustStringis expected.Evidence this is deterministic, not flaky
Reproduced with the identical failure signature (same test names, same fixtures, same counts) across at least 5 separate CI runs triggered by completely unrelated PRs:
c610c28tocefbd68#2126 (tree-sitter-gleam devDependency bump)None of these PRs touch extraction, parsing, or native-binding code, so their diffs cannot be the cause.
Impact
Every open PR in this repo currently shows red CI on
Test Node 22andEngine parityregardless of content, which:Suggested next steps
mainrun and the first PR run showing this signature to find the actual introducing commit (candidate: fix(extractors): extract bare super(...) constructor calls as call edges #2102, but not confirmed).pull_requestvspushtrigger differences).-fflag handling.