Implement PR-A2: SpEL/constant-ref routes and route MCP tools#7
Conversation
Co-authored-by: Cursor <[email protected]>
Review: PR-A2 — SpEL/constant-ref routes + Route MCP toolsVerdict: Approved ✅ Clean, surgical implementation that finishes B2a per plan. Three-strategy ladder, kuzu helpers, and MCP wiring all match the proposal; scope discipline is excellent (zero leak into B2b/A3/brownfield/schema/ontology). Scope discipline (out-of-scope checks)
Three-strategy ladder
The new
|
Co-Authored-By: Claude Opus 4.7 <[email protected]>
…gns (#213) * plan: DESCRIBE-HINTS-STRUCTURAL — type wiring and method-body road signs Co-Authored-By: Claude Opus 4.7 <[email protected]> * plan: remove optional label from test #7 (21 tests, all required) Co-Authored-By: Claude Opus 4.7 <[email protected]> --------- Co-authored-by: Claude Opus 4.7 <[email protected]>
Summary
Implements PR-A2 from
plans/PLAN-TIER1-COMPLETION.md/plans/CURSOR-PROMPTS-TIER1.md(B2a SpEL/constant-ref + read-only route tools).Behaviour
ast_java.py: three-strategy route values (literal →annotation, string with${…}→spel, other AST →constant_ref) for HTTP mappings and messaging annotations; merge with class-level path preservesconstant_reffor concat expressions that are not a single string literal.build_ast_graph.py: unresolved HTTP routes get emptypath_template/path_regex;_route_idincludes raw path when template is empty to avoid id collisions.kuzu_queries.py:list_routes,find_route_handlers,get_route_by_path.server.py: MCP tools +_INSTRUCTIONS(notesfind_route_callersdeferred to B2b).route_extraction_smoke; MCP smoke;FeignTripleDupfixture for three handlers on one route id.README.md: tools table + short route-resolution note.Validation
python3 -m pytest tests -q→ 177 passed, 3 skipped.Manual / fixture note
tests/bank-chat-system:routes_resolved_pctwas ~81.8% in a local pass4 run (mix of resolved and unresolved routes).Re-index
build_ast_graph.pyorrefresh_code_index) to pick up route semantics; ontology version unchanged at 5.Made with Cursor