Merge pull request 'Re-review the Business Case, Stakeholder Analysis and milestone against the framework checklists' (#14) from re-review-business-case-stakeholders-milestone into main
CI / test (push) Successful in 49s
TirSystem/github-action: Sync GitHub mirror metadata / sync-metadata (push) Successful in 4s

Reviewed-on: Tirsvad-Udemy-100_days_of_code/016-pretty_table#14
This commit was merged in pull request #14.
This commit is contained in:
2026-10-07 07:15:21 +02:00
7 changed files with 218 additions and 8 deletions
+1 -1
View File
@@ -15,7 +15,7 @@ document of a type. `Primary File` may contain a glob (e.g.
| SA | Stakeholder Analysis | docs/stakeholder-analysis.md | 002 |
| PP | Project Plan | docs/project-plan.md | 002 |
| MIL | Milestone / Gateway | docs/milestones/*.md | 002 |
| RC | SQA Review Record | docs/sqa/reviews/rc-*.md | 005 |
| RC | SQA Review Record | docs/sqa/reviews/rc-*.md | 008 |
## Languages
+8 -3
View File
@@ -11,17 +11,18 @@
## Version History
| Date | Status | Author | Reviewer | Change | Commit |
| --- | --- | --- | --- | --- | --- |
| 2026-10-07 | Accepted | Jens Tirsvad Nielsen | S01 | Initial version | [c55db0e] |
| 2026-10-07 | Deprecated | Jens Tirsvad Nielsen | S01 | Initial version | [c55db0e] |
| 2026-10-07 | Accepted | Jens Tirsvad Nielsen | S01 | Re-review fixes: justify the qualitative cost-benefit, add the one-week delivery constraint, spell out PyPI, SQA and QC | [cd85bb4] |
---
## Executive Summary
This project delivers the Udemy "100 Days of Code" lesson on adding Python packages from PyPI. It is a small, runnable Python program that builds a table of Pokémon names and types with the PrettyTable package, packaged as a clean, tested and documented repository that other course participants and GitHub visitors can read and run. The effort is deliberately small, and the single runtime dependency is the one the assignment teaches.
This project delivers the Udemy "100 Days of Code" lesson on adding Python packages from PyPI, the Python Package Index. It is a small, runnable Python program that builds a table of Pokémon names and types with the PrettyTable package, packaged as a clean, tested and documented repository that other course participants and GitHub visitors can read and run. The effort is deliberately small, and the single runtime dependency is the one the assignment teaches.
## Methodological and Standards Foundation
The work follows the SQA and QC framework mounted at `framework/` (Business Case, Stakeholder Analysis, Project Plan, milestones, tasks as issues, then code). Quality characteristics follow ISO/IEC 25010:2023. Code follows the framework's `coding-conventions` skill for Python and is reviewed against its `qc-programming-*` checklist.
The work follows the software quality assurance (SQA) and quality control (QC) framework mounted at `framework/` (Business Case, Stakeholder Analysis, Project Plan, milestones, tasks as issues, then code). Quality characteristics follow ISO/IEC 25010:2023. Code follows the framework's `coding-conventions` skill for Python and is reviewed against its `qc-programming-*` checklist.
## Problem Statement
@@ -96,6 +97,7 @@ The project supports the participant's goal of completing the bootcamp with cons
- Python 3.13 or newer, `venv` for environments, pytest for tests.
- Constants live in `constants.py`; source uses Doxygen comments.
- Configuration lives in `pyproject.toml`.
- Delivery within one week of the start: 2026-10-07 to 2026-10-14.
- Only the user performs commits, pushes and merges.
## Cost–Benefit Assessment
@@ -104,6 +106,8 @@ The project supports the participant's goal of completing the bootcamp with cons
| --- | --- |
| A few hours of the participant's time; no licence or hosting cost | A shareable, tested reference solution and a reusable project template |
The assessment is qualitative on purpose: the only cost is the participant's own time and the project earns no revenue, so a monetary return on investment would not be meaningful.
## Stakeholders
| Stakeholder ID (SA) | Interest in this project |
@@ -120,3 +124,4 @@ Proceed — the scope is small, the cost is minimal and the result is directly r
[SA-001]: ./stakeholder-analysis.md
[c55db0e]: https://git.tirsystem.com/Tirsvad-Udemy-100_days_of_code/016-pretty_table/commit/c55db0e0f2f7c259018b85a90824b124cc0b780d
[cd85bb4]: https://git.tirsystem.com/Tirsvad-Udemy-100_days_of_code/016-pretty_table/commit/cd85bb42593077fc462fae258e9336f4ddd34985
@@ -11,7 +11,8 @@
## Version History
| Date | Status | Author | Reviewer | Change | Commit |
| --- | --- | --- | --- | --- | --- |
| 2026-10-07 | Accepted | Jens Tirsvad Nielsen | S01 | Initial version | [c55db0e] |
| 2026-10-07 | Deprecated | Jens Tirsvad Nielsen | S01 | Initial version | [c55db0e] |
| 2026-10-07 | Accepted | Jens Tirsvad Nielsen | S01 | Re-review fixes: cite the Business Case delivery-time constraint, spell out RC | [cd85bb4] |
---
@@ -32,7 +33,7 @@ A Python 3.13+ project with `src/`, `tests/`, `docs/`, `pyproject.toml`, `consta
| 3 | The README follows the template and its steps work | Each section is filled and the steps run | A section is missing or a step fails |
| 4 | Runtime dependencies | Only PrettyTable | Any other runtime dependency |
| 5 | Repository description and at least 3 topics are set | Visible on the repository page | Missing |
| 6 | Code review record against `qc-programming-python` | `RC-*` says Go | No review or No-Go |
| 6 | Code review record against `qc-programming-python` | The review record (`RC-*`) says Go | No review or No-Go |
## Dependencies
@@ -59,7 +60,7 @@ A Python 3.13+ project with `src/`, `tests/`, `docs/`, `pyproject.toml`, `consta
## Target Date
2026-10-14 — one week from the start, consistent with the Business Case's small scope.
2026-10-14 — one week from the start, as the Business Case constraint on delivery time requires.
## Tasks
@@ -80,3 +81,4 @@ A Python 3.13+ project with `src/`, `tests/`, `docs/`, `pyproject.toml`, `consta
[BC-001]: ../business-case.md
[SA-001]: ../stakeholder-analysis.md
[c55db0e]: https://git.tirsystem.com/Tirsvad-Udemy-100_days_of_code/016-pretty_table/commit/c55db0e0f2f7c259018b85a90824b124cc0b780d
[cd85bb4]: https://git.tirsystem.com/Tirsvad-Udemy-100_days_of_code/016-pretty_table/commit/cd85bb42593077fc462fae258e9336f4ddd34985
+67
View File
@@ -0,0 +1,67 @@
# SQA Review Record
## Metadata
| Key | Value |
| --- | --- |
| ID | RC-005 |
| CrossReference | [BC-001] |
## Version History
| Date | Status | Author | Reviewer | Change | Commit |
| --- | --- | --- | --- | --- | --- |
| 2026-10-07 | Proposed | Jens Tirsvad Nielsen | S01 | Initial version | [cd85bb4] |
---
## Artifact Under Review
- Instance reviewed: [BC-001]
- Checklist used: [QC-BC-001] (`qc-business-case.md`) and [QC-LANG-001] (`qc-language-domain.md`)
- Scope: full review. It replaces [RC-001], which was written when the checklists were not available in `framework/qc/`. Defects found were fixed first, so the version reviewed is the one with the new Version History row.
- Language and domain: en / it
- Language reviewer: none (S01 reads English and knows the IT domain)
## Checklist Results
| # | Criterion | Status | Evidence/Notes |
| --- | --- | --- | --- |
| 1 | ROI/Cost-Benefit analysis is quantitative, or explicitly justified when qualitative | Pass | The first review passed this without a justification. The version under review adds one under the Cost–Benefit table: the only cost is the participant's time and there is no revenue |
| 2 | Risks have documented impact and mitigation | Pass | Three risks, each with impact and mitigation |
| 3 | Success criteria are measurable | Pass | Four criteria with explicit targets and measures (exit code, 100% tests pass, at least 3 topics) |
| 4 | Scope separates In Scope from Out of Scope | Pass | `### In Scope` and `### Out of Scope` |
| 5 | Stakeholders are cross-referenced to SA IDs | Pass | S01, S02, S03 cited by ID from [SA-001] |
| 6 | Methodology and quality-standard foundation are stated | Pass | The framework process and ISO/IEC 25010:2023 |
| 7 | Assumptions and constraints are explicit and distinct | Pass | Two separate sections; the one-week delivery constraint was added in this review |
| 8 | Clear, unambiguous recommendation | Pass | `Proceed` with a one-sentence rationale |
## Language and Domain Results
| # | Criterion | Status | Evidence/Notes |
| --- | --- | --- | --- |
| 1 | The Metadata table has a `Language` row and a `Domain` row, neither a placeholder | Pass | `Language` is `en` and `Domain` is `it` |
| 2 | `Language` is a BCP 47 code and `Domain` is a value from the registry's domain list | Pass | `en` is BCP 47; `it` is in the registry's domain list |
| 3 | The content is written in the stated language | Pass | All prose and table cells are English |
| 4 | The register matches the one the registry gives for the type | Pass | IT Executive English: Plain executive English; no unexplained jargon |
| 5 | Domain terms are the PO terms of the domain's dictionary, with no synonyms | Pass | The project has no dictionary (`DICT`), so there are no PO terms to contradict; terms are used consistently (for example PrettyTable, virtual environment, test) |
| 6 | Metadata keys, section headings, IDs and statuses are in English | Pass | Checked in the file |
| 7 | No translated twin exists beside the document | Pass | `docs/` has one file per artifact |
| 8 | A change of language or domain since the previous accepted version has a Version History row and was reviewed again | Pass | Language and domain are unchanged since the first version |
| 9 | A reviewer competent in the domain and the language has confirmed the domain terms | Pass | S01 reads English and works in the IT domain; the language reviewer is `none` |
| 10 | Abbreviations are spelled out on first use | Pass | PyPI, SQA and QC are spelled out on first use (fixed in this review) |
## Overall Verdict
Go — every mandatory criterion of the type checklist and of QC-LANG-001 passes. Two defects were fixed before the verdict: the qualitative cost-benefit lacked a justification (criterion 1) and the document had no delivery-time constraint, which the milestone cross-check needs; PyPI, SQA and QC were not spelled out (QC-LANG-001 criterion 10). The author and the reviewer are both S01, the only stakeholder, as in the first reviews.
## Action Items
| Action | Owner | Due |
| --- | --- | --- |
| None open | S01 | n/a |
---
[BC-001]: ../../business-case.md
[QC-BC-001]: ../../../framework/qc/qc-business-case.md
[QC-LANG-001]: ../../../framework/qc/qc-language-domain.md
[cd85bb4]: https://git.tirsystem.com/Tirsvad-Udemy-100_days_of_code/016-pretty_table/commit/cd85bb42593077fc462fae258e9336f4ddd34985
@@ -0,0 +1,67 @@
# SQA Review Record
## Metadata
| Key | Value |
| --- | --- |
| ID | RC-006 |
| CrossReference | [SA-001] |
## Version History
| Date | Status | Author | Reviewer | Change | Commit |
| --- | --- | --- | --- | --- | --- |
| 2026-10-07 | Proposed | Jens Tirsvad Nielsen | S01 | Initial version | [cd85bb4] |
---
## Artifact Under Review
- Instance reviewed: [SA-001]
- Checklist used: [QC-SA-001] (`qc-stakeholder-analysis.md`) and [QC-LANG-001] (`qc-language-domain.md`)
- Scope: full review. It replaces [RC-002], which was written when the checklists were not available in `framework/qc/`. Defects found were fixed first, so the version reviewed is the one with the new Version History row.
- Language and domain: en / it
- Language reviewer: none (S01 reads English and knows the IT domain)
## Checklist Results
| # | Criterion | Status | Evidence/Notes |
| --- | --- | --- | --- |
| 1 | Power/Interest grid is filled for every stakeholder | Pass | S01, S02, S03 each have Power, Interest and a Quadrant |
| 2 | Each stakeholder has a unique, stable ID | Pass | S01 to S03; none renumbered |
| 3 | Roles and context are defined with explicit Power and Interest levels | Pass | Role/Title, Organization, Power and Interest columns filled |
| 4 | Communication needs are mapped to phases or milestones | Pass | Channel, frequency, deliverable and phase for S01, S02 and S03 |
| 5 | Conflicting interests are identified with a mitigation | Pass | One conflict (S02 against S03) with a mitigation |
| 6 | Concerns are traced to Business Case objectives | Pass | Traceability table cites [BC-001] O1 to O4 |
| 7 | Concerns use business language and a FURPS+ mapping | Pass | Each concern maps to a FURPS+ attribute |
| 8 | Understandable by non-technical stakeholders | Pass | Short, plain entries per stakeholder |
## Language and Domain Results
| # | Criterion | Status | Evidence/Notes |
| --- | --- | --- | --- |
| 1 | The Metadata table has a `Language` row and a `Domain` row, neither a placeholder | Pass | `Language` is `en` and `Domain` is `it` |
| 2 | `Language` is a BCP 47 code and `Domain` is a value from the registry's domain list | Pass | `en` is BCP 47; `it` is in the registry's domain list |
| 3 | The content is written in the stated language | Pass | All prose and table cells are English |
| 4 | The register matches the one the registry gives for the type | Pass | IT Professional English: Professional English; business concerns and FURPS+ labels |
| 5 | Domain terms are the PO terms of the domain's dictionary, with no synonyms | Pass | The project has no dictionary (`DICT`), so there are no PO terms to contradict; terms are used consistently (for example PrettyTable, virtual environment, test) |
| 6 | Metadata keys, section headings, IDs and statuses are in English | Pass | Checked in the file |
| 7 | No translated twin exists beside the document | Pass | `docs/` has one file per artifact |
| 8 | A change of language or domain since the previous accepted version has a Version History row and was reviewed again | Pass | Language and domain are unchanged since the first version |
| 9 | A reviewer competent in the domain and the language has confirmed the domain terms | Pass | S01 reads English and works in the IT domain; the language reviewer is `none` |
| 10 | Abbreviations are spelled out on first use | Pass | FURPS+ is spelled out under its section heading (fixed in this review) |
## Overall Verdict
Go — every mandatory criterion of the type checklist and of QC-LANG-001 passes. One defect was fixed before the verdict: FURPS+ was not spelled out (QC-LANG-001 criterion 10). The author and the reviewer are both S01, the only stakeholder, as in the first reviews.
## Action Items
| Action | Owner | Due |
| --- | --- | --- |
| None open | S01 | n/a |
---
[SA-001]: ../../stakeholder-analysis.md
[QC-SA-001]: ../../../framework/qc/qc-stakeholder-analysis.md
[QC-LANG-001]: ../../../framework/qc/qc-language-domain.md
[cd85bb4]: https://git.tirsystem.com/Tirsvad-Udemy-100_days_of_code/016-pretty_table/commit/cd85bb42593077fc462fae258e9336f4ddd34985
+65
View File
@@ -0,0 +1,65 @@
# SQA Review Record
## Metadata
| Key | Value |
| --- | --- |
| ID | RC-007 |
| CrossReference | [MIL-001] |
## Version History
| Date | Status | Author | Reviewer | Change | Commit |
| --- | --- | --- | --- | --- | --- |
| 2026-10-07 | Proposed | Jens Tirsvad Nielsen | S01 | Initial version | [cd85bb4] |
---
## Artifact Under Review
- Instance reviewed: [MIL-001]
- Checklist used: [QC-MIL-001] (`qc-milestones-gateways.md`) and [QC-LANG-001] (`qc-language-domain.md`)
- Scope: full review. It replaces [RC-003], which was written when the checklists were not available in `framework/qc/`. Defects found were fixed first, so the version reviewed is the one with the new Version History row.
- Language and domain: en / it
- Language reviewer: none (S01 reads English and knows the IT domain)
## Checklist Results
| # | Criterion | Status | Evidence/Notes |
| --- | --- | --- | --- |
| 1 | A concrete deliverable is defined for every gate | Pass | The project, tests, config and repository metadata, not just a date |
| 2 | Explicit, objectively checkable Go/No-Go criteria | Pass | Six criteria, each with a Go and a No-Go condition that a command or page shows |
| 3 | Dependencies on other milestones are mapped | Pass | The table lists [BC-001] and [SA-001]; there is no earlier milestone |
| 4 | Each milestone is traceable to a Business Case objective or KPI | Pass | Traceability table maps O1 to O4 to tasks |
| 5 | Owner and approving reviewer are identified | Pass | Both are S01 |
| 6 | Target date is consistent with project constraints | Pass | The first review passed this, but [BC-001] had no delivery-time constraint to check against. [BC-001] now states one week (2026-10-07 to 2026-10-14) and the target date matches |
## Language and Domain Results
| # | Criterion | Status | Evidence/Notes |
| --- | --- | --- | --- |
| 1 | The Metadata table has a `Language` row and a `Domain` row, neither a placeholder | Pass | `Language` is `en` and `Domain` is `it` |
| 2 | `Language` is a BCP 47 code and `Domain` is a value from the registry's domain list | Pass | `en` is BCP 47; `it` is in the registry's domain list |
| 3 | The content is written in the stated language | Pass | All prose and table cells are English |
| 4 | The register matches the one the registry gives for the type | Pass | IT Executive English: Plain executive English |
| 5 | Domain terms are the PO terms of the domain's dictionary, with no synonyms | Pass | The project has no dictionary (`DICT`), so there are no PO terms to contradict; terms are used consistently (for example PrettyTable, virtual environment, test) |
| 6 | Metadata keys, section headings, IDs and statuses are in English | Pass | Checked in the file |
| 7 | No translated twin exists beside the document | Pass | `docs/` has one file per artifact |
| 8 | A change of language or domain since the previous accepted version has a Version History row and was reviewed again | Pass | Language and domain are unchanged since the first version |
| 9 | A reviewer competent in the domain and the language has confirmed the domain terms | Pass | S01 reads English and works in the IT domain; the language reviewer is `none` |
| 10 | Abbreviations are spelled out on first use | Pass | RC is spelled out as the review record in Go criterion 6 (fixed in this review) |
## Overall Verdict
Go — every mandatory criterion of the type checklist and of QC-LANG-001 passes. One defect was fixed before the verdict: the target date had no Business Case constraint to be consistent with (criterion 6), and the review record was cited as `RC` without explanation (QC-LANG-001 criterion 10). The author and the reviewer are both S01, the only stakeholder, as in the first reviews.
## Action Items
| Action | Owner | Due |
| --- | --- | --- |
| None open | S01 | n/a |
---
[MIL-001]: ../../milestones/mil-001-pretty-table-project.md
[QC-MIL-001]: ../../../framework/qc/qc-milestones-gateways.md
[QC-LANG-001]: ../../../framework/qc/qc-language-domain.md
[cd85bb4]: https://git.tirsystem.com/Tirsvad-Udemy-100_days_of_code/016-pretty_table/commit/cd85bb42593077fc462fae258e9336f4ddd34985
+5 -1
View File
@@ -11,7 +11,8 @@
## Version History
| Date | Status | Author | Reviewer | Change | Commit |
| --- | --- | --- | --- | --- | --- |
| 2026-10-07 | Accepted | Jens Tirsvad Nielsen | S01 | Initial version | [c55db0e] |
| 2026-10-07 | Deprecated | Jens Tirsvad Nielsen | S01 | Initial version | [c55db0e] |
| 2026-10-07 | Accepted | Jens Tirsvad Nielsen | S01 | Re-review fix: spell out FURPS+ | [cd85bb4] |
---
@@ -35,6 +36,8 @@ Identify who is affected by the project and what each needs, using a power/inter
## Primary Concerns and FURPS+ Mapping
FURPS+ stands for functionality, usability, reliability, performance and supportability, plus design, implementation, interface and physical constraints.
| ID | Concern | FURPS+ attribute |
| --- | --- | --- |
| S01 | Work follows the plan-first process and is verified by tests | Functionality, Supportability |
@@ -73,3 +76,4 @@ Accepted by S01 (RC-002).
[BC-001]: ./business-case.md
[c55db0e]: https://git.tirsystem.com/Tirsvad-Udemy-100_days_of_code/016-pretty_table/commit/c55db0e0f2f7c259018b85a90824b124cc0b780d
[cd85bb4]: https://git.tirsystem.com/Tirsvad-Udemy-100_days_of_code/016-pretty_table/commit/cd85bb42593077fc462fae258e9336f4ddd34985