Add universal C# and ASP.NET graph support - #243
Merged
Conversation
forhappy
marked this pull request as ready for review
August 14, 2026 05:32
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
AcceptVerbs,[NonAction], token composition, absolute templates, and overload-safe handlersMapGroupextraction from currentmainWhy
C# was still outside Compass's shared evidence/validation/resolution boundary. That made language behavior harder to qualify consistently and left ASP.NET controller routes dependent on the replaced raw extraction path. This cutover brings C# into the same typed, bounded, deterministic pipeline used by the other optimized languages without adding a Graphify runtime dependency.
Compatibility and impact
This is an intentional hard cutover of the internal C# production extractor. Public Code Graph v1 remains versioned and validated. C# identities and provenance now come from
compass.languages.csharp.universalandcompass.resolve.csharp.universal; ASP.NET MVC routes come fromcompass.frameworks.aspnet. Existing ASP.NET Minimal API coverage is retained.Validation
cargo fmt --all -- --checkcargo clippy --workspace --lib --bins --locked -- -D warningscargo test --workspace --lib --bins --lockedcargo test -p compass-languages --test csharp_universal_conformance --lockedcargo test -p compass-resolve --test universal_resolution --locked(184 passed)cargo test -p compass-resolve --test native_routes --locked(11 passed)./scripts/qualify_code_graph_v1.sh --fixtures-onlysh scripts/check_product_boundary.shFixture qualification passed all semantic, deterministic-byte, scale, and framework assertions. Its accepted partial-publication diagnostics reported 6 omitted nodes and 7 omitted edges with zero quarantined identity collisions.
Real-repository comparison
The implementation was also evaluated on
dotnet/aspnetcoreata5ee747919141424f649e308cb91ec40a0649fb9against Graphify 0.9.37:routes_toedges, and zero dangling endpointsThe full-corpus run also identified follow-up hardening areas outside this PR's initial cutover: 116 zero-width
InvalidRangeC# file failures, low hierarchy recall, receiver-typed cross-file call gaps, limited Minimal API recall, and peak-memory reduction.