feat: wire TypeScript and JavaScript universal candidates - #190
Merged
Conversation
forhappy
marked this pull request as ready for review
August 8, 2026 02:04
forhappy
force-pushed
the
codex/typescript-javascript-graph-quality
branch
from
August 8, 2026 02:07
dc7b9da to
c2562f9
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Route TypeScript and JavaScript production extraction through the registered
universal semantic candidate. Compass now uses one deterministic source-backed
path for normal builds and qualification fixtures, so universal evidence is
available to users instead of being qualification-only.
What changed
compass.typescript.candidateandcompass.javascript.candidateas the production universal adapters, with TSX canonicalized to TypeScript.
references, calls, constructions, heritage, aliases, members, JSX values,
decorators, resources, and type-query evidence with explicit provenance.
modules, package conditions, aliases, re-exports, callable values, and
framework route targets while preserving ambiguity and unresolved states.
universal merging, including Express/Next/Fastify/Hono/Remix-style routes.
cache reuse, and deterministic publication stable across clean, warm, rebuilt,
restored, and alternate-checkout builds.
analyzer guidance, qualification manifest, and changelog.
Impact
Compass no longer falls back to the legacy JavaScript/TypeScript extractor for
production graph generation. Cross-file and framework-aware graph quality now
comes from the same universal candidate that is independently qualified, with
fail-closed handling for ambiguous or unsupported bindings.
Validation
cargo fmt --all -- --checkcargo test --workspace --lib --bins --lockedcargo clippy --workspace --lib --bins --locked -- -D warningscargo test -p compass-languages --test typescript_universal_candidate --lockedcargo test -p compass-resolve --test typescript_routes --lockedsh scripts/check_product_boundary.shCARGO_TARGET_DIR=/Volumes/Workspace/crabbuild-target/compass-6923-inline ./scripts/qualify_code_graph_v1.sh --fixtures-onlyQualification passed with 57 languages, 1,041 coverage records, 1,773
invariants, 27 exact framework flows, and byte-identical clean/warm/rebuild/
restored/alternate outputs. Graph digest:
sha256:26a8e78a4c340627ccecc80042d21c9caed54604133c555bb5e4763a891da6c4.This remains a draft PR for review of the production hard cut.