Merge pull request 'Plan baseline: business case, stakeholders, plan, milestones' (#1) from docs-baseline into main
TirSystem/github-action: Sync GitHub mirror metadata / sync-metadata (push) Successful in 6s

This commit was merged in pull request #1.
This commit is contained in:
2026-10-13 09:41:00 +02:00
16 changed files with 1056 additions and 0 deletions
+3
View File
@@ -0,0 +1,3 @@
[submodule "framework"]
path = framework
url = ssh://git@git.tirsystem.com:10022/TirSystem/SQA-QC-Framework.git
+59
View File
@@ -0,0 +1,59 @@
# Artifact Registry
This project's artifact state. Types, short names and `CrossReference
Candidates` come from the framework catalog
(`framework/registry/artifact-catalog.md`); this file only records where
each document lives in *this* project and the next version to use.
Delete rows for types you don't use. Add a row the first time you create a
document of a type. `Primary File` may contain a glob (e.g.
`docs/uc-*/uc.md`); `framework/scripts/find-crossreferences.sh` reads it.
| Short Name | Artifact Type | Primary File | Next Available Version |
| --- | --- | --- | --- |
| BC | Business Case | docs/business-case.md | 002 |
| SA | Stakeholder Analysis | docs/stakeholder-analysis.md | 002 |
| PP | Project Plan | docs/project-plan.md | 002 |
| MIL | Milestone / Gateway | docs/milestones/*.md | 005 |
| ADR | Architecture Decision Record | docs/adr/adr-NNNN-*.md | 0001 |
| RC | SQA Review Record | docs/sqa/reviews/rc-*.md | 007 |
## Languages
Set the PO language when the project starts; `project-planning` asks for it
if it is missing. An artifact of a type marked "Written in the PO language"
exists once, in that language, under its normal name (`business-case.md`); the
`artifact` skill ("One file per artifact") has the rule.
| Setting | Value |
| --- | --- |
| PO language | en |
| PO domain | it |
| High-level register | IT Executive English |
| Technical register | IT Professional English |
Every artifact of a type marked "Yes" below states its language and domain in
its `Language` and `Domain` Metadata rows; `new-artifact.sh` fills them from
`PO language` and `PO domain`. `Language` is a BCP 47 code (`da`, `en`).
`Domain` is a value from this list; add a row to introduce a domain, so a
reviewer can see at once which professional vocabulary a document uses.
| Domain | Meaning |
| --- | --- |
| it | Software and IT |
| medical | Healthcare and medical devices |
| construction | Construction and civil engineering |
| Artifact types | Register | Written in the PO language |
| --- | --- | --- |
| BC, KPI, PP, MIL | IT Executive English | Yes |
| SA, BMC, BPMN, UCD, US, UC, SSD, DM, RA, GOV, DICT | IT Professional English | Yes |
| OC, SD, DCD, ERD, ADR, TM, RC, QC, source code | IT Professional English | No |
## Notes
- "Next Available Version" is the zero-padded (3-digit) version to use the
*next* time a new document of that type is created. Increment it only when
a brand-new document is created, not when an existing document's
`## Version History` gets a row.
- `ADR` uses 4 digits (`0001`); `RC` is sequential across all artifact types.
+131
View File
@@ -0,0 +1,131 @@
# Business Case
## Metadata
| Key | Value |
| --- | --- |
| ID | BC-001 |
| CrossReference | |
| Language | en |
| Domain | it |
## Version History
| Date | Status | Author | Reviewer | Change | Commit |
| --- | --- | --- | --- | --- | --- |
| 2026-10-13 | Accepted | Claude (AI) for S01 | AI as stand-in for S01 | Initial version; review RC-001: Go | [b113e6e] |
---
## Executive Summary
Build the U.S. States Game from Udemy's *100 Days of Code* (Day 25) as a small, clean, tested Python project: a Turtle window shows a blank U.S. map, the player types state names, correct guesses appear at their map coordinates, and on exit the states the player missed are saved to `states_to_learn.csv`. The project also serves as a worked example of a well-run repository: planned in documents, built through reviewed pull requests, with a README, a Doxygen source reference and a three-language wiki.
## Methodological and Standards Foundation
Documents follow the SQA and QC framework mounted at `framework/` (artifact registry, QC checklists, review records). Quality characteristics are tagged with ISO/IEC 25010:2023. Code follows the `coding-conventions` skill (Python) and the layering of the `clean-architecture` skill where it fits a program of this size.
## Problem Statement
The course assignment is delivered as three lecture descriptions and a zip with a blank `main.py`. A participant who only follows the lectures ends with one untested script. Other course participants and repository viewers have no readable, runnable, documented reference solution to compare against, and the author has no repeatable example of a planned and reviewed delivery.
## Business Opportunity
A small, finished project is cheap to complete and makes a good public reference: course participants can compare solutions, viewers can borrow the repository structure (tests, continuous integration (CI), docs, wiki) for their own work.
## Objectives
1. Deliver a runnable U.S. States Game that meets the three lectures' behaviour (map, guess checking, exit and `states_to_learn.csv`).
2. Keep the assignment's vocabulary in the code (`screen`, `data`, `states`, `guessed_states`, `missing_states`, `states_to_learn.csv`) so participants can compare.
3. Cover the game logic with automated pytest tests that run without a display.
4. Publish the repository with a description, topics, README, Doxygen configuration and a wiki in English, Danish and Bahasa Malaysia, all with screenshots.
## Scope
### In Scope
- The game as described in the three lectures: map image, `50_states.csv`, case-insensitive guess, counter in the title, `exit` command, `states_to_learn.csv`.
- Python 3.13 or newer, `venv`, `pyproject.toml`, `constants.py`, `src/` and `tests/` layout, Python `.gitignore`.
- pytest tests, a continuous integration workflow, Doxygen comments and `Doxyfile`.
- README (given template) with screenshots, wiki in three languages with screenshots.
- Repository description and topics on the git host; one branch and pull request per step.
### Out of Scope
- Other countries or subjects (mentioned in the lecture only as an idea).
- A packaged installer, a web version, scoring, timers or persistent high scores.
- Runtime dependencies beyond what the assignment needs.
## Expected Benefits
### Tangible Benefits
- A working, tested game and a reproducible way to run and test it.
- A repository others can clone and run from README instructions alone.
### Intangible Benefits
- A reusable reference for how a small course project is planned, reviewed and documented.
- Practice with the framework's plan, review and pull-request flow.
## Strategic Alignment
Supports the author's course progress in the 100 Days of Code bootcamp and the habit of delivering each exercise as a reviewed, documented repository.
## Success Criteria
| # | Criterion | Target | Measure |
| --- | --- | --- | --- |
| 1 | Game behaviour | All behaviours of the three lectures work | Manual run and screenshot per behaviour; checklist in the final milestone |
| 2 | Automated tests | 100 % of tests pass, no display needed | `pytest` exit code 0, locally and in CI |
| 3 | Run-from-README | A fresh clone runs the game and tests with README steps only | Fresh clone walk-through on the author's machine |
| 4 | Documentation | README sections complete; wiki has en, da, ms pages with screenshots | `framework/scripts/check-readme.sh` and `check-languages.sh` pass |
| 5 | Repository | Description and at least 5 topics set | Repository page shows them |
| 6 | Dependencies | No runtime dependency beyond the standard library and what the assignment names (pandas) | `pyproject.toml` review |
## Risks
| Risk | Impact | Mitigation |
| --- | --- | --- |
| Turtle needs a display, so tests and CI cannot open a window | Untestable game | Keep game logic in pure functions in a separate module; the Turtle layer is thin and tested with a fake screen |
| Pandas is heavy for a 50-row comma-separated values (CSV) file | Violates "no needless runtime dependencies" for S03 | Record the decision in an Architecture Decision Record (ADR); use the standard `csv` module unless the participant-facing assignment requires pandas (see Assumptions) |
| Git host token or API unavailable | Description, topics or issues cannot be set | Stop and report; the work in the repository is not blocked |
| Screenshots need a graphical session | Documentation incomplete | Capture on the author's desktop with the running game; stop and report if impossible |
| Credentials in `.env` leak | Secret exposure | `.env` is git-ignored, never imported, never printed |
## Assumptions
- The Product Owner, developer and reviewer is S01 (see [SA-001]); no independent reviewer exists, so reviews in autonomous mode are recorded as not independent.
- Course participants (S02) and repository viewers (S03) are not interviewed; their needs are as stated in the request.
- The assignment's `50_states.csv` and `blank_states_img.gif` from the course zip may be committed under `src/`.
- Pandas is optional: the assignment uses it, but the standard library `csv` module is enough (decided in an ADR in the first build milestone).
## Constraints
- Python 3.13 or newer; `venv`; `pytest`; constants in `constants.py`; configuration in `pyproject.toml`.
- Layout `src/`, `tests/`, `docs/`.
- Doxygen comments in source; a `Doxyfile`.
- Wiki in three languages (English, Danish, Bahasa Malaysia) modelled on `https://git.tirsystem.com/TirSystem/github-action/wiki`.
- Tokens come from `.env` for personal use only; they are not tested, imported or committed.
- Git host: `https://git.tirsystem.com/Tirsvad-Udemy-100_days_of_code` (organisation), repository `025-us-states-game`.
- Duration: one working day.
## Cost–Benefit Assessment
| Costs | Benefits |
| --- | --- |
| About one day of the author's time; no licence or hosting cost (qualitative, the project is an exercise) | A finished reference project and a reusable repository structure (qualitative) |
## Stakeholders
| Stakeholder ID (SA) | Interest in this project |
| --- | --- |
| S01 | Product Owner, developer, reviewer: a finished, correct, reviewed exercise |
| S02 | Course participants: readable, runnable code with the assignment's names and README instructions |
| S03 | Repository viewers: clear description, topics, README, no runtime dependencies |
## Recommendation
Proceed — the scope is small, fully specified by the lectures, and low risk.
---
[b113e6e]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/025-us-states-game/commit/b113e6eacd12bb08045ecf6f7822837626a7b1f7
+73
View File
@@ -0,0 +1,73 @@
# MIL-001 Baseline and repository setup
## Metadata
| Key | Value |
| --- | --- |
| ID | MIL-001 |
| CrossReference | [BC-001] |
| Language | en |
| Domain | it |
## Version History
| Date | Status | Author | Reviewer | Change | Commit |
| --- | --- | --- | --- | --- | --- |
| 2026-10-13 | Accepted | Claude (AI) for S01 | AI as stand-in for S01 | Initial version; review RC-003: Go | [b113e6e] |
---
## Purpose
Decide whether the repository is ready to build in: tooling, layout, assignment assets, continuous integration (CI) and the public repository surface exist before any game code.
## Deliverable
A repository with `src/`, `tests/`, `docs/`, `.gitignore`, `pyproject.toml`, `constants.py`, the assignment assets, a `Doxyfile`, a README skeleton, a CI workflow, and a description and topics set on the git host.
## Go / No-Go Criteria
| # | Criterion (objectively checkable) | Go | No-Go |
| --- | --- | --- | --- |
| 1 | `pip install -e ".[dev]"` and `pytest` run in a fresh `.venv` on Python 3.13 or newer (zero tests collected is acceptable) | Met | Not met |
| 2 | `.gitignore` ignores `.venv/`, `__pycache__/`, `.env` and `docs/build` | Met | Not met |
| 3 | `doxygen Doxyfile` runs without error | Met | Not met |
| 4 | The repository description and at least 5 topics are visible on the git host | Met | Not met |
| 5 | The CI workflow file exists and installs and runs pytest | Met | Not met |
## Dependencies
| Depends on | Reason |
| --- | --- |
| None | First milestone |
## Traceability
| Business Case objective / KPI / user story | Reference |
| --- | --- |
| Objective 4; Success criteria 3, 5, 6 | [BC-001] |
## Ownership
| Role | Stakeholder ID (SA) |
| --- | --- |
| Owner | S01 |
| Approving reviewer | S01 |
## Target Date
2026-10-13 - within the one-working-day duration constraint of [BC-001].
## Tasks
| # | Task | Summary | Needs its own Use Case/User Story? | Reference |
| --- | --- | --- | --- | --- |
| 1 | Set repository description and topics | Set a one-sentence description and topics (`python`, `turtle-graphics`, `quiz-game`, `udemy`, `100-days-of-code`, `us-states`) through the git host API. The token is read from `.env` by the shell only; it is never imported, tested, printed or committed. Serves S03. | No | |
| 2 | Add .gitignore, pyproject.toml and project layout | Python `.gitignore`; `pyproject.toml` with `requires-python = ">=3.13"` and a `dev` extra with pytest; `src/` package and `tests/` folder. Constants live in `constants.py`. Serves the Business Case constraints. | No | |
| 3 | Add assignment assets | Unpack `50_states.csv` and `blank_states_img.gif` from the course zip into the package data folder. They are course-provided inputs the game needs at run time. | No | |
| 4 | Add Doxyfile | Configuration so `doxygen Doxyfile` builds the source reference from `src/` into `docs/build/doxygen`, with Python Doxygen comments (`##` and `@param`) supported. | No | |
| 5 | Add README skeleton and venv instructions | Create `README.md` from the framework template with every required section, including how to create a local `.venv` and run `python -m pip install --upgrade pip` on Windows PowerShell, Linux Debian and macOS. Filled in with screenshots in MIL-004. | No | |
| 6 | Add continuous integration workflow | A Gitea Actions workflow that sets up Python 3.13, installs the project with the dev extra and runs pytest, so the README Continuous integration section has something to describe. | No | |
---
[BC-001]: ../business-case.md
[b113e6e]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/025-us-states-game/commit/b113e6eacd12bb08045ecf6f7822837626a7b1f7
+72
View File
@@ -0,0 +1,72 @@
# MIL-002 Game core logic
## Metadata
| Key | Value |
| --- | --- |
| ID | MIL-002 |
| CrossReference | [BC-001] |
| Language | en |
| Domain | it |
## Version History
| Date | Status | Author | Reviewer | Change | Commit |
| --- | --- | --- | --- | --- | --- |
| 2026-10-13 | Accepted | Claude (AI) for S01 | AI as stand-in for S01 | Initial version; review RC-004: Go | [b113e6e] |
---
## Purpose
Decide whether the game rules work and are tested without a display: loading states, checking guesses, finding missing states and writing the learning file.
## Deliverable
A display-free module with the game logic and pytest tests, plus an Architecture Decision Record (ADR) for the data library choice.
## Go / No-Go Criteria
| # | Criterion (objectively checkable) | Go | No-Go |
| --- | --- | --- | --- |
| 1 | `pytest` passes with tests for load, guess matching, missing states and CSV export | Met | Not met |
| 2 | Guess matching is case-insensitive and ignores surrounding spaces (`ohio` matches `Ohio`) | Met | Not met |
| 3 | `states_to_learn.csv` lists exactly the 50 states minus those guessed, in one column `state` | Met | Not met |
| 4 | The logic imports no `turtle` module | Met | Not met |
| 5 | The ADR for the data library is `Accepted` | Met | Not met |
## Dependencies
| Depends on | Reason |
| --- | --- |
| MIL-001 | Layout, tooling and assets must exist |
## Traceability
| Business Case objective / KPI / user story | Reference |
| --- | --- |
| Objectives 1, 2, 3; Success criteria 1, 2, 6 | [BC-001] |
## Ownership
| Role | Stakeholder ID (SA) |
| --- | --- |
| Owner | S01 |
| Approving reviewer | S01 |
## Target Date
2026-10-13 - within the one-working-day duration constraint of [BC-001].
## Tasks
| # | Task | Summary | Needs its own Use Case/User Story? | Reference |
| --- | --- | --- | --- | --- |
| 1 | Record ADR: csv module versus pandas | Decide whether to read `50_states.csv` with the standard library or pandas. S03 wants no runtime dependencies, S02 follows a pandas lecture. Record the decision and its consequences as an ADR. | No | |
| 2 | Load states data | Read `50_states.csv` into a structure keyed by state name with `x` and `y`, using paths and column names from `constants.py`. | No | |
| 3 | Check a guess | Match a typed answer to a state case-insensitively and return its coordinates, so the UI can write the name at that place (lecture 2). | No | |
| 4 | Find missing states and write states_to_learn.csv | Compute `missing_states` from all states and `guessed_states` and save them as `states_to_learn.csv` (lecture 3). | No | |
| 5 | Add pytest tests for the game core | Tests for load, guess, missing states and CSV output using a temporary directory; they must run without a display. | No | |
---
[BC-001]: ../business-case.md
[b113e6e]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/025-us-states-game/commit/b113e6eacd12bb08045ecf6f7822837626a7b1f7
+74
View File
@@ -0,0 +1,74 @@
# MIL-003 Turtle game and entry point
## Metadata
| Key | Value |
| --- | --- |
| ID | MIL-003 |
| CrossReference | [BC-001] |
| Language | en |
| Domain | it |
## Version History
| Date | Status | Author | Reviewer | Change | Commit |
| --- | --- | --- | --- | --- | --- |
| 2026-10-13 | Accepted | Claude (AI) for S01 | AI as stand-in for S01 | Initial version; review RC-005: Go | [b113e6e] |
---
## Purpose
Decide whether the playable game works end to end: map, input prompts, drawn names, counter in the title, `exit` and the learning file.
## Deliverable
A runnable `main.py` entry point that plays the full game with Turtle, built on the tested core, with the click-coordinate helper from lecture 1.
## Go / No-Go Criteria
| # | Criterion (objectively checkable) | Go | No-Go |
| --- | --- | --- | --- |
| 1 | `python main.py` starts and shows the blank map titled "U.S. States Game" | Met | Not met |
| 2 | A correct guess writes the state name at its coordinates and increments the counter in the title | Met | Not met |
| 3 | A wrong guess re-opens the prompt without a crash | Met | Not met |
| 4 | Typing `exit` ends the game and writes `states_to_learn.csv` | Met | Not met |
| 5 | Guessing all 50 states ends the game | Met | Not met |
| 6 | The Turtle layer has a pytest test using a fake screen (no display needed) | Met | Not met |
## Dependencies
| Depends on | Reason |
| --- | --- |
| MIL-002 | The UI is built on the tested game core |
## Traceability
| Business Case objective / KPI / user story | Reference |
| --- | --- |
| Objectives 1, 2; Success criterion 1 | [BC-001] |
## Ownership
| Role | Stakeholder ID (SA) |
| --- | --- |
| Owner | S01 |
| Approving reviewer | S01 |
## Target Date
2026-10-13 - within the one-working-day duration constraint of [BC-001].
## Tasks
| # | Task | Summary | Needs its own Use Case/User Story? | Reference |
| --- | --- | --- | --- | --- |
| 1 | Set up screen, title and map image | Create the `screen`, set the title and register `blank_states_img.gif` as a shape (lecture 1), kept in a function with the assignment name. | No | |
| 2 | Add mouse click coordinate helper | `get_mouse_click_coor(x, y)` prints click coordinates and the screen stays open with `mainloop`, as in lecture 1. | No | |
| 3 | Implement the guess loop | While fewer than 50 states are guessed, prompt with `textinput`, title-case the answer, write the state at its coordinates and update the counter (lecture 2); `exit` breaks the loop (lecture 3). | No | |
| 4 | Add the entry point | `main.py` wires screen, loop and the learning-file export so `python main.py` runs the game after setup. | No | |
| 5 | Add UI test with a fake screen | Inject a fake screen and prompt into the loop to verify the flow without a display. | No | |
| 6 | Run the game manually | Run the real game once and note the result in the milestone review. | No | |
---
[BC-001]: ../business-case.md
[b113e6e]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/025-us-states-game/commit/b113e6eacd12bb08045ecf6f7822837626a7b1f7
+73
View File
@@ -0,0 +1,73 @@
# MIL-004 Documentation, screenshots and wiki
## Metadata
| Key | Value |
| --- | --- |
| ID | MIL-004 |
| CrossReference | [BC-001] |
| Language | en |
| Domain | it |
## Version History
| Date | Status | Author | Reviewer | Change | Commit |
| --- | --- | --- | --- | --- | --- |
| 2026-10-13 | Accepted | Claude (AI) for S01 | AI as stand-in for S01 | Initial version; review RC-006: Go | [b113e6e] |
---
## Purpose
Decide whether the repository is publishable for S02 and S03: README, source reference, screenshots and a three-language wiki.
## Deliverable
Completed README with screenshots, Doxygen comments verified and buildable, wiki pages in English, Danish and Bahasa Malaysia with screenshots, and a verified fresh-clone run.
## Go / No-Go Criteria
| # | Criterion (objectively checkable) | Go | No-Go |
| --- | --- | --- | --- |
| 1 | `framework/scripts/check-readme.sh` passes | Met | Not met |
| 2 | `doxygen Doxyfile` builds without warnings about undocumented public functions | Met | Not met |
| 3 | The wiki has `Home`, `Install` and `Description` pages in `en`, `da` and `ms` and a `_Sidebar.md` | Met | Not met |
| 4 | README and wiki embed at least 2 screenshots of the running game | Met | Not met |
| 5 | A fresh clone follows the README and the game and tests run | Met | Not met |
## Dependencies
| Depends on | Reason |
| --- | --- |
| MIL-003 | There must be a running game to screenshot |
## Traceability
| Business Case objective / KPI / user story | Reference |
| --- | --- |
| Objective 4; Success criteria 3, 4, 5 | [BC-001] |
## Ownership
| Role | Stakeholder ID (SA) |
| --- | --- |
| Owner | S01 |
| Approving reviewer | S01 |
## Target Date
2026-10-13 - within the one-working-day duration constraint of [BC-001].
## Tasks
| # | Task | Summary | Needs its own Use Case/User Story? | Reference |
| --- | --- | --- | --- | --- |
| 1 | Capture screenshots of the running game | Take screenshots of the start screen and a game in progress from the real game, stored under `docs/images/`, used by README and wiki. Serves S02 and S03. | No | |
| 2 | Complete README | Fill every template section (requirements, set up for PowerShell, Debian and macOS, run, tests, continuous integration, source documentation, layout, license) and embed the screenshots. | No | |
| 3 | Review Doxygen comments and build | Verify every public function and constant has a Doxygen comment, run `doxygen Doxyfile`, and document the command in the README. | No | |
| 4 | Write the wiki in English, Danish and Bahasa Malaysia | Pages `Home`, `Install`, `Description` and `_Sidebar.md` under `wiki/` in the same layout as the TirSystem github-action wiki, each with `-da` and `-ms` variants and screenshots. | No | |
| 5 | Publish the wiki to the git host | Push the `wiki/` pages to the repository wiki on the git host. | No | |
| 6 | Verify from a fresh clone | Clone to a clean folder, follow the README, run the game and tests, and record the result. | No | |
---
[BC-001]: ../business-case.md
[b113e6e]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/025-us-states-game/commit/b113e6eacd12bb08045ecf6f7822837626a7b1f7
+88
View File
@@ -0,0 +1,88 @@
# Project Plan
## Metadata
| Key | Value |
| --- | --- |
| ID | PP-001 |
| CrossReference | [BC-001], [SA-001], [MIL-001], [MIL-002], [MIL-003], [MIL-004] |
| Language | en |
| Domain | it |
## Version History
| Date | Status | Author | Reviewer | Change | Commit |
| --- | --- | --- | --- | --- | --- |
| 2026-10-13 | Accepted | Claude (AI) for S01 | S01 | Initial version; accepted by S01 in chat as part of the plan | [b113e6e] |
---
## Purpose
Schedule the four phases of the U.S. States Game over the one-working-day duration constraint of [BC-001], and name who owns them ([SA-001]).
## Planning Assumptions
- The work starts 2026-10-13 and ends the same day, per the Business Case constraint.
- One phase is one pull request; phases run strictly in sequence.
- S01 is owner and reviewer of every phase; reviews in autonomous mode are recorded as not independent.
## Gateway Schedule
| Gateway | Document | Window | Decision date | Owner | Stories | Main deliverable | Milestone |
| --- | --- | --- | --- | --- | --- | --- | --- |
| Baseline and repository setup | [MIL-001] | 2026-10-13 | 2026-10-13 | S01 | | Tooling, layout, assets, CI, repository surface | |
| Game core logic | [MIL-002] | 2026-10-13 | 2026-10-13 | S01 | | Tested, display-free game rules and ADR | |
| Turtle game and entry point | [MIL-003] | 2026-10-13 | 2026-10-13 | S01 | | Playable game | |
| Documentation, screenshots and wiki | [MIL-004] | 2026-10-13 | 2026-10-13 | S01 | | README, Doxygen, wiki in en/da/ms | |
```plantuml
@startgantt
Project starts 2026-10-13
[Baseline] starts 2026-10-13 and ends 2026-10-13
[Game core] starts 2026-10-13 and ends 2026-10-13
[Turtle game] starts 2026-10-13 and ends 2026-10-13
[Documentation] starts 2026-10-13 and ends 2026-10-13
[Baseline Go/No-Go] happens 2026-10-13
[Documentation Go/No-Go] happens 2026-10-13
@endgantt
```
## Scope Coverage
| Business Case scope item | Gateway |
| --- | --- |
| Game per the three lectures | MIL-002, MIL-003 |
| Python 3.13+, venv, pyproject, constants, layout, .gitignore | MIL-001 |
| pytest tests, CI | MIL-001, MIL-002, MIL-003 |
| Doxygen comments and Doxyfile | MIL-001, MIL-004 |
| README and wiki with screenshots | MIL-001, MIL-004 |
| Repository description and topics | MIL-001 |
## Dependencies
```
MIL-001 -> MIL-002 -> MIL-003 -> MIL-004
```
A No-Go stops later phases until its criteria are met; all dates shift together.
## Plan Risks
| Risk | Impact | Mitigation |
| --- | --- | --- |
| Screenshots cannot be captured in this environment | MIL-004 incomplete | Stop and report; the rest of the plan is unaffected |
| Git host rejects the token or the wiki push | Surface and wiki unpublished | Stop and report; content stays in the repository |
## Open Issues
- The prompt names the repository `https://git.tirsystem.com/Tirsvad-Udemy-100_days_of_code` while `origin` is `Tirsvad-Udemy-100-days-of-code/025-us-states-game`. The plan uses `origin`.
- The power and interest of S02 and S03 were set by the plan author; S01 may amend.
---
[BC-001]: ./business-case.md
[SA-001]: ./stakeholder-analysis.md
[MIL-001]: ./milestones/mil-001-baseline-setup.md
[MIL-002]: ./milestones/mil-002-game-core.md
[MIL-003]: ./milestones/mil-003-turtle-game.md
[MIL-004]: ./milestones/mil-004-docs-release.md
[b113e6e]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/025-us-states-game/commit/b113e6eacd12bb08045ecf6f7822837626a7b1f7
+68
View File
@@ -0,0 +1,68 @@
# SQA Review Record
## Metadata
| Key | Value |
| --- | --- |
| ID | RC-001 |
| CrossReference | [BC-001], [QC-BC-001] |
## Version History
| Date | Status | Author | Reviewer | Change | Commit |
| --- | --- | --- | --- | --- | --- |
| 2026-10-13 | Proposed | Claude (AI) for S01 | AI as stand-in for S01 | Initial review record: Go | [b113e6e] |
---
## Artifact Under Review
- Instance reviewed: [BC-001]
- Checklist used: [QC-BC-001] and [QC-LANG-001]
- Scope: full review
- Language and domain: en / it
- Language reviewer: none (the reviewer reads English and knows the domain, as stand-in for S01)
- Mode: autonomous, not independent (the reviewer is `AI as stand-in for S01`; the author is the same AI)
## Checklist Results
| # | Criterion | Status | Evidence/Notes |
| --- | --- | --- | --- |
| 1 | ROI/Cost-Benefit analysis is quantitative, or where qualitative, is explicitly justified | Pass | Cost-Benefit table is qualitative and says why: the project is an exercise with no licence or hosting cost. |
| 2 | Risks are identified with documented impact and mitigation | Pass | Risks table: five risks, each with impact and mitigation. |
| 3 | Success criteria are measurable, stating explicit targets rather than vague aspirations | Pass | Six criteria with target and measure (pytest exit code 0, `check-readme.sh` passes, at least 5 topics). |
| 4 | Scope explicitly separates In Scope vs Out of Scope | Pass | `### In Scope` and `### Out of Scope` subsections. |
| 5 | Stakeholders are cross-referenced to Stakeholder Analysis IDs rather than re-described inline | Pass | Stakeholders table cites S01, S02, S03 and [SA-001]. |
| 6 | Methodology and quality-standard foundation are stated explicitly (e.g. ISO/IEC 25010, Larman) | Pass | Section names the framework, ISO/IEC 25010:2023 and the coding conventions. |
| 7 | Assumptions and constraints are explicit and clearly distinguished from one another | Pass | Separate Assumptions and Constraints sections. |
| 8 | Document supports executive decision-making with a clear, unambiguous recommendation | Pass | Recommendation: Proceed, with rationale. |
## 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` = en, `Domain` = it in Metadata. |
| 2 | `Language` is a BCP 47 code and `Domain` is a value from the registry's domain list | Pass | `en`; `it` is in the registry's domain table. |
| 3 | The content (prose and table cells) is written in the stated language | Pass | All prose and cells are English. Checked by the stand-in for S01, who reads English. |
| 4 | The register matches the one the registry gives for the artifact type | Pass | IT Executive English: plain objective-level prose with no implementation detail beyond what the scope needs. |
| 5 | Domain terms are the PO terms of the domain's dictionary, with no synonyms | Pass | No `DICT` exists for domain `it` and none is in the plan; the document uses standard Python and software terms consistently (for example `states_to_learn.csv`, `missing_states`, Doxygen). Recorded as a stand-in decision. |
| 6 | Metadata keys, section headings, IDs and statuses are in English | Pass | All structural vocabulary is English. |
| 7 | No translated twin (`<name>.<language>.md`) exists beside the document | Pass | `check-languages.sh` reports no twin. |
| 8 | A change of language or domain since the previous accepted version has a Version History row and was reviewed again | Pass | First version; no earlier accepted version. |
| 9 | A reviewer competent in the domain, and in the language, has confirmed that the domain terms are used correctly | Pass | The reviewer, AI as stand-in for S01, reads English and the software domain; no second language reviewer is named. S01 is the Product Owner and reads both; a person may challenge this in the run summary. |
| 10 | Abbreviations are spelled out on first use, in the stated language | Pass | Continuous integration (CI), Architecture Decision Record (ADR) and comma-separated values (CSV) are spelled out where first used in prose; file names and tool names are not abbreviations. |
## Overall Verdict
Go - The Business Case is complete against its checklist. Every Mandatory criterion of both checklists passes.
## Action Items
| Action | Owner | Due |
| --- | --- | --- |
| None | S01 | |
---
[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
[b113e6e]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/025-us-states-game/commit/b113e6eacd12bb08045ecf6f7822837626a7b1f7
@@ -0,0 +1,68 @@
# SQA Review Record
## Metadata
| Key | Value |
| --- | --- |
| ID | RC-002 |
| CrossReference | [SA-001], [QC-SA-001] |
## Version History
| Date | Status | Author | Reviewer | Change | Commit |
| --- | --- | --- | --- | --- | --- |
| 2026-10-13 | Proposed | Claude (AI) for S01 | AI as stand-in for S01 | Initial review record: Go | [b113e6e] |
---
## Artifact Under Review
- Instance reviewed: [SA-001]
- Checklist used: [QC-SA-001] and [QC-LANG-001]
- Scope: full review
- Language and domain: en / it
- Language reviewer: none (the reviewer reads English and knows the domain, as stand-in for S01)
- Mode: autonomous, not independent (the reviewer is `AI as stand-in for S01`; the author is the same AI)
## Checklist Results
| # | Criterion | Status | Evidence/Notes |
| --- | --- | --- | --- |
| 1 | Power/Interest grid is filled for every stakeholder, with no gaps or unclassified entries | Pass | S01, S02, S03 each have power, interest and quadrant. |
| 2 | Each stakeholder is assigned a unique, stable ID (e.g. S01-S11 style) reusable for RACI assignments in other artifacts | Pass | S01, S02, S03; used by the Business Case, plan and milestones. |
| 3 | Roles and organizational context are defined with explicit Power and Interest levels, not just narrative description | Pass | Role, organisation, power and interest in the summary table. |
| 4 | Communication needs (channel, frequency, deliverable type) are mapped to project phases or milestones | Pass | Communication table names milestone for each stakeholder. |
| 5 | Conflicting stakeholder interests are identified with documented mitigation or resolution strategies | Pass | Two conflicts, each with a mitigation. |
| 6 | Stakeholder concerns are explicitly traced to Business Case objectives | Pass | Business Goal Alignment table cites [BC-001] objectives. |
| 7 | Primary concerns are expressed in both business language and a recognized quality-attribute mapping (e.g. FURPS+) | Pass | Concerns table with FURPS+ attribute. |
| 8 | Document is understandable and navigable by non-technical stakeholders reviewing their own entry | Pass | One table row per stakeholder, plain wording. |
## 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` = en, `Domain` = it in Metadata. |
| 2 | `Language` is a BCP 47 code and `Domain` is a value from the registry's domain list | Pass | `en`; `it` is in the registry's domain table. |
| 3 | The content (prose and table cells) is written in the stated language | Pass | All prose and cells are English. Checked by the stand-in for S01, who reads English. |
| 4 | The register matches the one the registry gives for the artifact type | Pass | IT Professional English: concrete technical terms and checkable statements. |
| 5 | Domain terms are the PO terms of the domain's dictionary, with no synonyms | Pass | No `DICT` exists for domain `it` and none is in the plan; the document uses standard Python and software terms consistently (for example `states_to_learn.csv`, `missing_states`, Doxygen). Recorded as a stand-in decision. |
| 6 | Metadata keys, section headings, IDs and statuses are in English | Pass | All structural vocabulary is English. |
| 7 | No translated twin (`<name>.<language>.md`) exists beside the document | Pass | `check-languages.sh` reports no twin. |
| 8 | A change of language or domain since the previous accepted version has a Version History row and was reviewed again | Pass | First version; no earlier accepted version. |
| 9 | A reviewer competent in the domain, and in the language, has confirmed that the domain terms are used correctly | Pass | The reviewer, AI as stand-in for S01, reads English and the software domain; no second language reviewer is named. S01 is the Product Owner and reads both; a person may challenge this in the run summary. |
| 10 | Abbreviations are spelled out on first use, in the stated language | Pass | The only abbreviations are stakeholder IDs (S01 and so on), defined by the summary table, and FURPS+ (functionality, usability, reliability, performance, supportability plus), named in the method of the Purpose. |
## Overall Verdict
Go - The Stakeholder Analysis meets its checklist. Every Mandatory criterion of both checklists passes.
## Action Items
| Action | Owner | Due |
| --- | --- | --- |
| None | S01 | |
---
[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
[b113e6e]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/025-us-states-game/commit/b113e6eacd12bb08045ecf6f7822837626a7b1f7
+66
View File
@@ -0,0 +1,66 @@
# SQA Review Record
## Metadata
| Key | Value |
| --- | --- |
| ID | RC-003 |
| CrossReference | [MIL-001], [QC-MIL-001] |
## Version History
| Date | Status | Author | Reviewer | Change | Commit |
| --- | --- | --- | --- | --- | --- |
| 2026-10-13 | Proposed | Claude (AI) for S01 | AI as stand-in for S01 | Initial review record: Go | [b113e6e] |
---
## Artifact Under Review
- Instance reviewed: [MIL-001]
- Checklist used: [QC-MIL-001] and [QC-LANG-001]
- Scope: full review
- Language and domain: en / it
- Language reviewer: none (the reviewer reads English and knows the domain, as stand-in for S01)
- Mode: autonomous, not independent (the reviewer is `AI as stand-in for S01`; the author is the same AI)
## Checklist Results
| # | Criterion | Status | Evidence/Notes |
| --- | --- | --- | --- |
| 1 | A concrete deliverable is defined for every gate | Pass | Deliverable section: repository tooling, layout, assets, CI and surface |
| 2 | Explicit Go/No-Go criteria are stated for each gate | Pass | Go / No-Go table with objectively checkable criteria. |
| 3 | Dependencies on other milestones are explicitly mapped | Pass | First milestone; the table says None. |
| 4 | Each milestone is traceable to a Business Case objective or KPI | Pass | Traceability table cites [BC-001] objectives and success criteria. |
| 5 | Milestone owner and approving reviewer are identified | Pass | Ownership table: owner S01, approving reviewer S01 (stand-in in autonomous mode). |
| 6 | Milestone has a defined target date consistent with project constraints | Pass | 2026-10-13, consistent with the one-working-day duration constraint of [BC-001]. |
## 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` = en, `Domain` = it in Metadata. |
| 2 | `Language` is a BCP 47 code and `Domain` is a value from the registry's domain list | Pass | `en`; `it` is in the registry's domain table. |
| 3 | The content (prose and table cells) is written in the stated language | Pass | All prose and cells are English. Checked by the stand-in for S01, who reads English. |
| 4 | The register matches the one the registry gives for the artifact type | Pass | IT Executive English: plain objective-level prose with no implementation detail beyond what the scope needs. |
| 5 | Domain terms are the PO terms of the domain's dictionary, with no synonyms | Pass | No `DICT` exists for domain `it` and none is in the plan; the document uses standard Python and software terms consistently (for example `states_to_learn.csv`, `missing_states`, Doxygen). Recorded as a stand-in decision. |
| 6 | Metadata keys, section headings, IDs and statuses are in English | Pass | All structural vocabulary is English. |
| 7 | No translated twin (`<name>.<language>.md`) exists beside the document | Pass | `check-languages.sh` reports no twin. |
| 8 | A change of language or domain since the previous accepted version has a Version History row and was reviewed again | Pass | First version; no earlier accepted version. |
| 9 | A reviewer competent in the domain, and in the language, has confirmed that the domain terms are used correctly | Pass | The reviewer, AI as stand-in for S01, reads English and the software domain; no second language reviewer is named. S01 is the Product Owner and reads both; a person may challenge this in the run summary. |
| 10 | Abbreviations are spelled out on first use, in the stated language | Pass | CI and ADR are spelled out on first use in the milestone documents; Doxygen, pytest and README are tool or file names. |
## Overall Verdict
Go - The milestone meets its checklist. Every Mandatory criterion of both checklists passes.
## Action Items
| Action | Owner | Due |
| --- | --- | --- |
| None | S01 | |
---
[MIL-001]: ../../milestones/mil-001-baseline-setup.md
[QC-MIL-001]: ../../../framework/qc/artifacts/qc-milestones-gateways.md
[QC-LANG-001]: ../../../framework/qc/artifacts/qc-language-domain.md
[b113e6e]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/025-us-states-game/commit/b113e6eacd12bb08045ecf6f7822837626a7b1f7
+66
View File
@@ -0,0 +1,66 @@
# SQA Review Record
## Metadata
| Key | Value |
| --- | --- |
| ID | RC-004 |
| CrossReference | [MIL-002], [QC-MIL-001] |
## Version History
| Date | Status | Author | Reviewer | Change | Commit |
| --- | --- | --- | --- | --- | --- |
| 2026-10-13 | Proposed | Claude (AI) for S01 | AI as stand-in for S01 | Initial review record: Go | [b113e6e] |
---
## Artifact Under Review
- Instance reviewed: [MIL-002]
- Checklist used: [QC-MIL-001] and [QC-LANG-001]
- Scope: full review
- Language and domain: en / it
- Language reviewer: none (the reviewer reads English and knows the domain, as stand-in for S01)
- Mode: autonomous, not independent (the reviewer is `AI as stand-in for S01`; the author is the same AI)
## Checklist Results
| # | Criterion | Status | Evidence/Notes |
| --- | --- | --- | --- |
| 1 | A concrete deliverable is defined for every gate | Pass | Deliverable section: display-free game logic with tests and an ADR |
| 2 | Explicit Go/No-Go criteria are stated for each gate | Pass | Go / No-Go table with objectively checkable criteria. |
| 3 | Dependencies on other milestones are explicitly mapped | Pass | Depends on MIL-001 with a reason. |
| 4 | Each milestone is traceable to a Business Case objective or KPI | Pass | Traceability table cites [BC-001] objectives and success criteria. |
| 5 | Milestone owner and approving reviewer are identified | Pass | Ownership table: owner S01, approving reviewer S01 (stand-in in autonomous mode). |
| 6 | Milestone has a defined target date consistent with project constraints | Pass | 2026-10-13, consistent with the one-working-day duration constraint of [BC-001]. |
## 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` = en, `Domain` = it in Metadata. |
| 2 | `Language` is a BCP 47 code and `Domain` is a value from the registry's domain list | Pass | `en`; `it` is in the registry's domain table. |
| 3 | The content (prose and table cells) is written in the stated language | Pass | All prose and cells are English. Checked by the stand-in for S01, who reads English. |
| 4 | The register matches the one the registry gives for the artifact type | Pass | IT Executive English: plain objective-level prose with no implementation detail beyond what the scope needs. |
| 5 | Domain terms are the PO terms of the domain's dictionary, with no synonyms | Pass | No `DICT` exists for domain `it` and none is in the plan; the document uses standard Python and software terms consistently (for example `states_to_learn.csv`, `missing_states`, Doxygen). Recorded as a stand-in decision. |
| 6 | Metadata keys, section headings, IDs and statuses are in English | Pass | All structural vocabulary is English. |
| 7 | No translated twin (`<name>.<language>.md`) exists beside the document | Pass | `check-languages.sh` reports no twin. |
| 8 | A change of language or domain since the previous accepted version has a Version History row and was reviewed again | Pass | First version; no earlier accepted version. |
| 9 | A reviewer competent in the domain, and in the language, has confirmed that the domain terms are used correctly | Pass | The reviewer, AI as stand-in for S01, reads English and the software domain; no second language reviewer is named. S01 is the Product Owner and reads both; a person may challenge this in the run summary. |
| 10 | Abbreviations are spelled out on first use, in the stated language | Pass | CI and ADR are spelled out on first use in the milestone documents; Doxygen, pytest and README are tool or file names. |
## Overall Verdict
Go - The milestone meets its checklist. Every Mandatory criterion of both checklists passes.
## Action Items
| Action | Owner | Due |
| --- | --- | --- |
| None | S01 | |
---
[MIL-002]: ../../milestones/mil-002-game-core.md
[QC-MIL-001]: ../../../framework/qc/artifacts/qc-milestones-gateways.md
[QC-LANG-001]: ../../../framework/qc/artifacts/qc-language-domain.md
[b113e6e]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/025-us-states-game/commit/b113e6eacd12bb08045ecf6f7822837626a7b1f7
+66
View File
@@ -0,0 +1,66 @@
# SQA Review Record
## Metadata
| Key | Value |
| --- | --- |
| ID | RC-005 |
| CrossReference | [MIL-003], [QC-MIL-001] |
## Version History
| Date | Status | Author | Reviewer | Change | Commit |
| --- | --- | --- | --- | --- | --- |
| 2026-10-13 | Proposed | Claude (AI) for S01 | AI as stand-in for S01 | Initial review record: Go | [b113e6e] |
---
## Artifact Under Review
- Instance reviewed: [MIL-003]
- Checklist used: [QC-MIL-001] and [QC-LANG-001]
- Scope: full review
- Language and domain: en / it
- Language reviewer: none (the reviewer reads English and knows the domain, as stand-in for S01)
- Mode: autonomous, not independent (the reviewer is `AI as stand-in for S01`; the author is the same AI)
## Checklist Results
| # | Criterion | Status | Evidence/Notes |
| --- | --- | --- | --- |
| 1 | A concrete deliverable is defined for every gate | Pass | Deliverable section: runnable game on the tested core |
| 2 | Explicit Go/No-Go criteria are stated for each gate | Pass | Go / No-Go table with objectively checkable criteria. |
| 3 | Dependencies on other milestones are explicitly mapped | Pass | Depends on MIL-002 with a reason. |
| 4 | Each milestone is traceable to a Business Case objective or KPI | Pass | Traceability table cites [BC-001] objectives and success criteria. |
| 5 | Milestone owner and approving reviewer are identified | Pass | Ownership table: owner S01, approving reviewer S01 (stand-in in autonomous mode). |
| 6 | Milestone has a defined target date consistent with project constraints | Pass | 2026-10-13, consistent with the one-working-day duration constraint of [BC-001]. |
## 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` = en, `Domain` = it in Metadata. |
| 2 | `Language` is a BCP 47 code and `Domain` is a value from the registry's domain list | Pass | `en`; `it` is in the registry's domain table. |
| 3 | The content (prose and table cells) is written in the stated language | Pass | All prose and cells are English. Checked by the stand-in for S01, who reads English. |
| 4 | The register matches the one the registry gives for the artifact type | Pass | IT Executive English: plain objective-level prose with no implementation detail beyond what the scope needs. |
| 5 | Domain terms are the PO terms of the domain's dictionary, with no synonyms | Pass | No `DICT` exists for domain `it` and none is in the plan; the document uses standard Python and software terms consistently (for example `states_to_learn.csv`, `missing_states`, Doxygen). Recorded as a stand-in decision. |
| 6 | Metadata keys, section headings, IDs and statuses are in English | Pass | All structural vocabulary is English. |
| 7 | No translated twin (`<name>.<language>.md`) exists beside the document | Pass | `check-languages.sh` reports no twin. |
| 8 | A change of language or domain since the previous accepted version has a Version History row and was reviewed again | Pass | First version; no earlier accepted version. |
| 9 | A reviewer competent in the domain, and in the language, has confirmed that the domain terms are used correctly | Pass | The reviewer, AI as stand-in for S01, reads English and the software domain; no second language reviewer is named. S01 is the Product Owner and reads both; a person may challenge this in the run summary. |
| 10 | Abbreviations are spelled out on first use, in the stated language | Pass | CI and ADR are spelled out on first use in the milestone documents; Doxygen, pytest and README are tool or file names. |
## Overall Verdict
Go - The milestone meets its checklist. Every Mandatory criterion of both checklists passes.
## Action Items
| Action | Owner | Due |
| --- | --- | --- |
| None | S01 | |
---
[MIL-003]: ../../milestones/mil-003-turtle-game.md
[QC-MIL-001]: ../../../framework/qc/artifacts/qc-milestones-gateways.md
[QC-LANG-001]: ../../../framework/qc/artifacts/qc-language-domain.md
[b113e6e]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/025-us-states-game/commit/b113e6eacd12bb08045ecf6f7822837626a7b1f7
+66
View File
@@ -0,0 +1,66 @@
# SQA Review Record
## Metadata
| Key | Value |
| --- | --- |
| ID | RC-006 |
| CrossReference | [MIL-004], [QC-MIL-001] |
## Version History
| Date | Status | Author | Reviewer | Change | Commit |
| --- | --- | --- | --- | --- | --- |
| 2026-10-13 | Proposed | Claude (AI) for S01 | AI as stand-in for S01 | Initial review record: Go | [b113e6e] |
---
## Artifact Under Review
- Instance reviewed: [MIL-004]
- Checklist used: [QC-MIL-001] and [QC-LANG-001]
- Scope: full review
- Language and domain: en / it
- Language reviewer: none (the reviewer reads English and knows the domain, as stand-in for S01)
- Mode: autonomous, not independent (the reviewer is `AI as stand-in for S01`; the author is the same AI)
## Checklist Results
| # | Criterion | Status | Evidence/Notes |
| --- | --- | --- | --- |
| 1 | A concrete deliverable is defined for every gate | Pass | Deliverable section: README, Doxygen, screenshots and a three-language wiki |
| 2 | Explicit Go/No-Go criteria are stated for each gate | Pass | Go / No-Go table with objectively checkable criteria. |
| 3 | Dependencies on other milestones are explicitly mapped | Pass | Depends on MIL-003 with a reason. |
| 4 | Each milestone is traceable to a Business Case objective or KPI | Pass | Traceability table cites [BC-001] objectives and success criteria. |
| 5 | Milestone owner and approving reviewer are identified | Pass | Ownership table: owner S01, approving reviewer S01 (stand-in in autonomous mode). |
| 6 | Milestone has a defined target date consistent with project constraints | Pass | 2026-10-13, consistent with the one-working-day duration constraint of [BC-001]. |
## 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` = en, `Domain` = it in Metadata. |
| 2 | `Language` is a BCP 47 code and `Domain` is a value from the registry's domain list | Pass | `en`; `it` is in the registry's domain table. |
| 3 | The content (prose and table cells) is written in the stated language | Pass | All prose and cells are English. Checked by the stand-in for S01, who reads English. |
| 4 | The register matches the one the registry gives for the artifact type | Pass | IT Executive English: plain objective-level prose with no implementation detail beyond what the scope needs. |
| 5 | Domain terms are the PO terms of the domain's dictionary, with no synonyms | Pass | No `DICT` exists for domain `it` and none is in the plan; the document uses standard Python and software terms consistently (for example `states_to_learn.csv`, `missing_states`, Doxygen). Recorded as a stand-in decision. |
| 6 | Metadata keys, section headings, IDs and statuses are in English | Pass | All structural vocabulary is English. |
| 7 | No translated twin (`<name>.<language>.md`) exists beside the document | Pass | `check-languages.sh` reports no twin. |
| 8 | A change of language or domain since the previous accepted version has a Version History row and was reviewed again | Pass | First version; no earlier accepted version. |
| 9 | A reviewer competent in the domain, and in the language, has confirmed that the domain terms are used correctly | Pass | The reviewer, AI as stand-in for S01, reads English and the software domain; no second language reviewer is named. S01 is the Product Owner and reads both; a person may challenge this in the run summary. |
| 10 | Abbreviations are spelled out on first use, in the stated language | Pass | CI and ADR are spelled out on first use in the milestone documents; Doxygen, pytest and README are tool or file names. |
## Overall Verdict
Go - The milestone meets its checklist. Every Mandatory criterion of both checklists passes.
## Action Items
| Action | Owner | Due |
| --- | --- | --- |
| None | S01 | |
---
[MIL-004]: ../../milestones/mil-004-docs-release.md
[QC-MIL-001]: ../../../framework/qc/artifacts/qc-milestones-gateways.md
[QC-LANG-001]: ../../../framework/qc/artifacts/qc-language-domain.md
[b113e6e]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/025-us-states-game/commit/b113e6eacd12bb08045ecf6f7822837626a7b1f7
+82
View File
@@ -0,0 +1,82 @@
# Stakeholder Analysis
## Metadata
| Key | Value |
| --- | --- |
| ID | SA-001 |
| CrossReference | [BC-001] |
| Language | en |
| Domain | it |
## Version History
| Date | Status | Author | Reviewer | Change | Commit |
| --- | --- | --- | --- | --- | --- |
| 2026-10-13 | Accepted | Claude (AI) for S01 | AI as stand-in for S01 | Initial version; review RC-002: Go | [b113e6e] |
---
## Purpose
Identify who is affected by the U.S. States Game project, who decides and who reviews, so each artifact can cite stable IDs. Method: Mendelow power/interest grid, concerns mapped to FURPS+.
## Stakeholder Summary Table
| ID | Name | Role/Title | Organization | Power Level | Interest Level | Quadrant | Primary Concern (Business Language) |
| --- | --- | --- | --- | --- | --- | --- | --- |
| S01 | Jens Tirsvad Nielsen | Course participant; Product Owner, developer and reviewer | Tirsvad | HIGH | HIGH | Manage Closely | A finished, correct, well-documented exercise delivered through a reviewed process |
| S02 | Udemy coursists | Course participants who share code and compare solutions | Udemy 100 Days of Code community | LOW | HIGH | Keep Informed | Readable, runnable code that keeps the assignment's function names, with README instructions to run it |
| S03 | GitHub viewers | Visitors who browse the repository for ideas | Public | LOW | LOW | Monitor | A clear repository description, topics and README, and no runtime dependencies to install |
## Power/Interest Classification Rationale
- **Manage Closely (S01):** decides scope, reviews and accepts every artifact.
- **Keep Informed (S02):** cannot change scope but is the main consumer; their needs shape code naming and README.
- **Monitor (S03):** casual consumers; served by the public repository surface.
## Primary Concerns and FURPS+ Mapping
| ID | Concern | FURPS+ attribute |
| --- | --- | --- |
| S01 | Game behaves as in the lectures | Functionality |
| S01 | Work traceable through plan, review and pull requests | Supportability |
| S02 | Readable code with the assignment's function names | Supportability |
| S02 | Easy to run from README instructions | Usability |
| S03 | Clear description, topics, README | Usability |
| S03 | No runtime dependencies to install | Supportability |
## Communication Requirements
| ID | Channel | Frequency | Deliverable | Phase / Milestone |
| --- | --- | --- | --- | --- |
| S01 | Chat session | At plan acceptance and at the final summary | Plan, review records, run summary | All milestones |
| S02 | README, wiki (en, da, ms) | Once per release | Run instructions, screenshots | MIL-004 |
| S03 | Repository description, topics, README | Once per release | Repository surface | MIL-004 |
## Conflicting Interests and Mitigations
| Conflict | Stakeholders | Mitigation |
| --- | --- | --- |
| The assignment uses pandas, but viewers want no runtime dependencies | S02, S03 | Record the choice in an ADR; keep the assignment's function and variable names regardless of the library |
| Full process documents add weight to a small exercise | S01, S03 | Keep documents short; the repository surface (README, wiki) stays the first thing viewers see |
## Traceability Analysis
### Business Goal Alignment
| Stakeholder | Concern | Business Case objective |
| --- | --- | --- |
| S01 | Correct game | [BC-001] Objectives 1, 3 |
| S01 | Process and traceability | [BC-001] Objective 4 |
| S02 | Comparable, runnable code | [BC-001] Objectives 1, 2 |
| S03 | Clear repository surface | [BC-001] Objective 4 |
## Sign-Off
| Role | Stakeholder | Date | Decision |
| --- | --- | --- | --- |
| Product Owner | S01 | 2026-10-13 | Accepted in chat as part of the plan; reviewed by AI as stand-in for S01 (RC-002) |
---
[BC-001]: ./business-case.md
[b113e6e]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/025-us-states-game/commit/b113e6eacd12bb08045ecf6f7822837626a7b1f7
Submodule
+1
Submodule framework added at 6baeadd3c1