Files
duocthu/docs/adr

Architecture decision records

ADR Title Status Reflected in code?
0001 Use Qdrant as the vector database Accepted Yesadapters/qdrant.py, ingestion/load/qdrant_repo.py
0002 Use the team's existing ArgoCD instance for deployment (GitOps) Accepted — target, not yet implemented No — production is Docker Compose on EC2 (20)
0003 PDF parsing strategy, validated empirically Accepted Yesingestion/extract/, ingestion/segment/detector.py
0004 Chunking strategy for drug monographs Accepted (monograph range only) Yesingestion/chunk/chunker.py
0005 segment/ output contract needed by chunk/ Proposed; header says "contract only, no implementation" Yes, now implementedsegment/models.py + chunk/ follow it. The status line is stale
0006 Chunks must carry references to lifted table/formula blocks Accepted, implemented in schema v4 YesChunkAttachment, has_quarantined_content, the ADR-0006 gate set
0007 Conversational reasoning RAG (state + bounded loop) Superseded by 0008 Norag/conversation.py and rag/reasoning.py no longer exist
0008 LLM query understanding + one-shot grounded RAG Accepted, live since 2026-08-06 Yesrag/understanding.py, rag/agent.py, rag/answer.py
0009 No RAG framework — hand-written orchestration behind ports Accepted (recorded retrospectively) Yes
0010 Single-host Docker Compose as the interim deployment Accepted (recorded retrospectively) Yes

ADRs 0009 and 0010 were written during the documentation pass described in DOCUMENTATION_PLAN.md. They record decisions that are unambiguously visible in the implementation but had no ADR. Where the rationale could not be recovered from the repository, they say so rather than inventing one.