From f1b3c034dc3880b7884646b4a4ed28e5f98fbcd3 Mon Sep 17 00:00:00 2001 From: Jens Tirsvad Nielsen Date: Tue, 13 Oct 2026 15:23:29 +0800 Subject: [PATCH] Add baseline: business case, stakeholders, plan, milestones, reviews Mode: autonomous; reviews RC-001 to RC-007 are not independent. --- .gitmodules | 3 + docs/artifact-registry.md | 61 ++++++++ docs/business-case.md | 132 ++++++++++++++++++ docs/dictionary.md | 43 ++++++ docs/milestones/mil-001-project-scaffold.md | 73 ++++++++++ docs/milestones/mil-002-census-analysis.md | 75 ++++++++++ docs/milestones/mil-003-documentation.md | 71 ++++++++++ docs/milestones/mil-004-wiki-publication.md | 71 ++++++++++ docs/project-plan.md | 94 +++++++++++++ docs/sqa/reviews/rc-001-business-case.md | 68 +++++++++ .../reviews/rc-002-stakeholder-analysis.md | 68 +++++++++ .../rc-003-mil-001-project-scaffold.md | 66 +++++++++ .../reviews/rc-004-mil-002-census-analysis.md | 66 +++++++++ .../reviews/rc-005-mil-003-documentation.md | 66 +++++++++ .../rc-006-mil-004-wiki-publication.md | 66 +++++++++ docs/sqa/reviews/rc-007-dictionary.md | 66 +++++++++ docs/sqa/traceability-matrix.md | 56 ++++++++ docs/stakeholder-analysis.md | 79 +++++++++++ framework | 1 + 19 files changed, 1225 insertions(+) create mode 100644 .gitmodules create mode 100644 docs/artifact-registry.md create mode 100644 docs/business-case.md create mode 100644 docs/dictionary.md create mode 100644 docs/milestones/mil-001-project-scaffold.md create mode 100644 docs/milestones/mil-002-census-analysis.md create mode 100644 docs/milestones/mil-003-documentation.md create mode 100644 docs/milestones/mil-004-wiki-publication.md create mode 100644 docs/project-plan.md create mode 100644 docs/sqa/reviews/rc-001-business-case.md create mode 100644 docs/sqa/reviews/rc-002-stakeholder-analysis.md create mode 100644 docs/sqa/reviews/rc-003-mil-001-project-scaffold.md create mode 100644 docs/sqa/reviews/rc-004-mil-002-census-analysis.md create mode 100644 docs/sqa/reviews/rc-005-mil-003-documentation.md create mode 100644 docs/sqa/reviews/rc-006-mil-004-wiki-publication.md create mode 100644 docs/sqa/reviews/rc-007-dictionary.md create mode 100644 docs/sqa/traceability-matrix.md create mode 100644 docs/stakeholder-analysis.md create mode 160000 framework diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..a759dc9 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "framework"] + path = framework + url = ssh://git@git.tirsystem.com:10022/TirSystem/SQA-QC-Framework.git diff --git a/docs/artifact-registry.md b/docs/artifact-registry.md new file mode 100644 index 0000000..5c13950 --- /dev/null +++ b/docs/artifact-registry.md @@ -0,0 +1,61 @@ +# 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 | 008 | +| DICT | Domain Dictionary | docs/dictionary.md | 002 | +| TM | Traceability Matrix | docs/sqa/traceability-matrix.md | 002 | + +## 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. diff --git a/docs/business-case.md b/docs/business-case.md new file mode 100644 index 0000000..ff6db74 --- /dev/null +++ b/docs/business-case.md @@ -0,0 +1,132 @@ +# 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 | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version | pending | + +--- + +## Executive Summary + +Day 25 of the Udemy "100 Days of Code" bootcamp asks the participant to analyse the 2018 Central Park Squirrel Census with Pandas: count the gray, cinnamon and black squirrels by primary fur colour and export the counts to `squirrel_count.csv`. This project delivers that assignment as a small, readable, runnable Python repository with tests, source documentation, a README and a three-language wiki, so that the participant keeps a reviewed solution and other course participants and GitHub visitors can reuse it. + +## Methodological and Standards Foundation + +The artifacts follow the software quality assurance (SQA) and quality control (QC) framework mounted at `framework/` (Business Case, Stakeholder Analysis, Project Plan, milestones, tasks, code). Quality is judged against ISO/IEC 25010:2023 characteristics through the QC checklists of the framework; source code is reviewed against `qc-programming-python`. + +## Problem Statement + +The lecture shows the analysis as a sequence of notebook-style steps. A participant who wants to keep, share and compare the solution has no structured repository: no repeatable set-up, no tests, no documentation and no instructions that another participant can run. + +## Business Opportunity + +A single, well-structured example repository lets the participant practise professional project hygiene (virtual environment, tests, continuous integration, documentation) on a small assignment, and gives other participants a solution to compare against. + +## Objectives + +1. Deliver a Python program that reads the squirrel census file (comma-separated values, CSV), counts squirrels by primary fur colour (gray, cinnamon, black) and writes `squirrel_count.csv`. +2. Cover the program with automated pytest tests that run without the full census file. +3. Document how to create a local `.venv`, upgrade pip, run the program and run the tests, for Windows PowerShell, Linux Debian and macOS. +4. Document the source with Doxygen comments and a `Doxyfile`. +5. Publish the repository with a description, topics, a README and a wiki in English, Danish and Bahasa Malaysia, with screenshots. + +## Scope + +### In Scope + +- Reading the census file and counting squirrels by primary fur colour. +- Creating a summary table and exporting it as `squirrel_count.csv`. +- A command-line entry point, `constants.py`, `pyproject.toml`, a Python `.gitignore`, pytest tests and a continuous integration (CI) workflow. +- Doxygen comments, a `Doxyfile` and build instructions. +- README from the framework template, a three-language wiki and screenshots. +- Repository description and topics on the git host. + +### Out of Scope + +- Analysis beyond the three fur colours of the assignment. +- Charts, notebooks or a graphical interface. +- Publishing a package to PyPI. +- Using or importing the `.env` file in the project; it holds personal tokens for publishing only. + +## Expected Benefits + +### Tangible Benefits + +- A runnable solution with passing tests and a CI pipeline. +- A repository other participants can clone and run from the README alone. +- A published description, topics and wiki in three languages. + +### Intangible Benefits + +- Practice in a plan-first, reviewed workflow on a small project. +- A reusable repository layout for later days of the bootcamp. + +## Strategic Alignment + +The project supports the participant's goal of finishing the 100 Days of Code bootcamp with portfolio-quality results, and the framework's goal of showing the SQA workflow on a real, small project. + +## Success Criteria + +| # | Criterion | Target | Measure | +| --- | --- | --- | --- | +| 1 | Fur colour counts are correct | Gray 2473, Cinnamon 392, Black 103 on the 2018 census file | Run the program on the census file and compare with `squirrel_count.csv` | +| 2 | Tests pass | 100 % of pytest tests pass on Python 3.13 or later | `python -m pytest` exit code 0 and CI green | +| 3 | Runtime dependencies | 0 third-party runtime packages | `pyproject.toml` lists no runtime dependencies | +| 4 | Documentation present | README sections, Doxyfile and wiki pages in 3 languages | Files exist; `doxygen Doxyfile` completes without warnings | +| 5 | Repository metadata | Description and at least 5 topics set | Read back from the git host application programming interface (API) | + +## Risks + +| Risk | Impact | Mitigation | +| --- | --- | --- | +| The lecture uses Pandas but the repository must have no runtime dependencies | The solution differs from the lecture code | Use the standard library `csv` module; record the decision in an architecture decision record (ADR) and keep the lecture's step names as function names | +| The census file is large and not part of the repository | Others cannot run the program | Keep the census file under `data/` and let the program accept a path argument | +| Tokens in `.env` leak into the repository | Credential exposure | `.env` is git-ignored, never read by the project and never printed | +| Wiki push is not available on the host | Wiki pages are not published | Keep the pages in the repository under `docs/wiki/` and report the failure | +| Fur colour spelling differs in the data | Wrong counts | Count exact values `Gray`, `Cinnamon`, `Black` and test with fixture rows | + +## Assumptions + +- The participant (S01) is Product Owner, developer and reviewer of every artifact. +- The census file is the 2018 Central Park Squirrel Census file the participant downloaded. +- The git host `git.tirsystem.com` accepts the personal tokens held in `.env`. +- Python 3.13 or later is installed on the machines that run the project. +- The Product Owner's language is English; the wiki is the only multilingual deliverable. + +## Constraints + +- Python 3.13 or later, virtual environment with `venv`, tests with pytest. +- Constants live in `constants.py`; configuration lives in `pyproject.toml`. +- Folder structure `src/`, `tests/`, `docs/`. +- Work is tracked by one branch and pull request per milestone. +- Tokens come from `.env` and are never tested, imported or committed. + +## Cost–Benefit Assessment + +| Costs | Benefits | +| --- | --- | +| About one working day of effort by S01 and the AI assistant | A reviewed, documented solution reusable by S02 and S03 | +| Maintenance of three wiki languages | Broader reach for S02 and S03 | + +The assessment is qualitative: the project is a personal learning exercise with no revenue, so a monetary return would not be meaningful. + +## Stakeholders + +| Stakeholder ID (SA) | Interest in this project | +| --- | --- | +| S01 | Product Owner, developer and reviewer; wants a correct, reviewed solution | +| S02 | Course participants; want readable, runnable code and run instructions | +| S03 | GitHub viewers; want a clear description, topics and README with no runtime dependencies | + +## Recommendation + +Proceed — the scope is small, the risks are mitigated and the result is directly reusable by the other stakeholders. diff --git a/docs/dictionary.md b/docs/dictionary.md new file mode 100644 index 0000000..795c7e5 --- /dev/null +++ b/docs/dictionary.md @@ -0,0 +1,43 @@ +# Domain Dictionary (PO and IT terms) + +## Metadata +| Key | Value | +| --- | --- | +| ID | DICT-001 | +| CrossReference | [BC-001], [SA-001] | +| Language | en | +| Domain | it | + +## Version History +| Date | Status | Author | Reviewer | Change | Commit | +| --- | --- | --- | --- | --- | --- | +| 2026-10-13 | Proposed | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version | pending | + +--- + +## Purpose and Scope + +Maps each Product Owner (PO) term of the squirrel census project to its professional IT term. PO language: English (`en`), domain `it`. It covers the terms of the Business Case, Stakeholder Analysis, milestones, user story, use case and Domain Model. + +## Dictionary + +| PO term | Language | IT term | Definition | Used as PO term in | Used as IT term in | +| --- | --- | --- | --- | --- | --- | +| Census file | en | source file | The file with the 2018 squirrel census that the participant supplies to the program. | BC, SA, MIL, user story (US), use case (UC), domain model (DM) | system sequence diagram (SSD), source code | +| Squirrel sighting | en | sighting row | One recorded observation of one squirrel in the census file. | BC, MIL, US, UC, DM | SSD, source code | +| Fur colour | en | fur_color | The primary fur colour of a squirrel: Gray, Cinnamon or Black. | BC, SA, MIL, US, UC, DM | SSD, source code | +| Colour count | en | color_count | The number of squirrel sightings with one fur colour. | BC, MIL, US, UC, DM | SSD, source code | +| Summary | en | summary table | The table of fur colours and their counts that is exported as `squirrel_count.csv`. | BC, MIL, US, UC, DM | SSD, source code | +| Participant | en | command line user | The course participant who runs the program on the census file. | BC, SA, US, UC | SSD | + +## Rules + +- The Domain Model, use cases and user stories use the PO term; the Operation + Contract, Sequence Diagram, Design Class Diagram, ERD and source code use the IT term. +- One IT term per PO term and one PO term per IT term; no synonyms. +- A new concept in the Domain Model gets a row in the same change. + +--- + +[BC-001]: ./business-case.md +[SA-001]: ./stakeholder-analysis.md diff --git a/docs/milestones/mil-001-project-scaffold.md b/docs/milestones/mil-001-project-scaffold.md new file mode 100644 index 0000000..776bd38 --- /dev/null +++ b/docs/milestones/mil-001-project-scaffold.md @@ -0,0 +1,73 @@ +# MIL-001 Project scaffold and tooling + +## 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 | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version | pending | + +--- + +## Purpose + +Decide whether the repository has the tooling baseline (ignore rules, project configuration, constants module, Doxygen configuration and continuous integration (CI)) on which the analysis code can be built and reviewed. + +## Deliverable + +A branch merged to `main` containing `.gitignore`, `pyproject.toml`, `src/squirrel/constants.py`, `Doxyfile`, a CI workflow, and the repository description and topics set on the git host. + +## Go / No-Go Criteria + +| # | Criterion (objectively checkable) | Go | No-Go | +| --- | --- | --- | --- | +| 1 | `pyproject.toml` declares `requires-python = ">=3.13"` and no runtime dependencies | Present | Missing or has runtime dependencies | +| 2 | `.gitignore` ignores `.venv/`, `__pycache__/`, `.env` and `.pytest_cache/` | Present | Any missing | +| 3 | `python -m pytest` runs in a fresh `.venv` and exits 0 (collects at least the constants test) | Exit 0 | Non-zero exit | +| 4 | Repository description and at least 5 topics read back from the git host application programming interface (API) | Set | Not set | +| 5 | Review record for each reviewed artifact is `Go` | All Go | Any No-Go | + +## Dependencies + +| Depends on | Reason | +| --- | --- | +| BC-001, SA-001, PP-001 | The baseline must be accepted before milestones | + +## Traceability + +| Business Case objective / KPI / user story | Reference | +| --- | --- | +| Objective 4, Success Criteria 3 and 5 | [BC-001] | +| S03 concern: description and topics | [SA-001] | + +## Ownership + +| Role | Stakeholder ID (SA) | +| --- | --- | +| Owner | S01 | +| Approving reviewer | S01 | + +## Target Date + +2026-10-14 — one day after the plan, inside the single-day effort in the Business Case cost assessment + +## Tasks + +| # | Task | Summary | Needs its own Use Case/User Story? | Reference | +| --- | --- | --- | --- | --- | +| 1 | Add Python .gitignore | Add the standard Python ignore rules plus `.env`, `.venv/` and Doxygen output (`docs/doxygen/`), so tokens and build output never reach the repository. | No | | +| 2 | Add pyproject.toml | Configure the `squirrel` package in a `src/` layout: `requires-python >=3.13`, no runtime dependencies, an optional `dev` extra with pytest, and pytest `pythonpath` and `testpaths`. This is the single configuration file the Business Case constraints require. | No | | +| 3 | Add constants module | Create `src/squirrel/constants.py` holding file names, column names and fur colour values so no literal is repeated in the code, as the constraint requires. Add a first test that imports it. | No | | +| 4 | Add Doxyfile | Create a `Doxyfile` that reads `src/` and writes to `docs/doxygen/`, with Python optimisation enabled, so the source documentation can be built with `doxygen Doxyfile`. | No | | +| 5 | Add CI workflow | Add a Gitea Actions workflow that sets up Python 3.13, creates a venv, upgrades pip, installs the dev extra and runs pytest on push and pull request. It backs the "Continuous integration" section of the README. | No | | +| 6 | Set repository description and topics | Use the Gitea API with the token from `.env` (read by the shell only, never by the project) to set a description and topics such as `python`, `csv`, `squirrel-census`, `udemy`, `100-days-of-code`, `pytest`. Satisfies stakeholder S03. | No | | + +--- + +[BC-001]: ../business-case.md diff --git a/docs/milestones/mil-002-census-analysis.md b/docs/milestones/mil-002-census-analysis.md new file mode 100644 index 0000000..7285a2b --- /dev/null +++ b/docs/milestones/mil-002-census-analysis.md @@ -0,0 +1,75 @@ +# MIL-002 Squirrel census analysis + +## 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 | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version | pending | + +--- + +## Purpose + +Decide whether the squirrel census analysis is modelled, implemented and tested well enough to produce the assignment result, `squirrel_count.csv`, from the 2018 census file. + +## Deliverable + +A branch merged to `main` containing the user story, use case, system sequence diagram and domain model, ADR-0001, the `squirrel` package with its command line entry point, the pytest tests, the census file under `data/` and the generated `squirrel_count.csv`. + +## Go / No-Go Criteria + +| # | Criterion (objectively checkable) | Go | No-Go | +| --- | --- | --- | --- | +| 1 | Running the program on the 2018 census file writes `squirrel_count.csv` with Gray 2473, Cinnamon 392, Black 103 | Matches | Differs | +| 2 | `python -m pytest` exits 0 and covers reading, counting, summary and export | Exit 0 | Failure or a function untested | +| 3 | The package imports no third-party module (checked by `pyproject.toml` and a test) | None | Any import | +| 4 | Source review against `qc-programming-python` has verdict `Go` | Go | No-Go | +| 5 | Model artifacts (user story (US), use case (UC), system sequence diagram (SSD), domain model (DM)) and ADR-0001 have review verdict `Go` | All Go | Any No-Go | + +## Dependencies + +| Depends on | Reason | +| --- | --- | +| MIL-001 | Tooling, constants and test infrastructure are needed first | + +## Traceability + +| Business Case objective / KPI / user story | Reference | +| --- | --- | +| Objectives 1 and 2, Success Criteria 1, 2 and 3 | [BC-001] | + +## Ownership + +| Role | Stakeholder ID (SA) | +| --- | --- | +| Owner | S01 | +| Approving reviewer | S01 | + +## Target Date + +2026-10-15 — one day after MIL-001, inside the single-day effort + +## Tasks + +| # | Task | Summary | Needs its own Use Case/User Story? | Reference | +| --- | --- | --- | --- | --- | +| 1 | Write user story and use case | Write US-001 and brief UC-001 "Count squirrels by fur colour": the participant supplies the census file and receives `squirrel_count.csv`. Needed because it is a goal an actor pursues. | No | | +| 2 | Model the interaction and concepts | Create `ssd.md` and `dm.md` in `docs/uc-001/`, then reconcile `docs/domain-model.md`. Concepts: Census file, Sighting, Fur colour, Colour count, Summary. | No | UC-001 | +| 3 | Record ADR-0001 standard library instead of Pandas | Decide to use the `csv` module and `collections.Counter` so the repository has no runtime dependencies (S03), while the function names follow the lecture steps (S02). | No | | +| 4 | Read the census file | Implement `read_csv(path)` returning the sightings with the primary fur colour column, using only the standard library. The file is read as UTF-8. | Yes | UC-001 | +| 5 | Count squirrels by fur colour | Implement `count_by_fur_color(rows, colors)` returning the count for gray, cinnamon and black, using the values defined in `constants.py`. | Yes | UC-001 | +| 6 | Build the summary and export it | Implement `build_summary(counts)` and `write_csv(summary, path)` producing `squirrel_count.csv` with the columns `Fur Color` and `Count`, mirroring the lecture's DataFrame-to-comma-separated-values (CSV) step. | Yes | UC-001 | +| 7 | Add the command line entry point | Add `python -m squirrel [input] [output]` with the census file path defaulting under `data/` and the output defaulting to `squirrel_count.csv`. Exit non-zero with a message when the input is missing. | Yes | UC-001 | +| 8 | Add pytest tests with fixture rows | Test each function with a small fixture CSV file so the tests run without the 730 kilobytes (KB) census file, plus one test that checks the real census file counts when the file is present. | No | | +| 9 | Add the census file and generate the result | Copy the 2018 census file into `data/` and run the program once to produce `squirrel_count.csv`, so others can run the project without downloading the file. | No | | + +--- + +[BC-001]: ../business-case.md diff --git a/docs/milestones/mil-003-documentation.md b/docs/milestones/mil-003-documentation.md new file mode 100644 index 0000000..5a6a079 --- /dev/null +++ b/docs/milestones/mil-003-documentation.md @@ -0,0 +1,71 @@ +# MIL-003 README, source documentation and screenshots + +## 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 | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version | pending | + +--- + +## Purpose + +Decide whether a newcomer (S02, S03) can set up, run, test and understand the project from the README and the generated source documentation alone. + +## Deliverable + +A branch merged to `main` containing `README.md` with the requested sections, Doxygen comments in the source that build cleanly, and screenshots stored under `docs/images/` and used in the README. + +## Go / No-Go Criteria + +| # | Criterion (objectively checkable) | Go | No-Go | +| --- | --- | --- | --- | +| 1 | README contains the sections Requirements, Set up (Windows PowerShell, Linux Debian, MacOS), Run, Run the tests, Continuous integration, Build the source documentation, Project layout, License | All present | Any missing | +| 2 | README documents creating a `.venv` and `python -m pip install --upgrade pip` | Present | Missing | +| 3 | `doxygen Doxyfile` completes with no warnings (when Doxygen is installed) | No warnings | Warnings | +| 4 | README shows at least one screenshot of the real program output | Present | Missing | +| 5 | Commands in the README were executed in a fresh `.venv` in this session | Verified | Not run | + +## Dependencies + +| Depends on | Reason | +| --- | --- | +| MIL-002 | The README documents a working program | + +## Traceability + +| Business Case objective / KPI / user story | Reference | +| --- | --- | +| Objectives 3 and 4, Success Criterion 4 | [BC-001] | +| S02 and S03 concerns on README | [SA-001] | + +## Ownership + +| Role | Stakeholder ID (SA) | +| --- | --- | +| Owner | S01 | +| Approving reviewer | S01 | + +## Target Date + +2026-10-16 — one day after MIL-002 + +## Tasks + +| # | Task | Summary | Needs its own Use Case/User Story? | Reference | +| --- | --- | --- | --- | --- | +| 1 | Add Doxygen comments to the source | Document every module, function and constant with Doxygen comment blocks (`##` and `@param`/`@return`) so the Doxyfile produces useful output. | No | | +| 2 | Write README.md | Write the README from the framework template using the section list required by the Product Owner, including the venv and pip upgrade instructions for Windows PowerShell, Linux Debian and MacOS. | No | | +| 3 | Create screenshots | Render images of the real command output (program run and test run) as Portable Network Graphics (PNG) files under `docs/images/`, and reference them from the README and later the wiki. | No | | +| 4 | Verify the README commands | Follow the README in a fresh `.venv` and record the result in the review record, so the instructions are known to work. | No | | + +--- + +[BC-001]: ../business-case.md diff --git a/docs/milestones/mil-004-wiki-publication.md b/docs/milestones/mil-004-wiki-publication.md new file mode 100644 index 0000000..5ed62fe --- /dev/null +++ b/docs/milestones/mil-004-wiki-publication.md @@ -0,0 +1,71 @@ +# MIL-004 Wiki and publication + +## 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 | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version | pending | + +--- + +## Purpose + +Decide whether the repository is published with a wiki in English, Danish and Bahasa Malaysia and whether the final repository metadata is correct. + +## Deliverable + +Wiki pages `Home`, `Install`, `Usage` and `Description` in English plus `-da` and `-ms` variants following the framework wiki layout, with screenshots, pushed to the wiki of the repository, and a final verification of description and topics. + +## Go / No-Go Criteria + +| # | Criterion (objectively checkable) | Go | No-Go | +| --- | --- | --- | --- | +| 1 | Each wiki page exists in English, Danish (`-da`) and Bahasa Malaysia (`-ms`) | All present | Any missing | +| 2 | The sidebar links every page in all three languages | All linked | Missing link | +| 3 | Wiki pages are on the git host wiki, or kept under `docs/wiki/` with the failure reported | Published or reported | Neither | +| 4 | Screenshots appear on the wiki pages | Present | Missing | + +## Dependencies + +| Depends on | Reason | +| --- | --- | +| MIL-003 | The wiki reuses README content and screenshots | + +## Traceability + +| Business Case objective / KPI / user story | Reference | +| --- | --- | +| Objective 5, Success Criteria 4 and 5 | [BC-001] | +| S02 and S03 communication needs | [SA-001] | + +## Ownership + +| Role | Stakeholder ID (SA) | +| --- | --- | +| Owner | S01 | +| Approving reviewer | S01 | + +## Target Date + +2026-10-16 — same day as MIL-003 + +## Tasks + +| # | Task | Summary | Needs its own Use Case/User Story? | Reference | +| --- | --- | --- | --- | --- | +| 1 | Write English wiki pages | Create `Home`, `Install`, `Usage` and `Description` pages and a `_Sidebar`, after the structure of the framework wiki and the TirSystem github-action wiki example. | No | | +| 2 | Write Danish wiki pages | Translate the English pages into Danish with the `-da` suffix and a language switch in the sidebar. | No | | +| 3 | Write Bahasa Malaysia wiki pages | Translate the English pages into Bahasa Malaysia with the `-ms` suffix and a language switch in the sidebar. | No | | +| 4 | Add screenshots to the wiki | Add the images from `docs/images/` to the pages of all three languages. | No | | +| 5 | Publish the wiki and verify metadata | Push the pages to the repository wiki with the token from `.env` and read back the repository description and topics from the API. | No | | + +--- + +[BC-001]: ../business-case.md diff --git a/docs/project-plan.md b/docs/project-plan.md new file mode 100644 index 0000000..435817f --- /dev/null +++ b/docs/project-plan.md @@ -0,0 +1,94 @@ +# 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 | Jens Tirsvad Nielsen | S01 | Initial version | pending | + +--- + +## Purpose + +This plan schedules the four phases that deliver the squirrel census assignment: tooling, analysis, documentation and wiki publication. It schedules them against the Business Case constraint of one pull request per milestone and a single-day effort. + +## Planning Assumptions + +- Week 1 starts 2026-10-13 (the day of the plan); the plan ends by 2026-10-16. +- Phase length: one day per phase. +- One branch and one pull request per milestone, each closing the issues of its tasks ([BC-001] Constraints). +- The Product Owner and reviewer is S01 for every phase ([SA-001]); in autonomous mode the AI acts as stand-in and records it in each review record. +- The plan is accepted by S01 in chat; the Project Plan has no quality control (QC) checklist. + +## Gateway Schedule + +| Gateway | Document | Window | Decision date | Owner | Stories | Main deliverable | Milestone | +| --- | --- | --- | --- | --- | --- | --- | --- | +| G1 Project scaffold and tooling | [MIL-001] | 2026-10-13 to 2026-10-14 | 2026-10-14 | S01 | none | `.gitignore`, `pyproject.toml`, constants, Doxyfile, continuous integration (CI), repository metadata | | +| G2 Squirrel census analysis | [MIL-002] | 2026-10-14 to 2026-10-15 | 2026-10-15 | S01 | US-001 | Package, tests, census file, `squirrel_count.csv` | | +| G3 README, source documentation and screenshots | [MIL-003] | 2026-10-15 to 2026-10-16 | 2026-10-16 | S01 | none | README, Doxygen comments, screenshots | | +| G4 Wiki and publication | [MIL-004] | 2026-10-16 | 2026-10-16 | S01 | none | Wiki in en, da and ms | | + +```plantuml +@startgantt +Project starts 2026-10-13 +[G1 Project scaffold] starts 2026-10-13 and ends 2026-10-14 +[G2 Census analysis] starts 2026-10-14 and ends 2026-10-15 +[G3 Documentation] starts 2026-10-15 and ends 2026-10-16 +[G4 Wiki] starts 2026-10-16 and ends 2026-10-16 +[G1 Go/No-Go] happens 2026-10-14 +[G2 Go/No-Go] happens 2026-10-15 +[G3 Go/No-Go] happens 2026-10-16 +[G4 Go/No-Go] happens 2026-10-16 +@endgantt +``` + +## Scope Coverage + +| Business Case scope item | Gateway | +| --- | --- | +| Reading the census file and counting by primary fur colour | G2 | +| Summary table exported as `squirrel_count.csv` | G2 | +| Command line entry point, `constants.py`, `pyproject.toml`, `.gitignore`, tests, CI | G1 and G2 | +| Doxygen comments, `Doxyfile`, build instructions | G1 and G3 | +| README, screenshots | G3 | +| Three-language wiki | G4 | +| Repository description and topics | G1 (set) and G4 (verified) | + +## Dependencies + +``` +G1 -> G2 -> G3 -> G4 +``` + +A No-Go at a gateway stops the later gateways; their dates move by the days the rework takes. + +## Plan Risks + +| Risk | Impact | Mitigation | +| --- | --- | --- | +| CI runner is not available on the git host | The CI workflow cannot be shown green | Run the same commands locally and report the missing runner | +| Wiki repository cannot be pushed | G4 deliverable is not published | Keep the pages under `docs/wiki/` and report it | +| Doxygen is not installed locally | The documentation build cannot be verified | Report as not verified; document the command | + +## Open Issues + +- The repository URL in the request (`Tirsvad-Udemy-100_days_of_code`) differs from `origin` (`Tirsvad-Udemy-100-days-of-code/025-squirrel`); the plan follows `origin`. +- The census file (730 kilobytes) is assumed to be committed under `data/`; S01 can veto this at plan acceptance. +- The lecture uses Pandas; the plan uses the standard library to keep zero runtime dependencies (ADR-0001, [SA-001] conflict list). + +--- + +[BC-001]: ./business-case.md +[SA-001]: ./stakeholder-analysis.md +[MIL-001]: ./milestones/mil-001-project-scaffold.md +[MIL-002]: ./milestones/mil-002-census-analysis.md +[MIL-003]: ./milestones/mil-003-documentation.md +[MIL-004]: ./milestones/mil-004-wiki-publication.md diff --git a/docs/sqa/reviews/rc-001-business-case.md b/docs/sqa/reviews/rc-001-business-case.md new file mode 100644 index 0000000..8afbd44 --- /dev/null +++ b/docs/sqa/reviews/rc-001-business-case.md @@ -0,0 +1,68 @@ +# RC-001 Review of BC-001 + +## Metadata +| Key | Value | +| --- | --- | +| ID | RC-001 | +| CrossReference | [BC-001], [QC-BC-001], [QC-LANG-001], [DICT-001] | + +## Version History +| Date | Status | Author | Reviewer | Change | Commit | +| --- | --- | --- | --- | --- | --- | +| 2026-10-13 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version | pending | + +--- + +## 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 stand-in reviewer reads English and the `it` domain) +- Mode: autonomous, not independent (reviewer: AI as stand-in for S01) + +## Checklist Results + +| # | Criterion | Status | Evidence/Notes | +| --- | --- | --- | --- | +| 1 | ROI/Cost-Benefit analysis is quantitative, or where qualitative, is explicitly justified (Mandatory) | Pass | Cost-Benefit table is qualitative and the text justifies it: personal learning exercise with no revenue. | +| 2 | Risks are identified with documented impact and mitigation (Mandatory) | Pass | Risks table has five risks, each with impact and mitigation. | +| 3 | Success criteria are measurable, stating explicit targets rather than vague aspirations (Mandatory) | Pass | Success Criteria table gives targets: 2473/392/103, 100 % tests pass, 0 runtime dependencies, 5 topics. | +| 4 | Scope explicitly separates In Scope vs Out of Scope (Mandatory) | Pass | Scope has In Scope and Out of Scope subsections. | +| 5 | Stakeholders are cross-referenced to Stakeholder Analysis IDs rather than re-described inline (Mandatory) | Pass | Stakeholders table cites S01, S02, S03 from SA-001. | +| 6 | Methodology and quality-standard foundation are stated explicitly (e.g. ISO/IEC 25010, Larman) (Optional) | Pass | Methodological and Standards Foundation names the framework and ISO/IEC 25010:2023. | +| 7 | Assumptions and constraints are explicit and clearly distinguished from one another (Mandatory) | Pass | Assumptions and Constraints are separate lists. | +| 8 | Document supports executive decision-making with a clear, unambiguous recommendation (Mandatory) | Pass | Recommendation is a single "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 (Mandatory) | Pass | Metadata has `Language | en` and `Domain | it`. | +| 2 | `Language` is a BCP 47 code and `Domain` is a value from the registry's domain list (Mandatory) | Pass | `en` is a BCP 47 code; `it` is in the registry domain list. | +| 3 | The content (prose and table cells) is written in the stated language (Mandatory) | Pass | The Business Case is written in English throughout. | +| 4 | The register matches the one the registry gives for the artifact type (Mandatory) | Pass | Executive register: outcomes and risks, with file names only where needed. | +| 5 | Domain terms are the PO terms of the domain's dictionary, with no synonyms (Mandatory) | Pass | Terms census file, fur colour, colour count, summary and participant match [DICT-001]. | +| 6 | Metadata keys, section headings, IDs and statuses are in English (Mandatory) | Pass | Metadata keys, headings, IDs and statuses are English. | +| 7 | No translated twin (`..md`) exists beside the document (Mandatory) | Pass | No translated twin exists in `docs/`. | +| 8 | A change of language or domain since the previous accepted version has a Version History row and was reviewed again (Mandatory) | Pass | First version; no earlier accepted language. | +| 9 | A reviewer competent in the domain, and in the language, has confirmed that the domain terms are used correctly (Mandatory) | Pass | Reviewer reads English and knows the software domain; no second reviewer needed. | +| 10 | Abbreviations are spelled out on first use, in the stated language (Optional) | Pass | Abbreviations are expanded on first use in the body (S-IDs and artifact IDs are framework labels). | + +## Overall Verdict + +Go — all Mandatory criteria pass. + +## 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 +[DICT-001]: ../../dictionary.md diff --git a/docs/sqa/reviews/rc-002-stakeholder-analysis.md b/docs/sqa/reviews/rc-002-stakeholder-analysis.md new file mode 100644 index 0000000..cc0da8a --- /dev/null +++ b/docs/sqa/reviews/rc-002-stakeholder-analysis.md @@ -0,0 +1,68 @@ +# RC-002 Review of SA-001 + +## Metadata +| Key | Value | +| --- | --- | +| ID | RC-002 | +| CrossReference | [SA-001], [QC-SA-001], [QC-LANG-001], [DICT-001] | + +## Version History +| Date | Status | Author | Reviewer | Change | Commit | +| --- | --- | --- | --- | --- | --- | +| 2026-10-13 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version | pending | + +--- + +## 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 stand-in reviewer reads English and the `it` domain) +- Mode: autonomous, not independent (reviewer: AI as stand-in for S01) + +## Checklist Results + +| # | Criterion | Status | Evidence/Notes | +| --- | --- | --- | --- | +| 1 | Power/Interest grid is filled for every stakeholder, with no gaps or unclassified entries (Mandatory) | Pass | S01, S02 and 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 (Mandatory) | Pass | IDs S01-S03 are unique and used as owner/reviewer in other artifacts. | +| 3 | Roles and organizational context are defined with explicit Power and Interest levels, not just narrative description (Mandatory) | Pass | Role, organization, Power and Interest levels are in the summary table. | +| 4 | Communication needs (channel, frequency, deliverable type) are mapped to project phases or milestones (Optional) | Pass | Communication Requirements table ties each stakeholder to MIL-001 to MIL-004. | +| 5 | Conflicting stakeholder interests are identified with documented mitigation or resolution strategies (Mandatory) | Pass | Two conflicts listed, each with a mitigation. | +| 6 | Stakeholder concerns are explicitly traced to Business Case objectives (Mandatory) | 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+) (Optional) | Pass | Concerns table maps each concern to a FURPS+ attribute. | +| 8 | Document is understandable and navigable by non-technical stakeholders reviewing their own entry (Optional) | Pass | Short document in plain language. | + +## 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 (Mandatory) | Pass | Metadata has `Language | en` and `Domain | it`. | +| 2 | `Language` is a BCP 47 code and `Domain` is a value from the registry's domain list (Mandatory) | Pass | `en` is a BCP 47 code; `it` is in the registry domain list. | +| 3 | The content (prose and table cells) is written in the stated language (Mandatory) | Pass | The Stakeholder Analysis is written in English throughout. | +| 4 | The register matches the one the registry gives for the artifact type (Mandatory) | Pass | Professional register: quadrant rationale and FURPS+ mapping. | +| 5 | Domain terms are the PO terms of the domain's dictionary, with no synonyms (Mandatory) | Pass | Terms participant, census file and summary match [DICT-001]. | +| 6 | Metadata keys, section headings, IDs and statuses are in English (Mandatory) | Pass | Metadata keys, headings, IDs and statuses are English. | +| 7 | No translated twin (`..md`) exists beside the document (Mandatory) | Pass | No translated twin exists in `docs/`. | +| 8 | A change of language or domain since the previous accepted version has a Version History row and was reviewed again (Mandatory) | Pass | First version; no earlier accepted language. | +| 9 | A reviewer competent in the domain, and in the language, has confirmed that the domain terms are used correctly (Mandatory) | Pass | Reviewer reads English and knows the software domain; no second reviewer needed. | +| 10 | Abbreviations are spelled out on first use, in the stated language (Optional) | Pass | Abbreviations are expanded on first use in the body (S-IDs and artifact IDs are framework labels). | + +## Overall Verdict + +Go — all Mandatory criteria pass. + +## 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 +[DICT-001]: ../../dictionary.md diff --git a/docs/sqa/reviews/rc-003-mil-001-project-scaffold.md b/docs/sqa/reviews/rc-003-mil-001-project-scaffold.md new file mode 100644 index 0000000..a10f3a2 --- /dev/null +++ b/docs/sqa/reviews/rc-003-mil-001-project-scaffold.md @@ -0,0 +1,66 @@ +# RC-003 Review of MIL-001 + +## Metadata +| Key | Value | +| --- | --- | +| ID | RC-003 | +| CrossReference | [MIL-001], [QC-MIL-001], [QC-LANG-001], [DICT-001] | + +## Version History +| Date | Status | Author | Reviewer | Change | Commit | +| --- | --- | --- | --- | --- | --- | +| 2026-10-13 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version | pending | + +--- + +## 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 stand-in reviewer reads English and the `it` domain) +- Mode: autonomous, not independent (reviewer: AI as stand-in for S01) + +## Checklist Results + +| # | Criterion | Status | Evidence/Notes | +| --- | --- | --- | --- | +| 1 | A concrete deliverable is defined for every gate (Mandatory) | Pass | Deliverable section names the files and results evaluated. | +| 2 | Explicit Go/No-Go criteria are stated for each gate (Mandatory) | Pass | Go / No-Go table lists objectively checkable criteria with Go and No-Go outcomes. | +| 3 | Dependencies on other milestones are explicitly mapped (Optional) | Pass | Dependencies table maps the preceding milestone or documents. | +| 4 | Each milestone is traceable to a Business Case objective or KPI (Mandatory) | Pass | Traceability table cites BC-001 objectives and success criteria. | +| 5 | Milestone owner and approving reviewer are identified (Mandatory) | Pass | Ownership names S01 as owner and approving reviewer. | +| 6 | Milestone has a defined target date consistent with project constraints (Mandatory) | Pass | Target date is within the plan window of PP-001; the Business Case sets no calendar duration, only one pull request per milestone. | + +## 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 (Mandatory) | Pass | Metadata has `Language | en` and `Domain | it`. | +| 2 | `Language` is a BCP 47 code and `Domain` is a value from the registry's domain list (Mandatory) | Pass | `en` is a BCP 47 code; `it` is in the registry domain list. | +| 3 | The content (prose and table cells) is written in the stated language (Mandatory) | Pass | MIL-001 is written in English throughout. | +| 4 | The register matches the one the registry gives for the artifact type (Mandatory) | Pass | Executive register for Purpose, Deliverable and criteria; the Tasks table is implementation-level by the type definition. | +| 5 | Domain terms are the PO terms of the domain's dictionary, with no synonyms (Mandatory) | Pass | Terms census file, fur colour, summary and participant match [DICT-001]. | +| 6 | Metadata keys, section headings, IDs and statuses are in English (Mandatory) | Pass | Metadata keys, headings, IDs and statuses are English. | +| 7 | No translated twin (`..md`) exists beside the document (Mandatory) | Pass | No translated twin exists in `docs/`. | +| 8 | A change of language or domain since the previous accepted version has a Version History row and was reviewed again (Mandatory) | Pass | First version; no earlier accepted language. | +| 9 | A reviewer competent in the domain, and in the language, has confirmed that the domain terms are used correctly (Mandatory) | Pass | Reviewer reads English and knows the software domain; no second reviewer needed. | +| 10 | Abbreviations are spelled out on first use, in the stated language (Optional) | Pass | Abbreviations are expanded on first use in the body (S-IDs and artifact IDs are framework labels). | + +## Overall Verdict + +Go — all Mandatory criteria pass. + +## Action Items + +| Action | Owner | Due | +| --- | --- | --- | +| None | S01 | - | + +--- + +[MIL-001]: ../../milestones/mil-001-project-scaffold.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 diff --git a/docs/sqa/reviews/rc-004-mil-002-census-analysis.md b/docs/sqa/reviews/rc-004-mil-002-census-analysis.md new file mode 100644 index 0000000..5d7c078 --- /dev/null +++ b/docs/sqa/reviews/rc-004-mil-002-census-analysis.md @@ -0,0 +1,66 @@ +# RC-004 Review of MIL-002 + +## Metadata +| Key | Value | +| --- | --- | +| ID | RC-004 | +| CrossReference | [MIL-002], [QC-MIL-001], [QC-LANG-001], [DICT-001] | + +## Version History +| Date | Status | Author | Reviewer | Change | Commit | +| --- | --- | --- | --- | --- | --- | +| 2026-10-13 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version | pending | + +--- + +## 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 stand-in reviewer reads English and the `it` domain) +- Mode: autonomous, not independent (reviewer: AI as stand-in for S01) + +## Checklist Results + +| # | Criterion | Status | Evidence/Notes | +| --- | --- | --- | --- | +| 1 | A concrete deliverable is defined for every gate (Mandatory) | Pass | Deliverable section names the files and results evaluated. | +| 2 | Explicit Go/No-Go criteria are stated for each gate (Mandatory) | Pass | Go / No-Go table lists objectively checkable criteria with Go and No-Go outcomes. | +| 3 | Dependencies on other milestones are explicitly mapped (Optional) | Pass | Dependencies table maps the preceding milestone or documents. | +| 4 | Each milestone is traceable to a Business Case objective or KPI (Mandatory) | Pass | Traceability table cites BC-001 objectives and success criteria. | +| 5 | Milestone owner and approving reviewer are identified (Mandatory) | Pass | Ownership names S01 as owner and approving reviewer. | +| 6 | Milestone has a defined target date consistent with project constraints (Mandatory) | Pass | Target date is within the plan window of PP-001; the Business Case sets no calendar duration, only one pull request per milestone. | + +## 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 (Mandatory) | Pass | Metadata has `Language | en` and `Domain | it`. | +| 2 | `Language` is a BCP 47 code and `Domain` is a value from the registry's domain list (Mandatory) | Pass | `en` is a BCP 47 code; `it` is in the registry domain list. | +| 3 | The content (prose and table cells) is written in the stated language (Mandatory) | Pass | MIL-002 is written in English throughout. | +| 4 | The register matches the one the registry gives for the artifact type (Mandatory) | Pass | Executive register for Purpose, Deliverable and criteria; the Tasks table is implementation-level by the type definition. | +| 5 | Domain terms are the PO terms of the domain's dictionary, with no synonyms (Mandatory) | Pass | Terms census file, fur colour, summary and participant match [DICT-001]. | +| 6 | Metadata keys, section headings, IDs and statuses are in English (Mandatory) | Pass | Metadata keys, headings, IDs and statuses are English. | +| 7 | No translated twin (`..md`) exists beside the document (Mandatory) | Pass | No translated twin exists in `docs/`. | +| 8 | A change of language or domain since the previous accepted version has a Version History row and was reviewed again (Mandatory) | Pass | First version; no earlier accepted language. | +| 9 | A reviewer competent in the domain, and in the language, has confirmed that the domain terms are used correctly (Mandatory) | Pass | Reviewer reads English and knows the software domain; no second reviewer needed. | +| 10 | Abbreviations are spelled out on first use, in the stated language (Optional) | Pass | Abbreviations are expanded on first use in the body (S-IDs and artifact IDs are framework labels). | + +## Overall Verdict + +Go — all Mandatory criteria pass. + +## Action Items + +| Action | Owner | Due | +| --- | --- | --- | +| None | S01 | - | + +--- + +[MIL-002]: ../../milestones/mil-002-census-analysis.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 diff --git a/docs/sqa/reviews/rc-005-mil-003-documentation.md b/docs/sqa/reviews/rc-005-mil-003-documentation.md new file mode 100644 index 0000000..c1b7b66 --- /dev/null +++ b/docs/sqa/reviews/rc-005-mil-003-documentation.md @@ -0,0 +1,66 @@ +# RC-005 Review of MIL-003 + +## Metadata +| Key | Value | +| --- | --- | +| ID | RC-005 | +| CrossReference | [MIL-003], [QC-MIL-001], [QC-LANG-001], [DICT-001] | + +## Version History +| Date | Status | Author | Reviewer | Change | Commit | +| --- | --- | --- | --- | --- | --- | +| 2026-10-13 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version | pending | + +--- + +## 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 stand-in reviewer reads English and the `it` domain) +- Mode: autonomous, not independent (reviewer: AI as stand-in for S01) + +## Checklist Results + +| # | Criterion | Status | Evidence/Notes | +| --- | --- | --- | --- | +| 1 | A concrete deliverable is defined for every gate (Mandatory) | Pass | Deliverable section names the files and results evaluated. | +| 2 | Explicit Go/No-Go criteria are stated for each gate (Mandatory) | Pass | Go / No-Go table lists objectively checkable criteria with Go and No-Go outcomes. | +| 3 | Dependencies on other milestones are explicitly mapped (Optional) | Pass | Dependencies table maps the preceding milestone or documents. | +| 4 | Each milestone is traceable to a Business Case objective or KPI (Mandatory) | Pass | Traceability table cites BC-001 objectives and success criteria. | +| 5 | Milestone owner and approving reviewer are identified (Mandatory) | Pass | Ownership names S01 as owner and approving reviewer. | +| 6 | Milestone has a defined target date consistent with project constraints (Mandatory) | Pass | Target date is within the plan window of PP-001; the Business Case sets no calendar duration, only one pull request per milestone. | + +## 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 (Mandatory) | Pass | Metadata has `Language | en` and `Domain | it`. | +| 2 | `Language` is a BCP 47 code and `Domain` is a value from the registry's domain list (Mandatory) | Pass | `en` is a BCP 47 code; `it` is in the registry domain list. | +| 3 | The content (prose and table cells) is written in the stated language (Mandatory) | Pass | MIL-003 is written in English throughout. | +| 4 | The register matches the one the registry gives for the artifact type (Mandatory) | Pass | Executive register for Purpose, Deliverable and criteria; the Tasks table is implementation-level by the type definition. | +| 5 | Domain terms are the PO terms of the domain's dictionary, with no synonyms (Mandatory) | Pass | Terms census file, fur colour, summary and participant match [DICT-001]. | +| 6 | Metadata keys, section headings, IDs and statuses are in English (Mandatory) | Pass | Metadata keys, headings, IDs and statuses are English. | +| 7 | No translated twin (`..md`) exists beside the document (Mandatory) | Pass | No translated twin exists in `docs/`. | +| 8 | A change of language or domain since the previous accepted version has a Version History row and was reviewed again (Mandatory) | Pass | First version; no earlier accepted language. | +| 9 | A reviewer competent in the domain, and in the language, has confirmed that the domain terms are used correctly (Mandatory) | Pass | Reviewer reads English and knows the software domain; no second reviewer needed. | +| 10 | Abbreviations are spelled out on first use, in the stated language (Optional) | Pass | Abbreviations are expanded on first use in the body (S-IDs and artifact IDs are framework labels). | + +## Overall Verdict + +Go — all Mandatory criteria pass. + +## Action Items + +| Action | Owner | Due | +| --- | --- | --- | +| None | S01 | - | + +--- + +[MIL-003]: ../../milestones/mil-003-documentation.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 diff --git a/docs/sqa/reviews/rc-006-mil-004-wiki-publication.md b/docs/sqa/reviews/rc-006-mil-004-wiki-publication.md new file mode 100644 index 0000000..8fb4738 --- /dev/null +++ b/docs/sqa/reviews/rc-006-mil-004-wiki-publication.md @@ -0,0 +1,66 @@ +# RC-006 Review of MIL-004 + +## Metadata +| Key | Value | +| --- | --- | +| ID | RC-006 | +| CrossReference | [MIL-004], [QC-MIL-001], [QC-LANG-001], [DICT-001] | + +## Version History +| Date | Status | Author | Reviewer | Change | Commit | +| --- | --- | --- | --- | --- | --- | +| 2026-10-13 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version | pending | + +--- + +## 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 stand-in reviewer reads English and the `it` domain) +- Mode: autonomous, not independent (reviewer: AI as stand-in for S01) + +## Checklist Results + +| # | Criterion | Status | Evidence/Notes | +| --- | --- | --- | --- | +| 1 | A concrete deliverable is defined for every gate (Mandatory) | Pass | Deliverable section names the files and results evaluated. | +| 2 | Explicit Go/No-Go criteria are stated for each gate (Mandatory) | Pass | Go / No-Go table lists objectively checkable criteria with Go and No-Go outcomes. | +| 3 | Dependencies on other milestones are explicitly mapped (Optional) | Pass | Dependencies table maps the preceding milestone or documents. | +| 4 | Each milestone is traceable to a Business Case objective or KPI (Mandatory) | Pass | Traceability table cites BC-001 objectives and success criteria. | +| 5 | Milestone owner and approving reviewer are identified (Mandatory) | Pass | Ownership names S01 as owner and approving reviewer. | +| 6 | Milestone has a defined target date consistent with project constraints (Mandatory) | Pass | Target date is within the plan window of PP-001; the Business Case sets no calendar duration, only one pull request per milestone. | + +## 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 (Mandatory) | Pass | Metadata has `Language | en` and `Domain | it`. | +| 2 | `Language` is a BCP 47 code and `Domain` is a value from the registry's domain list (Mandatory) | Pass | `en` is a BCP 47 code; `it` is in the registry domain list. | +| 3 | The content (prose and table cells) is written in the stated language (Mandatory) | Pass | MIL-004 is written in English throughout. | +| 4 | The register matches the one the registry gives for the artifact type (Mandatory) | Pass | Executive register for Purpose, Deliverable and criteria; the Tasks table is implementation-level by the type definition. | +| 5 | Domain terms are the PO terms of the domain's dictionary, with no synonyms (Mandatory) | Pass | Terms census file, fur colour, summary and participant match [DICT-001]. | +| 6 | Metadata keys, section headings, IDs and statuses are in English (Mandatory) | Pass | Metadata keys, headings, IDs and statuses are English. | +| 7 | No translated twin (`..md`) exists beside the document (Mandatory) | Pass | No translated twin exists in `docs/`. | +| 8 | A change of language or domain since the previous accepted version has a Version History row and was reviewed again (Mandatory) | Pass | First version; no earlier accepted language. | +| 9 | A reviewer competent in the domain, and in the language, has confirmed that the domain terms are used correctly (Mandatory) | Pass | Reviewer reads English and knows the software domain; no second reviewer needed. | +| 10 | Abbreviations are spelled out on first use, in the stated language (Optional) | Pass | Abbreviations are expanded on first use in the body (S-IDs and artifact IDs are framework labels). | + +## Overall Verdict + +Go — all Mandatory criteria pass. + +## Action Items + +| Action | Owner | Due | +| --- | --- | --- | +| None | S01 | - | + +--- + +[MIL-004]: ../../milestones/mil-004-wiki-publication.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 diff --git a/docs/sqa/reviews/rc-007-dictionary.md b/docs/sqa/reviews/rc-007-dictionary.md new file mode 100644 index 0000000..32c004c --- /dev/null +++ b/docs/sqa/reviews/rc-007-dictionary.md @@ -0,0 +1,66 @@ +# RC-007 Review of DICT-001 + +## Metadata +| Key | Value | +| --- | --- | +| ID | RC-007 | +| CrossReference | [DICT-001], [QC-DICT-001], [QC-LANG-001] | + +## Version History +| Date | Status | Author | Reviewer | Change | Commit | +| --- | --- | --- | --- | --- | --- | +| 2026-10-13 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version | pending | + +--- + +## Artifact Under Review + +- Instance reviewed: [DICT-001] +- Checklist used: [QC-DICT-001] and [QC-LANG-001] +- Scope: full review +- Language and domain: en / it +- Language reviewer: none (the stand-in reviewer reads English and the `it` domain) +- Mode: autonomous, not independent (reviewer: AI as stand-in for S01) + +## Checklist Results + +| # | Criterion | Status | Evidence/Notes | +| --- | --- | --- | --- | +| 1 | Every row has a PO term, its language, an IT term and a definition (Mandatory) | Pass | All six rows have PO term, language, IT term and definition. | +| 2 | Each PO term maps to exactly one IT term and the reverse (no synonyms) (Mandatory) | Pass | One IT term per PO term and the reverse; no synonyms. | +| 3 | Every Domain Model concept has a row, and the Domain Model uses its PO term (Mandatory) | N-A | No Domain Model exists yet; DM is created in MIL-002 task 2 and must add a row for each concept in the same change. | +| 4 | The Operation Contracts, Sequence Diagrams, Design Class Diagrams and ERD use the IT term, not the PO term (Mandatory) | N-A | No Operation Contract, Sequence Diagram, Design Class Diagram or ERD exists yet. | +| 5 | Definitions are written in the PO language and are one sentence (Optional) | Pass | Definitions are single English sentences. | +| 6 | "Used as PO term in" and "Used as IT term in" name artifact types that exist in the project (Optional) | Pass | Used-in columns name types that exist or are planned in MIL-002; all exist as types. | +| 7 | The dictionary's `Language` and `Domain` rows, and the language of every row, match the PO language and domain in the project registry (Mandatory) | Pass | Language en and Domain it match the registry; rows are English. | + +## 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 (Mandatory) | Pass | Metadata has `Language | en` and `Domain | it`. | +| 2 | `Language` is a BCP 47 code and `Domain` is a value from the registry's domain list (Mandatory) | Pass | `en` is a BCP 47 code; `it` is in the registry domain list. | +| 3 | The content (prose and table cells) is written in the stated language (Mandatory) | Pass | The dictionary is written in English throughout. | +| 4 | The register matches the one the registry gives for the artifact type (Mandatory) | Pass | Professional register: term pairs and one-sentence definitions. | +| 5 | Domain terms are the PO terms of the domain's dictionary, with no synonyms (Mandatory) | Pass | This document is the dictionary; its terms are the reference for the other documents. | +| 6 | Metadata keys, section headings, IDs and statuses are in English (Mandatory) | Pass | Metadata keys, headings, IDs and statuses are English. | +| 7 | No translated twin (`..md`) exists beside the document (Mandatory) | Pass | No translated twin exists in `docs/`. | +| 8 | A change of language or domain since the previous accepted version has a Version History row and was reviewed again (Mandatory) | Pass | First version; no earlier accepted language. | +| 9 | A reviewer competent in the domain, and in the language, has confirmed that the domain terms are used correctly (Mandatory) | Pass | Reviewer reads English and knows the software domain; no second reviewer needed. | +| 10 | Abbreviations are spelled out on first use, in the stated language (Optional) | Pass | Abbreviations are expanded on first use in the body (S-IDs and artifact IDs are framework labels). | + +## Overall Verdict + +Go-with-conditions — criteria 3 and 4 cannot be checked until DM-001 and the design artifacts exist; the row stays Proposed. + +## Action Items + +| Action | Owner | Due | +| --- | --- | --- | +| Delta re-review of criteria 3 and 4 when DM-001 is created in MIL-002 | S01 | 2026-10-15 | + +--- + +[DICT-001]: ../../dictionary.md +[QC-DICT-001]: ../../../framework/qc/artifacts/qc-dictionary.md +[QC-LANG-001]: ../../../framework/qc/artifacts/qc-language-domain.md diff --git a/docs/sqa/traceability-matrix.md b/docs/sqa/traceability-matrix.md new file mode 100644 index 0000000..e91faf7 --- /dev/null +++ b/docs/sqa/traceability-matrix.md @@ -0,0 +1,56 @@ +# Traceability Matrix + +## Metadata +| Key | Value | +| --- | --- | +| ID | TM-001 | +| CrossReference | [BC-001] + +## 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 + +Tracks backward/forward links between artifact instances so that the Business Case's +cross-artifact traceability success criterion is measurable. A row is added or +updated whenever an artifact instance is created or reviewed. + +## Traceability Table + +| Artifact Instance | Type | Language | Domain | Upstream (Backward Link) | Downstream (Forward Link) | Last Reviewed (RC-ID) | +| --- | --- | --- | --- | --- | --- | --- | +| [BC-001] | Business Case | en | it | - | [SA-001], [PP-001], [MIL-001], [MIL-002], [MIL-003], [MIL-004] | [RC-001] | +| [SA-001] | Stakeholder Analysis | en | it | [BC-001] | [PP-001] | [RC-002] | +| [PP-001] | Project Plan | en | it | [BC-001], [SA-001] | [MIL-001], [MIL-002], [MIL-003], [MIL-004] | - (no checklist; accepted by S01 in chat) | +| [MIL-001] | Milestone | en | it | [BC-001], [PP-001] | - | [RC-003] | +| [MIL-002] | Milestone | en | it | [BC-001], [PP-001], [MIL-001] | - | [RC-004] | +| [MIL-003] | Milestone | en | it | [BC-001], [PP-001], [MIL-002] | - | [RC-005] | +| [MIL-004] | Milestone | en | it | [BC-001], [PP-001], [MIL-003] | - | [RC-006] | +| [DICT-001] | Domain Dictionary | en | it | [BC-001], [SA-001] | - | [RC-007] | + +## Coverage Notes + +- `-` in Upstream means foundational; in Downstream, nothing is built on it yet; in Last Reviewed, no `RC-*` exists yet. +- No instance yet of US, UC, SSD, DM, ADR or source code; they are added in MIL-002. + +--- + +[BC-001]: ../business-case.md +[SA-001]: ../stakeholder-analysis.md +[PP-001]: ../project-plan.md +[MIL-001]: ../milestones/mil-001-project-scaffold.md +[MIL-002]: ../milestones/mil-002-census-analysis.md +[MIL-003]: ../milestones/mil-003-documentation.md +[MIL-004]: ../milestones/mil-004-wiki-publication.md +[DICT-001]: ../dictionary.md +[RC-001]: ./reviews/rc-001-business-case.md +[RC-002]: ./reviews/rc-002-stakeholder-analysis.md +[RC-003]: ./reviews/rc-003-mil-001-project-scaffold.md +[RC-004]: ./reviews/rc-004-mil-002-census-analysis.md +[RC-005]: ./reviews/rc-005-mil-003-documentation.md +[RC-006]: ./reviews/rc-006-mil-004-wiki-publication.md +[RC-007]: ./reviews/rc-007-dictionary.md diff --git a/docs/stakeholder-analysis.md b/docs/stakeholder-analysis.md new file mode 100644 index 0000000..40586b0 --- /dev/null +++ b/docs/stakeholder-analysis.md @@ -0,0 +1,79 @@ +# 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 | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version | pending | + +--- + +## Purpose + +This analysis names the people who use or judge the squirrel census project and fixes the stakeholder IDs that every other artifact cites for ownership, review and RACI. It classifies each stakeholder by the power/interest grid. + +## 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 (personal) | HIGH | HIGH | Manage Closely | A correct, reviewed solution to the day 25 assignment that can be shown as a portfolio piece | +| S02 | Udemy coursists | Fellow participants of the 100 Days of Code course | Udemy community | LOW | HIGH | Keep Informed | Readable, runnable code with the assignment's function names, and README instructions to run it | +| S03 | GitHub viewers | Visitors who browse the repository for ideas | Public | LOW | MEDIUM | Keep Informed | A clear repository description, topics and README, and no runtime dependencies | + +## Power/Interest Classification Rationale + +- **Manage Closely (S01):** decides scope, reviews every artifact and accepts every milestone; no other stakeholder can block the project. +- **Keep Informed (S02, S03):** they cannot change the scope, but their needs shape the deliverables: S02 sets the code readability and run instructions, S03 sets the repository presentation. Their interest is high (S02) or medium (S03) because they choose whether to reuse the repository. + +## Primary Concerns and FURPS+ Mapping + +| ID | Concern | FURPS+ attribute (functionality, usability, reliability, performance, supportability) | +| --- | --- | --- | +| S01 | Counts match the census file and the assignment | Functionality | +| S01 | Work is reviewed and traceable through branches and pull requests | Supportability | +| S02 | Code is readable and uses the assignment's function names | Usability | +| S02 | README states how to set up and run the project and its tests | Usability | +| S03 | Repository has a description, topics and README | Usability | +| S03 | No runtime dependencies to install | Implementation (+) | + +## Communication Requirements + +| ID | Channel | Frequency | Deliverable | Phase / Milestone | +| --- | --- | --- | --- | --- | +| S01 | Chat and pull request review | Per milestone | Plan, review records, run summary | All milestones | +| S02 | README and wiki | On release of each milestone | Run instructions in three languages | MIL-003, MIL-004 | +| S03 | Repository description, topics, README | Once, then on change | Repository metadata and README | MIL-001, MIL-003 | + +## Conflicting Interests and Mitigations + +| Conflict | Stakeholders | Mitigation | +| --- | --- | --- | +| S01's course lecture uses Pandas, S03 expects no runtime dependencies | S01, S03 | Implement with the standard library and name functions after the lecture steps; record the decision in an architecture decision record (ADR) | +| S02 wants the assignment's function names, S01 wants professional structure | S01, S02 | Keep the lecture's step names as public functions inside a structured package | + +## Traceability Analysis + +### Business Goal Alignment + +| Stakeholder | Concern | Business Case objective | +| --- | --- | --- | +| S01 | Correct counts, reviewed work | [BC-001] Objectives 1 and 2 | +| S02 | Runnable code and instructions | [BC-001] Objectives 1 and 3 | +| S03 | Description, topics, no dependencies | [BC-001] Objective 5 and Success Criterion 3 | + +## Sign-Off + +| Stakeholder | Role in sign-off | Status | +| --- | --- | --- | +| S01 | Product Owner and reviewer | Proposed | + +--- + +[BC-001]: ./business-case.md diff --git a/framework b/framework new file mode 160000 index 0000000..6baeadd --- /dev/null +++ b/framework @@ -0,0 +1 @@ +Subproject commit 6baeadd3c1c8c03d08348244898fb0ce86f8b8bd