Files
031-flash-card/docs/milestones/mil-001-foundation.md

4.6 KiB

MIL-001: Project foundation

Metadata

Key Value
ID MIL-001
CrossReference BC-001, US-001, DCD-001
Language en
Domain it

Version History

Date Status Author Reviewer Change Commit
2026-10-14 Accepted Jens Tirsvad Nielsen AI as stand-in for S01 Initial version c3fbcbc

Purpose

Decide whether the project can start building features: the repository has its configuration, layer skeleton, tooling and run instructions, so that every later milestone adds behaviour to a ready structure.

Deliverable

A repository in which pip install -e ".[dev]" works in a fresh .venv, pytest runs (with the placeholder test passing), the four layer packages and the three test folders exist, and the README explains how to create the virtual environment, run the program and run the tests.

Go / No-Go Criteria

# Criterion (objectively checkable) Go No-Go
1 pyproject.toml declares Python >=3.13, an empty dependencies list, the extras speech and dev, and the pytest, ruff and mypy configuration Present and pip install -e ".[dev]" succeeds in a fresh .venv Missing or install fails
2 .gitignore is a Python ignore file and also ignores .venv/, .env, data/words_to_learn.csv and docs/doxygen/ git check-ignore reports each path A path is not ignored
3 src/flash_card/ has domain, application, infrastructure and presentation packages and constants.py; tests/ has unit, integration, e2e Every folder exists A folder is missing
4 doxygen Doxyfile runs without error Exit code 0 Any error
5 README follows the framework template and gives the .venv and python -m pip install --upgrade pip commands check-readme.sh reports no finding Any finding
6 pytest exits with 0 Exit code 0 Any failure

Dependencies

Depends on Reason
BC-001, SA-001, PP-001 accepted Required by the plan-first gate before a milestone

Traceability

Business Case objective / KPI / user story Reference
Objective 3 (no runtime dependencies) and objective 4 (repository others can use) BC-001
Success criteria 3 and 4 BC-001

Ownership

Role Stakeholder ID (SA)
Owner S01
Approving reviewer S01 (AI as stand-in in autonomous mode)

Target Date

2026-10-14 — the first day of the delivery window that ends 2026-10-21 (BC-001 constraint).

Tasks

# Task Summary Needs its own Use Case/User Story? Reference
1 Add pyproject.toml Declare the project flash-card for Python 3.13 or later with no runtime dependencies, an optional speech extra (gTTS, playsound==1.2.2) and a dev extra (pytest, ruff, mypy), and configure pytest (src on the path, tests folder), ruff and mypy. Meets objective 3 of the Business Case and ADR-0001. No ADR-0001
2 Add Python .gitignore Ignore Python build and cache output, .venv/, the local .env with tokens that is never imported into the project, the generated docs/doxygen/ and the learner's own data/words_to_learn.csv. No
3 Create the layer skeleton and constants.py Create src/flash_card/ with the packages domain, application, infrastructure, presentation and constants.py (background colour, fonts, delay 3000 ms, file names), and tests/unit, tests/integration, tests/e2e, as ADR-0002 and DCD-001 set out. No ADR-0002, DCD-001
4 Add the Doxyfile Add a Doxyfile for src/ with Python optimisation, output in docs/doxygen/, so that the Doxygen comments written in every later milestone produce documentation. No
5 Write the first README with the .venv instructions Create README.md from the framework template with overview, requirements, and the commands to create and activate .venv, upgrade pip with python -m pip install --upgrade pip, install, run and test, for Windows and Linux/macOS. No
6 Add the word list to the repository Commit data/ms-da.csv (1000 Malay words with Danish translation, semicolon separated, header ms;da) and describe its origin and that it is machine translated, in data/README.md. No