- Status: accepted
- Date: 2026-07-05
STANDARDS/CODE-QUALITY-STANDARD.md (CQ-23) expects either a src/-layout package or an explicit,
recorded rationale for deviating from it. This repo has kept ingest/, recommender/, and app/
at the repository root since the initial commit, without a recorded rationale — flagged by the
2026-07-05 conformance audit.
- The project has always been installed editable (
pip install -e ./uv sync) in CI, in the Docker build, and for local dev — the classic "flat layout accidentally imports the wrong thing because the repo root is onsys.path" failure mode thatsrc/-layout guards against mainly bites non-editable, ad-hocpython -minvocations from the repo root without an install step, which this project doesn't do. - Three top-level packages (
ingest,recommender,app) plustests/,docs/,data/are already a small, unambiguous top-level namespace — there's notest_*.py-shaped or same-named-as-a-dependency collision risk in practice. - A
src/-layout migration is a pure mechanical move (imports,pyproject.tomlpackage-dir config,DockerfileCOPY lines, CI paths) with no functional benefit for a single-package personal project at this size — real but low-value churn.
- Migrate now to
src/ingest,src/recommender,src/app. - Keep the flat layout, record the rationale here (this ADR), revisit if/when the project grows a second installable package or contributors report an accidental-import problem.
Keep the flat layout. This ADR is the CQ-23/CQ-45 declaration the audit asked for. Revisit if this
project ever ships a second distributable package, adds a src-layout-dependent tool, or an
accidental same-name-import bug is actually observed — none of which apply today.