JSON
{
"confidence": "medium",
"operational": {
"kind": "none",
"drift": "n/a",
"score": null,
"checks": [],
"status": "not_applicable",
"latest_tag": null,
"deployed_version": null
},
"gap_analysis": "Two verifiable code gaps remain against the definition of done. (1) The MCP wrapper is entirely absent — no module, no tool definitions, no entry point, no packaging metadata (already the existing task). (2) 'Tested' is not met at the transport/plumbing layer: packages/api/tests has no test for the /v1/answer route at all (only health, stats, version), and the core plumbing modules (cli, eval, chat, prompts, answer_pipeline, ingest, index_pipeline, embed, rerank, retrieval, vectorstore, bm25) carry little or no unit coverage, holding the suite at roughly half the project's 80% gate. The accuracy substrate itself is well covered and needs no further work.",
"proposed_tasks": [
{
"title": "Cover the /v1/answer route and the retrieval/generation plumbing with unit tests",
"subtasks": [
{
"title": "Test /v1/answer: request-model validation bounds, happy path against a stubbed pipeline, and the 503 when _build_pipeline raises",
"estimated_minutes": 120
},
{
"title": "Test get_pipeline lazy-init/caching and _build_pipeline's env-driven reranker and GROUNDING_THRESHOLD wiring",
"estimated_minutes": 60
},
{
"title": "Test AnswerPipeline orchestration end-to-end with a fake retriever and fake chat client, including the guardrail-refusal path",
"estimated_minutes": 120
},
{
"title": "Test Retriever tier/source_class filtering and hybrid merge, plus bm25 and rerank ordering, against fixture hits",
"estimated_minutes": 120
},
{
"title": "Test prompts.assemble_user_prompt and the chat client's request construction and error handling",
"estimated_minutes": 60
}
],
"description": "The guardrail and scoring modules are well tested, but the transport and plumbing layers are not. packages/api/tests contains no test for the /v1/answer endpoint, so request validation, pipeline caching, the 503 pipeline-unavailable path, and the Answer response shape are unverified. In core, the modules that move data (retrieval, vectorstore, bm25, rerank, embed, answer_pipeline, prompts, chat) have little or no coverage, which is what holds the suite below the project's 80% gate. Add focused unit tests with the external backends (Postgres, Qdrant, the model server) mocked at their client boundaries — these are external dependencies, not our own code.",
"estimated_minutes": 480
}
],
"completion_percent": 80,
"current_state_summary": "The core RAG stack is complete and substantial: tier-aware retrieval (embed + vectorstore + bm25 + rerank), the full anti-hallucination guardrail chain (grounding, hallucination, citation, confidence, doctrinal, self-refusal, tier-sufficiency), an answer pipeline, an eval harness with journaled runs, Alembic migrations, and a FastAPI service exposing /v1/answer plus health/stats/version. A CLI exists at packages/core/src/lds_rag_core/cli.py. No MCP wrapper exists anywhere in the repo.",
"tasks_to_mark_complete": [],
"estimated_hours_remaining": 14
}