Andrew Hundt
a775040358
fix(mcp,store,pagerank,pipeline): 18 bugs fixed, DF-1 degree precompute, pass_normalize, 11 TDD tests
Phases 1-8 from comprehensive plan (notes/2026-03-26-0013-plan-*.md):
Phase 1 — Input validation (F1,F4,F6,F7,F9,F10,F15):
mcp.c: empty label→NULL, limit≤0→default, sort_by/mode enum validation,
regex pre-validation via cbm_regcomp, depth clamp, direction validation
Phase 2 — B7 Cypher param fix + CQ-2 project expansion:
mcp.c:handle_query_graph reads "cypher" first with "query" fallback,
uses resolve_project_store for "self"/"dep"/path shortcuts
Phase 3 — DRY resolve_project_store in 5 handlers:
handle_get_graph_schema, handle_index_status, handle_get_architecture,
handle_get_code_snippet, handle_index_dependencies
Phase 4 — DF-1 degree precompute (100× faster queries):
store.c: node_degree table DDL, search SELECT uses LEFT JOIN with
HC-6 fallback to edge COUNT, cbm_store_node_degree reads precomputed
table, arch_hotspots uses nd.calls_in, arch_boundaries adds behavioral types
pagerank.c: is_calls field, degree accumulation during edge iteration,
node_degree batch INSERT after LinkRank, OOM-safe allocations
Phase 5 — B2/B5 name-based caller fallback:
pass_calls.c: 3-step resolution (exact QN → shared helper → Module)
graph_buffer.c: cbm_gbuf_resolve_by_name_in_file DRY helper (HC-1)
Phase 6 — B17/B13 class-method edge repair:
NEW pass_normalize.c: enforces I2 (Method→Class) and I3 (Field→Class)
invariants via QN prefix + name+label+file fallback. O(M+F) runtime.
pipeline.c: normalize pass before dump. Makefile.cbm updated.
Phase 7 — CBMLangSpec section_node_types field:
lang_specs.h: added section_node_types (17th field)
lang_specs.c: all 64 language specs updated with NULL initializer
Phase 8 — IX-1..3 indexing pathway fixes:
mcp.c: autoindex_failed + just_autoindexed flags in server struct,
REQUIRE_STORE captures pipeline return code, build_resource_status
shows "indexing" state + failure detail + action_required hints
Additional fixes:
G1: summary mode adds results=[] + results_suppressed=true
CQ-3: Cypher + filter params produces warning
Tests: 2238 pass (11 new in test_input_validation.c covering F1,F6,F9,
F10,F15 edge cases, G1, CQ-3, IX-2). Updated test_store_nodes.c for
total degree. Updated test_token_reduction.c for G1 results key.
Signed-off-by: Andrew Hundt <ATHundt@gmail.com>
2026-03-26 01:59:37 -04:00
..
2026-03-18 14:23:46 +01:00
2026-03-18 16:28:27 +01:00
2026-03-17 22:05:57 +01:00
2026-03-15 19:26:12 +01:00
2026-03-15 22:37:34 +01:00
2026-03-17 22:05:57 +01:00
2026-03-18 18:47:43 +01:00
2026-03-17 22:05:57 +01:00
2026-03-15 22:37:34 +01:00
2026-03-17 22:05:57 +01:00
2026-03-15 22:37:34 +01:00
2026-03-15 22:37:34 +01:00
2026-03-15 22:37:34 +01:00
2026-03-15 22:37:34 +01:00
2026-03-15 22:37:34 +01:00
2026-03-15 22:37:34 +01:00
2026-03-15 19:26:12 +01:00
2026-03-15 22:37:34 +01:00
2026-03-05 22:39:01 +01:00
2026-03-05 22:39:01 +01:00
2026-03-05 22:39:01 +01:00
2026-03-05 22:39:01 +01:00
2026-03-05 22:39:01 +01:00
2026-03-05 22:39:01 +01:00
2026-03-05 22:39:01 +01:00
2026-03-05 22:39:01 +01:00
2026-03-05 22:39:01 +01:00
2026-03-05 22:39:01 +01:00
2026-03-05 22:39:01 +01:00
2026-03-05 22:39:01 +01:00
2026-03-05 22:39:01 +01:00
2026-03-05 22:39:01 +01:00
2026-03-05 22:39:01 +01:00
2026-03-05 22:39:01 +01:00
2026-03-07 10:46:21 +01:00
2026-03-05 22:39:01 +01:00
2026-03-05 22:39:01 +01:00
2026-03-05 22:39:01 +01:00
2026-03-05 22:39:01 +01:00
2026-03-05 22:39:01 +01:00
2026-03-05 22:39:01 +01:00
2026-03-05 22:39:01 +01:00
2026-03-05 22:39:01 +01:00
2026-03-05 22:39:01 +01:00
2026-03-05 22:39:01 +01:00
2026-03-05 22:39:01 +01:00
2026-03-05 22:39:01 +01:00
2026-03-05 22:39:01 +01:00
2026-03-05 22:39:01 +01:00
2026-03-05 22:39:01 +01:00
2026-03-07 10:46:21 +01:00
2026-03-05 22:39:01 +01:00
2026-03-07 10:46:21 +01:00
2026-03-05 22:39:01 +01:00
2026-03-05 22:39:01 +01:00
2026-03-07 10:46:21 +01:00
2026-03-05 22:39:01 +01:00
2026-03-05 22:39:01 +01:00
2026-03-05 22:39:01 +01:00
2026-03-05 22:39:01 +01:00
2026-03-05 22:39:01 +01:00
2026-03-05 22:39:01 +01:00
2026-03-05 22:39:01 +01:00
2026-03-05 22:39:01 +01:00
2026-03-05 22:39:01 +01:00
2026-03-05 22:39:01 +01:00
2026-03-05 22:39:01 +01:00
2026-03-05 22:39:01 +01:00
2026-03-05 22:39:01 +01:00
2026-03-05 22:39:01 +01:00
2026-03-05 22:39:01 +01:00
2026-03-05 22:39:01 +01:00
2026-03-05 22:39:01 +01:00
2026-03-05 22:39:01 +01:00
2026-03-05 22:39:01 +01:00
2026-03-05 22:39:01 +01:00
2026-03-05 22:39:01 +01:00
2026-03-05 22:39:01 +01:00
2026-03-07 18:01:27 +01:00
2026-03-05 22:39:01 +01:00
2026-03-05 22:39:01 +01:00
2026-03-05 22:39:01 +01:00
2026-03-17 22:05:57 +01:00
2026-03-15 19:26:12 +01:00
2026-03-26 01:59:37 -04:00
2026-03-26 01:59:37 -04:00
2026-03-13 00:07:28 +01:00
2026-03-15 22:37:34 +01:00
2026-03-15 19:26:12 +01:00
2026-03-13 00:07:28 +01:00
2026-03-15 19:26:12 +01:00
2026-03-17 22:05:57 +01:00
2026-03-15 19:26:12 +01:00
2026-03-05 22:39:01 +01:00