# domna-repos Persistence layer. One repo per aggregate; owns the SQL for its tables. Callers see only domain objects from `domna-domain`. **Boundary**: depends on `domna-domain` for types. No external IO except the DB. No business logic — services do that. ## Repos (per [PRD §7.3](../../ara_backend_design.md)) ``` src/repos/ ├── __init__.py ├── unit_of_work.py ├── property_repo.py ├── epc_cache_repo.py ├── site_notes_repo.py ├── landlord_overrides_repo.py ├── recommendations_repo.py ├── generic_data_repo.py ├── fuel_rates_repo.py ├── carbon_factors_repo.py ├── heating_system_assumptions_repo.py └── subtask_repo.py ``` Each repo has a `Fake*Repo` companion in its service's test tree (typically `services/ara/tests/fakes/`) — dict-backed, no DB. DDL migrations are scoped to sub-PRD (iii); during Phase 0 repos may delegate into the legacy `backend/app/db/db_funcs.*` modules.