# Module Boundaries ## Dependency rule ```text api/web -> application -> domain worker -> application -> domain infrastructure -> application ports + domain ``` `domain` importeert geen FastAPI, SQLAlchemy, Qdrant, Docling of provider-SDK. `application` definieert protocols/ports en use cases. `infrastructure` implementeert deze ports. ## Modules | Module | Verantwoordelijkheid | Mag niet | |---|---|---| | `domain` | Entiteiten, value objects, policies, state machines | I/O of frameworks gebruiken | | `application` | Use cases, transacties, ports, authorization decisions | HTTP- of opslagdetails kennen | | `infrastructure` | PostgreSQL, Qdrant, blobs, providers, connectors | Businessbeleid bepalen | | `ingestion` | Pipelineactiviteiten en parsers | Versies rechtstreeks publiceren zonder gate | | `retrieval` | Query, fusion, rerank, context, answerability | Grants vertrouwen uit requestinput | | `generation` | Modelrouting en grounded output | Direct acties uitvoeren | | `evaluation` | Datasets en metrics | Productiedata ongemaskeerd exporteren | | `api` | HTTP-validatie en problem responses | Domeinlogica in routes stoppen | | `web` | Admin en Query Lab | Rechtstreeks databasequeries uitvoeren | | `platform` | Config, logging, telemetry, wiring | Domeinbeslissingen bevatten | ## Import enforcement Architectuurtests inspecteren imports. Circular dependencies en verboden imports laten CI falen.