Files
016-oop-coffee-machine/docs/milestones/mil-001-setup.md
T
Tirsvad c24f41207f
CI / test (push) Successful in 54s
Plan project and set up Phase 1 skeleton
Add the framework submodule and the accepted planning documents:
Business Case, Stakeholder Analysis, Project Plan, three milestones,
review records RC-001 to RC-006 and the traceability matrix.

Set up the project skeleton for MIL-001: pyproject.toml (Python
>=3.13, no runtime dependencies, pytest/ruff/mypy as dev extra),
 src/coffee_machine/constants.py, a constants consistency test,
 Doxyfile and a CI workflow that runs ruff, mypy and pytest.

Task: MIL-001#1
Task: MIL-001#2
Task: MIL-001#3
Task: MIL-001#4
Task: MIL-001#5
Closes #1
Closes #2
Closes #3
Closes #4
Closes #5
2026-10-07 10:43:22 +08:00

2.9 KiB

Phase 1: Project Setup

Metadata

Key Value
ID MIL-001
CrossReference BC-001, SA-001, PP-001
Language en
Domain it

Version History

Date Status Author Reviewer Change Commit
2026-10-07 Deprecated Jens Tirsvad Nielsen S01 Initial version pending
2026-10-07 Accepted Jens Tirsvad Nielsen S01 Accepted after RC-003 (Go) pending

Purpose

Decide whether the project skeleton, tooling and configuration are ready so that application code can be written on top of them.

Deliverable

Repository skeleton with pyproject.toml, Python .gitignore, src/, tests/, constants.py, Doxyfile and a CI workflow that runs pytest.

Go / No-Go Criteria

# Criterion (objectively checkable) Go No-Go
1 pip install -e .[dev] succeeds in a fresh .venv on Python 3.13+ Met Not met
2 pytest runs (collects zero or more tests) without configuration errors Met Not met
3 [project] dependencies in pyproject.toml is empty Met Not met
4 .env and .venv are ignored by .gitignore Met Not met
5 doxygen Doxyfile runs without errors Met Not met

Dependencies

Depends on Reason
None First phase

Traceability

Business Case objective / KPI / user story Reference
Objectives 2 and 3; success criteria 1 and 2 BC-001

Ownership

Role Stakeholder ID (SA)
Owner S01
Approving reviewer S01

Target Date

2026-10-09 — start of the course project, no external deadline.

Tasks

# Task Summary Needs its own Use Case/User Story? Reference
1 Add pyproject.toml Configure the project with requires-python >= 3.13, a src/ layout, no runtime dependencies and pytest as an optional dev dependency, so that setup is reproducible for S02. No
2 Review Python .gitignore Confirm the Python .gitignore ignores .venv/, .env, caches and generated Doxygen output so tokens and build artefacts never reach the repository (risk in BC-001). No
3 Create src and tests skeleton with constants.py Create src/coffee_machine/ with __init__.py and constants.py (menu data, resources, coin values, command words) and an empty tests/ package, following the coding conventions. No
4 Add Doxyfile Add a Doxyfile configured for Python (OPTIMIZE_OUTPUT_JAVA, input src/, output docs/api/) so Doxygen comments in the source can be built into documentation. No
5 Configure CI workflow Add a CI workflow for the git host that creates a venv, installs the project with the dev extra and runs pytest on Python 3.13, to be described in the README. No