Commit 39034ca
committed
feat: close architecture cockpit implementation gaps across extractors, pipeline, and MCP tools
Multi-language support:
- Add test extraction for Java (JUnit), Go, PHP (PHPUnit), Ruby (RSpec/Minitest), C# (NUnit/xUnit)
- Add signal collection (symbol_hints, call_sites, assertions) for PHP, Ruby, C# tests
- Add AST-based UI route extraction for Java Spring, Python Flask/FastAPI, Go HTTP,
PHP Laravel/Symfony, Ruby Rails, C# ASP.NET
- Restore hybrid AST+LLM rule extraction: tree-sitter splits code units, LLM
analyzes each concurrently via asyncio.gather, container names tracked
Schema extraction:
- Add deterministic parsers for Django models, SQLAlchemy models, Prisma schema
- LLM fallback preserved for unsupported ORM formats
Knowledge graph fixes:
- Fix import edges silently dropped: resolve IMPORTS to file-level edges via
batch symbol-to-file lookup (eliminates N+1 queries)
- Fix orphan SYMBOL cleanup scoped to source URIs (was deleting other sources' nodes)
- Fix _map_search_to_nodes natural_key mismatch: FILE nodes use raw URIs, not
file: prefixed keys — graph_rag queries now find local context
- Fix entity extraction: use pre-split Chunk table instead of whole documents,
removing silent 8000-char truncation that discarded most of large files
Architecture cockpit:
- Make arc42 sections data-driven: sections 1,2,4,8,9 now pull real extracted
data instead of static templates; section 10 computes quality from fact
confidence when quality_summary unavailable
- Enable arc42 generation on sync by default (arch_docs_generate_on_sync=true)
- Fix partial sync skipping GraphRAG chain: steps 5-7 now check if semantic
entities exist before skipping, preventing permanently empty graph on re-syncs
Code quality:
- Extract shared helpers to ast_utils.py: find_enclosing_class_name,
ruby_first_string_arg, java_annotation_names, csharp_attribute_names
- Fix flows.py duplicate symbol collection bug
- Add GraphRAG truncation logging and failure diagnostics
- Make MCP error messages actionable: research_validation, research_data_model,
research_architecture, graph_rag, get_arc42, arc42_drift_report now explain
possible causes and remediation steps instead of bare "not found"1 parent 4c66a34 commit 39034ca
File tree
17 files changed
+2490
-168
lines changed- apps
- api/app
- worker
- contextmine_worker
- tests
- packages/core
- contextmine_core
- analyzer/extractors
- architecture
- knowledge
- tests
17 files changed
+2490
-168
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1325 | 1325 | | |
1326 | 1326 | | |
1327 | 1327 | | |
1328 | | - | |
| 1328 | + | |
| 1329 | + | |
| 1330 | + | |
| 1331 | + | |
| 1332 | + | |
| 1333 | + | |
| 1334 | + | |
| 1335 | + | |
| 1336 | + | |
1329 | 1337 | | |
1330 | 1338 | | |
1331 | 1339 | | |
| |||
1481 | 1489 | | |
1482 | 1490 | | |
1483 | 1491 | | |
1484 | | - | |
| 1492 | + | |
| 1493 | + | |
| 1494 | + | |
| 1495 | + | |
| 1496 | + | |
| 1497 | + | |
| 1498 | + | |
| 1499 | + | |
1485 | 1500 | | |
1486 | 1501 | | |
1487 | 1502 | | |
| |||
1746 | 1761 | | |
1747 | 1762 | | |
1748 | 1763 | | |
1749 | | - | |
| 1764 | + | |
| 1765 | + | |
| 1766 | + | |
| 1767 | + | |
| 1768 | + | |
1750 | 1769 | | |
1751 | 1770 | | |
1752 | 1771 | | |
| |||
1988 | 2007 | | |
1989 | 2008 | | |
1990 | 2009 | | |
1991 | | - | |
| 2010 | + | |
| 2011 | + | |
| 2012 | + | |
| 2013 | + | |
| 2014 | + | |
| 2015 | + | |
| 2016 | + | |
| 2017 | + | |
| 2018 | + | |
1992 | 2019 | | |
1993 | 2020 | | |
1994 | 2021 | | |
| |||
2571 | 2598 | | |
2572 | 2599 | | |
2573 | 2600 | | |
2574 | | - | |
2575 | | - | |
2576 | | - | |
| 2601 | + | |
| 2602 | + | |
| 2603 | + | |
| 2604 | + | |
| 2605 | + | |
| 2606 | + | |
| 2607 | + | |
2577 | 2608 | | |
2578 | 2609 | | |
2579 | 2610 | | |
| |||
2660 | 2691 | | |
2661 | 2692 | | |
2662 | 2693 | | |
2663 | | - | |
| 2694 | + | |
| 2695 | + | |
| 2696 | + | |
| 2697 | + | |
| 2698 | + | |
| 2699 | + | |
2664 | 2700 | | |
2665 | 2701 | | |
2666 | 2702 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
945 | 945 | | |
946 | 946 | | |
947 | 947 | | |
948 | | - | |
949 | | - | |
| 948 | + | |
| 949 | + | |
| 950 | + | |
| 951 | + | |
950 | 952 | | |
951 | 953 | | |
952 | 954 | | |
| |||
1032 | 1034 | | |
1033 | 1035 | | |
1034 | 1036 | | |
| 1037 | + | |
| 1038 | + | |
| 1039 | + | |
| 1040 | + | |
| 1041 | + | |
| 1042 | + | |
| 1043 | + | |
| 1044 | + | |
| 1045 | + | |
| 1046 | + | |
| 1047 | + | |
| 1048 | + | |
| 1049 | + | |
| 1050 | + | |
| 1051 | + | |
| 1052 | + | |
| 1053 | + | |
| 1054 | + | |
| 1055 | + | |
| 1056 | + | |
| 1057 | + | |
| 1058 | + | |
| 1059 | + | |
| 1060 | + | |
| 1061 | + | |
| 1062 | + | |
| 1063 | + | |
| 1064 | + | |
| 1065 | + | |
| 1066 | + | |
| 1067 | + | |
| 1068 | + | |
1035 | 1069 | | |
1036 | 1070 | | |
1037 | 1071 | | |
| |||
1047 | 1081 | | |
1048 | 1082 | | |
1049 | 1083 | | |
1050 | | - | |
1051 | | - | |
| 1084 | + | |
| 1085 | + | |
| 1086 | + | |
| 1087 | + | |
| 1088 | + | |
| 1089 | + | |
| 1090 | + | |
| 1091 | + | |
| 1092 | + | |
1052 | 1093 | | |
1053 | 1094 | | |
1054 | 1095 | | |
| |||
1112 | 1153 | | |
1113 | 1154 | | |
1114 | 1155 | | |
1115 | | - | |
1116 | | - | |
| 1156 | + | |
| 1157 | + | |
| 1158 | + | |
| 1159 | + | |
| 1160 | + | |
| 1161 | + | |
| 1162 | + | |
| 1163 | + | |
| 1164 | + | |
| 1165 | + | |
1117 | 1166 | | |
1118 | 1167 | | |
1119 | 1168 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
360 | 360 | | |
361 | 361 | | |
362 | 362 | | |
363 | | - | |
| 363 | + | |
364 | 364 | | |
365 | 365 | | |
366 | | - | |
| 366 | + | |
367 | 367 | | |
368 | 368 | | |
369 | 369 | | |
| |||
375 | 375 | | |
376 | 376 | | |
377 | 377 | | |
| 378 | + | |
| 379 | + | |
| 380 | + | |
378 | 381 | | |
379 | 382 | | |
380 | 383 | | |
381 | | - | |
| 384 | + | |
382 | 385 | | |
383 | 386 | | |
384 | 387 | | |
| |||
417 | 420 | | |
418 | 421 | | |
419 | 422 | | |
| 423 | + | |
420 | 424 | | |
421 | 425 | | |
422 | 426 | | |
| |||
Lines changed: 86 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
76 | 76 | | |
77 | 77 | | |
78 | 78 | | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
79 | 165 | | |
80 | 166 | | |
81 | 167 | | |
| |||
Lines changed: 0 additions & 6 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
142 | 142 | | |
143 | 143 | | |
144 | 144 | | |
145 | | - | |
146 | | - | |
147 | | - | |
148 | | - | |
149 | | - | |
150 | | - | |
151 | 145 | | |
152 | 146 | | |
153 | 147 | | |
| |||
0 commit comments