MIL-001: Project foundation #23

Merged
Tirsvad merged 10 commits from mil-001-project-foundation into main 2026-10-08 11:51:36 +02:00
Owner

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 (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

## 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
Tirsvad added 10 commits 2026-10-08 11:47:40 +02:00
The framework at framework/ holds the templates, QC checklists and scripts that the project documents and the plan-first gate use.
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
Identical to the base. It ignores .venv, caches, build output and .env, so the personal tokens can never be committed.

Task: MIL-001#2
Closes #2
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
Adopted from the base: it reads src/, writes build/doxygen and fails on any warning. Only the project brief (day 21) differs.

Task: MIL-001#5
Closes #5
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
Resolve pending commit links
CI / checks (push) Successful in 48s
CI / checks (pull_request) Successful in 41s
5568141bf7
Replaces pending in the Version History of the documents with links to the commits that introduced the rows.
Tirsvad merged commit 68c516e32b into main 2026-10-08 11:51:36 +02:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Tirsvad-Udemy-100-days-of-code/021-snake-game#23