3.6 KiB
3.6 KiB
Milestone 2: Project scaffold
Metadata
| Key | Value |
|---|---|
| ID | MIL-002 |
| CrossReference | BC-001, MIL-001 |
| Language | en |
| Domain | it |
Version History
| Date | Status | Author | Reviewer | Change | Commit |
|---|---|---|---|---|---|
| 2026-10-28 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version | 01e016e |
Purpose
Decide that the repository can be installed, tested and documented by a participant who has never seen it.
Deliverable
A project skeleton with pyproject.toml, .gitignore, constants.py, Doxyfile, a passing smoke test, and a README.md from the framework template with .venv instructions.
Go / No-Go Criteria
| # | Criterion (objectively checkable) | Go | No-Go |
|---|---|---|---|
| 1 | python -m venv .venv, python -m pip install --upgrade pip and python -m pip install -e .[dev] succeed on Python 3.13 |
All three succeed | Any fails |
| 2 | python -m pytest passes |
Exit code 0 | Failures |
| 3 | bash framework/scripts/check-readme.sh reports no finding |
Exit code 0 | Findings |
| 4 | .env and browser.json are ignored by git |
git check-ignore lists both |
Either is tracked |
Dependencies
| Depends on | Reason |
|---|---|
| MIL-001 | Its pull request is merged before this milestone starts |
Traceability
| Business Case objective / KPI / user story | Reference |
|---|---|
| BC-001 O5; success criteria 2 and 5 | BC-001 |
Ownership
| Role | Stakeholder ID (SA) |
|---|---|
| Owner | S01 |
| Approving reviewer | S01 (the AI acts as stand-in) |
Target Date
2026-11-06 — inside the Business Case window 2026-10-28 to 2026-11-30; branch mil-002-project-scaffold.
Tasks
| # | Task | Summary | Needs its own Use Case/User Story? | Reference |
|---|---|---|---|---|
| 1 | Create pyproject and package layout | Add pyproject.toml (Python 3.13 or later, runtime dependencies requests, beautifulsoup4, ytmusicapi, optional dev extra with pytest) and the src/ layers domain, application, infrastructure, presentation and tests/ folders, following the framework's Python layout. |
No | BC-001 O5 |
| 2 | Add constants module | Create constants.py holding the Bakeboard base URL, the CSS selectors, the User-Agent header, the playlist name pattern, the browser.json file name and the search filter, so no magic value is in the code. |
No | BC-001 O1 |
| 3 | Add Python .gitignore and secret rules | Keep the Python .gitignore and ensure .env, browser.json, .venv/ and Doxygen output are ignored. |
No | BC-001 O5 |
| 4 | Add Doxyfile | Add a Doxyfile that documents src/ from the Doxygen comments, with output to an ignored folder. |
No | BC-001 O5 |
| 5 | Write README from the framework template | Write README.md from framework/templates/README-template.md: create and use .venv, python -m pip install --upgrade pip, run, test, and the reason for each dependency. |
No | BC-001 O5 |
| 6 | Add smoke test and pytest configuration | Add the pytest configuration in pyproject.toml and one smoke test that imports the package, so the test command is proven before real code arrives. |
No | BC-001 O5 |
| 7 | Open the scaffold pull request | Commit on branch mil-002-project-scaffold, run the code review against qc-programming-python, push and open the pull request that closes this milestone's issues. |
No | BC-001 |