Plan: screenshot of the game (MIL-006) #40

Merged
Tirsvad merged 2 commits from plan-screenshot into main 2026-10-13 08:58:59 +02:00
10 changed files with 395 additions and 16 deletions
+2 -2
View File
@@ -14,9 +14,9 @@ document of a type. `Primary File` may contain a glob (e.g.
| BC | Business Case | docs/business-case.md | 002 | | BC | Business Case | docs/business-case.md | 002 |
| SA | Stakeholder Analysis | docs/stakeholder-analysis.md | 002 | | SA | Stakeholder Analysis | docs/stakeholder-analysis.md | 002 |
| PP | Project Plan | docs/project-plan.md | 002 | | PP | Project Plan | docs/project-plan.md | 002 |
| MIL | Milestone / Gateway | docs/milestones/*.md | 006 | | MIL | Milestone / Gateway | docs/milestones/*.md | 007 |
| DICT | Domain Dictionary | docs/dictionary.md | 002 | | DICT | Domain Dictionary | docs/dictionary.md | 002 |
| RC | SQA Review Record | docs/sqa/reviews/rc-*.md | 014 | | RC | SQA Review Record | docs/sqa/reviews/rc-*.md | 018 |
## Languages ## Languages
+15 -4
View File
@@ -11,7 +11,8 @@
## Version History ## Version History
| Date | Status | Author | Reviewer | Change | Commit | | Date | Status | Author | Reviewer | Change | Commit |
| --- | --- | --- | --- | --- | --- | | --- | --- | --- | --- | --- | --- |
| 2026-10-13 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version, reviewed in RC-001 (Go) | [e004c34] | | 2026-10-13 | Deprecated | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version, reviewed in RC-001 (Go) | [e004c34] |
| 2026-10-13 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Added objective 13 (a screenshot of the running game in the README and on the wiki), scope, success criterion 14, two risks, an assumption and the cost; reviewed in RC-014 (Go) | [988ebba] |
--- ---
@@ -56,6 +57,7 @@ A finished, reproducible repository shows the path from the day-24 lectures to d
| 10 | Document the project: Doxygen comments in the source with a `Doxyfile`, and a README with set-up instructions for Windows PowerShell, Linux Debian and macOS | | 10 | Document the project: Doxygen comments in the source with a `Doxyfile`, and a README with set-up instructions for Windows PowerShell, Linux Debian and macOS |
| 11 | Keep every step traceable: one branch and one pull request per milestone, each pull request closing the issues it completes | | 11 | Keep every step traceable: one branch and one pull request per milestone, each pull request closing the issues it completes |
| 12 | Publish the repository with a description and topics, and a wiki in English, Danish and Bahasa Melayu | | 12 | Publish the repository with a description and topics, and a wiki in English, Danish and Bahasa Melayu |
| 13 | Show the game in a screenshot: a real capture of the running game window at a score of 5 with a high score on the scoreboard, kept in the repository and shown in the README and on the wiki of the repository |
## Scope ## Scope
@@ -67,6 +69,7 @@ A finished, reproducible repository shows the path from the day-24 lectures to d
- `pyproject.toml`, Python `.gitignore`, `Doxyfile`, `README.md` following the Product Owner's template, a continuous integration (CI) workflow. - `pyproject.toml`, Python `.gitignore`, `Doxyfile`, `README.md` following the Product Owner's template, a continuous integration (CI) workflow.
- Repository description and topics on the git host. - Repository description and topics on the git host.
- A wiki in English, Danish and Bahasa Melayu, in the form of the wiki of `TirSystem/github-action`. - A wiki in English, Danish and Bahasa Melayu, in the form of the wiki of `TirSystem/github-action`.
- A screenshot of the running game at a score of 5, kept in `docs/images/`, shown in the README and on the three wiki pages.
### Out of Scope ### Out of Scope
@@ -75,6 +78,7 @@ A finished, reproducible repository shows the path from the day-24 lectures to d
- Anything the lectures do not cover: sound, a menu, a list of players, levels, configurable speed or window size. - Anything the lectures do not cover: sound, a menu, a list of players, levels, configurable speed or window size.
- Keeping this repository and [021-snake-game] in step after today. - Keeping this repository and [021-snake-game] in step after today.
- Packaging for or publishing to the Python Package Index (PyPI), and runtime dependencies of any kind. - Packaging for or publishing to the Python Package Index (PyPI), and runtime dependencies of any kind.
- A tool in the repository that takes the screenshot: the screenshot is taken once with a one-off script outside the repository, and a later change of the look needs a new screenshot by hand.
- Using or testing the tokens in `.env`; the file is for personal use only and is never imported by the project. - Using or testing the tokens in `.env`; the file is for personal use only and is never imported by the project.
## Expected Benefits ## Expected Benefits
@@ -85,6 +89,7 @@ A finished, reproducible repository shows the path from the day-24 lectures to d
- A test suite that runs in continuous integration without a display and without touching a real high score file. - A test suite that runs in continuous integration without a display and without touching a real high score file.
- Generated source documentation. - Generated source documentation.
- A repository page with description, topics, README and a three-language wiki. - A repository page with description, topics, README and a three-language wiki.
- A screenshot of the running game in the README and on the wiki, so that a visitor sees what it looks like before cloning it.
### Intangible Benefits ### Intangible Benefits
@@ -113,6 +118,7 @@ The project supports the participant's goal of finishing the bootcamp with repos
| 11 | Steps are traceable | 5 of 5 milestones merged by pull request, each description with one `Closes #N` line per completed issue | Pull request list and issue states | | 11 | Steps are traceable | 5 of 5 milestones merged by pull request, each description with one `Closes #N` line per completed issue | Pull request list and issue states |
| 12 | The repository page is complete | Non-empty description, at least 5 topics, and the wiki pages `Home`, `Home.da` and `Home.ms` | Git host | | 12 | The repository page is complete | Non-empty description, at least 5 topics, and the wiki pages `Home`, `Home.da` and `Home.ms` | Git host |
| 13 | The base is adopted without hidden change | Every difference between the adopted files and [021-snake-game] is listed in the pull request that introduces it | Pull request descriptions | | 13 | The base is adopted without hidden change | Every difference between the adopted files and [021-snake-game] is listed in the pull request that introduces it | Pull request descriptions |
| 14 | The game is shown in a real screenshot | `docs/images/snake-score-5.png` is a capture of the window of the running game while its scoreboard reads `Score: 5` followed by a high score; the README and the wiki pages `Home`, `Home.da` and `Home.ms` show it, and its address on `main` answers HTTP 200 with an image | The file, the README and the wiki, checked against the Go/No-Go list of [MIL-006] |
## Risks ## Risks
@@ -129,6 +135,8 @@ The project supports the participant's goal of finishing the bootcamp with repos
| The adopted files drift away from [021-snake-game] | A fix made in one repository is missing in the other | Out of scope by decision; each pull request lists the differences from the base | | The adopted files drift away from [021-snake-game] | A fix made in one repository is missing in the other | Out of scope by decision; each pull request lists the differences from the base |
| Tokens in `.env` leak into the repository | Credentials exposed | `.env` is in `.gitignore`, is never imported, and is not part of any task | | Tokens in `.env` leak into the repository | Credentials exposed | `.env` is in `.gitignore`, is never imported, and is not part of any task |
| The wiki is published with a secret of the organization that may be missing | The wiki stays empty | The pages are files in `wiki/` of the pull request; the marker `wiki/.publish` makes the instance's workflow publish them; a missing secret is reported, not worked around | | The wiki is published with a secret of the organization that may be missing | The wiki stays empty | The pages are files in `wiki/` of the pull request; the marker `wiki/.publish` makes the instance's workflow publish them; a missing secret is reported, not worked around |
| The screenshot is a capture of a real window, which needs a display and the operating system's window capture | It cannot be repeated in CI or on another machine | It is taken once on S01's machine and committed as a file; the pull request says how it was taken and that the food was placed to reach the score quickly; a capture tool is out of scope |
| The screenshot goes out of date when the look changes | The README and the wiki show a look that the game no longer has | The wiki refers to the file on `main`, so a new screenshot replaces it in all places; a change of the look has its own milestone that retakes it |
## Assumptions ## Assumptions
@@ -139,6 +147,7 @@ The project supports the participant's goal of finishing the bootcamp with repos
- The finished `main` of [021-snake-game] is correct as far as its own tests and review records show, and is the base for every file that the milestones adopt; S01 pointed to it in chat on 2026-10-13. - The finished `main` of [021-snake-game] is correct as far as its own tests and review records show, and is the base for every file that the milestones adopt; S01 pointed to it in chat on 2026-10-13.
- The look of the snake (light green body, dark green head with a mouth) of [021-snake-game] is kept. - The look of the snake (light green body, dark green head with a mouth) of [021-snake-game] is kept.
- The wiki of the repository is enabled and has no page yet. - The wiki of the repository is enabled and has no page yet.
- The screenshot is of the finished game as it runs on S01's Windows machine; S01 accepts the plan that adds it by chat, which also confirms the score of 5 and a high score on the scoreboard as its content.
## Constraints ## Constraints
@@ -156,7 +165,7 @@ The assessment is qualitative on purpose: this is an unpaid learning project wit
| Costs | Benefits | | Costs | Benefits |
| --- | --- | | --- | --- |
| About ten days of S01's spare time, most of it review of the planning documents | A finished and shareable repository (objectives 1 to 12) | | About ten days of S01's spare time, most of it review of the planning documents, and two more days for the screenshot | A finished and shareable repository (objectives 1 to 13) |
| Two repositories that hold similar code and can drift apart | No rebuild of a game that already exists and is tested | | Two repositories that hold similar code and can drift apart | No rebuild of a game that already exists and is tested |
| Doxygen and pytest as development tools (not runtime) | Source documentation and automatic checks | | Doxygen and pytest as development tools (not runtime) | Source documentation and automatic checks |
@@ -164,9 +173,9 @@ The assessment is qualitative on purpose: this is an unpaid learning project wit
| Stakeholder ID (SA) | Interest in this project | | Stakeholder ID (SA) | Interest in this project |
| --- | --- | | --- | --- |
| S01 | Wants a correct, tested and documented solution of the assignment: objectives 1 to 12 | | S01 | Wants a correct, tested and documented solution of the assignment: objectives 1 to 13 |
| S02 | Needs readable, runnable code with the assignment's names and README instructions (objectives 2 to 4, 7, 8 and 10) | | S02 | Needs readable, runnable code with the assignment's names and README instructions (objectives 2 to 4, 7, 8 and 10) |
| S03 | Needs a clear repository page and nothing to install (objectives 8, 10 and 12) | | S03 | Needs a clear repository page and nothing to install (objectives 8, 10, 12 and 13) |
## Recommendation ## Recommendation
@@ -180,6 +189,8 @@ Proceed — the work is small (adopt a finished and tested base, add the high sc
[MIL-002]: ./milestones/mil-002-adopt-the-game.md [MIL-002]: ./milestones/mil-002-adopt-the-game.md
[MIL-003]: ./milestones/mil-003-continuous-play-and-high-score.md [MIL-003]: ./milestones/mil-003-continuous-play-and-high-score.md
[MIL-004]: ./milestones/mil-004-high-score-file.md [MIL-004]: ./milestones/mil-004-high-score-file.md
[MIL-006]: ./milestones/mil-006-screenshot.md
[020-snake-game]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/020-snake-game [020-snake-game]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/020-snake-game
[021-snake-game]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/021-snake-game [021-snake-game]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/021-snake-game
[e004c34]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/024-snake/commit/e004c34565839b38dc1e06c8a05baaa66ce9eb1d [e004c34]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/024-snake/commit/e004c34565839b38dc1e06c8a05baaa66ce9eb1d
[988ebba]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/024-snake/commit/988ebba060c1ec69728a7fa36b24bc70737096d8
+4 -1
View File
@@ -11,7 +11,8 @@
## Version History ## Version History
| Date | Status | Author | Reviewer | Change | Commit | | Date | Status | Author | Reviewer | Change | Commit |
| --- | --- | --- | --- | --- | --- | | --- | --- | --- | --- | --- | --- |
| 2026-10-13 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version, reviewed in RC-003 (Go) | [e004c34] | | 2026-10-13 | Deprecated | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version, reviewed in RC-003 (Go) | [e004c34] |
| 2026-10-13 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Added the term screenshot; reviewed in RC-016 (Go) | [988ebba] |
--- ---
@@ -51,6 +52,7 @@ Maps each Product Owner (PO) term to its professional information technology (IT
| read | en | `open` in mode `r`, then `read` | The game gets the high score from the data file as text and converts it to a whole number. | BC, PP, MIL | PY | | read | en | `open` in mode `r`, then `read` | The game gets the high score from the data file as text and converts it to a whole number. | BC, PP, MIL | PY |
| write | en | `open` in mode `w`, then `write` | The game replaces the content of the data file with the new high score as text. | BC, PP, MIL | PY | | write | en | `open` in mode `w`, then `write` | The game replaces the content of the data file with the new high score as text. | BC, PP, MIL | PY |
| inheritance | en | subclass of `Turtle` | A class takes over the attributes and methods of another class; `Food` and `Scoreboard` take over those of `Turtle`. | BC, SA, MIL | PY | | inheritance | en | subclass of `Turtle` | A class takes over the attributes and methods of another class; `Food` and `Scoreboard` take over those of `Turtle`. | BC, SA, MIL | PY |
| screenshot | en | `docs/images/snake-score-5.png` | The picture of the running game window that the README and the wiki show. | BC, SA, PP, MIL | none |
## Rules ## Rules
@@ -68,3 +70,4 @@ Maps each Product Owner (PO) term to its professional information technology (IT
[SA-001]: ./stakeholder-analysis.md [SA-001]: ./stakeholder-analysis.md
[021-snake-game]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/021-snake-game [021-snake-game]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/021-snake-game
[e004c34]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/024-snake/commit/e004c34565839b38dc1e06c8a05baaa66ce9eb1d [e004c34]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/024-snake/commit/e004c34565839b38dc1e06c8a05baaa66ce9eb1d
[988ebba]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/024-snake/commit/988ebba060c1ec69728a7fa36b24bc70737096d8
+79
View File
@@ -0,0 +1,79 @@
# MIL-006: Screenshot
## Metadata
| Key | Value |
| --- | --- |
| ID | MIL-006 |
| CrossReference | [BC-001] |
| Language | en |
| Domain | it |
## Version History
| Date | Status | Author | Reviewer | Change | Commit |
| --- | --- | --- | --- | --- | --- |
| 2026-10-13 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version, reviewed in RC-017 (Go) | [988ebba] |
---
## Purpose
This gate decides whether the README and the wiki show the finished game in a real screenshot at a score of 5, as S01 asked on 2026-10-13 (objective 13 of [BC-001]). Nothing about the game changes. It is the sixth gate of [PP-001], added after [MIL-005] was merged. The work is delivered on the branch `mil-006-screenshot` and one pull request; the wiki pages are files in the folder `wiki/` of the same pull request and are published by the instance's workflow when it is merged.
## Deliverable
`docs/images/snake-score-5.png`, a capture of the window of the running game while its scoreboard reads `Score: 5 High Score: 12`; the picture in `README.md`; and the picture on the wiki pages `Home.md`, `Home.da.md` and `Home.ms.md`, each with a caption in its own language. The capture is made once with a one-off script outside the repository: it starts the real game classes in a real window, places the food in front of the snake until the score is 5, shows a high score of 12 that comes from a temporary `data.txt` (S01's own file is not used), and takes the window with the operating system's screen capture. The script is not part of the repository.
## Go / No-Go Criteria
| # | Criterion (objectively checkable) | Go | No-Go |
| --- | --- | --- | --- |
| 1 | The file exists and is a PNG of the game window | `docs/images/snake-score-5.png` has the PNG signature and a width and height of at least 600 pixels | The file is missing, is not a PNG or is smaller |
| 2 | The picture shows the running game at a score of 5 | Looking at the file, the window titled "My Snake Game" shows a black screen, the snake with a dark green head, blue food, and the white text `Score: 5 High Score: 12` | The text, the snake or the food is missing, or another window or the desktop is in the picture |
| 3 | The picture shows nothing personal | Only the game window is in the picture: no taskbar, no other window, no file path or user name | Anything outside the game window is visible |
| 4 | The README shows the picture | `README.md` has the image with a link to `docs/images/snake-score-5.png`, an alternative text and a caption under it, once | No picture, a broken link, or the picture shown twice |
| 5 | The wiki shows the picture in three languages | `Home.md`, `Home.da.md` and `Home.ms.md` have the image with the address of the file on `main` and a caption in the language of the page; after the merge the three pages are on the wiki | A language is missing, or the address does not answer HTTP 200 with an image |
| 6 | The game and its checks are unchanged | No Python file is changed; `pytest`, `python -m ruff check src tests`, `python -m ruff format --check src tests`, `python -m mypy` and `doxygen Doxyfile` give the results of [MIL-005] | A Python file is in the change, or a check differs |
| 7 | The player's own file is not used | The repository has no tracked `data.txt`, and the capture script is not in the change | `data.txt` or the script is in the change |
| 8 | No secret is in the change | `.env` is not tracked and no token appears in any changed file | A token is found in the diff |
| 9 | The change is reviewed | `RC-*` against `QC-PY-001` has the verdict `Go` (no Python file changed, so every criterion is not applicable) | Verdict `No-Go` or `Go-with-conditions` |
## Dependencies
| Depends on | Reason |
| --- | --- |
| [MIL-005] accepted and merged | The finished README and the wiki pages exist there |
## Traceability
| Business Case objective / KPI / user story | Reference |
| --- | --- |
| Objective 13: a real screenshot in the README and on the wiki | [BC-001], criterion 14 in Success Criteria |
| Objective 12: the wiki in three languages is kept | [BC-001], criterion 12 in Success Criteria |
| Objective 9: tests without a display are unchanged | [BC-001], criterion 6 in Success Criteria |
## Ownership
| Role | Stakeholder ID (SA) |
| --- | --- |
| Owner | S01 |
| Approving reviewer | S01 |
## Target Date
2026-10-25 — sixth of six gateways, in the two buffer days of [PP-001] that ends 2026-10-25.
## Tasks
| # | Task | Summary | Needs its own Use Case/User Story? | Reference |
| --- | --- | --- | --- | --- |
| 1 | Take the screenshot of the running game | With a one-off script outside the repository, start the game classes in a real window, place the food in front of the snake until the score is 5, show a high score of 12 from a temporary file, and capture the window with the operating system's screen capture into `docs/images/snake-score-5.png`. Look at the file to check criteria 1 to 3. Serves S03 and objective 13. | No | |
| 2 | Show the screenshot in the README | Add the image, an alternative text and a caption to `README.md`, once, near the top. Serves S02 and S03. | No | |
| 3 | Show the screenshot on the wiki pages | Add the image, which refers to the file on `main`, and a caption in English, Danish and Bahasa Melayu to `wiki/Home.md`, `wiki/Home.da.md` and `wiki/Home.ms.md`. Serves S03. | No | |
| 4 | Verify the screenshot end to end | Run the checks of criterion 6, read the README and the three wiki pages, request the address of the file on `main` and check that it answers HTTP 200 with an image, and record the results in the pull request. | No | |
---
[BC-001]: ../business-case.md
[PP-001]: ../project-plan.md
[MIL-005]: ./mil-005-wiki-and-finish.md
[988ebba]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/024-snake/commit/988ebba060c1ec69728a7fa36b24bc70737096d8
+15 -8
View File
@@ -4,24 +4,25 @@
| Key | Value | | Key | Value |
| --- | --- | | --- | --- |
| ID | PP-001 | | ID | PP-001 |
| CrossReference | [BC-001], [SA-001], [DICT-001], [MIL-001], [MIL-002], [MIL-003], [MIL-004], [MIL-005] | | CrossReference | [BC-001], [SA-001], [DICT-001], [MIL-001], [MIL-002], [MIL-003], [MIL-004], [MIL-005], [MIL-006] |
| Language | en | | Language | en |
| Domain | it | | Domain | it |
## Version History ## Version History
| Date | Status | Author | Reviewer | Change | Commit | | Date | Status | Author | Reviewer | Change | Commit |
| --- | --- | --- | --- | --- | --- | | --- | --- | --- | --- | --- | --- |
| 2026-10-13 | Accepted | Jens Tirsvad Nielsen | S01 | Initial version; accepted by S01 (Product Owner) in chat on 2026-10-13 | [e004c34] | | 2026-10-13 | Deprecated | Jens Tirsvad Nielsen | S01 | Initial version; accepted by S01 (Product Owner) in chat on 2026-10-13 | [e004c34] |
| 2026-10-13 | Accepted | Jens Tirsvad Nielsen | S01 | Added MIL-006 (the screenshot): its schedule, scope coverage, dependency, a risk and open issues; accepted by S01 (Product Owner) in chat on 2026-10-13 | [988ebba] |
--- ---
## Purpose ## Purpose
This plan schedules the five milestones that deliver the Snake Game (Day 24) repository of [BC-001]. The repository starts from the finished `main` of [021-snake-game], which holds the snake game of days 20 and 21 with tests and documentation. The milestones therefore set up the repository, adopt that base, add continuous play and the high score of the day-24 lectures, store the high score in `data.txt`, and finish the repository with the README check and a wiki in three languages. Each milestone is one gateway document, one branch and one pull request, so that every step is kept track of and reviewed before the next one starts. This plan schedules the six milestones that deliver the Snake Game (Day 24) repository of [BC-001]. The repository starts from the finished `main` of [021-snake-game], which holds the snake game of days 20 and 21 with tests and documentation. The milestones therefore set up the repository, adopt that base, add continuous play and the high score of the day-24 lectures, store the high score in `data.txt`, and finish the repository with the README check and a wiki in three languages; a sixth milestone, added on 2026-10-13, adds a screenshot of the game. Each milestone is one gateway document, one branch and one pull request, so that every step is kept track of and reviewed before the next one starts.
## Planning Assumptions ## Planning Assumptions
- The phase starts 2026-10-14 and ends by 2026-10-25, which leaves two days of buffer after [MIL-005]. All dates are proposed and need the Product Owner's confirmation (see Open Issues). - The phase starts 2026-10-14 and ends by 2026-10-25, which leaves two days of buffer after [MIL-005]. All dates are proposed and need the Product Owner's confirmation (see Open Issues). [MIL-006] was added after [MIL-005] was merged; it uses the two buffer days, so the end date does not move and no buffer remains.
- Phase length: two days per milestone, sized for the spare time of S01, who owns every phase ([SA-001]). - Phase length: two days per milestone, sized for the spare time of S01, who owns every phase ([SA-001]).
- The starting point is the finished `main` of [021-snake-game], which S01 pointed to in chat on 2026-10-13. The base is copied file by file, so each adopted file is a task, and every difference from the base is listed in the pull request. - The starting point is the finished `main` of [021-snake-game], which S01 pointed to in chat on 2026-10-13. The base is copied file by file, so each adopted file is a task, and every difference from the base is listed in the pull request.
- One branch per milestone, named after it (`mil-001-project-foundation` and so on), and one pull request that closes the issues of that milestone with one `Closes #N` line each. The planning documents themselves are delivered on the branch `plan-baseline`. - One branch per milestone, named after it (`mil-001-project-foundation` and so on), and one pull request that closes the issues of that milestone with one `Closes #N` line each. The planning documents themselves are delivered on the branch `plan-baseline`.
@@ -38,6 +39,7 @@ This plan schedules the five milestones that deliver the Snake Game (Day 24) rep
| Continuous play and high score | [MIL-003] | 2026-10-18 to 2026-10-19 | 2026-10-19 | S01 | None (see Open Issues) | `Scoreboard.high_score` and `reset`, `Snake.reset`, play without game over, with tests | | | Continuous play and high score | [MIL-003] | 2026-10-18 to 2026-10-19 | 2026-10-19 | S01 | None (see Open Issues) | `Scoreboard.high_score` and `reset`, `Snake.reset`, play without game over, with tests | |
| High score file | [MIL-004] | 2026-10-20 to 2026-10-21 | 2026-10-21 | S01 | None (see Open Issues) | High score read from and written to `data.txt` with `with`, robust against a missing or damaged file, with tests | | | High score file | [MIL-004] | 2026-10-20 to 2026-10-21 | 2026-10-21 | S01 | None (see Open Issues) | High score read from and written to `data.txt` with `with`, robust against a missing or damaged file, with tests | |
| Wiki and finish | [MIL-005] | 2026-10-22 to 2026-10-23 | 2026-10-23 | S01 | None (see Open Issues) | Wiki in English, Danish and Bahasa Melayu; README checked against the finished game; end-to-end verification | | | Wiki and finish | [MIL-005] | 2026-10-22 to 2026-10-23 | 2026-10-23 | S01 | None (see Open Issues) | Wiki in English, Danish and Bahasa Melayu; README checked against the finished game; end-to-end verification | |
| Screenshot | [MIL-006] | 2026-10-24 to 2026-10-25 | 2026-10-25 | S01 | None (see Open Issues) | A real screenshot of the running game at a score of 5, shown in the README and on the three wiki pages | |
```plantuml ```plantuml
@startgantt @startgantt
@@ -52,7 +54,8 @@ Project starts 2026-10-14
[MIL-003 Go/No-Go] happens 2026-10-19 [MIL-003 Go/No-Go] happens 2026-10-19
[MIL-004 Go/No-Go] happens 2026-10-21 [MIL-004 Go/No-Go] happens 2026-10-21
[MIL-005 Go/No-Go] happens 2026-10-23 [MIL-005 Go/No-Go] happens 2026-10-23
[Buffer] starts 2026-10-24 and ends 2026-10-25 [MIL-006 Screenshot] starts 2026-10-24 and ends 2026-10-25
[MIL-006 Go/No-Go] happens 2026-10-25
@endgantt @endgantt
``` ```
@@ -70,14 +73,15 @@ Project starts 2026-10-14
| `pyproject.toml`, Python `.gitignore`, `Doxyfile`, README, continuous integration workflow | [MIL-001], README updated in [MIL-002] to [MIL-004] and finished in [MIL-005] | | `pyproject.toml`, Python `.gitignore`, `Doxyfile`, README, continuous integration workflow | [MIL-001], README updated in [MIL-002] to [MIL-004] and finished in [MIL-005] |
| Repository description and topics | [MIL-001] (task 7), checked again in [MIL-005] | | Repository description and topics | [MIL-001] (task 7), checked again in [MIL-005] |
| Wiki in English, Danish and Bahasa Melayu | [MIL-005] | | Wiki in English, Danish and Bahasa Melayu | [MIL-005] |
| A real screenshot of the game in the README and on the wiki (objective 13) | [MIL-006] |
## Dependencies ## Dependencies
``` ```
MIL-001 → MIL-002 → MIL-003 → MIL-004 → MIL-005 MIL-001 → MIL-002 → MIL-003 → MIL-004 → MIL-005 → MIL-006
``` ```
A No-Go on a gateway returns it to S01 for rework and moves every later date by the same number of days; the two buffer days after [MIL-005] absorb a slip before the end date moves. A No-Go on a gateway returns it to S01 for rework and moves every later date by the same number of days; after [MIL-006] no buffer day remains, so a No-Go on it moves the end date.
## Plan Risks ## Plan Risks
@@ -89,6 +93,7 @@ A No-Go on a gateway returns it to S01 for rework and moves every later date by
| Lecture details are only available as the summaries in the request | The game differs from the video | S01 compares the finished game with the video at the [MIL-003] and [MIL-004] Go/No-Go | | Lecture details are only available as the summaries in the request | The game differs from the video | S01 compares the finished game with the video at the [MIL-003] and [MIL-004] Go/No-Go |
| The sync matches issues by title, so a title used twice overwrites an issue | A task disappears from the board | Every task title is unique across all milestones; check before each `--apply` | | The sync matches issues by title, so a title used twice overwrites an issue | A task disappears from the board | Every task title is unique across all milestones; check before each `--apply` |
| The base is a copy of another repository | A later fix reaches only one of them | Out of scope by decision (see [BC-001]); each pull request lists the differences from the base | | The base is a copy of another repository | A later fix reaches only one of them | Out of scope by decision (see [BC-001]); each pull request lists the differences from the base |
| The screenshot is a capture of a real window, which needs a display | It cannot be repeated in CI or on another machine | It is taken once on S01's machine with a one-off script outside the repository and committed as a file; a capture tool is out of scope |
| The wiki publish workflow needs a secret of the organization | The wiki stays empty | Reported to S01, never worked around; the pages are files in `wiki/` and are not lost | | The wiki publish workflow needs a secret of the organization | The wiki stays empty | Reported to S01, never worked around; the pages are files in `wiki/` and are not lost |
## Open Issues ## Open Issues
@@ -107,7 +112,7 @@ A No-Go on a gateway returns it to S01 for rework and moves every later date by
- **Display-free tests:** `Scoreboard` inherits from `Turtle`, so its tests install a fake `turtle` module, as in [021-snake-game]. - **Display-free tests:** `Scoreboard` inherits from `Turtle`, so its tests install a fake `turtle` module, as in [021-snake-game].
- **No user story or use case:** the tasks are written as build and check steps, so they are plain technical tasks. If the player's goal should be modelled, add a Use Case Diagram, a user story and a use case and reference them from the task rows. - **No user story or use case:** the tasks are written as build and check steps, so they are plain technical tasks. If the player's goal should be modelled, add a Use Case Diagram, a user story and a use case and reference them from the task rows.
- **Governance and traceability matrix:** `GOV` and `TM` do not exist yet in this project. Decide whether to create them; the plan proceeds without them and records each review as an `RC-*`. The Domain Dictionary [DICT-001] was added on 2026-10-13 so that criterion 5 of `QC-LANG-001` can be checked. - **Governance and traceability matrix:** `GOV` and `TM` do not exist yet in this project. Decide whether to create them; the plan proceeds without them and records each review as an `RC-*`. The Domain Dictionary [DICT-001] was added on 2026-10-13 so that criterion 5 of `QC-LANG-001` can be checked.
- **Screenshot:** not part of this plan; a screenshot needs S01's display. It can be added to the README and the wiki later. - **Screenshot (added 2026-10-13):** S01 asked for a screenshot of the game in the README and on the wiki. [MIL-006] takes it with a one-off script outside the repository: the real game window at a score of 5, with a high score of 12 on the scoreboard that comes from a temporary `data.txt` (S01's own `data.txt` is not used). The score of 5 and the high score of 12 are assumptions that S01 confirms by accepting this plan. The wiki pages refer to the file on `main`, so the pages show it as soon as the merge is published.
- **Diagram check:** the Gantt chart above was not rendered because no PlantUML server is configured (`PLANTUML_URL`); render it before the review. - **Diagram check:** the Gantt chart above was not rendered because no PlantUML server is configured (`PLANTUML_URL`); render it before the review.
- **Sync:** `sync-project.sh --apply` is run with `GITEA_TOKEN` from the personal `.env` after the plan is accepted, as in [021-snake-game]; the sync matches issues by title. - **Sync:** `sync-project.sh --apply` is run with `GITEA_TOKEN` from the personal `.env` after the plan is accepted, as in [021-snake-game]; the sync matches issues by title.
@@ -121,6 +126,8 @@ A No-Go on a gateway returns it to S01 for rework and moves every later date by
[MIL-003]: ./milestones/mil-003-continuous-play-and-high-score.md [MIL-003]: ./milestones/mil-003-continuous-play-and-high-score.md
[MIL-004]: ./milestones/mil-004-high-score-file.md [MIL-004]: ./milestones/mil-004-high-score-file.md
[MIL-005]: ./milestones/mil-005-wiki-and-finish.md [MIL-005]: ./milestones/mil-005-wiki-and-finish.md
[MIL-006]: ./milestones/mil-006-screenshot.md
[020-snake-game]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/020-snake-game [020-snake-game]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/020-snake-game
[021-snake-game]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/021-snake-game [021-snake-game]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/021-snake-game
[e004c34]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/024-snake/commit/e004c34565839b38dc1e06c8a05baaa66ce9eb1d [e004c34]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/024-snake/commit/e004c34565839b38dc1e06c8a05baaa66ce9eb1d
[988ebba]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/024-snake/commit/988ebba060c1ec69728a7fa36b24bc70737096d8
+69
View File
@@ -0,0 +1,69 @@
# RC-014: Review of BC-001 (screenshot)
## Metadata
| Key | Value |
| --- | --- |
| ID | RC-014 |
| CrossReference | [BC-001], [QC-BC-001], [QC-LANG-001], [DICT-001] |
## Version History
| Date | Status | Author | Reviewer | Change | Commit |
| --- | --- | --- | --- | --- | --- |
| 2026-10-13 | Proposed | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version | [988ebba] |
---
## Artifact Under Review
- Instance reviewed: [BC-001]
- Checklist used: [QC-BC-001] and, for the language and domain, [QC-LANG-001]
- Scope: full review. Objective 13, scope items, success criterion 14, two risks, an assumption and the cost changed, so a delta re-review is not allowed. Earlier record: [RC-001].
- Language and domain: en / it
- Language reviewer: none (the reviewer reads English and knows the IT domain)
- Mode: autonomous, not independent (the reviewer is `AI as stand-in for S01`; the assistant also drafted the change)
## Checklist Results
| # | Criterion | Status | Evidence/Notes |
| --- | --- | --- | --- |
| 1 | ROI/Cost-Benefit analysis is quantitative, or where qualitative, is explicitly justified | Pass | Cost–Benefit Assessment is still qualitative and justified; the cost row now names two more days for the screenshot. |
| 2 | Risks are identified with documented impact and mitigation | Pass | Risks table has 13 rows, each with an Impact and a Mitigation; the two new rows cover the real-window capture and a screenshot that goes out of date. |
| 3 | Success criteria are measurable, stating explicit targets rather than vague aspirations | Pass | Success Criteria has 14 rows; row 14 states observable targets (the file, the text `Score: 5` followed by a high score, the README, three wiki pages, HTTP 200 with an image). |
| 4 | Scope explicitly separates In Scope vs Out of Scope | Pass | `### In Scope` has the screenshot; `### Out of Scope` names a capture tool in the repository. |
| 5 | Stakeholders are cross-referenced to Stakeholder Analysis IDs rather than re-described inline | Pass | Stakeholders table cites S01, S02 and S03 and states interests only; objective numbers are extended to 13. |
| 6 | Methodology and quality-standard foundation are stated explicitly (e.g. ISO/IEC 25010, Larman) | Pass | Methodological and Standards Foundation is unchanged. |
| 7 | Assumptions and constraints are explicit and clearly distinguished from one another | Pass | The new assumption is in Assumptions; Constraints are unchanged (window still ends 2026-10-25). |
| 8 | Document supports executive decision-making with a clear, unambiguous recommendation | Pass | Recommendation is unchanged and unambiguous: "Proceed". |
## Language and Domain Results
| # | Criterion | Status | Evidence/Notes |
| --- | --- | --- | --- |
| 1 | The Metadata table has a `Language` row and a `Domain` row, and neither is a placeholder | Pass | `Language` is `en` and `Domain` is `it` in Metadata. |
| 2 | `Language` is a BCP 47 code and `Domain` is a value from the registry's domain list | Pass | `en` is a BCP 47 code; `it` is in the registry's domain list. |
| 3 | The content (prose and table cells) is written in the stated language | Pass | All prose and table cells of BC-001, including the new and changed text and the new Version History row, are English. |
| 4 | The register matches the one the registry gives for the artifact type | Pass | Register is the one the registry gives for the type. |
| 5 | Domain terms are the PO terms of the domain's dictionary, with no synonyms | Pass | Terms are those of [DICT-001], including the new row `screenshot`, which is the word of S01's request and names the one file `docs/images/snake-score-5.png`. |
| 6 | Metadata keys, section headings, IDs and statuses are in English | Pass | Metadata keys, headings, IDs and statuses are English. |
| 7 | No translated twin (`<name>.<language>.md`) exists beside the document | Pass | `docs/` holds one file per artifact; there is no `<name>.<language>.md`. |
| 8 | A change of language or domain since the previous accepted version has a Version History row and was reviewed again | N-A | Language and domain are unchanged since the previous accepted version. |
| 9 | A reviewer competent in the domain, and in the language, has confirmed that the domain terms are used correctly | Pass | The assistant, as stand-in for S01, reads English and knows the IT domain and checked the terms against [DICT-001]. |
| 10 | Abbreviations are spelled out on first use, in the stated language | Pass | No new abbreviation is introduced; PNG and HTTP are standard names. |
## Overall Verdict
Go — all Mandatory criteria pass or are not applicable. Assessed on 2026-10-13 by the assistant that drafted the change, as stand-in for S01 in autonomous mode. Mode: autonomous, not independent. S01 accepted the plan that contains this change in chat on 2026-10-13; the verdict can be challenged in the run summary or on the pull request.
## Action Items
| Action | Owner | Due |
| --- | --- | --- |
| Challenge this `Go` in the run summary or on the pull request if the stand-in decision is not wanted | S01 | 2026-10-20 |
---
[BC-001]: ../../business-case.md
[QC-BC-001]: ../../../framework/qc/artifacts/qc-business-case.md
[QC-LANG-001]: ../../../framework/qc/artifacts/qc-language-domain.md
[DICT-001]: ../../dictionary.md
[988ebba]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/024-snake/commit/988ebba060c1ec69728a7fa36b24bc70737096d8
+69
View File
@@ -0,0 +1,69 @@
# RC-015: Review of SA-001 (screenshot)
## Metadata
| Key | Value |
| --- | --- |
| ID | RC-015 |
| CrossReference | [SA-001], [QC-SA-001], [QC-LANG-001], [DICT-001] |
## Version History
| Date | Status | Author | Reviewer | Change | Commit |
| --- | --- | --- | --- | --- | --- |
| 2026-10-13 | Proposed | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version | [988ebba] |
---
## Artifact Under Review
- Instance reviewed: [SA-001]
- Checklist used: [QC-SA-001] and, for the language and domain, [QC-LANG-001]
- Scope: full review. A concern, a communication row and an alignment row were added. Earlier record: [RC-002].
- Language and domain: en / it
- Language reviewer: none (the reviewer reads English and knows the IT domain)
- Mode: autonomous, not independent (the reviewer is `AI as stand-in for S01`; the assistant also drafted the change)
## Checklist Results
| # | Criterion | Status | Evidence/Notes |
| --- | --- | --- | --- |
| 1 | Power/Interest grid is filled for every stakeholder, with no gaps or unclassified entries | Pass | S01 to S03 are all classified; no row is added or changed. |
| 2 | Each stakeholder is assigned a unique, stable ID (e.g. S01-S11 style) reusable for RACI assignments in other artifacts | Pass | IDs S01 to S03 are unchanged and stable. |
| 3 | Roles and organizational context are defined with explicit Power and Interest levels, not just narrative description | Pass | Power and Interest levels are unchanged and have a rationale. |
| 4 | Communication needs (channel, frequency, deliverable type) are mapped to project phases or milestones | Pass | Communication Requirements has the new row S03, README and wiki, Once, the screenshot, [MIL-006]. |
| 5 | Conflicting stakeholder interests are identified with documented mitigation or resolution strategies | Pass | Conflicting Interests table is unchanged and still has a mitigation for each row. |
| 6 | Stakeholder concerns are explicitly traced to Business Case objectives | Pass | Business Goal Alignment has the new row S03 to [BC-001] objective 13. |
| 7 | Primary concerns are expressed in both business language and a recognized quality-attribute mapping (e.g. FURPS+) | Pass | The new concern is in business language and mapped to the FURPS+ attribute Usability. |
| 8 | Document is understandable and navigable by non-technical stakeholders reviewing their own entry | Pass | Short, plain tables; the new rows are easy to find by ID. |
## Language and Domain Results
| # | Criterion | Status | Evidence/Notes |
| --- | --- | --- | --- |
| 1 | The Metadata table has a `Language` row and a `Domain` row, and neither is a placeholder | Pass | `Language` is `en` and `Domain` is `it` in Metadata. |
| 2 | `Language` is a BCP 47 code and `Domain` is a value from the registry's domain list | Pass | `en` is a BCP 47 code; `it` is in the registry's domain list. |
| 3 | The content (prose and table cells) is written in the stated language | Pass | All prose and table cells of SA-001, including the new and changed text and the new Version History row, are English. |
| 4 | The register matches the one the registry gives for the artifact type | Pass | Register is the one the registry gives for the type. |
| 5 | Domain terms are the PO terms of the domain's dictionary, with no synonyms | Pass | Terms are those of [DICT-001], including the new row `screenshot`, which is the word of S01's request and names the one file `docs/images/snake-score-5.png`. |
| 6 | Metadata keys, section headings, IDs and statuses are in English | Pass | Metadata keys, headings, IDs and statuses are English. |
| 7 | No translated twin (`<name>.<language>.md`) exists beside the document | Pass | `docs/` holds one file per artifact; there is no `<name>.<language>.md`. |
| 8 | A change of language or domain since the previous accepted version has a Version History row and was reviewed again | N-A | Language and domain are unchanged since the previous accepted version. |
| 9 | A reviewer competent in the domain, and in the language, has confirmed that the domain terms are used correctly | Pass | The assistant, as stand-in for S01, reads English and knows the IT domain and checked the terms against [DICT-001]. |
| 10 | Abbreviations are spelled out on first use, in the stated language | Pass | No new abbreviation is introduced; PNG and HTTP are standard names. |
## Overall Verdict
Go — all Mandatory criteria pass or are not applicable. Assessed on 2026-10-13 by the assistant that drafted the change, as stand-in for S01 in autonomous mode. Mode: autonomous, not independent. S01 accepted the plan that contains this change in chat on 2026-10-13; the verdict can be challenged in the run summary or on the pull request.
## Action Items
| Action | Owner | Due |
| --- | --- | --- |
| Challenge this `Go` in the run summary or on the pull request if the stand-in decision is not wanted | S01 | 2026-10-20 |
---
[SA-001]: ../../stakeholder-analysis.md
[QC-SA-001]: ../../../framework/qc/artifacts/qc-stakeholder-analysis.md
[QC-LANG-001]: ../../../framework/qc/artifacts/qc-language-domain.md
[DICT-001]: ../../dictionary.md
[988ebba]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/024-snake/commit/988ebba060c1ec69728a7fa36b24bc70737096d8
@@ -0,0 +1,68 @@
# RC-016: Review of DICT-001 (screenshot)
## Metadata
| Key | Value |
| --- | --- |
| ID | RC-016 |
| CrossReference | [DICT-001], [QC-DICT-001], [QC-LANG-001], [DICT-001] |
## Version History
| Date | Status | Author | Reviewer | Change | Commit |
| --- | --- | --- | --- | --- | --- |
| 2026-10-13 | Proposed | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version | [988ebba] |
---
## Artifact Under Review
- Instance reviewed: [DICT-001]
- Checklist used: [QC-DICT-001] and, for the language and domain, [QC-LANG-001]
- Scope: full review. One row was added. Earlier record: [RC-003].
- Language and domain: en / it
- Language reviewer: none (the reviewer reads English and knows the IT domain)
- Mode: autonomous, not independent (the reviewer is `AI as stand-in for S01`; the assistant also drafted the change)
## Checklist Results
| # | Criterion | Status | Evidence/Notes |
| --- | --- | --- | --- |
| 1 | Every row has a PO term, its language, an IT term and a definition | Pass | All 29 rows have a PO term, `en`, an IT term and a definition; the new row `screenshot` is complete. |
| 2 | Each PO term maps to exactly one IT term and the reverse (no synonyms) | Pass | `screenshot` maps to one IT term, the file `docs/images/snake-score-5.png`, and no other row uses that file. |
| 3 | Every Domain Model concept has a row, and the Domain Model uses its PO term | N-A | No Domain Model exists in this project. |
| 4 | The Operation Contracts, Sequence Diagrams, Design Class Diagrams and ERD use the IT term, not the PO term | N-A | No Operation Contract, Sequence Diagram, Design Class Diagram or ERD exists in this project. |
| 5 | Definitions are written in the PO language and are one sentence | Pass | The new definition is one sentence in English. |
| 6 | "Used as PO term in" and "Used as IT term in" name artifact types that exist in the project | Pass | BC, SA, PP and MIL exist; the IT column says `none` because no source code uses the term. |
| 7 | The dictionary's `Language` and `Domain` rows, and the language of every row, match the PO language and domain in the project registry | Pass | `Language` is `en` and `Domain` is `it`; every row is `en`. |
## Language and Domain Results
| # | Criterion | Status | Evidence/Notes |
| --- | --- | --- | --- |
| 1 | The Metadata table has a `Language` row and a `Domain` row, and neither is a placeholder | Pass | `Language` is `en` and `Domain` is `it` in Metadata. |
| 2 | `Language` is a BCP 47 code and `Domain` is a value from the registry's domain list | Pass | `en` is a BCP 47 code; `it` is in the registry's domain list. |
| 3 | The content (prose and table cells) is written in the stated language | Pass | All prose and table cells of DICT-001, including the new and changed text and the new Version History row, are English. |
| 4 | The register matches the one the registry gives for the artifact type | Pass | Register is the one the registry gives for the type. |
| 5 | Domain terms are the PO terms of the domain's dictionary, with no synonyms | Pass | Terms are those of [DICT-001], including the new row `screenshot`, which is the word of S01's request and names the one file `docs/images/snake-score-5.png`. |
| 6 | Metadata keys, section headings, IDs and statuses are in English | Pass | Metadata keys, headings, IDs and statuses are English. |
| 7 | No translated twin (`<name>.<language>.md`) exists beside the document | Pass | `docs/` holds one file per artifact; there is no `<name>.<language>.md`. |
| 8 | A change of language or domain since the previous accepted version has a Version History row and was reviewed again | N-A | Language and domain are unchanged since the previous accepted version. |
| 9 | A reviewer competent in the domain, and in the language, has confirmed that the domain terms are used correctly | Pass | The assistant, as stand-in for S01, reads English and knows the IT domain and checked the terms against [DICT-001]. |
| 10 | Abbreviations are spelled out on first use, in the stated language | Pass | No new abbreviation is introduced; PNG and HTTP are standard names. |
## Overall Verdict
Go — all Mandatory criteria pass or are not applicable. Assessed on 2026-10-13 by the assistant that drafted the change, as stand-in for S01 in autonomous mode. Mode: autonomous, not independent. S01 accepted the plan that contains this change in chat on 2026-10-13; the verdict can be challenged in the run summary or on the pull request.
## Action Items
| Action | Owner | Due |
| --- | --- | --- |
| Challenge this `Go` in the run summary or on the pull request if the stand-in decision is not wanted | S01 | 2026-10-20 |
---
[DICT-001]: ../../dictionary.md
[QC-DICT-001]: ../../../framework/qc/artifacts/qc-dictionary.md
[QC-LANG-001]: ../../../framework/qc/artifacts/qc-language-domain.md
[DICT-001]: ../../dictionary.md
[988ebba]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/024-snake/commit/988ebba060c1ec69728a7fa36b24bc70737096d8
+67
View File
@@ -0,0 +1,67 @@
# RC-017: Review of MIL-006 (screenshot)
## Metadata
| Key | Value |
| --- | --- |
| ID | RC-017 |
| CrossReference | [MIL-006], [QC-MIL-001], [QC-LANG-001], [DICT-001] |
## Version History
| Date | Status | Author | Reviewer | Change | Commit |
| --- | --- | --- | --- | --- | --- |
| 2026-10-13 | Proposed | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version | [988ebba] |
---
## Artifact Under Review
- Instance reviewed: [MIL-006]
- Checklist used: [QC-MIL-001] and, for the language and domain, [QC-LANG-001]
- Scope: full review. First review of the milestone.
- Language and domain: en / it
- Language reviewer: none (the reviewer reads English and knows the IT domain)
- Mode: autonomous, not independent (the reviewer is `AI as stand-in for S01`; the assistant also drafted the change)
## Checklist Results
| # | Criterion | Status | Evidence/Notes |
| --- | --- | --- | --- |
| 1 | A concrete deliverable is defined for every gate | Pass | Deliverable section names the file, the README picture and the three wiki pictures; 4 tasks are rows in `## Tasks`. |
| 2 | Explicit Go/No-Go criteria are stated for each gate | Pass | Go / No-Go table has 9 criteria, each with an observable Go and No-Go (PNG signature and size, text in the picture, links, HTTP 200, changed files). |
| 3 | Dependencies on other milestones are explicitly mapped | Pass | Dependencies table names [MIL-005] accepted and merged. |
| 4 | Each milestone is traceable to a Business Case objective or KPI | Pass | Traceability table cites [BC-001] objectives 13, 12 and 9 and the Success Criteria numbers. |
| 5 | Milestone owner and approving reviewer are identified | Pass | Ownership table: Owner S01, Approving reviewer S01. |
| 6 | Milestone has a defined target date consistent with project constraints | Pass | Target Date 2026-10-25 is inside the plan window of [PP-001] and the Business Case constraint. |
## Language and Domain Results
| # | Criterion | Status | Evidence/Notes |
| --- | --- | --- | --- |
| 1 | The Metadata table has a `Language` row and a `Domain` row, and neither is a placeholder | Pass | `Language` is `en` and `Domain` is `it` in Metadata. |
| 2 | `Language` is a BCP 47 code and `Domain` is a value from the registry's domain list | Pass | `en` is a BCP 47 code; `it` is in the registry's domain list. |
| 3 | The content (prose and table cells) is written in the stated language | Pass | All prose and table cells of MIL-006, including the new and changed text and the new Version History row, are English. |
| 4 | The register matches the one the registry gives for the artifact type | Pass | Register is the one the registry gives for the type. |
| 5 | Domain terms are the PO terms of the domain's dictionary, with no synonyms | Pass | Terms are those of [DICT-001], including the new row `screenshot`, which is the word of S01's request and names the one file `docs/images/snake-score-5.png`. |
| 6 | Metadata keys, section headings, IDs and statuses are in English | Pass | Metadata keys, headings, IDs and statuses are English. |
| 7 | No translated twin (`<name>.<language>.md`) exists beside the document | Pass | `docs/` holds one file per artifact; there is no `<name>.<language>.md`. |
| 8 | A change of language or domain since the previous accepted version has a Version History row and was reviewed again | N-A | Language and domain are unchanged since the previous accepted version. |
| 9 | A reviewer competent in the domain, and in the language, has confirmed that the domain terms are used correctly | Pass | The assistant, as stand-in for S01, reads English and knows the IT domain and checked the terms against [DICT-001]. |
| 10 | Abbreviations are spelled out on first use, in the stated language | Pass | No new abbreviation is introduced; PNG and HTTP are standard names. |
## Overall Verdict
Go — all Mandatory criteria pass or are not applicable. Assessed on 2026-10-13 by the assistant that drafted the change, as stand-in for S01 in autonomous mode. Mode: autonomous, not independent. S01 accepted the plan that contains this change in chat on 2026-10-13; the verdict can be challenged in the run summary or on the pull request.
## Action Items
| Action | Owner | Due |
| --- | --- | --- |
| Challenge this `Go` in the run summary or on the pull request if the stand-in decision is not wanted | S01 | 2026-10-20 |
---
[MIL-006]: ../../milestones/mil-006-screenshot.md
[QC-MIL-001]: ../../../framework/qc/artifacts/qc-milestones-gateways.md
[QC-LANG-001]: ../../../framework/qc/artifacts/qc-language-domain.md
[DICT-001]: ../../dictionary.md
[988ebba]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/024-snake/commit/988ebba060c1ec69728a7fa36b24bc70737096d8
+7 -1
View File
@@ -11,7 +11,8 @@
## Version History ## Version History
| Date | Status | Author | Reviewer | Change | Commit | | Date | Status | Author | Reviewer | Change | Commit |
| --- | --- | --- | --- | --- | --- | | --- | --- | --- | --- | --- | --- |
| 2026-10-13 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version, reviewed in RC-002 (Go) | [e004c34] | | 2026-10-13 | Deprecated | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version, reviewed in RC-002 (Go) | [e004c34] |
| 2026-10-13 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Added S03's concern for a screenshot in the README and on the wiki (objective 13), and the README and the wiki as a communication channel for it; reviewed in RC-015 (Go) | [988ebba] |
--- ---
@@ -48,6 +49,7 @@ FURPS+ stands for Functionality, Usability, Reliability, Performance, Supportabi
| S02 | The code is readable and keeps the assignment's names (`Snake`, `Food`, `Scoreboard`, `reset`, `high_score`, `update_scoreboard`, `increase_score`, `create_snake`, `add_segment`, `extend`, `up`, `down`, `left`, `right`, `segments`, `head`, `game_is_on`) | Usability | | S02 | The code is readable and keeps the assignment's names (`Snake`, `Food`, `Scoreboard`, `reset`, `high_score`, `update_scoreboard`, `increase_score`, `create_snake`, `add_segment`, `extend`, `up`, `down`, `left`, `right`, `segments`, `head`, `game_is_on`) | Usability |
| S02 | The README tells how to create the `.venv`, run the game and run the tests on their operating system | Usability | | S02 | The README tells how to create the `.venv`, run the game and run the tests on their operating system | Usability |
| S03 | The repository page says what the project is, with description, topics, README and a wiki in English, Danish and Bahasa Melayu | Usability | | S03 | The repository page says what the project is, with description, topics, README and a wiki in English, Danish and Bahasa Melayu | Usability |
| S03 | The README and the wiki show what the game looks like, in a real screenshot of the running game | Usability |
| S03 | Nothing must be installed to run the game apart from Python itself | Implementation (constraint) | | S03 | Nothing must be installed to run the game apart from Python itself | Implementation (constraint) |
## Communication Requirements ## Communication Requirements
@@ -58,6 +60,7 @@ FURPS+ stands for Functionality, Usability, Reliability, Performance, Supportabi
| S02 | README in the repository | Once, updated when the game changes | Set-up, run and test instructions per operating system | [MIL-001], completed in [MIL-005] | | S02 | README in the repository | Once, updated when the game changes | Set-up, run and test instructions per operating system | [MIL-001], completed in [MIL-005] |
| S03 | Repository description, topics and README | Once, updated when the game changes | Description, topics and README overview | [MIL-001], checked in [MIL-005] | | S03 | Repository description, topics and README | Once, updated when the game changes | Description, topics and README overview | [MIL-001], checked in [MIL-005] |
| S03 | Wiki of the repository | Once | Pages `Home`, `Home.da` and `Home.ms` with a short description, the controls and how to run it | [MIL-005] | | S03 | Wiki of the repository | Once | Pages `Home`, `Home.da` and `Home.ms` with a short description, the controls and how to run it | [MIL-005] |
| S03 | README and wiki | Once, updated when the look changes | The screenshot of the running game | [MIL-006] |
## Conflicting Interests and Mitigations ## Conflicting Interests and Mitigations
@@ -80,6 +83,7 @@ FURPS+ stands for Functionality, Usability, Reliability, Performance, Supportabi
| S02 | Readable code with the assignment's names | [BC-001] objective 7 | | S02 | Readable code with the assignment's names | [BC-001] objective 7 |
| S02 | README with run and test instructions | [BC-001] objectives 8 and 10 | | S02 | README with run and test instructions | [BC-001] objectives 8 and 10 |
| S03 | Description, topics, README and wiki on the repository page | [BC-001] objective 12 | | S03 | Description, topics, README and wiki on the repository page | [BC-001] objective 12 |
| S03 | A real screenshot of the game in the README and on the wiki | [BC-001] objective 13 |
| S03 | No runtime dependencies | [BC-001] objective 8 | | S03 | No runtime dependencies | [BC-001] objective 8 |
## Sign-Off ## Sign-Off
@@ -95,5 +99,7 @@ FURPS+ stands for Functionality, Usability, Reliability, Performance, Supportabi
[PP-001]: ./project-plan.md [PP-001]: ./project-plan.md
[MIL-001]: ./milestones/mil-001-project-foundation.md [MIL-001]: ./milestones/mil-001-project-foundation.md
[MIL-005]: ./milestones/mil-005-wiki-and-finish.md [MIL-005]: ./milestones/mil-005-wiki-and-finish.md
[MIL-006]: ./milestones/mil-006-screenshot.md
[021-snake-game]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/021-snake-game [021-snake-game]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/021-snake-game
[e004c34]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/024-snake/commit/e004c34565839b38dc1e06c8a05baaa66ce9eb1d [e004c34]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/024-snake/commit/e004c34565839b38dc1e06c8a05baaa66ce9eb1d
[988ebba]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/024-snake/commit/988ebba060c1ec69728a7fa36b24bc70737096d8