refactor(ingestion): delete legacy call-resolution DAG + heritage processor (RING4-1, #942)#2023
Conversation
…cessor (abhigyanpatwari#942) RING4-1: all 16 production languages (incl. Vue abhigyanpatwari#940) are registry-primary, so the legacy resolution legs only ran under the now-removed CI parity gate. Calls and inheritance now resolve exclusively through scope-resolution (Registry.lookup, preEmitInheritanceEdges, emitHeritageEdges, buildMro → MethodDispatchIndex). Removed: - Call-resolution DAG: call-processor.ts legacy body (processCalls, processCallsFromExtracted, resolveCallTarget + all resolver/dispatch/chain helpers), model/resolve.ts MRO-via-HeritageMap, model/heritage-map.ts, type-env DAG types; inferImplicitReceiver/selectDispatch LanguageProvider hooks + Ruby impls; DispatchDecision/ImplicitReceiverOverride/ReceiverEnriched. - Legacy heritage path: heritage-processor.ts, heritage-types.ts, heritage-extractors/, @Heritage.* tree-sitter queries, heritageExtractor/ heritageDefaultEdge/interfaceNamePattern wiring, worker + parse-impl heritage passes (parse-worker/parsing-processor lockstep), cross-file-impl DAG pass. - Scope-parity infrastructure entirely (no legacy↔registry parity left to run): scripts/run-parity.ts, scripts/ci-list-migrated-languages.ts, ci-scope-parity.yml, test:parity, and the scope-parity ci.yml gate. Resolver integration tests still run via the normal tests job. Kept (shared infra, NOT call-DAG-only): type-env.ts buildTypeEnv (field extraction / structure phase / embeddings), model/resolve.ts c3Linearize + gatherAncestors (mro-processor mroPhase), route/fetch/exported-type-map helpers in call-processor.ts, preEmitInheritanceEdges (legacy-edge dedup simplified). Acceptance: grep for resolveCallTarget/inferImplicitReceiver/selectDispatch/ buildHeritageMap/HeritageMap/processHeritage/heritageExtractor/@Heritage. is zero across src + test. tsc clean (both packages); resolver integration suite green (bit-compatible EXTENDS/IMPLEMENTS/CALLS); scope-capture fingerprints unchanged (python re-baselined: removed redundant ignored captures). ARCHITECTURE.md updated to scope-resolution-only. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
ce-code-review autofix pass on the RING4-1 deletion: - parse-cache.ts: bump SCHEMA_BUMP 2→3 — ParseWorkerResult lost its `heritage` field, so stale on-disk caches must invalidate (prevents a rollback replaying a heritage-less cache into legacy code) [api-contract P2]. - parse-impl.ts: drop 3 now-unused type imports (ExtractedCall, ExtractedAssignment, FileConstructorBindings) left by the deferred-block removal — would fail the eslint CI gate [correctness+maintainability P1]. - AGENTS.md / CLAUDE.md / scope-resolver.ts contract doc: fix stale pointers to the deleted "§ Call-Resolution DAG" section + removed hooks; preserve the language-neutrality rule [project-standards P1]. - registry-primary-flag.ts / cross-file.ts / parse-impl.ts: refresh stale comments referencing deleted symbols (legacy DAG, runCrossFileBindingPropagation). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…igyanpatwari#942) With the legacy call-resolution DAG deleted, the per-language `REGISTRY_PRIMARY_<LANG>` / `isRegistryPrimary` / `MIGRATED_LANGUAGES` flag had only one meaningful state — every production language resolves via scope-resolution — and an explicit `=0` override could only *disable* resolution with no fallback (a footgun the review flagged). Removing it. - Delete `registry-primary-flag.ts` and the now-dead `shadow-harness.ts` (legacy↔registry shadow-parity tool) + its test. - Collapse the three flag gates to their behavior-preserving outcome (`SCOPE_RESOLVERS == MIGRATED_LANGUAGES`, so this is a no-op): - scope-resolution phase now runs for every registered `SCOPE_RESOLVERS` entry (was `∩ MIGRATED_LANGUAGES`). - import-processor `addImportGraphEdge` + parse-impl `shouldAccumulate`: the legacy emit/accumulate paths were already inert for migrated languages (scope-resolution owns IMPORTS via the imports-to-edges bridge); drop the flag term. - Collapse flag-branching tests to the scope-resolution path and delete the csharp legacy-`=0`-leg describe blocks; remove the ruby/rust-scope env-forcing hooks (no-ops now). - Refresh docs/comments (ARCHITECTURE.md "one registration", scope-resolver cookbook, phase deps) — adding a language is now a single `SCOPE_RESOLVERS` registration. Verified: tsc clean (both packages); resolver integration tests green (747 assertions across cobol/csharp/ruby/rust/typescript/go, IMPORTS edges intact); grep for the flag symbols is zero across src + test. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
@magyargergo is attempting to deploy a commit to the NexusCore Team on Vercel. A member of the Team first needs to authorize it. |
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
✨ PR AutofixFound fixable formatting / unused-import issues across 12 changed lines. Comment |
CI Report✅ All checks passed Pipeline Status
Test Results
✅ All 10569 tests passed 16 test(s) skipped — expand for details
Code CoverageTests
📋 View full run · Generated by CI |
…re fingerprints (abhigyanpatwari#942) Two CI failures from the abhigyanpatwari#942 cleanup, surfaced by the tri-review + CI: - tree-sitter-languages.test.ts: two tests asserted `@heritage.*` captures (Rust trait-impl, Dart extends/implements/with) that this PR removed. The acceptance grep used `@heritage\.` (with `@`); these reference the runtime capture name `heritage.trait` (no `@`), so they slipped the earlier sweep. Inheritance is now covered by the resolver integration suite. (fixed macos-latest) - Re-baselined the scope-capture bench fingerprints for csharp/rust/ruby/java/ javascript/kotlin (baselines.json) + python (python-scope/baseline-fingerprint.txt). The earlier test-cleanup reworded comments inside the lang-resolution fixture files (Shapes.cs, child.rs, derived.rb, IA.java/Plain.java, Service.js, F.kt, app.py) to scrub deleted-symbol references for the acceptance grep; those are the bench corpus, so capture node positions shifted. Capture LOGIC is unchanged — verified `--check` passes for all 14 langs + python. (fixed benchmarks) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
magyargergo
left a comment
There was a problem hiding this comment.
Tri-review — RING4-1 legacy-resolution deletion (#942)
Methods (engine breakdown): Codex gpt-5.5/xhigh — the one independent engine, live with structured output — plus 5 Claude lanes (GitNexus risk & test-CI; CE correctness, adversarial, maintainability). Note: two of three methods are Claude under different persona prompts (correlated priors), so the strong signal is Codex + a Claude lane agreeing. The two gitnexus-* lanes ended mid-investigation (a known partial-return mode); their domains — production risk and resolver-coverage-after-parity-removal — were independently covered by correctness, adversarial, and Codex, so no domain went unreviewed.
Verdict: the deletion is sound. Two CI breakages were found and fixed during review.
Strongly corroborated CLEAN (zero P0/P1): the independent engine (Codex) and both Opus lanes (correctness, adversarial) independently refuted every correctness/risk concern, each with file:line evidence — all [code-read] (worktrees can't build, so nothing is [reproduced]):
SCOPE_RESOLVERS == MIGRATED_LANGUAGESverified (identical 16-language set, set-diff empty both ways) → theisRegistryPrimaryflag-gate collapses are behavior-preserving. [Codex + correctness]- The empty
parentMapin parse-worker is benign — every consumer of the workertypeEnv(calls/assignments/exportedTypeMap) is dead; scope-resolution does its own inheritance-aware inference. [correctness + adversarial + Codex] call-processor.tscarve: kept route/fetch/exported-type-map functions are byte-identical with complete imports; Rubyinclude/extend/prependstill emit via scope-resolution's__heritage__lane (the worker path was already dark for registry-primary Ruby). [3 lanes]model/resolve.tskeptc3Linearize/gatherAncestorsself-contained;mro-processorbuilds the parentMap from graph EXTENDS/IMPLEMENTS. [correctness + Codex]parse-cacheSCHEMA_BUMP2→3 correctly invalidates theParseWorkerResult.heritage-field removal. [3 lanes]
CI breakages caught by this review — both FIXED in 6d8dc51f
- macos-latest —
tree-sitter-languages.test.tsasserted@heritage.*captures (Rust trait-impl, Dart extends/implements/with) the PR removed. The acceptance grep used@heritage\.(with@); these reference the runtime capture nameheritage.trait(no@), so they slipped the sweep. Removed (inheritance is covered by the resolver suite). [surfaced by the synthesis-critic + CI] - benchmarks (GITNEXUS_BENCH) — the test-cleanup reworded comments inside 7
lang-resolutionbench-corpus fixtures, shifting capture node positions → 6 scope-capture + 1 python fingerprint drifted. Re-baselined (capture logic unchanged;--checkpasses for all 14 langs + python). [root-caused via local repro]
Non-blocking follow-ups (P2/P3, no correctness impact)
- [P3]
TESTING.md+scripts/bench-scope-resolution.tsstill reference the removedREGISTRY_PRIMARY_<LANG>flag (the cleanup missed these two non-src/testfiles). [adversarial] - [P3] Stale doc-comments → deleted files:
ruby/scope-resolver.ts(heritage-map.ts),php/captures.ts(heritage-processor.ts). [adversarial + maintainability] - [P2]
WorkerExtractedData.calls/assignments/constructorBindingsare populated by the worker + crossed over IPC but no longer consumed — dead extraction (already in the PR's Residual Findings). [maintainability + adversarial + correctness] - [P2/P3] Stale JSDoc (
parse.ts@writes, parse-worker/parsing-processor "legacy DAG" framing);CrossFileOutput.filesReprocessedis now a constant 0;createResolverParityItis a passthrough;addImportGraphEdge/deferredWorkerImportsare documented-inert. [maintainability — mostly acceptable-as-noted]
Refuted (validation is a feature)
No 17th/unmigrated language; COBOL standalone still routed via cobolPhase, not the legacy import-edge path; preEmitInheritanceEdges dedup-seed removal is safe (it runs first, nothing emits inheritance before it); no dangling imports (tsc clean both packages).
Test gaps noted: no end-to-end edge-count invariant pinning the behavior-preservation claim; no test pinning exportedTypeMap as write-only; sequential-path inheritance parity untested.
Automated multi-tool digest (1 independent engine + 4 correlated Claude lanes). Verify before acting; findings are [code-read], not reproduced end-to-end.
…ces (abhigyanpatwari#942) Tri-review P3 follow-ups (verified): - TESTING.md: rewrite the "Scope-resolution parity" section — the legacy dual-leg (REGISTRY_PRIMARY_<LANG>=0/1) and `npm run test:parity` no longer exist; resolver tests run once on the sole scope-resolution path in the normal tests job. - scripts/bench-scope-resolution.ts: drop the inert `REGISTRY_PRIMARY_PYTHON=1` env set + usage hint (the flag is gone). - ruby/scope-resolver.ts, php/captures.ts: re-point doc-comments off the deleted heritage-map.ts / heritage-processor.ts to the current behavior. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
There was a problem hiding this comment.
Pull request overview
Removes the legacy call-resolution DAG and heritage extraction path from the ingestion pipeline, consolidating all call + inheritance resolution onto the scope-resolution pipeline and deleting the associated parity/flag infrastructure.
Changes:
- Deletes legacy call/heritage resolution code paths (and their tests) and removes the per-language
REGISTRY_PRIMARY_<LANG>gating. - Updates scope-resolution pipeline and related docs/tests to reflect the single-path resolver model.
- Bumps parse-cache schema and cleans up CI/workflows/scripts tied to the retired parity gate.
Reviewed changes
Copilot reviewed 135 out of 137 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| TESTING.md | Updates testing docs to describe single-path scope-resolution tests. |
| gitnexus/test/unit/tree-sitter-queries.test.ts | Removes legacy @heritage.* capture assertions. |
| gitnexus/test/unit/supertype-alternation.test.ts | Deletes unit tests tied to removed heritage extractor utilities. |
| gitnexus/test/unit/sequential-language-availability.test.ts | Removes legacy call/heritage availability tests; strengthens logger capture cleanup. |
| gitnexus/test/unit/scope-resolution/resolver-parity-expected-failures.test.ts | Deletes tests for legacy parity expected-failure logic. |
| gitnexus/test/unit/ruby-self-call.test.ts | Deletes unit tests for legacy Ruby implicit-receiver helper. |
| gitnexus/test/unit/parse-impl-fallback.test.ts | Deletes tests tied to legacy parse/call fallback behavior. |
| gitnexus/test/unit/parse-impl-e1-emission-shape.test.ts | Deletes source-shape pin test related to prior parse-impl logging structure. |
| gitnexus/test/unit/parse-impl-deferred-extraction.test.ts | Deletes multi-chunk equivalence test referencing removed legacy processors. |
| gitnexus/test/unit/heritage-query-wiring.test.ts | Deletes wiring-exhaustiveness tests for heritage descriptor/query interpolation. |
| gitnexus/test/unit/cross-file.test.ts | Deletes cross-file propagation disposal tests after cross-file propagation removal. |
| gitnexus/test/unit/call-routing/ruby.test.ts | Updates comments to reflect scope-resolution-owned mixin heritage. |
| gitnexus/test/integration/tree-sitter-languages.test.ts | Removes integration checks for heritage.* captures. |
| gitnexus/test/integration/resolvers/vue-scope.test.ts | Updates resolver test docstring to single-path behavior. |
| gitnexus/test/integration/resolvers/typescript.test.ts | Removes legacy parity conditionals and updates commentary to single-path. |
| gitnexus/test/integration/resolvers/swift.test.ts | Updates comments to remove legacy DAG references. |
| gitnexus/test/integration/resolvers/rust.test.ts | Updates comments and removes legacy parity expectations. |
| gitnexus/test/integration/resolvers/rust-scope.test.ts | Removes env var forcing; tests always run on scope-resolution path. |
| gitnexus/test/integration/resolvers/ruby.test.ts | Updates commentary around Ruby module labeling and heritage ownership. |
| gitnexus/test/integration/resolvers/ruby-scope.test.ts | Removes env var forcing; tests always run on scope-resolution path. |
| gitnexus/test/integration/resolvers/python.test.ts | Removes legacy parity skip commentary; updates references to scope-resolution. |
| gitnexus/test/integration/resolvers/python-parsing-coverage.test.ts | Switches assertions from @heritage.* to @reference.inherits semantics. |
| gitnexus/test/integration/resolvers/php.test.ts | Removes legacy parity skip commentary. |
| gitnexus/test/integration/resolvers/kotlin.test.ts | Updates fixture commentary to single-path scope-resolution. |
| gitnexus/test/integration/resolvers/javascript.test.ts | Updates fixture commentary to single-path scope-resolution. |
| gitnexus/test/integration/resolvers/java.test.ts | Updates fixture commentary; removes legacy mode rationale blocks. |
| gitnexus/test/integration/resolvers/go.test.ts | Updates commentary around inheritance synth behavior under single path. |
| gitnexus/test/integration/resolvers/dart.test.ts | Removes legacy parity framing; keeps language-tagged it wrapper. |
| gitnexus/test/integration/resolvers/cpp.test.ts | Updates comment header naming (inherited method resolution). |
| gitnexus/test/integration/resolvers/cobol.test.ts | Removes registry-primary gating and updates scope-resolution section expectations. |
| gitnexus/test/integration/resolvers/cobol-scope.test.ts | Updates docstring to reflect integration coverage source. |
| gitnexus/test/integration/js-array-method-callback-attribution.test.ts | Removes legacy-parity conditional skip; runs unconditionally. |
| gitnexus/test/integration/heritage-extractor-wiring.test.ts | Deletes integration tests for removed heritage extractor wiring. |
| gitnexus/test/integration/cobol-pipeline-benchmark.test.ts | Updates benchmark notes to remove registry-primary framing. |
| gitnexus/test/fixtures/lang-resolution/rust-child-extends-parent/src/child.rs | Updates fixture comment to remove legacy resolver naming. |
| gitnexus/test/fixtures/lang-resolution/ruby-qualified-base/lib/derived.rb | Updates fixture commentary to remove legacy symbols/@heritage references. |
| gitnexus/test/fixtures/lang-resolution/python-module-import/app.py | Updates fixture comment to reference scope-resolution. |
| gitnexus/test/fixtures/lang-resolution/kotlin-qualified-base/src/F.kt | Updates fixture comment to reflect scope-resolution inheritance handling. |
| gitnexus/test/fixtures/lang-resolution/javascript-qualified-base/src/Service.js | Updates fixture comment to reflect scope-resolution reduction logic. |
| gitnexus/test/fixtures/lang-resolution/java-qualified-base/src/app/Plain.java | Updates fixture comment wording (end-anchoring rationale). |
| gitnexus/test/fixtures/lang-resolution/java-iface-extends/src/app/IA.java | Updates fixture comment to reflect single-path scope-resolution. |
| gitnexus/test/fixtures/lang-resolution/csharp-qualified-base/src/Shapes.cs | Updates fixture comment to remove legacy parity language. |
| gitnexus/src/storage/parse-cache.ts | Bumps parse-cache schema version due to ParseWorkerResult shape change. |
| gitnexus/src/core/ingestion/workers/parse-worker.ts | Removes legacy heritage extraction outputs/pre-pass and heritage field. |
| gitnexus/src/core/ingestion/utils/ruby-self-call.ts | Deletes legacy Ruby implicit-self helper implementation. |
| gitnexus/src/core/ingestion/utils/ast-helpers.ts | Updates comments to remove buildHeritageMap reference. |
| gitnexus/src/core/ingestion/type-extractors/types.ts | Updates docstring to remove resolveCallTarget reference. |
| gitnexus/src/core/ingestion/shadow-harness.ts | Deletes legacy shadow-mode parity harness. |
| gitnexus/src/core/ingestion/scope-resolution/pipeline/run.ts | Simplifies inheritance-edge dedup assumptions post-legacy-heritage removal. |
| gitnexus/src/core/ingestion/scope-resolution/pipeline/registry.ts | Makes SCOPE_RESOLVERS the direct source of truth (no migrated set). |
| gitnexus/src/core/ingestion/scope-resolution/pipeline/phase.ts | Removes registry-primary gating and runs all registered resolvers. |
| gitnexus/src/core/ingestion/scope-resolution/contract/scope-resolver.ts | Updates “adding a language” contract to remove migrated/flag/parity steps. |
| gitnexus/src/core/ingestion/registry-primary-flag.ts | Deletes per-language REGISTRY_PRIMARY_<LANG> flags + migrated set. |
| gitnexus/src/core/ingestion/pipeline-phases/cross-file.ts | Converts cross-file phase into accumulator-disposal-only phase. |
| gitnexus/src/core/ingestion/parsing-processor.ts | Removes heritage from worker extracted data aggregation. |
| gitnexus/src/core/ingestion/model/semantic-model.ts | Updates docs to remove registry-primary/legacy split language. |
| gitnexus/src/core/ingestion/model/index.ts | Removes re-exports tied to legacy HeritageMap/MRO resolver utilities. |
| gitnexus/src/core/ingestion/languages/vue.ts | Removes heritage extractor wiring from Vue provider. |
| gitnexus/src/core/ingestion/languages/typescript/captures.ts | Updates docs to reflect removal of legacy heritage leg. |
| gitnexus/src/core/ingestion/languages/typescript.ts | Removes heritage extractor wiring from TS/JS providers. |
| gitnexus/src/core/ingestion/languages/swift/captures.ts | Updates docs to reflect removal of legacy heritage leg. |
| gitnexus/src/core/ingestion/languages/swift.ts | Removes legacy heritage extractor/default edge wiring from Swift provider. |
| gitnexus/src/core/ingestion/languages/rust/scope-resolver.ts | Updates comment wording around legacy heritage naming. |
| gitnexus/src/core/ingestion/languages/rust/captures.ts | Updates docs to reflect removal of legacy heritage leg. |
| gitnexus/src/core/ingestion/languages/rust.ts | Removes heritage extractor wiring from Rust provider. |
| gitnexus/src/core/ingestion/languages/ruby/scope-resolver.ts | Updates comments to remove legacy heritage-map references. |
| gitnexus/src/core/ingestion/languages/ruby/captures.ts | Updates docs to reflect removal of legacy heritage leg. |
| gitnexus/src/core/ingestion/languages/ruby.ts | Removes legacy DAG hooks + heritage extractor wiring; keeps scope-resolution hooks. |
| gitnexus/src/core/ingestion/languages/python/query.ts | Removes legacy @heritage.* patterns from Python query file. |
| gitnexus/src/core/ingestion/languages/python/captures.ts | Updates docs to reflect removal of legacy heritage leg. |
| gitnexus/src/core/ingestion/languages/python.ts | Removes heritage extractor wiring from Python provider. |
| gitnexus/src/core/ingestion/languages/php/captures.ts | Updates docs to reflect removal of legacy heritage leg. |
| gitnexus/src/core/ingestion/languages/php.ts | Removes heritage extractor wiring from PHP provider. |
| gitnexus/src/core/ingestion/languages/kotlin/scope-resolver.ts | Updates Kotlin resolver header to remove migrated/flag wording. |
| gitnexus/src/core/ingestion/languages/kotlin/captures.ts | Updates docs to reflect removal of legacy heritage leg. |
| gitnexus/src/core/ingestion/languages/kotlin.ts | Removes heritage extractor wiring from Kotlin provider. |
| gitnexus/src/core/ingestion/languages/javascript/captures.ts | Updates docs to reflect removal of legacy heritage leg. |
| gitnexus/src/core/ingestion/languages/java/scope-resolver.ts | Updates Java resolver header to remove parity/flag wording. |
| gitnexus/src/core/ingestion/languages/java/captures.ts | Updates docs to reflect removal of legacy heritage leg. |
| gitnexus/src/core/ingestion/languages/java.ts | Removes interfaceNamePattern + heritage extractor wiring from Java provider. |
| gitnexus/src/core/ingestion/languages/go/captures.ts | Updates docs to reflect removal of legacy heritage leg. |
| gitnexus/src/core/ingestion/languages/go.ts | Removes heritage extractor wiring from Go provider. |
| gitnexus/src/core/ingestion/languages/dart.ts | Removes heritage extractor wiring from Dart provider. |
| gitnexus/src/core/ingestion/languages/csharp/captures.ts | Updates docs to reflect removal of legacy heritage leg. |
| gitnexus/src/core/ingestion/languages/csharp.ts | Removes interfaceNamePattern + heritage extractor wiring from C# provider. |
| gitnexus/src/core/ingestion/languages/c-cpp.ts | Removes heritage extractor wiring from C/C++ providers. |
| gitnexus/src/core/ingestion/language-provider.ts | Removes legacy DAG + heritage extractor configuration surface from LanguageProvider. |
| gitnexus/src/core/ingestion/import-processor.ts | Makes legacy IMPORTS-edge emission inert for supported languages. |
| gitnexus/src/core/ingestion/heritage-types.ts | Deletes legacy heritage extractor type surface. |
| gitnexus/src/core/ingestion/heritage-extractors/generic.ts | Deletes legacy generic heritage extractor factory. |
| gitnexus/src/core/ingestion/heritage-extractors/configs/typescript.ts | Deletes legacy heritage extractor config (TypeScript). |
| gitnexus/src/core/ingestion/heritage-extractors/configs/rust.ts | Deletes legacy heritage extractor config (Rust). |
| gitnexus/src/core/ingestion/heritage-extractors/configs/ruby.ts | Deletes legacy heritage extractor config (Ruby). |
| gitnexus/src/core/ingestion/heritage-extractors/configs/python.ts | Deletes legacy heritage extractor config (Python). |
| gitnexus/src/core/ingestion/heritage-extractors/configs/kotlin.ts | Deletes legacy heritage extractor config (Kotlin). |
| gitnexus/src/core/ingestion/heritage-extractors/configs/javascript.ts | Deletes legacy heritage extractor config (JavaScript). |
| gitnexus/src/core/ingestion/heritage-extractors/configs/java.ts | Deletes legacy heritage extractor config (Java). |
| gitnexus/src/core/ingestion/heritage-extractors/configs/go.ts | Deletes legacy heritage extractor config (Go). |
| gitnexus/src/core/ingestion/heritage-extractors/configs/csharp.ts | Deletes legacy heritage extractor config (C#). |
| gitnexus/src/core/ingestion/heritage-extractors/configs/cpp.ts | Deletes legacy heritage extractor config (C++). |
| gitnexus/src/core/ingestion/finalize-orchestrator.ts | Updates comment wording (legacy HeritageMap bridge terminology). |
| gitnexus/src/core/ingestion/call-types.ts | Removes legacy call-resolution DAG types. |
| gitnexus/src/core/ingestion/call-routing.ts | Updates Ruby mixin routing comment to match scope-resolution ownership. |
| gitnexus/scripts/run-parity.ts | Deletes parity runner script. |
| gitnexus/scripts/ci-list-migrated-languages.ts | Deletes CI parity matrix discovery helper. |
| gitnexus/scripts/bench-scope-resolution.ts | Removes registry-primary env forcing from bench script. |
| gitnexus/package.json | Removes test:parity script. |
| gitnexus/bench/scope-capture/baselines.json | Re-baselines fingerprints due to comment/text shifts (not capture logic). |
| gitnexus/bench/python-scope/baseline-fingerprint.txt | Updates python-scope baseline fingerprint. |
| CLAUDE.md | Updates documentation pointers away from deleted Call-Resolution DAG section. |
| AGENTS.md | Updates ingestion documentation to scope-resolution-only model. |
| .github/workflows/publish.yml | Removes mention of deleted scope-parity workflow from comments. |
| .github/workflows/ci.yml | Removes scope-parity job; clarifies resolver tests run in standard tests workflow. |
| .github/workflows/ci-scope-parity.yml | Deletes the scope-resolution parity reusable workflow. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| @@ -3,23 +3,20 @@ | |||
| * | |||
| * Generic registry-primary resolution phase (RFC #909 Ring 3). | |||
…patwari#942) Two more CI failures, same root cause as the bench re-baseline (the test-cleanup reworded comments in lang-resolution bench/golden-corpus fixtures): - quality/format: prettier on tree-sitter-languages.test.ts (blank line left by the deleted heritage-capture tests) + TESTING.md (the rewritten section). - tests/ubuntu/coverage: `csharp-captures-golden` (and python/ruby/rust) drifted because the edited fixtures feed the per-language capture-golden snapshots too (not just the bench). Regenerated via UPDATE_GOLDEN=1. Verified safe: only the edited-fixture entries changed; csharp `captureGroups` unchanged (38) — digest shifted from comment-position only; capture LOGIC untouched. 1168 scope- resolution tests pass. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Resolve bench/scope-capture/baselines.json conflict: take main's entry set (incl. abhigyanpatwari#1992 rust re-baseline + history notes) and re-measure the merged tree, updating the 6 fingerprints the abhigyanpatwari#942 fixture-comment scrub shifts (csharp, rust, ruby, java, javascript, kotlin). Capture LOGIC is unchanged — only byte-positions move, so the digest gate re-baselines. rust folds both sides: main's abhigyanpatwari#1992 inherent-impl ownership + the abhigyanpatwari#942 comment scrub (b00aea0f -> ac610bbe). Bench --check PASS (14 langs), python-scope PASS, goldens PASS (64 files/1168 tests), tsc clean, acceptance grep zero. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…o refactor/942-delete-legacy-resolution Same baselines.json resolution as the prior merge: take main's entry set (now incl. abhigyanpatwari#2004 cpp re-baseline) and re-measure the merged tree, re-applying the 6 abhigyanpatwari#942 fixture-comment-scrub fingerprints (csharp/rust/ruby/java/js/kotlin). cpp folds in from main automatically (no abhigyanpatwari#942 cpp fixture change). Bench --check PASS (14 langs). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…irectly The parity-aware `it` wrapper became a no-op when abhigyanpatwari#942 removed the legacy call-resolution DAG (it just returned vitest's `it`). Remove it entirely so the resolver tests call vitest's `it` directly instead of shadowing it with a local `const it` (or `pit`/`rustParityIt`): - helpers.ts: delete createResolverParityIt + its now-unused vitestIt import and VitestIt type. - 16 files: drop `const it = createResolverParityIt('x')` and import `it` from vitest instead. - ruby.test.ts (pit) + rust.test.ts (rustParityIt): rename calls to `it`. - Scrub every comment that described the removed wrapper / dual-mode parity skip / legacy_skip gate (vue-scope, js/ts/dart/php/python headers, rust x2, cpp, swift x4, rust-coverage). Genuine test rationale is kept; only the vestigial two-leg framing is dropped. Accurate "legacy DAG (removed in abhigyanpatwari#942)" historical notes are retained. No fixtures touched (no bench/golden re-baseline). tsc clean; rust+ruby resolver suites green (323 tests, incl. abhigyanpatwari#1992 worker-path parity after a local dist build). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
8b215d5 to
35b3cd3
Compare
…o refactor/942-delete-legacy-resolution Two conflicts resolved: - bench/scope-capture/baselines.json: same regenerate recipe (take main's entry set, re-measure merged tree, re-apply the 6 abhigyanpatwari#942 fixture-scrub fingerprints). Bench --check PASS (14 langs). - test/integration/resolvers/helpers.ts: abhigyanpatwari#2005 added cpp entries to LEGACY_RESOLVER_PARITY_EXPECTED_FAILURES, a ~665-line legacy-parity map that abhigyanpatwari#942 deletes wholesale. Keep abhigyanpatwari#942's deletion (the map is dead once the legacy leg is gone); discard abhigyanpatwari#2005's additions to it. No resolver test references the map (tsc clean). abhigyanpatwari#2005's 67 new cpp.test.ts cases auto-merge and run as plain scope-resolution tests: cpp.test.ts 297 pass. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
… legacy-DAG removal) Resolved conflicts from #2023 (delete legacy call-resolution DAG + heritage processor, #942): - test/integration/resolvers/helpers.ts: took #942's removal of LEGACY_RESOLVER_PARITY_EXPECTED_FAILURES + the createResolverParityIt / isLegacyResolverParity* helpers (no legacy leg remains; only a kotlin doc comment referenced the list). - test/integration/resolvers/ruby.test.ts: converted the three #1991 `pit(...)` (parity-gated `it`) calls to plain `it(...)`, matching #942's single-leg harness. - bench/scope-capture/baselines.json (ruby): both sides changed it — #942 reworded fixture comments (shifting capture byte-positions; capture LOGIC unchanged) and #1991 added the ruby-nested-mixin-tail-collision fixture. Recomputed the ruby fingerprint on the merged tree: bf6b13a -> b5ea93bb (86 fixtures). Verified on the merged tree: bench --check PASS (14 languages), tsc 0 errors, ruby resolver + ruby-captures-golden 159/159, prettier clean. F5 predicate + swaps intact through the auto-merge. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
RING4-1: Delete legacy call-resolution DAG + heritage processor
Closes #942.
All 16 production languages (incl. Vue #940) are registry-primary, so the two legacy resolution legs only ran under the CI scope-parity gate — never in production. This retires them. Calls and inheritance now resolve exclusively through scope-resolution (
Registry.lookup,preEmitInheritanceEdges,emitHeritageEdges,buildMro→MethodDispatchIndex).Net: 3 commits, ~−18k lines.
1. Delete the legacy resolution legs (
d69a3d44)call-processor.tslegacy body (processCalls,processCallsFromExtracted,resolveCallTarget+ all resolver/dispatch/chain helpers),model/resolve.tsMRO-via-HeritageMap,model/heritage-map.ts,type-envDAG types;inferImplicitReceiver/selectDispatchLanguageProviderhooks + Ruby impls.heritage-processor.ts,heritage-types.ts,heritage-extractors/,@heritage.*tree-sitter queries,heritageExtractor/heritageDefaultEdge/interfaceNamePatternwiring, the worker + parse-impl heritage passes (parse-worker ↔ parsing-processor lockstep), and the guttedcross-file-impl.tspropagation.scripts/run-parity.ts,scripts/ci-list-migrated-languages.ts,.github/workflows/ci-scope-parity.yml, thetest:parityscript, and thescope-parityci.ymlgate are gone. The resolver integration tests still run in the normaltestsjob.type-env.tsbuildTypeEnv(field extraction / structure phase / embeddings),model/resolve.tsc3Linearize/gatherAncestors(graph MRO phase), route/fetch/exported-type-map helpers incall-processor.ts,preEmitInheritanceEdges(legacy-edge dedup simplified).ARCHITECTURE.mdupdated to scope-resolution-only.2. Review autofixes (
7205b3f6)parse-cache.ts: bumpedSCHEMA_BUMP2→3 (ParseWorkerResultlost itsheritagefield — invalidates stale caches, prevents a rollback replaying a heritage-less cache).AGENTS.md/CLAUDE.mdto the deleted "§ Call-Resolution DAG" section (language-neutrality rule preserved).3. Remove the vestigial
isRegistryPrimaryflag (87561e96)With the DAG gone,
REGISTRY_PRIMARY_<LANG>/isRegistryPrimary/MIGRATED_LANGUAGEShad one meaningful state and a=0override could only disable resolution with no fallback. Removedregistry-primary-flag.ts+ the deadshadow-harness.ts; the three flag gates collapse behavior-preservingly (SCOPE_RESOLVERS == MIGRATED_LANGUAGES). Adding a language is now a singleSCOPE_RESOLVERSregistration.Acceptance (per #942)
resolveCallTarget,inferImplicitReceiver,selectDispatch,buildHeritageMap,HeritageMap,processHeritage,heritageExtractor,@heritage.acrosssrc+test.tsc --noEmitclean (both packages).@reference.inheritsunchanged).ARCHITECTURE.mddocuments inheritance/calls as scope-resolution-only.Residual Review Findings
Surfaced by the code review, deliberately scoped out (not #942 defects):
calls/assignments/constructorBindingsonParseWorkerResult(formerly consumed by the deferred call DAG); they now have no downstream reader. Harmless (confirmed by correctness review), but wasted CPU/memory. Removing them is a follow-up worker-result-schema cleanup (cache version already bumped here).createResolverParityItpassthrough.test/integration/resolvers/helpers.tsnow returns vitest'situnchanged; the 18 resolver test files still call it. Inlining to plainitis a mechanical follow-up.