fix PR-E1 follow-up contract and docs#19
Conversation
Restore analyze_pr risk_score normalization to [0,1], rename call-match ontology constant with alias compatibility, and document deferred Tier 1B behavior updates from the PR-E1 plan. Co-authored-by: Cursor <cursoragent@cursor.com>
Review: PR-E1 — post-Tier-1B follow-ups (items 1-6)Verdict: Approved ✅ All 6 plan items land verbatim with the contract fix in item 1 implemented exactly as recommended (re-normalise via Scope discipline (out-of-scope checks)
Plan compliance (plans/PLAN-POST-TIER1B-FOLLOWUPS.md)
Item 7 (strategy-ladder consolidation in TestsDelta from PR-D3 (260 passed, 4 skipped) is Manual evidence reproducedBuilt Identical to PR-D3's baseline — the alias is fully transparent at runtime. Alias check:
Notes that earned my trust
Observations (non-blocking)
Plan deltas neededNone — every plan item from PLAN-POST-TIER1B-FOLLOWUPS.md items 1-6 ships as specified. Item 7 (PR-E2) remains correctly outstanding. Ready to merge. After this lands, the follow-ups plan can mark items 1-6 ✅ shipped in PR-E1; only item 7 ( |
Add a concrete partial-override README example, tighten the risk delta test to isolate raw terms, and annotate pass6 idempotency with Tier-2 incremental-rebuild context. Co-authored-by: Cursor <cursoragent@cursor.com>
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.
Summary
analyze_prrisk-score normalization to keeprisk_scorein[0,1], and add tests for saturation and +0.2 single-caller bump behaviorVALID_CALL_MATCHESwhile keepingVALID_HTTP_CALL_MATCHESas a compatibility alias, and update pass6 match usage/commentsREADME.md,server.pytool description, and the completed Tier1B proposal schema table (channel)Test plan
ruff check .pytest tests/test_pr_analysis.py -qpytest tests -vMade with Cursor