Add planning baseline: business case, stakeholders, plan, milestones and reviews

Mount the SQA/QC framework and add BC-001, SA-001, PP-001, MIL-001 to
MIL-008, review records RC-001 to RC-010 and the traceability matrix.
Task: MIL-001#1
Task: MIL-001#2
This commit is contained in:
2026-10-13 13:50:39 +08:00
parent 820de6b99b
commit 93d8321762
25 changed files with 1714 additions and 0 deletions
+67
View File
@@ -0,0 +1,67 @@
# MIL-001 Baseline documents
## Metadata
| Key | Value |
| --- | --- |
| ID | MIL-001 |
| CrossReference | [BC-001], [PP-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 | pending |
---
## Purpose
Decide whether the planning baseline is complete so that code may start.
## Deliverable
Accepted Business Case, Stakeholder Analysis, Project Plan and milestone documents, each with a Go review record.
## Go / No-Go Criteria
| # | Criterion (objectively checkable) | Go | No-Go |
| --- | --- | --- | --- |
| 1 | BC, SA and PP are Accepted | Each Version History row is Accepted | Any is Proposed or No-Go |
| 2 | Every milestone has a Go review | A review record (RC) exists with verdict Go | A milestone has no review |
## Dependencies
| Depends on | Reason |
| --- | --- |
| None | First milestone |
## Traceability
| Business Case objective / KPI / user story | Reference |
| --- | --- |
| Objectives 1-5 (planning basis) | [BC-001] |
## Ownership
| Role | Stakeholder ID (SA) |
| --- | --- |
| Owner | S01 |
| Approving reviewer | S01 |
## Target Date
2026-10-14 - within the two-week plan of [PP-001].
## Tasks
| # | Task | Summary | Needs its own Use Case/User Story? | Reference |
| --- | --- | --- | --- | --- |
| 1 | Review baseline documents | Review BC-001, SA-001 and PP-001 against their checklists, write the review records (RC) and set rows to Accepted. This is the gate for everything under src/ and tests/. | No | |
| 2 | Review milestone documents | Review MIL-001 to MIL-008 against qc-milestones-gateways and write the review records (RC). | No | |
| 3 | Install git hooks and plan gate | Run install-git-hooks.sh with --enable-plan-gate so commits touching src/ or tests/ need a Task trailer. | No | |
---
[BC-001]: ../business-case.md
[PP-001]: ../project-plan.md
+71
View File
@@ -0,0 +1,71 @@
# MIL-002 Project scaffold
## Metadata
| Key | Value |
| --- | --- |
| ID | MIL-002 |
| CrossReference | [BC-001], [PP-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 | pending |
---
## Purpose
Decide that the repository skeleton, tooling and environment documentation are ready for game code.
## Deliverable
A repository with src/, tests/, docs/, pyproject.toml, .gitignore (including .env), constants.py, Doxyfile, a continuous integration (CI) workflow and a README that documents the local .venv set up.
## Go / No-Go Criteria
| # | Criterion (objectively checkable) | Go | No-Go |
| --- | --- | --- | --- |
| 1 | pyproject.toml requires Python 3.13 or newer and has no runtime dependencies | File inspected | A dependency is listed or an older Python is allowed |
| 2 | .gitignore covers .venv, caches and .env | git status shows .env ignored | A secret file would be tracked |
| 3 | pytest runs green on a smoke test | pytest exit code 0 | pytest fails |
| 4 | README follows the agreed template and documents the venv and python -m pip install --upgrade pip | Headings match the template | A heading or instruction is missing |
## Dependencies
| Depends on | Reason |
| --- | --- |
| MIL-001 | The previous step of the assignment must be accepted first |
## Traceability
| Business Case objective / KPI / user story | Reference |
| --- | --- |
| Objectives 3, 4 | [BC-001] |
## Ownership
| Role | Stakeholder ID (SA) |
| --- | --- |
| Owner | S01 |
| Approving reviewer | S01 |
## Target Date
2026-10-15 - within the two-week plan of [PP-001].
## Tasks
| # | Task | Summary | Needs its own Use Case/User Story? | Reference |
| --- | --- | --- | --- | --- |
| 1 | Create pyproject.toml and .gitignore | Python >=3.13, src layout, pytest as an optional dev dependency, no runtime dependencies. Python .gitignore that also ignores .env. | No | |
| 2 | Move starter code into src/ and create constants.py | Place main, player, car_manager and scoreboard under src/ and move every constant, including the screen size and loop delay, into constants.py. | No | |
| 3 | Add Doxyfile and Doxygen comment style | Doxyfile that reads src/ and writes to docs/api; document the comment convention used in source. | No | |
| 4 | Write README from the template | Fill every template heading with real instructions for Windows PowerShell, Linux Debian and macOS, including creating a local .venv. | No | |
| 5 | Add CI workflow | Gitea Actions workflow that sets up Python 3.13, installs the dev extras and runs pytest, from framework/templates/ci. | No | |
---
[BC-001]: ../business-case.md
[PP-001]: ../project-plan.md
+68
View File
@@ -0,0 +1,68 @@
# MIL-003 Player
## Metadata
| Key | Value |
| --- | --- |
| ID | MIL-003 |
| CrossReference | [BC-001], [PP-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 | pending |
---
## Purpose
Decide that the player turtle works and is covered by tests.
## Deliverable
A Player class that starts at STARTING_POSITION facing north and moves forward on the Up key.
## Go / No-Go Criteria
| # | Criterion (objectively checkable) | Go | No-Go |
| --- | --- | --- | --- |
| 1 | Player starts at (0, -280) facing north | Test asserts position and heading | Wrong start |
| 2 | go_up moves by MOVE_DISTANCE and never back, left or right | Test asserts y only increases | Other movement possible |
| 3 | Up key is bound to go_up | Manual play-through | Key does not move the turtle |
## Dependencies
| Depends on | Reason |
| --- | --- |
| MIL-002 | The previous step of the assignment must be accepted first |
## Traceability
| Business Case objective / KPI / user story | Reference |
| --- | --- |
| Objective 1 (step 2, bullet 1) | [BC-001] |
## Ownership
| Role | Stakeholder ID (SA) |
| --- | --- |
| Owner | S01 |
| Approving reviewer | S01 |
## Target Date
2026-10-17 - within the two-week plan of [PP-001].
## Tasks
| # | Task | Summary | Needs its own Use Case/User Story? | Reference |
| --- | --- | --- | --- | --- |
| 1 | Implement Player class | Subclass of Turtle with turtle shape, penup, start position and heading north, as in the assignment. | No | |
| 2 | Implement go_up and key binding | go_up moves forward by MOVE_DISTANCE; main.py listens for Up with screen.onkey. | No | |
| 3 | Test Player | Pytest tests for start state and go_up that run without opening a window. | No | |
---
[BC-001]: ../business-case.md
[PP-001]: ../project-plan.md
+70
View File
@@ -0,0 +1,70 @@
# MIL-004 Cars
## Metadata
| Key | Value |
| --- | --- |
| ID | MIL-004 |
| CrossReference | [BC-001], [PP-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 | pending |
---
## Purpose
Decide that cars are generated, drawn as cars and moved correctly.
## Deliverable
A CarManager with create_cars and move_cars, and a registered car shape that shows a body, cabin and two wheels inside a 40 x 20 px footprint.
## Go / No-Go Criteria
| # | Criterion (objectively checkable) | Go | No-Go |
| --- | --- | --- | --- |
| 1 | Cars are generated at random y values, never in the top or bottom 50 px | Test over many samples | A car appears in the safe zone |
| 2 | A new car is created on one in six loop runs | Test of the spawn rule | Wrong rate |
| 3 | Cars move right to left by the current speed | Test of position change | Wrong direction |
| 4 | Each car is drawn as a car, not a colour block, using the standard library only | Visual check and shape registration in code | A plain rectangle is shown or an image file is needed |
## Dependencies
| Depends on | Reason |
| --- | --- |
| MIL-003 | The previous step of the assignment must be accepted first |
## Traceability
| Business Case objective / KPI / user story | Reference |
| --- | --- |
| Objectives 1, 2 (step 2, bullet 2) | [BC-001] |
## Ownership
| Role | Stakeholder ID (SA) |
| --- | --- |
| Owner | S01 |
| Approving reviewer | S01 |
## Target Date
2026-10-19 - within the two-week plan of [PP-001].
## Tasks
| # | Task | Summary | Needs its own Use Case/User Story? | Reference |
| --- | --- | --- | --- | --- |
| 1 | Design the car shape | Draw a car silhouette as a compound turtle Shape: lower body, cabin with window, two wheels, 40 x 20 px, pointing left. Register it once with register_shape. The colour comes from COLORS. | No | |
| 2 | Implement create_cars | Random colour and random y inside the safe-zone limits, one car in six loop runs, each car using the registered shape. | No | |
| 3 | Implement move_cars | Move every car left by the current speed and drop cars that left the screen. | No | |
| 4 | Test CarManager | Pytest tests for spawn rule, safe zone and movement, with the display parts separated from the logic. | No | |
---
[BC-001]: ../business-case.md
[PP-001]: ../project-plan.md
@@ -0,0 +1,69 @@
# MIL-005 Collision and level up
## Metadata
| Key | Value |
| --- | --- |
| ID | MIL-005 |
| CrossReference | [BC-001], [PP-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 | pending |
---
## Purpose
Decide that collisions end the game and finishing a crossing raises difficulty.
## Deliverable
Collision detection, is_at_finish_line, go_to_start and level_up working together in the game loop.
## Go / No-Go Criteria
| # | Criterion (objectively checkable) | Go | No-Go |
| --- | --- | --- | --- |
| 1 | Game stops when the player touches a car's footprint | Test and manual play | Game continues after a hit |
| 2 | is_at_finish_line is true when y exceeds FINISH_LINE_Y | Test | Wrong result |
| 3 | Reaching the finish line returns the player to start and raises car speed by MOVE_INCREMENT | Test | Speed or position unchanged |
## Dependencies
| Depends on | Reason |
| --- | --- |
| MIL-004 | The previous step of the assignment must be accepted first |
## Traceability
| Business Case objective / KPI / user story | Reference |
| --- | --- |
| Objective 1 (step 2, bullets 3 and 4) | [BC-001] |
## Ownership
| Role | Stakeholder ID (SA) |
| --- | --- |
| Owner | S01 |
| Approving reviewer | S01 |
## Target Date
2026-10-21 - within the two-week plan of [PP-001].
## Tasks
| # | Task | Summary | Needs its own Use Case/User Story? | Reference |
| --- | --- | --- | --- | --- |
| 1 | Implement collision detection | Compare the player with each car using a hit area derived from the 20 px car height and 40 px width, so the whole car body counts and not only its centre. | No | |
| 2 | Implement finish line and go_to_start | Player.is_at_finish_line and Player.go_to_start per the assignment. | No | |
| 3 | Implement level_up | CarManager.level_up adds MOVE_INCREMENT to the move distance. | No | |
| 4 | Test collision and level up | Pytest tests for collision, finish line and speed increase. | No | |
---
[BC-001]: ../business-case.md
[PP-001]: ../project-plan.md
+67
View File
@@ -0,0 +1,67 @@
# MIL-006 Scoreboard and game over
## Metadata
| Key | Value |
| --- | --- |
| ID | MIL-006 |
| CrossReference | [BC-001], [PP-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 | pending |
---
## Purpose
Decide that the game is complete in play.
## Deliverable
A Scoreboard showing the level, increasing on each crossing, and GAME OVER displayed in the centre on a collision.
## Go / No-Go Criteria
| # | Criterion (objectively checkable) | Go | No-Go |
| --- | --- | --- | --- |
| 1 | Scoreboard shows the level at top left and it rises per crossing | Test and manual play | Level not shown or not updated |
| 2 | GAME OVER appears at the centre on collision and the window stays open | Manual play | Missing, or the window closes |
## Dependencies
| Depends on | Reason |
| --- | --- |
| MIL-005 | The previous step of the assignment must be accepted first |
## Traceability
| Business Case objective / KPI / user story | Reference |
| --- | --- |
| Objective 1 (step 2, bullet 5) | [BC-001] |
## Ownership
| Role | Stakeholder ID (SA) |
| --- | --- |
| Owner | S01 |
| Approving reviewer | S01 |
## Target Date
2026-10-23 - within the two-week plan of [PP-001].
## Tasks
| # | Task | Summary | Needs its own Use Case/User Story? | Reference |
| --- | --- | --- | --- | --- |
| 1 | Implement Scoreboard | Subclass of Turtle, hidden, writes the level in FONT at the top left; increase_level and update_scoreboard clear and rewrite. | No | |
| 2 | Implement game_over | Write GAME OVER at the centre and keep the window open with exitonclick. | No | |
| 3 | Test Scoreboard and full play-through | Pytest tests for level text and a manual checklist of the five Step 2 behaviours. | No | |
---
[BC-001]: ../business-case.md
[PP-001]: ../project-plan.md
+68
View File
@@ -0,0 +1,68 @@
# MIL-007 README and wiki
## Metadata
| Key | Value |
| --- | --- |
| ID | MIL-007 |
| CrossReference | [BC-001], [PP-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 | pending |
---
## Purpose
Decide that S02 can run and understand the project.
## Deliverable
Final README and wiki pages in English, Danish and Bahasa Malaysia.
## Go / No-Go Criteria
| # | Criterion (objectively checkable) | Go | No-Go |
| --- | --- | --- | --- |
| 1 | README run and test instructions work on a clean clone | S01 follows them | A step fails |
| 2 | Every wiki page exists in en, da and ms | File listing | A language is missing |
| 3 | Doxygen builds without warnings | doxygen Doxyfile output | Warnings present |
## Dependencies
| Depends on | Reason |
| --- | --- |
| MIL-006 | The previous step of the assignment must be accepted first |
## Traceability
| Business Case objective / KPI / user story | Reference |
| --- | --- |
| Objectives 3, 4 | [BC-001] |
## Ownership
| Role | Stakeholder ID (SA) |
| --- | --- |
| Owner | S01 |
| Approving reviewer | S01 |
## Target Date
2026-10-26 - within the two-week plan of [PP-001].
## Tasks
| # | Task | Summary | Needs its own Use Case/User Story? | Reference |
| --- | --- | --- | --- | --- |
| 1 | Final README pass | Check every section against the real commands; fill Continuous integration, Build the source documentation, Project layout and License. | No | |
| 2 | Write the wiki in three languages | Home, Install and Play, Architecture and Contributing pages in en, da and ms, laid out like the TirSystem github-action wiki, with -da and -ms file suffixes. | No | |
| 3 | Build the source documentation | Run doxygen and fix warnings so the Doxyfile is known to work. | No | |
---
[BC-001]: ../business-case.md
[PP-001]: ../project-plan.md
+66
View File
@@ -0,0 +1,66 @@
# MIL-008 Repository metadata and release
## Metadata
| Key | Value |
| --- | --- |
| ID | MIL-008 |
| CrossReference | [BC-001], [PP-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 | pending |
---
## Purpose
Decide that the project is published and complete.
## Deliverable
Repository description and topics set on the git host, and the final review recorded.
## Go / No-Go Criteria
| # | Criterion (objectively checkable) | Go | No-Go |
| --- | --- | --- | --- |
| 1 | Description and at least 5 topics set | Repository page | Missing |
| 2 | All milestones closed and review records are Go | Registry and review folder | An open milestone or No-Go |
## Dependencies
| Depends on | Reason |
| --- | --- |
| MIL-007 | The previous step of the assignment must be accepted first |
## Traceability
| Business Case objective / KPI / user story | Reference |
| --- | --- |
| Objective 5 | [BC-001] |
## Ownership
| Role | Stakeholder ID (SA) |
| --- | --- |
| Owner | S01 |
| Approving reviewer | S01 |
## Target Date
2026-10-27 - within the two-week plan of [PP-001].
## Tasks
| # | Task | Summary | Needs its own Use Case/User Story? | Reference |
| --- | --- | --- | --- | --- |
| 1 | Set repository description and topics | Use the git host application programming interface (API) with the token from .env, read by the shell only and never copied into the project or printed. | No | |
| 2 | Final acceptance review | Review all documents once more, close milestones and record the summary for S01. | No | |
---
[BC-001]: ../business-case.md
[PP-001]: ../project-plan.md