plan: add item 8 to post-Tier-1B follow-ups (PR-E3 \u2014 intra-JVM CALLS invariant guard)#21
Merged
Merged
Conversation
Captures the deferred catch from the PR-E1 review reply (#19): pass3 doesn't enforce that CALLS edges stay within a single microservice. Today's clean state on cross_service_smoke (9 CALLS edges, 0 cross) is incidental \u2014 no caller.microservice == callee.microservice guard exists. FQN collisions across services or future brownfield supertype overrides could break the invariant silently. PR-E3 spec: - ~10-line guard in pass3_calls candidate-emit branches - new CallResolutionStats.skipped_cross_service counter - new graph_meta.pass3_skipped_cross_service field - new fqn_collision_smoke fixture - one test asserting guard fires + zero cross-service CALLS edges - existing fixtures continue to show counter == 0 Also flips the status header to reflect PR-E1 shipped + PR-E2/PR-E3 outstanding, and bumps the PR-boundaries section.
This was referenced May 11, 2026
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.
What
Adds item 8 to
plans/PLAN-POST-TIER1B-FOLLOWUPS.md: an intra-JVM CALLS invariant guard forpass3_calls. Originated as a deferred catch from the PR-E1 review reply.Also bumps the file's status header to reflect that PR-E1 shipped and PR-E2 / PR-E3 are outstanding.
Why
CALLSedges represent intra-JVM method dispatch \u2014 by Java's runtime model, a method call cannot leave the JVM. Anything crossing a microservice boundary must beHTTP_CALLSorASYNC_CALLS.Today's clean state is empirically verified but incidental:
Pass3 has no
caller.microservice == callee.microservicefilter. The cleanliness comes from the structural fact that real Maven/Gradle modules don't share classpaths and fixtures replicate that. But the invariant is implicit, not enforced.Failure modes the guard would catch:
overload_ambiguousbranch atbuild_ast_graph.py:1119._resolve_and_emit_call\u2014 a future contributor could add a fallback resolution path that doesn't realise the implicit invariant exists.What's in the new PR-E3 spec
CallResolutionStats.skipped_cross_servicecountergraph_meta.pass3_skipped_cross_servicefieldtests/fixtures/fqn_collision_smoke/(two services declaring the same FQN, third file calls it)Estimated size: tiny. ~10 production lines + one Java fixture pair + one test. Safe to ship before or after PR-E2 \u2014 they touch different files.
Tests
No code changes \u2014 plan-only. Tier 1B baseline (262 passed, 4 skipped after PR-E1) preserved.
Files
plans/PLAN-POST-TIER1B-FOLLOWUPS.md\u2014 added row 8 to the origin table; added PR-E3 section with background / failure modes / resolution / tests / DoD / risk; bumped status header; refreshed PR-boundaries section.