Chat with your documents on your local device using GPT models. No data leaves your device and 100% private.
This report summarizes scanner evidence for PromtEngineer/localGPT, a Python project with 22,193 GitHub stars. SynthScan examined 88,801 lines of code across 191 source files, recording 509 pattern matches distributed across 18 syntactic categories. The legacy adjusted pattern signal is 11.5 (Moderate pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Can maintainers explain intent, assumptions, and trade-offs? 235 finding(s).
Are imports declared and package/API names verified? 20 finding(s).
Are wrappers, guards, and repeated structures necessary? 282 finding(s).
Which changes need focused human review? 509 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 509 distinct pattern matches across 18 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | WATSONX_README.md | 112 | python -m rag_system.main api # RAG API on port 8001 | CODE |
| MEDIUM | DOCKER_README.md | 121 | ### RAG API Container (rag-api) | COMMENT |
| MEDIUM | DOCKER_README.md | 272 | # RAG API container (most debugging happens here) | COMMENT |
| MEDIUM | DOCKER_README.md | 284 | # Test RAG system initialization | COMMENT |
| MEDIUM | DOCKER_README.md | 298 | # Verify the backend can reach the RAG API by service name | COMMENT |
| MEDIUM | DOCKER_README.md | 354 | #### Every chat answers "Could not connect to the RAG API server" | COMMENT |
| MEDIUM | DOCKER_README.md | 373 | # (changing the embedding model requires rebuilding your indexes) | COMMENT |
| MEDIUM | README.md | 182 | # Skip frontend (Ollama + RAG API + backend only) | COMMENT |
| MEDIUM | README.md | 209 | # Terminal 2: Start RAG API | COMMENT |
| MEDIUM | README.md | 309 | # Test the RAG imports | COMMENT |
| MEDIUM | README.md | 405 | # Talk to the RAG API directly | COMMENT |
| MEDIUM | README.md | 630 | #### Dimension mismatch after changing the embedding model | COMMENT |
| MEDIUM | README.md | 746 | ### RAG API — http://localhost:8001 | COMMENT |
| MEDIUM | CONTRIBUTING.md | 47 | # Config, agent construction, embedding model and LanceDB access | COMMENT |
| MEDIUM | CONTRIBUTING.md | 50 | # Start Ollama + RAG API + backend + frontend | COMMENT |
| MEDIUM | CONTRIBUTING.md | 200 | ├── agent/ # Triage, decomposition, orchestration and verification loop | CODE |
| MEDIUM | CONTRIBUTING.md | 226 | # Config, agent construction, embedding model, LanceDB access, sample query | COMMENT |
| MEDIUM | docker-compose.yml | 23 | # RAG API server | COMMENT |
| MEDIUM | DOCKER_TROUBLESHOOTING.md | 102 | #### Problem: RAG API can't connect to Ollama | COMMENT |
| MEDIUM | DOCKER_TROUBLESHOOTING.md | 159 | ### 3. Backend / RAG API Wiring | COMMENT |
| MEDIUM | DOCKER_TROUBLESHOOTING.md | 161 | #### Problem: every chat fails with 502 "Could not connect to the RAG API server" | COMMENT |
| MEDIUM | DOCKER_TROUBLESHOOTING.md | 276 | # Lighter configuration (rebuild indexes after changing the embedding model) | COMMENT |
| MEDIUM | DOCKER_TROUBLESHOOTING.md | 281 | # Or switch the whole RAG API to the fast profile | COMMENT |
| MEDIUM | DOCKER_TROUBLESHOOTING.md | 352 | #### Problem: `changing the embedding model requires rebuilding the index` | COMMENT |
| MEDIUM | DOCKER_TROUBLESHOOTING.md | 365 | # RAG API container (most issues happen here) | COMMENT |
| MEDIUM | DOCKER_TROUBLESHOOTING.md | 408 | # Backend ↔ RAG API by service name | COMMENT |
| MEDIUM | DOCKER_TROUBLESHOOTING.md | 467 | # RAG API alone | COMMENT |
| MEDIUM | DOCKER_TROUBLESHOOTING.md | 575 | # Smaller embedding model (rebuild indexes afterwards) | COMMENT |
| MEDIUM | DOCKER_TROUBLESHOOTING.md | 600 | #### 2. Minimal Docker (RAG API only) | COMMENT |
| MEDIUM | test_docker_build.sh | 75 | # 1. RAG API (no dependencies) | COMMENT |
| MEDIUM | test_docker_build.sh | 82 | # 2. Backend (depends on RAG API) | COMMENT |
| MEDIUM | Documentation/api_reference.md | 1 | # 📚 API Reference (Backend Gateway & RAG API) | COMMENT |
| MEDIUM | Documentation/api_reference.md | 37 | | `/sessions/<id>/index` | POST | Index the session's documents | [Index options](#14-index-options) (optional) | the RA | CODE |
| MEDIUM | Documentation/api_reference.md | 149 | ## 2. RAG API — `http://localhost:8001` | COMMENT |
| MEDIUM | Documentation/architecture_overview.md | 103 | It is deliberately biased toward RAG. The agent-side triage in [§2.4](#24-in-process-pipeline-inside-the-rag-api) still | CODE |
| MEDIUM | Documentation/architecture_overview.md | 122 | ### 2.4 In-process pipeline inside the RAG API | COMMENT |
| MEDIUM | Documentation/system_overview.md | 403 | # Start the RAG API | COMMENT |
| MEDIUM | Documentation/research_roadmap.md | 103 | ## Phase 4 — Ideas adopted from agentic-file-search (implemented + benchmarked 2026-08-09) | COMMENT |
| MEDIUM | Documentation/research_roadmap.md | 120 | Source: [PromtEngineer/agentic-file-search](https://github.com/PromtEngineer/agentic-file-search) | CODE |
| MEDIUM | Documentation/deployment_guide.md | 131 | curl http://localhost:8001/health # RAG API | CODE |
| MEDIUM | Documentation/deployment_guide.md | 230 | # Terminal 1: RAG API | COMMENT |
| MEDIUM | Documentation/deployment_guide.md | 252 | python run_system.py --no-frontend # Ollama + RAG API + backend only | CODE |
| MEDIUM | Documentation/deployment_guide.md | 596 | # 4. Disable late chunking so a second embedding model is not loaded | COMMENT |
| MEDIUM | Documentation/installation_guide.md | 261 | # Deep check: imports, config, LanceDB, embedding model, sample query | COMMENT |
| MEDIUM | Documentation/installation_guide.md | 410 | #### **RAG System Test:** | COMMENT |
| MEDIUM | Documentation/installation_guide.md | 412 | # Test RAG system initialization (factory.py is the single entry point) | COMMENT |
| MEDIUM | Documentation/installation_guide.md | 579 | sudo ufw deny 8001/tcp # RAG API (internal only) | CODE |
| MEDIUM⚡ | Documentation/quick_start.md | 91 | curl http://localhost:8001/health # RAG API | CODE |
| MEDIUM | Documentation/quick_start.md | 152 | # Terminal 1: RAG API | COMMENT |
| MEDIUM | Documentation/quick_start.md | 178 | curl http://localhost:8001/health # RAG API | CODE |
| MEDIUM | Documentation/quick_start.md | 250 | python run_system.py --no-frontend # Ollama + RAG API + backend only | CODE |
| MEDIUM | Documentation/quick_start.md | 257 | python -m rag_system.api_server # RAG API only | CODE |
| MEDIUM | Documentation/quick_start.md | 383 | ├── 📁 rag_system/ # RAG API, agent, pipelines (config in main.py) | CODE |
| MEDIUM | Documentation/quick_start.md | 412 | # Start the RAG API (same as `python -m rag_system.api_server`) | COMMENT |
| MEDIUM | Documentation/docker_usage.md | 402 | #### Chats return "Could not connect to the RAG API server" | COMMENT |
| MEDIUM | Documentation/research/industry-evidence-2026.md | 12 | ## SECTION 1 — AGENTIC RAG vs CLASSIC PIPELINES: WHAT THE INDUSTRY CONVERGED ON | COMMENT |
| MEDIUM | Documentation/research/industry-evidence-2026.md | 22 | **SOURCE:** LangChain — Build a custom RAG agent with LangGraph — https://docs.langchain.com/oss/python/langgraph/agenti | CODE |
| MEDIUM | Documentation/research/industry-evidence-2026.md | 36 | **SOURCE:** LlamaIndex / Jerry Liu — "Beyond Chatbots: Adopting Agentic Document Workflows for Enterprises" — https://ww | CODE |
| MEDIUM | Documentation/research/industry-evidence-2026.md | 40 | **SOURCE:** LlamaIndex — "Agentic Document Workflows: A Practical Guide" — https://www.llamaindex.ai/blog/introducing-ag | CODE |
| MEDIUM | Documentation/research/industry-evidence-2026.md | 73 | ### 1.4 The counter-case: when agentic loops lose | COMMENT |
| 47 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | backend/server.py | 108 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | backend/server.py | 110 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | eval/run_eval.py | 174 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM | eval/run_eval.py | 176 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM | eval/run_eval.py | 243 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM | eval/run_eval.py | 245 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM | eval/run_eval.py | 420 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM | eval/run_eval.py | 422 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM | eval/run_eval.py | 494 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM | eval/run_eval.py | 496 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM | eval/multiturn/decomp_stability.py | 59 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM | eval/multiturn/decomp_stability.py | 61 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM | eval/multiturn/decomp_stability.py | 139 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM | eval/multiturn/decomp_stability.py | 141 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM | eval/multiturn/run_e2e_multiturn.py | 64 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM | eval/multiturn/run_e2e_multiturn.py | 66 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM | eval/multiturn/run_e2e_multiturn.py | 160 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM | eval/multiturn/run_e2e_multiturn.py | 162 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | rag_system/__init__.py | 4 | # --------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | rag_system/__init__.py | 6 | # --------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | rag_system/__init__.py | 10 | # --------------------------------------------------------- | COMMENT |
| MEDIUM | rag_system/__init__.py | 27 | # --------------------------------------------------------- | COMMENT |
| MEDIUM | rag_system/__init__.py | 29 | # --------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | rag_system/main.py | 14 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | rag_system/main.py | 16 | # ============================================================================ | COMMENT |
| MEDIUM | rag_system/main.py | 55 | # ============================================================================ | COMMENT |
| MEDIUM | rag_system/main.py | 57 | # ============================================================================ | COMMENT |
| MEDIUM | rag_system/main.py | 221 | # ============================================================================ | COMMENT |
| MEDIUM | rag_system/main.py | 223 | # ============================================================================ | COMMENT |
| MEDIUM | rag_system/ingestion/docling_chunker.py | 49 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | rag_system/ingestion/docling_chunker.py | 100 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | rag_system/ingestion/docling_chunker.py | 102 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | rag_system/ingestion/docling_chunker.py | 212 | # -------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | rag_system/ingestion/docling_chunker.py | 215 | # -------------------------------------------------------------- | COMMENT |
| MEDIUM | rag_system/rerankers/sentence_pruner.py | 30 | # --------------------------------------------------------------------- | COMMENT |
| MEDIUM | rag_system/rerankers/sentence_pruner.py | 32 | # --------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | rag_system/rerankers/sentence_pruner.py | 55 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | rag_system/rerankers/sentence_pruner.py | 57 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | rag_system/pipelines/retrieval_pipeline.py | 32 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | rag_system/pipelines/retrieval_pipeline.py | 34 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | rag_system/pipelines/retrieval_pipeline.py | 94 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | rag_system/pipelines/retrieval_pipeline.py | 96 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | rag_system/pipelines/retrieval_pipeline.py | 319 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | rag_system/pipelines/retrieval_pipeline.py | 321 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | rag_system/pipelines/retrieval_pipeline.py | 739 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | rag_system/pipelines/retrieval_pipeline.py | 741 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | rag_system/pipelines/retrieval_pipeline.py | 894 | # --------------------------------------------------------------- | COMMENT |
| MEDIUM | rag_system/pipelines/retrieval_pipeline.py | 896 | # --------------------------------------------------------------- | COMMENT |
| MEDIUM | rag_system/pipelines/retrieval_pipeline.py | 940 | # ----------------------------------------------------------- | COMMENT |
| MEDIUM | rag_system/pipelines/retrieval_pipeline.py | 942 | # ----------------------------------------------------------- | COMMENT |
| MEDIUM | rag_system/pipelines/retrieval_pipeline.py | 985 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | rag_system/pipelines/retrieval_pipeline.py | 1037 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | rag_system/pipelines/retrieval_pipeline.py | 1210 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | rag_system/pipelines/retrieval_pipeline.py | 1212 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | rag_system/pipelines/retrieval_pipeline.py | 1550 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | rag_system/pipelines/retrieval_pipeline.py | 1552 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | rag_system/pipelines/retrieval_pipeline.py | 604 | # ------------------------------------------------------------------ | STRING |
| MEDIUM | rag_system/pipelines/retrieval_pipeline.py | 607 | # ------------------------------------------------------------------ | STRING |
| MEDIUM⚡ | rag_system/pipelines/indexing_pipeline.py | 316 | # --------------------------------------------------- | COMMENT |
| MEDIUM⚡ | rag_system/pipelines/indexing_pipeline.py | 318 | # --------------------------------------------------- | COMMENT |
| 27 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | system_health_check.py | 21 | except Exception: | CODE |
| LOW | system_health_check.py | 41 | except Exception as e: | CODE |
| LOW | system_health_check.py | 79 | except Exception as e: | CODE |
| LOW | system_health_check.py | 120 | except Exception as e: | CODE |
| LOW | system_health_check.py | 140 | except Exception as e: | CODE |
| LOW | system_health_check.py | 163 | except Exception as e: | CODE |
| LOW | system_health_check.py | 200 | except Exception as e: | CODE |
| LOW | create_index_script.py | 55 | except Exception as e: | CODE |
| LOW | create_index_script.py | 257 | except Exception as e: | CODE |
| LOW | create_index_script.py | 284 | except Exception as e: | CODE |
| LOW | create_index_script.py | 337 | except Exception as e: | CODE |
| LOW | create_index_script.py | 403 | except Exception as e: | CODE |
| LOW | run_system.py | 320 | except Exception as e: | CODE |
| LOW | run_system.py | 392 | except Exception as e: | CODE |
| LOW | run_system.py | 654 | except Exception as e: | CODE |
| MEDIUM | run_system.py | 350 | def _read_pidfile(self) -> Dict: | CODE |
| MEDIUM | backend/server.py | 983 | def handle_get_indexes(self): | CODE |
| MEDIUM | backend/server.py | 1000 | def handle_create_index(self): | CODE |
| LOW⚡ | backend/server.py | 485 | except Exception as e: | CODE |
| LOW⚡ | backend/server.py | 494 | except Exception as e: | CODE |
| LOW⚡ | backend/server.py | 978 | except Exception as e: | CODE |
| LOW⚡ | backend/server.py | 987 | except Exception as e: | CODE |
| LOW⚡ | backend/server.py | 997 | except Exception as e: | CODE |
| LOW⚡ | backend/server.py | 1108 | except Exception as e: | CODE |
| LOW⚡ | backend/server.py | 1115 | except Exception as e: | CODE |
| LOW | backend/server.py | 411 | except Exception as e: | CODE |
| LOW | backend/server.py | 505 | except Exception as e: | CODE |
| LOW | backend/server.py | 518 | except Exception as e: | CODE |
| LOW | backend/server.py | 539 | except Exception as e: | CODE |
| LOW | backend/server.py | 562 | except Exception as e: | CODE |
| LOW | backend/server.py | 587 | except Exception as e: | CODE |
| LOW | backend/server.py | 672 | except Exception as e: | CODE |
| LOW | backend/server.py | 719 | except Exception as e: | CODE |
| LOW | backend/server.py | 783 | except Exception as e: | CODE |
| LOW | backend/server.py | 920 | except Exception as e: | CODE |
| LOW | backend/server.py | 940 | except Exception as e: | CODE |
| LOW | backend/server.py | 1029 | except Exception as e: | CODE |
| LOW | backend/server.py | 1088 | except Exception as e: | CODE |
| LOW | backend/server.py | 1134 | except Exception as e: | CODE |
| LOW | backend/server.py | 1145 | except Exception as e: | CODE |
| LOW | backend/server.py | 1189 | except Exception as e: | CODE |
| LOW | backend/server.py | 1223 | except Exception as e: | CODE |
| LOW | backend/server.py | 1243 | except Exception as e: | CODE |
| MEDIUM | backend/ollama_client.py | 57 | print(f"Error fetching models: {e}") | CODE |
| MEDIUM | backend/ollama_client.py | 81 | print(f"Error pulling model: {e}") | CODE |
| LOW | backend/database.py | 19 | except Exception: | CODE |
| LOW | backend/database.py | 483 | except Exception as e: | STRING |
| LOW | backend/database.py | 485 | except Exception as e: | STRING |
| LOW | backend/database.py | 580 | except Exception as e: | STRING |
| LOW | backend/database.py | 710 | except Exception as e: | STRING |
| LOW | backend/database.py | 714 | except Exception as e: | STRING |
| LOW | eval/smoke_e2e.py | 331 | except Exception as e: # noqa: BLE001 — a crash here is a smoke failure, not a traceback | CODE |
| LOW | eval/multiturn/decomp_stability.py | 126 | except Exception: | CODE |
| LOW | eval/multiturn/run_e2e_multiturn.py | 91 | except Exception: | CODE |
| LOW | rag_system/__init__.py | 59 | except Exception as exc: # pragma: no cover – best-effort login | CODE |
| LOW | rag_system/api_server.py | 143 | except Exception as e: | CODE |
| LOW | rag_system/api_server.py | 168 | except Exception as e: | CODE |
| LOW | rag_system/api_server.py | 331 | except Exception as e: | CODE |
| LOW | rag_system/api_server.py | 374 | except Exception as e: | CODE |
| LOW | rag_system/api_server.py | 383 | except Exception as e: | CODE |
| 79 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | run_system.py | 359 | except OSError: | CODE |
| HIGH | run_system.py | 551 | except psutil.Error: | CODE |
| HIGH | run_system.py | 557 | except psutil.Error: | CODE |
| HIGH | run_system.py | 564 | except psutil.Error: | CODE |
| HIGH | run_system.py | 622 | except ProcessLookupError: | CODE |
| HIGH | backend/server.py | 490 | except (BrokenPipeError, ConnectionResetError): | CODE |
| HIGH | backend/ollama_client.py | 20 | except ValueError: | CODE |
| HIGH | backend/database.py | 19 | except Exception: | CODE |
| HIGH | backend/database.py | 498 | except FileNotFoundError: | CODE |
| HIGH | backend/database.py | 652 | except: | CODE |
| HIGH | backend/database.py | 640 | except (json.JSONDecodeError, KeyError): | CODE |
| HIGH | backend/database.py | 679 | except: | CODE |
| HIGH | eval/smoke_e2e.py | 120 | except requests.RequestException: | CODE |
| HIGH | eval/smoke_e2e.py | 352 | except OSError: | CODE |
| HIGH | rag_system/api_server.py | 378 | except BrokenPipeError: | CODE |
| HIGH | rag_system/ingestion/document_converter.py | 159 | except Exception: | CODE |
| HIGH | rag_system/pipelines/retrieval_pipeline.py | 658 | except (TypeError, ValueError): | CODE |
| HIGH | rag_system/utils/ollama_client.py | 107 | except Exception: | CODE |
| HIGH | rag_system/utils/ollama_client.py | 207 | except Exception: | CODE |
| HIGH | rag_system/utils/ollama_client.py | 47 | except ValueError: | CODE |
| HIGH | rag_system/agent/escalation.py | 122 | except (TypeError, ValueError): | CODE |
| HIGH | rag_system/agent/escalation.py | 257 | except Exception: | CODE |
| HIGH | rag_system/retrieval/document_fetch.py | 119 | except ValueError: | CODE |
| HIGH | rag_system/indexing/overview_builder.py | 153 | except OSError: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | create_index_script.py | 96 | CODE | |
| LOW | run_system.py | 433 | CODE | |
| LOW | run_system.py | 570 | CODE | |
| LOW | run_system.py | 659 | CODE | |
| LOW | backend/server.py | 268 | CODE | |
| LOW | backend/server.py | 302 | CODE | |
| LOW | backend/server.py | 888 | CODE | |
| LOW | backend/server.py | 1118 | CODE | |
| LOW | backend/ollama_client.py | 60 | CODE | |
| LOW | backend/database.py | 463 | CODE | |
| LOW | backend/database.py | 518 | CODE | |
| LOW | eval/run_eval.py | 774 | CODE | |
| LOW | eval/finalize_goldset.py | 118 | CODE | |
| LOW | eval/verify_rfc_goldset.py | 67 | CODE | |
| LOW | eval/smoke_e2e.py | 105 | CODE | |
| LOW | eval/smoke_e2e.py | 152 | CODE | |
| LOW | eval/smoke_e2e.py | 278 | CODE | |
| LOW | eval/judge.py | 245 | CODE | |
| LOW | rag_system/api_server.py | 429 | CODE | |
| LOW | rag_system/ask_folder.py | 152 | CODE | |
| LOW | rag_system/ingestion/chunking.py | 34 | CODE | |
| LOW | rag_system/rerankers/reranker.py | 26 | CODE | |
| LOW | rag_system/pipelines/retrieval_pipeline.py | 268 | CODE | |
| LOW | rag_system/pipelines/retrieval_pipeline.py | 428 | CODE | |
| LOW | rag_system/pipelines/retrieval_pipeline.py | 842 | CODE | |
| LOW | rag_system/pipelines/retrieval_pipeline.py | 1040 | CODE | |
| LOW | rag_system/pipelines/retrieval_pipeline.py | 1056 | CODE | |
| LOW | rag_system/pipelines/retrieval_pipeline.py | 1467 | CODE | |
| LOW | rag_system/pipelines/indexing_pipeline.py | 161 | CODE | |
| LOW | rag_system/utils/batch_processor.py | 76 | CODE | |
| LOW | rag_system/utils/ollama_client.py | 353 | CODE | |
| LOW | rag_system/utils/watsonx_client.py | 183 | CODE | |
| LOW | rag_system/agent/loop.py | 109 | CODE | |
| LOW | rag_system/agent/loop.py | 128 | CODE | |
| LOW | rag_system/agent/loop.py | 393 | CODE | |
| LOW | rag_system/retrieval/retrievers.py | 142 | CODE | |
| LOW | rag_system/retrieval/filters.py | 180 | CODE | |
| LOW | rag_system/indexing/crossref.py | 208 | CODE | |
| LOW | rag_system/indexing/crossref.py | 136 | CODE | |
| LOW | rag_system/indexing/overview_builder.py | 36 | CODE | |
| LOW | rag_system/indexing/overview_builder.py | 130 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | Documentation/quick_start.md | 30 | ### Step 1: Clone | COMMENT |
| LOW | Documentation/quick_start.md | 40 | ### Step 2: Install Ollama Locally | COMMENT |
| LOW | Documentation/quick_start.md | 59 | ### Step 3: Start Docker Containers | COMMENT |
| LOW⚡ | Documentation/quick_start.md | 82 | ### Step 4: Verify Deployment | COMMENT |
| LOW⚡ | Documentation/quick_start.md | 99 | ### Step 5: Access Application | COMMENT |
| LOW | Documentation/quick_start.md | 112 | ### Step 1: Clone and Install Dependencies | COMMENT |
| LOW | Documentation/quick_start.md | 125 | ### Step 2: Install and Configure Ollama | COMMENT |
| LOW | Documentation/quick_start.md | 139 | ### Step 3: Start the System | COMMENT |
| LOW | Documentation/quick_start.md | 166 | ### Step 4: Verify Installation | COMMENT |
| LOW | Documentation/quick_start.md | 181 | ### Step 5: Access Application | COMMENT |
| LOW | Documentation/docker_usage.md | 40 | ### Step 1: Clone | COMMENT |
| LOW | Documentation/docker_usage.md | 50 | ### Step 2: Ollama | COMMENT |
| LOW | Documentation/docker_usage.md | 90 | ### Step 3: Start Containers | COMMENT |
| LOW⚡ | rag_system/pipelines/indexing_pipeline.py | 375 | # Step 4: Embedded-overview sidecar (roadmap item 4.3) | COMMENT |
| LOW | rag_system/pipelines/indexing_pipeline.py | 179 | # Step 1: Document Processing and Chunking | COMMENT |
| LOW | rag_system/pipelines/indexing_pipeline.py | 266 | # Step 2: Optional Contextual Enrichment (before indexing for consistency) | COMMENT |
| LOW | rag_system/pipelines/indexing_pipeline.py | 282 | # Step 3: Embed chunks into LanceDB and build the native FTS index | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | system_health_check.py | 112 | def check_agent_initialization(): | CODE |
| LOW | create_index_script.py | 350 | def create_sample_batch_config(): | CODE |
| LOW⚡ | backend/server.py | 1111 | def handle_link_index_to_session(self, session_id: str, index_id: str): | CODE |
| LOW⚡ | backend/server.py | 1118 | def handle_get_session_indexes(self, session_id: str): | CODE |
| LOW | backend/server.py | 544 | def handle_get_session_documents(self, session_id: str): | CODE |
| LOW | backend/database.py | 355 | def get_documents_for_session(self, session_id: str) -> List[str]: | STRING |
| LOW | backend/database.py | 518 | def inspect_and_populate_index_metadata(self, index_id: str) -> dict: | STRING |
| LOW | eval/run_eval.py | 447 | def decomposition_sub_queries(pipeline: RetrievalPipeline, gold: list, args, | CODE |
| LOW | eval/smoke_e2e.py | 96 | def port_accepting_connections(port: int, host: str = "localhost") -> bool: | CODE |
| LOW | rag_system/api_server.py | 100 | def _generation_model_override(requested_model): | CODE |
| LOW | rag_system/api_server.py | 120 | def _apply_index_embedding_model(idx_ids): | CODE |
| LOW | rag_system/api_server.py | 147 | def _get_table_name_for_session(session_id): | CODE |
| LOW | rag_system/api_server.py | 231 | def _build_index_config_override(base_config, *, table_name, options): | CODE |
| LOW⚡ | rag_system/ingestion/document_converter.py | 193 | def _convert_general_to_markdown(self, file_path: str, input_format: InputFormat) -> ConversionResults: | CODE |
| LOW | rag_system/pipelines/retrieval_pipeline.py | 158 | def _overview_prefilter_config(self) -> Dict[str, Any]: | CODE |
| LOW | rag_system/pipelines/retrieval_pipeline.py | 428 | def _get_surrounding_chunks_lancedb(self, chunk: Dict[str, Any], window_size: int, | CODE |
| LOW | rag_system/pipelines/retrieval_pipeline.py | 504 | def _budget_synthesis_context(self, final_docs): | CODE |
| LOW | rag_system/pipelines/retrieval_pipeline.py | 796 | def _overview_prefilter_documents(self, query: str) -> Optional[List[str]]: | CODE |
| LOW | rag_system/pipelines/retrieval_pipeline.py | 1362 | def _retrieve_candidates_filtered(self, query, base_table, sub_queries, event_callback, | CODE |
| LOW⚡ | rag_system/utils/ollama_client.py | 299 | async def generate_completion_async( | CODE |
| LOW⚡ | rag_system/utils/watsonx_client.py | 149 | async def generate_completion_async( | CODE |
| LOW⚡ | rag_system/agent/loop.py | 128 | def load_overviews_for_indexes(self, idx_ids: list[str]): | CODE |
| LOW | rag_system/agent/loop.py | 214 | def _format_query_with_history(self, query: str, history: list) -> str: | CODE |
| LOW | rag_system/agent/loop.py | 309 | def _pipeline_config_overrides(self, *, ai_rerank: Optional[bool] = None, retrieval_k: Optional[int] = None, context | STRING |
| LOW | rag_system/indexing/representations.py | 45 | def default_query_instruction(model_name: str) -> str: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | create_index_script.py | 226 | # Create the index | COMMENT |
| MEDIUM | run_system.py | 117 | # Create main logger | COMMENT |
| MEDIUM | backend/server.py | 838 | # Create a unique filename to avoid overwrites | COMMENT |
| MEDIUM | backend/database.py | 752 | # Create a test session | STRING |
| MEDIUM | rag_system/ingestion/chunking.py | 124 | "chunk_id": f"{document_id}_{i}", # Create a more unique ID | CODE |
| MEDIUM | rag_system/pipelines/retrieval_pipeline.py | 472 | # Define the window for the search | COMMENT |
| MEDIUM | rag_system/agent/loop.py | 425 | # Create a contextual query that includes history for most operations | STRING |
| MEDIUM | rag_system/indexing/contextualizer.py | 11 | # Define the structured prompt templates, adapted from the example | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | requirements.txt | 21 | COMMENT | |
| LOW | backend/server.py | 101 | or non-200 upstream → 502. | COMMENT |
| LOW | eval/run_eval.py | 141 | os.path.join(REPO_ROOT, "Documentation", "*.md")], | COMMENT |
| LOW | eval/run_eval.py | 261 | # is: one LLM call per document. Roadmap item 4.3's prefilter cannot be | COMMENT |
| LOW | eval/decisions/phase2-gateway.md | 221 | ## 5. Commands | COMMENT |
| LOW | … QUIC A UDP-Based Multiplexed and Secure Transport.txt | 8361 | pn_hwin = pn_win / 2 | COMMENT |
| LOW | rag_system/main.py | 41 | # | COMMENT |
| LOW | rag_system/main.py | 81 | "enabled": True | COMMENT |
| LOW | rag_system/main.py | 141 | # against every query are dropped, so easy questions send a small, | COMMENT |
| LOW | rag_system/utils/ollama_client.py | 21 | # | COMMENT |
| LOW | rag_system/utils/ollama_client.py | 101 | f"⚠️ Ollama FRONT-TRUNCATED this prompt below the requested window: " | COMMENT |
| LOW | rag_system/agent/loop.py | 541 | else: | COMMENT |
| LOW | rag_system/indexing/embedders.py | 1 | import lancedb | COMMENT |
| LOW | rag_system/indexing/embedders.py | 21 | # invalidates vectors written before this existed, so it is recorded | COMMENT |
| LOW | rag_system/indexing/representations.py | 21 | # instruction. | COMMENT |
| LOW | rag_system/indexing/overview_builder.py | 1 | from __future__ import annotations | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | system_health_check.py | 10 | CODE | |
| LOW | run_system.py | 36 | CODE | |
| LOW | backend/database.py | 6 | CODE | |
| LOW | eval/corpora/make_hr_handbook.py | 19 | CODE | |
| LOW | eval/corpora/rfc/download.py | 23 | CODE | |
| LOW | rag_system/ask_folder.py | 50 | CODE | |
| LOW | rag_system/ingestion/docling_chunker.py | 1 | CODE | |
| LOW | rag_system/rerankers/sentence_pruner.py | 1 | CODE | |
| LOW | rag_system/utils/watsonx_client.py | 1 | CODE | |
| LOW | rag_system/agent/escalation.py | 39 | CODE | |
| LOW | rag_system/retrieval/document_fetch.py | 20 | CODE | |
| LOW | rag_system/retrieval/filters.py | 41 | CODE | |
| LOW | rag_system/indexing/latechunk.py | 1 | CODE | |
| LOW | rag_system/indexing/crossref.py | 32 | CODE | |
| LOW | rag_system/indexing/overview_builder.py | 1 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | eval/run_eval.py | 108 | # documents this harness is tracked in, so every eval-related edit would change | COMMENT |
| MEDIUM | eval/run_eval.py | 280 | # harness never calls Agent.run(). Sub-queries, when --decompose is passed, | COMMENT |
| MEDIUM | eval/run_eval.py | 352 | # fix, so the fingerprint carries the harness's index-code version. | COMMENT |
| MEDIUM | eval/run_eval.py | 576 | # retriever directly, so the harness measures the shipped behaviour. | COMMENT |
| MEDIUM | rag_system/indexing/embedders.py | 29 | # in different database directories (the eval harness does exactly that). | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | WATSONX_README.md | 176 | api_key="your_api_key", | CODE |
| HIGH | rag_system/utils/watsonx_client.py | 251 | api_key="your-api-key", | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | run_system.py | 265 | # Check if port is in use | COMMENT |
| LOW | run_system.py | 310 | # Check if process is still running | COMMENT |
| LOW | run_system.py | 480 | # Check if Ollama is already running | COMMENT |
| LOW | backend/server.py | 378 | # Check if Ollama is running | COMMENT |
| LOW | backend/ollama_client.py | 212 | # Check if Ollama is running | COMMENT |
| LOW⚡ | backend/database.py | 529 | # Check if metadata is already populated | STRING |
| LOW⚡ | backend/database.py | 546 | # Check if table exists | STRING |
| LOW | backend/database.py | 643 | # Check if FTS index exists | STRING |
| LOW | backend/database.py | 670 | # Check if this is actually a legacy index by looking at creation date | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | rag_system/pipelines/indexing_pipeline.py | 375 | # Step 4: Embedded-overview sidecar (roadmap item 4.3) | COMMENT |
| LOW | rag_system/pipelines/indexing_pipeline.py | 179 | # Step 1: Document Processing and Chunking | COMMENT |
| LOW | rag_system/pipelines/indexing_pipeline.py | 266 | # Step 2: Optional Contextual Enrichment (before indexing for consistency) | COMMENT |
| LOW | rag_system/pipelines/indexing_pipeline.py | 282 | # Step 3: Embed chunks into LanceDB and build the native FTS index | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | rag_system/agent/verifier.py | 39 | strings via float(); null, arrays, objects and garbage all fail open to 0, | STRING |
| HIGH | rag_system/agent/verifier.py | 306 | # Coerce defensively: a type-mismatched verdict (string "85", null, | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | rag_system/api_server.py | 23 | logger = logging.getLogger(__name__) | CODE |
| LOW | rag_system/utils/batch_processor.py | 9 | logger = logging.getLogger(__name__) | CODE |
| LOW | rag_system/indexing/contextualizer.py | 9 | logger = logging.getLogger(__name__) | CODE |
| LOW⚡ | rag_system/indexing/overview_builder.py | 6 | logger = logging.getLogger(__name__) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | rag_system/agent/loop.py | 295 | CODE | |
| LOW | rag_system/agent/loop.py | 353 | CODE | |
| LOW | rag_system/agent/loop.py | 393 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | rag_system/ingestion/chunking.py | 155 | doc_meta = {"title": "My Awesome Document", "author": "Jane Doe", "year": 2024} | CODE |