EIB MCP RAG Full State of Affairs Report 2026 07 15 - TerrenceMcGuinness-NOAA/global-workflow GitHub Wiki
Server: eib-mcp-rag-full (local stdio, Python MCP server, DB_BACKEND=cots)
Host: Parallel Works COTS host (ChromaDB + Neo4j, mpnet768 embeddings)
Snapshot: 2026-07-15T16:40Z
Purpose: Build a robust, verifiable ground-truth context so we can evaluate what changes need to land in the top-level instruction files for GitHub Copilot (.github/copilot-instructions.md) and Kiro (.kiro/steering/*.md).
This report is generated by running every health/status/state MCP tool at maximum depth against the on-workspace COTS server, then cross-referencing the results with the CHANGELOG.md "Unreleased" entries, the 68 SDD workflow specs, and the 49 Kiro spec directories. It is not a report on the AWS agentcore-mcp-rag runtime โ the July 13 sister report on the Gateway/AgentCore surface is the companion for that plane.
| Dimension | Status | Notes |
|---|---|---|
| Overall Health | HEALTHY (4/4) | Base Server, Utility, Vector, Graph all pass |
| Functional Smoke Tests | 11/11 pass, 0 fail, 0 skip | All modules exercised end-to-end |
| Tool Surface | 53 tools across 9 active modules | 1 module inactive (SPOT โ parity with AgentCore) |
| Tenants | 5 configured, 5 filesystem-reachable |
gw (default), gw_sfs, gw_jedi_gfs, gw_v17, gw_gefs_v12
|
| Vector Store (ChromaDB) | 17 indices, 220,538 docs in gw, 15 collections |
Healthy |
| Graph Store (Neo4j) |
225,836 nodes / 4,051,374 rels in gw
|
Healthy |
| Knowledge Integrity | 4/4 checks pass (0 SKIP) | Phase 68 fix landed cleanly |
| Health Trend (15 snapshots) | Neo4j stable ยฑ0; ChromaDB +2,610 docs | No anomalies |
| Quality Benchmarks | MISSING | No quality_metrics.jsonl on disk |
| Manifest | v9.2.0, 67 sources (61 shared / 6 tenant) | Scope-aware naming live |
| Manifest Gap Detector | All 5 tracked collections report 0 actual | Naming-schema drift (details in ยง7) |
| SDD Framework | v6.0 Phase 31, 68 workflows, 49 sessions | 35 completed, 5 abandoned |
| Active SDD Session | None | Last completed: Phase 68 (RAG Data-Plane Gap Closure) |
| Latest CHANGELOG entry | Phase 68 โ RAG Data-Plane Gap Closure (Jul 10, 2026) | Verified COTS-truthfully |
| Active in-flight spec | cots-reingest-ralph-framework |
Paused after PoC; resume in fresh session |
Headline: The COTS stdio server is fully green on structure and behavior. The two open items that should shape the next instruction-file revision are (a) the manifest gap-detector's declared collection names no longer match the actual COTS collections produced by the Phase 68 resolve_collection_name namer, and (b) no RAG quality benchmark is currently on disk, so we cannot regression-detect embedding or retrieval changes.
Overall: HEALTHY (4/4 components)
| Component | Status | Detail |
|---|---|---|
| Base Server | [OK] | FastMCP running |
| Utility Tools | [OK] | 4 utility tools registered |
| Vector Database | [OK] | 17 indices |
| Graph Database | [OK] | 108,280 nodes, 4,229,217 relationships (unfiltered; per-tenant totals in ยง4) |
| tenant_id | branch | lifecycle | index_prefix | label_prefix | workflow_subdir | reachable |
|---|---|---|---|---|---|---|
gw |
develop |
production | (empty) | (empty) | develop |
yes |
gw_sfs |
dev/sfs |
experimental | gw_sfs_ |
GW_SFS_ |
dev-sfs |
yes |
gw_jedi_gfs |
dev/jedi-gfs |
experimental | gw_jedi_gfs_ |
GW_JEDI_GFS_ |
dev-jedi-gfs |
yes |
gw_v17 |
dev/gfs.v17 |
staging | gw_v17_ |
GW_V17_ |
dev-v17 |
yes |
gw_gefs_v12 |
release/gefs_v12 |
production | gw_gefs_v12_ |
GW_GEFS_V12_ |
gefs-v12 |
yes |
Default tenant: gw (resolved from catalog.defaults.tenant_id).
Mount root: /mcp_rag_eib/eib-mcp-rag-server/.pw_workflow_mount (mounted; all 5 subdirectories present).
| Module | Status | Latency | Notes |
|---|---|---|---|
semantic_search |
[OK] | 903 ms | Slowest โ expected (embed + vector search) |
code_analysis |
[OK] | 7 ms | Neo4j hot |
graph_rag |
[OK] | 5 ms | Neo4j hot |
ee2_compliance |
[OK] | 41 ms | |
operational |
[OK] | 43 ms | |
sdd_workflow |
[OK] | 0 ms | Filesystem |
workflow_info |
[OK] | 0 ms | Filesystem |
github_tools |
[OK] | 120 ms | GitHub API round-trip |
utility |
[OK] | 0 ms | Built-in |
code_awareness |
[OK] | 72 ms | |
branch_isolation |
[OK] | 108 ms | Multi-tenant probe |
Health snapshot persisted to health_history.jsonl (feeds ยง6).
- Version: MDC MCP/RAG Server v1.0.0
- Total tools: 53
-
Active modules: 9 of 10 โ
semantic_search,code_analysis,graph_rag,ee2_compliance,operational,sdd_workflow,workflow_info,github_tools,utility -
Tenants: 5 (default
gw) -
Capabilities: Data Access
connected; Vector Searchavailable; Graph Queriesavailable; Utility Toolsalways-on(4)
analyze_code_structure, analyze_ee2_compliance, analyze_repository_structure, analyze_workflow_dependencies, check_knowledge_integrity, checkpoint_state, complete_sdd_session, describe_component, explain_with_context, explain_workflow_component, extract_ci_error_signal, extract_code_for_analysis, find_callers_callees, find_dependencies, find_env_dependencies, find_related_files, find_similar_code, generate_compliance_report, get_change_impact, get_code_context, get_health_trend, get_ingested_urls_array, get_job_details, get_knowledge_base_status, get_operational_guidance, get_pull_requests, get_quality_metrics, get_sdd_execution_history, get_sdd_framework_status, get_sdd_session, get_sdd_workflow, get_server_info, get_session_context, get_system_configs, get_workflow_structure, list_all_sources, list_ingested_urls, list_job_scripts, list_sdd_workflows, mark_as_modified, mcp_health_check, record_sdd_step, restore_checkpoint, scan_repository_compliance, search_architecture, search_documentation, search_ee2_standards, search_issues, start_sdd_session, trace_data_flow, trace_execution_path, trace_full_execution_chain, validate_sdd_compliance.
- Collections: 15
- Total documents: 220,538
- Status: [OK] Healthy
| Collection | Documents |
|---|---|
global-workflow-docs-v8-1-0 |
20,511 |
code-with-context-v8-0-0 |
60,574 |
phase48-scratch |
3,630 |
jjobs-v8-0-0 |
700 |
mdc-jjobs-mpnet768 |
700 |
global-workflow-docs-v8-2-0 |
23,624 |
mdc-ee2-standards-mpnet768 |
34 |
community-summaries |
2,113 |
global-workflow-docs-v8-0-0 |
22,498 |
ci-test-cases-v1-0-0 |
74 |
ee2-standards-v5-0-0-enhanced |
34 |
jjobs-v8-1-0 |
859 |
mdc-code-context-mpnet768 |
60,576 |
mdc-workflow-docs-mpnet768 |
22,498 |
mdc-community-summaries-mpnet768 |
2,113 |
Note the co-existence of two naming families: the legacy versioned collections (*-v8-*-*) still serving as the reference set, and the new scope-aware mdc-*-mpnet768 collections introduced by Phase 68's collection_namer.py. This is the deliberate alongside pattern from the cots-reingest-ralph-* spec chain โ cutover is a separate human-gated step.
- Files: 17,273
- Functions: 113,571
- Classes: 648
- Total nodes: 225,836
- Total relationships: 4,051,374
- Status: [OK] Healthy
Relationship types (top 10):
| Type | Count |
|---|---|
CALLS |
3,306,540 |
USES |
679,698 |
DEPENDS_ON_ENV |
28,504 |
DEFINES |
11,687 |
IMPORTS |
9,141 |
EXPORTS |
7,276 |
DEPENDS_ON |
4,032 |
INVOKES |
2,579 |
SOURCES |
1,788 |
EXECUTES |
129 |
Label breakdown (top 10):
| Label | Count |
|---|---|
Function |
89,595 |
FortranSubroutine |
80,745 |
File |
17,273 |
FortranFunction |
16,849 |
FortranModule |
9,014 |
PythonFunction |
7,127 |
PythonModule |
1,480 |
Module |
1,330 |
FortranProgram |
1,186 |
ShellScript |
589 |
Overall: All checks passed โ this is the direct outcome of Phase 68's fix that unblocked the previously-[SKIP] checks.
| Check | Status | Details |
|---|---|---|
| Path Consistency | [OK] | 0/50 randomly sampled docs carry a checkout-specific prefix |
| Orphaned Graph Nodes | [OK] | 17,273 File nodes in graph; 0/20 sampled lack identity |
| Stale Embeddings | [OK] | 50/50 sampled docs appear current vs. their git source |
| Coverage Gap | [OK] | 106,608 Fortran symbols in graph; 7,242 files on disk (1,472.1% coverage) |
The "1472% coverage" is the expected symbols-per-file ratio (many symbols per Fortran file) โ it is a healthy signal that the graph is denser than the file inventory, not a sign of double-ingestion.
| Timestamp (UTC) | Neo4j Nodes | Neo4j Rels | ChromaDB Docs | Collections | Node Drift | Doc Drift |
|---|---|---|---|---|---|---|
| 2026-06-24 23:43 | 108,280 | 4,220,211 | 220,538 | 15 | 0 | 0 |
| 2026-06-25 22:00 | 108,280 | 4,220,211 | 220,538 | 15 | 0 | 0 |
| 2026-06-26 13:08 | 108,280 | 4,220,211 | 220,538 | 15 | 0 | 0 |
| 2026-06-26 20:31 | 108,280 | 4,220,211 | 220,538 | 15 | 0 | 0 |
| 2026-06-26 20:40 | 108,280 | 4,220,211 | 220,538 | 15 | 0 | 0 |
| 2026-06-26 23:23 | 108,280 | 4,220,211 | 220,538 | 15 | 0 | 0 |
| 2026-07-02 13:37 | 108,280 | 4,220,211 | 220,538 | 15 | 0 | 0 |
| 2026-07-02 16:01 | 108,280 | 4,220,211 | 220,538 | 15 | 0 | 0 |
| 2026-07-02 21:58 | 108,280 | 4,220,211 | 220,538 | 15 | 0 | 0 |
| 2026-07-02 22:03 | 108,280 | 4,220,211 | 220,538 | 15 | 0 | 0 |
| 2026-07-03 03:18 | 108,280 | 4,220,211 | 220,538 | 15 | 0 | 0 |
| 2026-07-09 22:07 | 108,280 | 4,229,217 | 223,148 | 17 | 0 | +2,610 |
| 2026-07-09 23:28 | 108,280 | 4,229,217 | 223,148 | 17 | 0 | 0 |
| 2026-07-10 02:26 | 108,280 | 4,229,217 | 223,148 | 17 | 0 | 0 |
| 2026-07-14 17:43 | 108,280 | 4,229,217 | 223,148 | 17 | 0 | 0 |
Trends
- Neo4j nodes: stable (+0 over 15 snapshots)
- ChromaDB docs: increasing (+2,610 over the window โ attributable to the July 8-10 Ralph-loop PoC that produced the two new
mdc-*collections +phase48-scratch; see CHANGELOG "COTS Full Re-Ingest via Ralph Loop")
Anomalies: none (all consecutive changes within the 10% threshold).
The current
get_knowledge_base_statusin ยง4 shows 220,538 docs / 15 collections while the trend rows since 2026-07-09 report 223,148 / 17. The delta (+2,610 / +2 collections) is the July PoC snapshot; the KB-status view is scoped to thegw(default) tenant per Phase 68's_filter_indices_by_tenantfix, so the two collections created forgw_v17(jjobs + partial documentation) are correctly excluded from thegwtenant total. This is expected behavior, not drift.
- Manifest version: 9.2.0
- Generated: 2026-07-15T16:40:13Z
- Total sources: 67 (65 enabled)
| Type | Sources | Enabled | Declared docs |
|---|---|---|---|
code_parse |
3 | 3 | 88,614 |
community_summary |
1 | 1 | 2,113 |
config_parse |
2 | 2 | 1,484 |
jjob_docs |
1 | 1 | 751 |
on_disk_submodule |
1 | 1 | 1,759 |
standards |
1 | 1 | 34 |
url_crawl |
58 | 56 | 19,489 |
| Scope | Sources | Enabled | Note |
|---|---|---|---|
shared |
61 | 59 | NWS-wide, ingested once (unprefixed collection) |
tenant |
6 | 6 | per (repo, branch) โ tenant-prefixed collection |
| Collection | Status | Declared | Actual | Coverage |
|---|---|---|---|---|
code-with-context-v8-0-0 |
gap | 90,098 | 0 | 0.0% |
community-summaries |
gap | 2,113 | 0 | 0.0% |
ee2-standards-v5-0-0-enhanced |
gap | 34 | 0 | 0.0% |
global-workflow-docs-v8-0-0 |
gap | 21,248 | 0 | 0.0% |
jjobs-v8-0-0 |
gap | 751 | 0 | 0.0% |
Finding โ naming-schema drift: the gap detector reports
0 actualfor every collection even though ยง4.1 shows those collections populated with real document counts. This is a detector-side lookup mismatch, not a data-plane loss. Phase 68'sresolve_collection_namemoved the naming authority tocollection_namer.py, but the gap-detector step oflist_all_sourcesis evidently comparing manifesttarget_collectionstrings against a resolver that now producesmdc-*-mpnet768-style names on COTS. This is the first candidate item for the next Kiro spec.
Result: No benchmark results found. Expected at sdd_framework/execution_state/quality_metrics.jsonl โ the file does not exist on this host.
Implications:
- We cannot detect P@k or MRR regressions from Phase 68 or the July Ralph-loop PoC.
- The 2026-07-02 comparative report MCP-Health-Status-Comparative-Report flagged this exact gap on AgentCore; it now applies to the COTS stdio server as well.
- Running the benchmark harness is a prerequisite for validating the eventual
mdc-*-mpnet768cutover.
Active platforms detected in env/: AWS-EC2, AWSPW, AZUREPW, CONTAINER, DERECHO, GAEAC6, GOOGLEPW, HERA, HERCULES, ORION, URSA, WCOSS2.
Path SPOT (tenant gw):
-
HOMEgfsโ/mcp_rag_eib/eib-mcp-rag-server/.pw_workflow_mount/develop - Jobs, Scripts, Utilities, Parameters, Source resolve under
${HOMEgfs}/...โ the Phase 67_developrename is transparent to the tenant, as intended.
- Version: 6.0 Phase 31
- Status: Operational
- Execution model: Session-Oriented Tracking
- Available workflows: 68
-
Total sessions: 49
- Completed: 35
- Abandoned: 5
None โ get_session_context returns "No Active Session". Every response you get during this conversation is currently un-attributed to a phase.
- [..] ISD approval โ dormant (reserved for Phase 4C USD)
- [..] WorkflowExecutor โ filesystem-backed; degraded on AgentCore microVM
- [OK] SpecificationParser โ active
- [OK] SelfModificationEngine โ available
| Status | Phase | Steps | Note |
|---|---|---|---|
| [!!] abandoned | phase60_code_awareness_tool_parity_branch_validation |
1 | early exit |
| [OK] completed | phase60_code_awareness_tool_parity_branch_validation |
6 | superseded the abandoned attempt |
| [!!] abandoned | phase63_python_container_parity_and_backend_rename |
3 | rescoped as 63a + 63b |
| [!!] abandoned | phase63b_python_container_gateway_parity |
2 | later completed via CHANGELOG Phase 63b |
| [OK] completed | Phase 68 โ RAG Data-Plane Gap Closure | 8 | last engagement |
The 5-item abandonment pattern is not a health problem โ in every case the abandoned session was replaced by a re-scoped follow-up (usually with a letter suffix), which is the intended behavior under .kiro/steering/07-feature-branch-spec-workflow.md.
The .kiro/specs/ directory now holds 49 spec directories. Grouped by state (inferred from CHANGELOG + wiki cross-reference):
-
rag-data-plane-gap-closureโ Phase 68 (Jul 10) โ the item that produced the "all integrity checks pass" line in ยง5. -
python-container-gateway-parityโ Phase 63b (Jul, per CHANGELOG) โ replaced legacy Node.jseib-mcp-rag:latestwitheib-mcp-rag-python:latest. -
backend-agnostic-refactor(Phase 63a) โDB_BACKEND=cots|aws|legacyrename;legacyaccepted for one release with a WARN. -
manifest-status-writeback(Phase 57),url-crawl-gap-closure(Phase 58),pdf-ingestion-pipeline(Phase 59).
-
cots-reingest-ralph-frameworkโ the Ralph-loop driver adopted frommreferre/ralph-loop-kiro-specs, with Slurmsbatchdispatch. PoC ran tov9-0-0(15 done / 3 skipped / 44 pending in.reingest_state/v9-0-0/state.json). Work paused pending a fresh session โ this is where the "next engagement" should resume. -
cots-reingest-ralph-loopโ Tasks 1-5, 9 complete; Tasks 6-8 carried into the framework spec. -
gemini-embedding-providerโ Phase 66, planning artifacts only, gated onGEMINI_API_KEY.
bedrock-embedding-reingestion, bedrock-native-embedding-swap, graceful-missing-index-handling, neptune-recovery-reingestion, omd-tenants-3-routing, tenant-status-honesty, tenant-source-drift-detection (Phase 69), search-deduplication, functional-smoke-tests.
-
Phase 68 โ RAG Data-Plane Gap Closure & Tenant-Scope Clarification (Jul 10, 2026) โ verified COTS-truthfully on this exact server; 11/11 health tests pass, 4/4 integrity checks run (0 SKIP), KB-status total docs 220,538 [OK] Healthy,
list_all_sourcesgained a By Scope breakdown. Manifest bumped v9.2.0 with mandatoryscope: tenant|sharedfield. -
COTS Full Re-Ingest via Ralph Loop (Jul 8-9, 2026) โ orchestration + State_Manager landed; PoC produced fresh
v9-0-0collections ingw_v17(gw_v17_mdc-jjobs-titan1024-v9-0-0+ partial documentation) plus new graph nodes stampedv9-0-0. State durable in.reingest_state/v9-0-0/. -
Phase 67 โ supported_repos Rename Path Conformance (Jul 8, 2026) โ 44 files updated to route
supported_repos/global-workflowโsupported_repos/global-workflow_develop. Tenant-aware ingesters required no path change (they usetenant.workflow_rootfromtenants.yaml).
The most recent [Unreleased] block is Phase 68; nothing has landed since Jul 10 on the CHANGELOG.
These are the concrete signals in this snapshot that suggest updates to .github/copilot-instructions.md and .kiro/steering/*.md:
-
Manifest v9.2.0 + scope-awareness is now a load-bearing SPOT, but the Copilot instructions still describe the ingest surface at Phase 63 vintage. The
scope: tenant|sharedrequired field, thecollection_namer.resolve_collection_name(domain, scope, tenant, version, profile)authority, and the tenant vs. shared collection-naming rules (mdc-{domain}-{profile}{suffix}vs.{index_prefix}mdc-{domain}-{profile}{suffix}) belong in the "Key Conventions โ SPOT" section. -
Gap-detector drift (ยง7): the
list_all_sourcesgap detector reports 0/0 for all five collections while the underlying data is present. A follow-up spec (candidate name:manifest-gap-detector-namer-alignment) is warranted; until it lands, the instructions should tell agents to not interpretlist_all_sourcesgap rows as data-loss without cross-checkingget_knowledge_base_status. -
Session tracking is off by default.
get_session_contextreports "No Active Session" and the last engagement (Phase 68) completed cleanly. The Superpowers assessment (SDD-Framework-Comparative-Assessment-Superpowers) already recommended auto-triggeringstart_sdd_sessionโ this is the right moment to promote that from a "recommendation" to an operating rule in.kiro/steering/02-development-workflow.mdand mirror it in.github/copilot-instructions.mdunder a new "Session Discipline" subsection. -
quality_metrics.jsonlis missing (ยง8). Instructions should call out running the benchmark harness after any RAG-plane change (embeddings, ingesters, resolver logic). Today it is only mentioned obliquely in the test-command block. -
Ralph-loop is the active in-flight orchestration (
cots-reingest-ralph-framework). Neither instruction set names it. Agents landing here without context could accidentally launch competing ingest runs. A one-line "Currently in-flight:cots-reingest-ralph-framework(paused; resume via itstasks.md)" note in04-phase48-progress.md(or a new14-active-in-flight-specs.mdsteering doc) would prevent this. -
The 5 abandoned SDD sessions are all rescopes (ยง10). They are noise unless we tag them as
superseded_by: <phase>.07-feature-branch-spec-workflow.mdcould gain a paragraph on the abandon-and-rescope pattern so it stops looking like failure inget_sdd_framework_statusoutput. -
The default-tenant filter is the correct behavior (ยง6 footnote). This is worth a one-liner in
.github/copilot-instructions.mdโ because the multi-tenant call surface can otherwise cause agents to conclude the KB shrank when a tool actually just changed its tenant scope. -
Container-image staleness rule is well-covered (Docker MCP Gateway section of Copilot instructions) โ no change needed. This snapshot confirms the current stdio server matches source; there is nothing to reconcile against the Python container image today.
- Did not modify
.github/copilot-instructions.mdor any.kiro/steering/*.md. Per project policy this report only stages the findings; the actual edits happen under a new Kiro spec after human review. - Did not touch
supported_repos/global-workflow_developor any other read-only submodule. The only submodule touched by this session issupported_repos/global-workflow.wiki, and only to publish this report + updateHome.md. - Did not run
git commitorgit pushoutside the wiki submodule โ no changes were made outside it.
Every table in this report is the direct return of one of the following calls against eib-mcp-rag-full (COTS stdio, DB_BACKEND=cots, MCP_DEFAULT_TENANT=gw) at 2026-07-15T16:40Z:
-
mcp_health_check(deep=true, detailed=true, functional=true)โ ยง2 -
get_server_info(include_capabilities=true)โ ยง3 -
get_knowledge_base_status(include_graph=true, include_vector=true)โ ยง4 -
check_knowledge_integrity(sample_size=50)โ ยง5 -
get_health_trend(limit=15)โ ยง6 -
list_all_sources(format=summary, include_gaps=true)โ ยง7 -
get_quality_metrics(compare=true)โ ยง8 -
get_system_configs(platform=all, config_type=all)โ ยง9 -
get_sdd_framework_status(detailed=true)โ ยง10 -
get_sdd_execution_history(analytics=true, limit=20)โ ยง10 -
get_session_context(include_dirty=true)โ ยง10
Companion reports on the AWS surface: agentcore-mcp-rag-Health-Status-Report-2026-07-13 and MCP-Health-Status-Comparative-Report.