This is the first gateway of the plan (docs/project-plan.md). It makes the repository ready to hold the game: a fresh clone can be set up from the README, the tests and the documentation build run, every constant lives in constants.py, and the repository page says what the project is. The files are adopted from the base, the finished main of 020-snake-game (commit 1a638c9), as S01 decided on 2026-10-08.
The game itself arrives in MIL-002; MIL-003 checks it against the day-21 lectures.
What is in the pull request
docs/: Business Case, Stakeholder Analysis, Domain Dictionary, Project Plan and milestones MIL-001 to MIL-003, with review records RC-001 to RC-006 (all Go) and RC-007, the review of the code against QC-PY-001 (Go).
framework/ mounted as a submodule (it was already staged in the working tree).
Tasks 1 to 6 of MIL-001, one commit each, each with a Task: MIL-001#N trailer: pyproject.toml, .gitignore, constants.py with its test, README.md, Doxyfile, .gitea/workflows/ci.yml.
A follow-up commit that resolves the pending commit links in the Version History tables.
Differences from the base
File
Difference
.gitignore
none
.gitea/workflows/ci.yml
none
pyproject.toml
description names day 21; repository URL points to 021-snake-game (4 lines)
Doxyfile
project brief names day 21 (2 lines)
src/snake_game/__init__.py
docstrings name day 21; the main page describes the whole game: food, score, game over (9 lines)
src/snake_game/constants.py
docstrings name days 20 and 21 (4 lines)
tests/test_constants.py
docstring names days 20 and 21 (2 lines)
README.md
rewritten for this repository, and only for what exists at this milestone
No constant value, test or logic differs from the base.
git check-ignore .venv .env __pycache__: all three ignored; .env is untracked and its token values occur in no tracked file
The set-up was run in the working tree with a fresh .venv, not in a separate clone. The Gitea Actions runner may not exist, so the CI workflow has not run on the host yet.
MIL-001 Go/No-Go criteria
#
Criterion
Result
1
Set-up commands succeed
Pass (see above)
2
pytest runs
Pass, 21 tests
3
pyproject.toml states Python, dependencies, repository URL
Pass
4
.gitignore protects local files
Pass
5
constants.py holds the values of the lectures, with Doxygen comments
Pass
6
doxygen Doxyfile builds
Pass, 0 warnings
7
README follows the Product Owner's template
Pass
8
CI workflow exists, nothing under .github/workflows
Pass
9
Repository page complete
Pass: description and 12 topics set on the Gitea repository on 2026-10-08 (the GitHub copy was not changed)
10
Adopted files traceable to the base
Pass (table above)
11
Code reviewed
Pass: RC-007 Go
12
No secret in the change
Pass
For the reviewer
The reviews are not independent: the assistant that drafted the documents also reviewed them, and S01 is both author and reviewer. Each record says so. Please read RC-001 to RC-007 and overrule any verdict you disagree with. The open items (dates, repository address, >=3.13 for "greater than 3.13", the GitHub copy) are in the Open Issues of docs/project-plan.md.
Task 7 (description and topics) has no file in the repository; it was done on the git host.
## MIL-001: Project foundation
This is the first gateway of the plan (`docs/project-plan.md`). It makes the repository ready to hold the game: a fresh clone can be set up from the README, the tests and the documentation build run, every constant lives in `constants.py`, and the repository page says what the project is. The files are adopted from the base, the finished `main` of [020-snake-game](https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/020-snake-game) (commit `1a638c9`), as S01 decided on 2026-10-08.
The game itself arrives in MIL-002; MIL-003 checks it against the day-21 lectures.
### What is in the pull request
- `docs/`: Business Case, Stakeholder Analysis, Domain Dictionary, Project Plan and milestones MIL-001 to MIL-003, with review records RC-001 to RC-006 (all `Go`) and RC-007, the review of the code against `QC-PY-001` (`Go`).
- `framework/` mounted as a submodule (it was already staged in the working tree).
- Tasks 1 to 6 of MIL-001, one commit each, each with a `Task: MIL-001#N` trailer: `pyproject.toml`, `.gitignore`, `constants.py` with its test, `README.md`, `Doxyfile`, `.gitea/workflows/ci.yml`.
- A follow-up commit that resolves the `pending` commit links in the Version History tables.
### Differences from the base
| File | Difference |
| --- | --- |
| `.gitignore` | none |
| `.gitea/workflows/ci.yml` | none |
| `pyproject.toml` | description names day 21; repository URL points to `021-snake-game` (4 lines) |
| `Doxyfile` | project brief names day 21 (2 lines) |
| `src/snake_game/__init__.py` | docstrings name day 21; the main page describes the whole game: food, score, game over (9 lines) |
| `src/snake_game/constants.py` | docstrings name days 20 and 21 (4 lines) |
| `tests/test_constants.py` | docstring names days 20 and 21 (2 lines) |
| `README.md` | rewritten for this repository, and only for what exists at this milestone |
No constant value, test or logic differs from the base.
### Checks run (Windows PowerShell, fresh `.venv`)
- `python -m venv .venv`, `python -m pip install --upgrade pip`, `python -m pip install -e ".[dev]"`: exit 0 each
- `pytest`: 21 passed, no window opened
- `ruff check src tests`, `ruff format --check src tests`, `mypy`: clean
- `doxygen Doxyfile`: 0 warnings, HTML written
- `git check-ignore .venv .env __pycache__`: all three ignored; `.env` is untracked and its token values occur in no tracked file
The set-up was run in the working tree with a fresh `.venv`, not in a separate clone. The Gitea Actions runner may not exist, so the CI workflow has not run on the host yet.
### MIL-001 Go/No-Go criteria
| # | Criterion | Result |
| --- | --- | --- |
| 1 | Set-up commands succeed | Pass (see above) |
| 2 | `pytest` runs | Pass, 21 tests |
| 3 | `pyproject.toml` states Python, dependencies, repository URL | Pass |
| 4 | `.gitignore` protects local files | Pass |
| 5 | `constants.py` holds the values of the lectures, with Doxygen comments | Pass |
| 6 | `doxygen Doxyfile` builds | Pass, 0 warnings |
| 7 | README follows the Product Owner's template | Pass |
| 8 | CI workflow exists, nothing under `.github/workflows` | Pass |
| 9 | Repository page complete | Pass: description and 12 topics set on the Gitea repository on 2026-10-08 (the GitHub copy was not changed) |
| 10 | Adopted files traceable to the base | Pass (table above) |
| 11 | Code reviewed | Pass: RC-007 `Go` |
| 12 | No secret in the change | Pass |
### For the reviewer
The reviews are not independent: the assistant that drafted the documents also reviewed them, and S01 is both author and reviewer. Each record says so. Please read RC-001 to RC-007 and overrule any verdict you disagree with. The open items (dates, repository address, `>=3.13` for "greater than 3.13", the GitHub copy) are in the Open Issues of `docs/project-plan.md`.
Task 7 (description and topics) has no file in the repository; it was done on the git host.
Closes #1
Closes #2
Closes #3
Closes #4
Closes #5
Closes #6
Closes #7
Tirsvad
added this to the MIL-001: Project foundation milestone 2026-10-08 11:47:39 +02:00
Adds the Business Case, Stakeholder Analysis, Domain Dictionary, Project Plan and milestones MIL-001 to MIL-003, with the review records RC-001 to RC-006 (all Go). The repository starts from the finished main of 020-snake-game, as S01 decided on 2026-10-08. The milestones and their 22 issues were synced to the git host.
Adopted from the base (020-snake-game): requires-python >=3.13, no runtime dependencies, a dev extra with pytest, ruff and mypy. Only the description (day 21) and the repository URL differ from the base.
Task: MIL-001#1
Closes#1
Copied from the base with identity-only edits: the docstrings name days 20 and 21, and the package main page describes the whole game. The values are unchanged; MIL-003 checks them against the day-21 lectures.
Task: MIL-001#3
Closes#3
Follows the Product Owner's template, with the .venv set-up for Windows PowerShell, Linux Debian and macOS. It describes only what exists at this milestone; the Run section is completed when the game is added in MIL-002 and finished in MIL-003.
Task: MIL-001#4
Closes#4
Identical to the base: Gitea Actions installs .[dev] on Python 3.13 and runs pytest, ruff (lint and format check) and mypy. It lives in .gitea/workflows, not .github/workflows, so the push mirror to GitHub needs no workflow scope.
Task: MIL-001#6
Closes#6
Python code reviewed against QC-PY-001 with the verdict Go. The repository description and topics (task 7) have no file in the repository; they were set on the git host on 2026-10-08.
Task: MIL-001#7
Closes#7
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
MIL-001: Project foundation
This is the first gateway of the plan (
docs/project-plan.md). It makes the repository ready to hold the game: a fresh clone can be set up from the README, the tests and the documentation build run, every constant lives inconstants.py, and the repository page says what the project is. The files are adopted from the base, the finishedmainof 020-snake-game (commit1a638c9), as S01 decided on 2026-10-08.The game itself arrives in MIL-002; MIL-003 checks it against the day-21 lectures.
What is in the pull request
docs/: Business Case, Stakeholder Analysis, Domain Dictionary, Project Plan and milestones MIL-001 to MIL-003, with review records RC-001 to RC-006 (allGo) and RC-007, the review of the code againstQC-PY-001(Go).framework/mounted as a submodule (it was already staged in the working tree).Task: MIL-001#Ntrailer:pyproject.toml,.gitignore,constants.pywith its test,README.md,Doxyfile,.gitea/workflows/ci.yml.pendingcommit links in the Version History tables.Differences from the base
.gitignore.gitea/workflows/ci.ymlpyproject.toml021-snake-game(4 lines)Doxyfilesrc/snake_game/__init__.pysrc/snake_game/constants.pytests/test_constants.pyREADME.mdNo constant value, test or logic differs from the base.
Checks run (Windows PowerShell, fresh
.venv)python -m venv .venv,python -m pip install --upgrade pip,python -m pip install -e ".[dev]": exit 0 eachpytest: 21 passed, no window openedruff check src tests,ruff format --check src tests,mypy: cleandoxygen Doxyfile: 0 warnings, HTML writtengit check-ignore .venv .env __pycache__: all three ignored;.envis untracked and its token values occur in no tracked fileThe set-up was run in the working tree with a fresh
.venv, not in a separate clone. The Gitea Actions runner may not exist, so the CI workflow has not run on the host yet.MIL-001 Go/No-Go criteria
pytestrunspyproject.tomlstates Python, dependencies, repository URL.gitignoreprotects local filesconstants.pyholds the values of the lectures, with Doxygen commentsdoxygen Doxyfilebuilds.github/workflowsGoFor the reviewer
The reviews are not independent: the assistant that drafted the documents also reviewed them, and S01 is both author and reviewer. Each record says so. Please read RC-001 to RC-007 and overrule any verdict you disagree with. The open items (dates, repository address,
>=3.13for "greater than 3.13", the GitHub copy) are in the Open Issues ofdocs/project-plan.md.Task 7 (description and topics) has no file in the repository; it was done on the git host.
Closes #1
Closes #2
Closes #3
Closes #4
Closes #5
Closes #6
Closes #7