Add repository baseline: layout, tooling, assets, README, Doxyfile and CI (MIL-001)

Task: MIL-001#1
Task: MIL-001#2
Task: MIL-001#3
Task: MIL-001#4
Task: MIL-001#5
Task: MIL-001#6
This commit is contained in:
2026-10-13 15:46:00 +08:00
parent 840cc2d6bf
commit 22f19c188b
20 changed files with 858 additions and 402 deletions
+68 -68
View File
@@ -1,68 +1,68 @@
# SQA Review Record
## Metadata
| Key | Value |
| --- | --- |
| ID | RC-001 |
| CrossReference | [BC-001], [QC-BC-001] |
## Version History
| Date | Status | Author | Reviewer | Change | Commit |
| --- | --- | --- | --- | --- | --- |
| 2026-10-13 | Proposed | Claude (AI) for S01 | AI as stand-in for S01 | Initial review record: Go | [b113e6e] |
---
## Artifact Under Review
- Instance reviewed: [BC-001]
- Checklist used: [QC-BC-001] and [QC-LANG-001]
- Scope: full review
- Language and domain: en / it
- Language reviewer: none (the reviewer reads English and knows the domain, as stand-in for S01)
- Mode: autonomous, not independent (the reviewer is `AI as stand-in for S01`; the author is the same AI)
## Checklist Results
| # | Criterion | Status | Evidence/Notes |
| --- | --- | --- | --- |
| 1 | ROI/Cost-Benefit analysis is quantitative, or where qualitative, is explicitly justified | Pass | Cost-Benefit table is qualitative and says why: the project is an exercise with no licence or hosting cost. |
| 2 | Risks are identified with documented impact and mitigation | Pass | Risks table: five risks, each with impact and mitigation. |
| 3 | Success criteria are measurable, stating explicit targets rather than vague aspirations | Pass | Six criteria with target and measure (pytest exit code 0, `check-readme.sh` passes, at least 5 topics). |
| 4 | Scope explicitly separates In Scope vs Out of Scope | Pass | `### In Scope` and `### Out of Scope` subsections. |
| 5 | Stakeholders are cross-referenced to Stakeholder Analysis IDs rather than re-described inline | Pass | Stakeholders table cites S01, S02, S03 and [SA-001]. |
| 6 | Methodology and quality-standard foundation are stated explicitly (e.g. ISO/IEC 25010, Larman) | Pass | Section names the framework, ISO/IEC 25010:2023 and the coding conventions. |
| 7 | Assumptions and constraints are explicit and clearly distinguished from one another | Pass | Separate Assumptions and Constraints sections. |
| 8 | Document supports executive decision-making with a clear, unambiguous recommendation | Pass | Recommendation: Proceed, with rationale. |
## Language and Domain Results
| # | Criterion | Status | Evidence/Notes |
| --- | --- | --- | --- |
| 1 | The Metadata table has a `Language` row and a `Domain` row, and neither is a placeholder | Pass | `Language` = en, `Domain` = it in Metadata. |
| 2 | `Language` is a BCP 47 code and `Domain` is a value from the registry's domain list | Pass | `en`; `it` is in the registry's domain table. |
| 3 | The content (prose and table cells) is written in the stated language | Pass | All prose and cells are English. Checked by the stand-in for S01, who reads English. |
| 4 | The register matches the one the registry gives for the artifact type | Pass | IT Executive English: plain objective-level prose with no implementation detail beyond what the scope needs. |
| 5 | Domain terms are the PO terms of the domain's dictionary, with no synonyms | Pass | No `DICT` exists for domain `it` and none is in the plan; the document uses standard Python and software terms consistently (for example `states_to_learn.csv`, `missing_states`, Doxygen). Recorded as a stand-in decision. |
| 6 | Metadata keys, section headings, IDs and statuses are in English | Pass | All structural vocabulary is English. |
| 7 | No translated twin (`<name>.<language>.md`) exists beside the document | Pass | `check-languages.sh` reports no twin. |
| 8 | A change of language or domain since the previous accepted version has a Version History row and was reviewed again | Pass | First version; no earlier accepted version. |
| 9 | A reviewer competent in the domain, and in the language, has confirmed that the domain terms are used correctly | Pass | The reviewer, AI as stand-in for S01, reads English and the software domain; no second language reviewer is named. S01 is the Product Owner and reads both; a person may challenge this in the run summary. |
| 10 | Abbreviations are spelled out on first use, in the stated language | Pass | Continuous integration (CI), Architecture Decision Record (ADR) and comma-separated values (CSV) are spelled out where first used in prose; file names and tool names are not abbreviations. |
## Overall Verdict
Go - The Business Case is complete against its checklist. Every Mandatory criterion of both checklists passes.
## Action Items
| Action | Owner | Due |
| --- | --- | --- |
| None | S01 | |
---
[BC-001]: ../../business-case.md
[QC-BC-001]: ../../../framework/qc/artifacts/qc-business-case.md
[QC-LANG-001]: ../../../framework/qc/artifacts/qc-language-domain.md
[b113e6e]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/025-us-states-game/commit/b113e6eacd12bb08045ecf6f7822837626a7b1f7
# SQA Review Record
## Metadata
| Key | Value |
| --- | --- |
| ID | RC-001 |
| CrossReference | [BC-001], [QC-BC-001] |
## Version History
| Date | Status | Author | Reviewer | Change | Commit |
| --- | --- | --- | --- | --- | --- |
| 2026-10-13 | Proposed | Claude (AI) for S01 | AI as stand-in for S01 | Initial review record: Go | [b113e6e] |
---
## Artifact Under Review
- Instance reviewed: [BC-001]
- Checklist used: [QC-BC-001] and [QC-LANG-001]
- Scope: full review
- Language and domain: en / it
- Language reviewer: none (the reviewer reads English and knows the domain, as stand-in for S01)
- Mode: autonomous, not independent (the reviewer is `AI as stand-in for S01`; the author is the same AI)
## Checklist Results
| # | Criterion | Status | Evidence/Notes |
| --- | --- | --- | --- |
| 1 | ROI/Cost-Benefit analysis is quantitative, or where qualitative, is explicitly justified | Pass | Cost-Benefit table is qualitative and says why: the project is an exercise with no licence or hosting cost. |
| 2 | Risks are identified with documented impact and mitigation | Pass | Risks table: five risks, each with impact and mitigation. |
| 3 | Success criteria are measurable, stating explicit targets rather than vague aspirations | Pass | Six criteria with target and measure (pytest exit code 0, `check-readme.sh` passes, at least 5 topics). |
| 4 | Scope explicitly separates In Scope vs Out of Scope | Pass | `### In Scope` and `### Out of Scope` subsections. |
| 5 | Stakeholders are cross-referenced to Stakeholder Analysis IDs rather than re-described inline | Pass | Stakeholders table cites S01, S02, S03 and [SA-001]. |
| 6 | Methodology and quality-standard foundation are stated explicitly (e.g. ISO/IEC 25010, Larman) | Pass | Section names the framework, ISO/IEC 25010:2023 and the coding conventions. |
| 7 | Assumptions and constraints are explicit and clearly distinguished from one another | Pass | Separate Assumptions and Constraints sections. |
| 8 | Document supports executive decision-making with a clear, unambiguous recommendation | Pass | Recommendation: Proceed, with rationale. |
## Language and Domain Results
| # | Criterion | Status | Evidence/Notes |
| --- | --- | --- | --- |
| 1 | The Metadata table has a `Language` row and a `Domain` row, and neither is a placeholder | Pass | `Language` = en, `Domain` = it in Metadata. |
| 2 | `Language` is a BCP 47 code and `Domain` is a value from the registry's domain list | Pass | `en`; `it` is in the registry's domain table. |
| 3 | The content (prose and table cells) is written in the stated language | Pass | All prose and cells are English. Checked by the stand-in for S01, who reads English. |
| 4 | The register matches the one the registry gives for the artifact type | Pass | IT Executive English: plain objective-level prose with no implementation detail beyond what the scope needs. |
| 5 | Domain terms are the PO terms of the domain's dictionary, with no synonyms | Pass | No `DICT` exists for domain `it` and none is in the plan; the document uses standard Python and software terms consistently (for example `states_to_learn.csv`, `missing_states`, Doxygen). Recorded as a stand-in decision. |
| 6 | Metadata keys, section headings, IDs and statuses are in English | Pass | All structural vocabulary is English. |
| 7 | No translated twin (`<name>.<language>.md`) exists beside the document | Pass | `check-languages.sh` reports no twin. |
| 8 | A change of language or domain since the previous accepted version has a Version History row and was reviewed again | Pass | First version; no earlier accepted version. |
| 9 | A reviewer competent in the domain, and in the language, has confirmed that the domain terms are used correctly | Pass | The reviewer, AI as stand-in for S01, reads English and the software domain; no second language reviewer is named. S01 is the Product Owner and reads both; a person may challenge this in the run summary. |
| 10 | Abbreviations are spelled out on first use, in the stated language | Pass | Continuous integration (CI), Architecture Decision Record (ADR) and comma-separated values (CSV) are spelled out where first used in prose; file names and tool names are not abbreviations. |
## Overall Verdict
Go - The Business Case is complete against its checklist. Every Mandatory criterion of both checklists passes.
## Action Items
| Action | Owner | Due |
| --- | --- | --- |
| None | S01 | |
---
[BC-001]: ../../business-case.md
[QC-BC-001]: ../../../framework/qc/artifacts/qc-business-case.md
[QC-LANG-001]: ../../../framework/qc/artifacts/qc-language-domain.md
[b113e6e]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/025-us-states-game/commit/b113e6eacd12bb08045ecf6f7822837626a7b1f7
+68 -68
View File
@@ -1,68 +1,68 @@
# SQA Review Record
## Metadata
| Key | Value |
| --- | --- |
| ID | RC-002 |
| CrossReference | [SA-001], [QC-SA-001] |
## Version History
| Date | Status | Author | Reviewer | Change | Commit |
| --- | --- | --- | --- | --- | --- |
| 2026-10-13 | Proposed | Claude (AI) for S01 | AI as stand-in for S01 | Initial review record: Go | [b113e6e] |
---
## Artifact Under Review
- Instance reviewed: [SA-001]
- Checklist used: [QC-SA-001] and [QC-LANG-001]
- Scope: full review
- Language and domain: en / it
- Language reviewer: none (the reviewer reads English and knows the domain, as stand-in for S01)
- Mode: autonomous, not independent (the reviewer is `AI as stand-in for S01`; the author is the same AI)
## Checklist Results
| # | Criterion | Status | Evidence/Notes |
| --- | --- | --- | --- |
| 1 | Power/Interest grid is filled for every stakeholder, with no gaps or unclassified entries | Pass | S01, S02, S03 each have power, interest and quadrant. |
| 2 | Each stakeholder is assigned a unique, stable ID (e.g. S01-S11 style) reusable for RACI assignments in other artifacts | Pass | S01, S02, S03; used by the Business Case, plan and milestones. |
| 3 | Roles and organizational context are defined with explicit Power and Interest levels, not just narrative description | Pass | Role, organisation, power and interest in the summary table. |
| 4 | Communication needs (channel, frequency, deliverable type) are mapped to project phases or milestones | Pass | Communication table names milestone for each stakeholder. |
| 5 | Conflicting stakeholder interests are identified with documented mitigation or resolution strategies | Pass | Two conflicts, each with a mitigation. |
| 6 | Stakeholder concerns are explicitly traced to Business Case objectives | Pass | Business Goal Alignment table cites [BC-001] objectives. |
| 7 | Primary concerns are expressed in both business language and a recognized quality-attribute mapping (e.g. FURPS+) | Pass | Concerns table with FURPS+ attribute. |
| 8 | Document is understandable and navigable by non-technical stakeholders reviewing their own entry | Pass | One table row per stakeholder, plain wording. |
## Language and Domain Results
| # | Criterion | Status | Evidence/Notes |
| --- | --- | --- | --- |
| 1 | The Metadata table has a `Language` row and a `Domain` row, and neither is a placeholder | Pass | `Language` = en, `Domain` = it in Metadata. |
| 2 | `Language` is a BCP 47 code and `Domain` is a value from the registry's domain list | Pass | `en`; `it` is in the registry's domain table. |
| 3 | The content (prose and table cells) is written in the stated language | Pass | All prose and cells are English. Checked by the stand-in for S01, who reads English. |
| 4 | The register matches the one the registry gives for the artifact type | Pass | IT Professional English: concrete technical terms and checkable statements. |
| 5 | Domain terms are the PO terms of the domain's dictionary, with no synonyms | Pass | No `DICT` exists for domain `it` and none is in the plan; the document uses standard Python and software terms consistently (for example `states_to_learn.csv`, `missing_states`, Doxygen). Recorded as a stand-in decision. |
| 6 | Metadata keys, section headings, IDs and statuses are in English | Pass | All structural vocabulary is English. |
| 7 | No translated twin (`<name>.<language>.md`) exists beside the document | Pass | `check-languages.sh` reports no twin. |
| 8 | A change of language or domain since the previous accepted version has a Version History row and was reviewed again | Pass | First version; no earlier accepted version. |
| 9 | A reviewer competent in the domain, and in the language, has confirmed that the domain terms are used correctly | Pass | The reviewer, AI as stand-in for S01, reads English and the software domain; no second language reviewer is named. S01 is the Product Owner and reads both; a person may challenge this in the run summary. |
| 10 | Abbreviations are spelled out on first use, in the stated language | Pass | The only abbreviations are stakeholder IDs (S01 and so on), defined by the summary table, and FURPS+ (functionality, usability, reliability, performance, supportability plus), named in the method of the Purpose. |
## Overall Verdict
Go - The Stakeholder Analysis meets its checklist. Every Mandatory criterion of both checklists passes.
## Action Items
| Action | Owner | Due |
| --- | --- | --- |
| None | S01 | |
---
[SA-001]: ../../stakeholder-analysis.md
[QC-SA-001]: ../../../framework/qc/artifacts/qc-stakeholder-analysis.md
[QC-LANG-001]: ../../../framework/qc/artifacts/qc-language-domain.md
[b113e6e]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/025-us-states-game/commit/b113e6eacd12bb08045ecf6f7822837626a7b1f7
# SQA Review Record
## Metadata
| Key | Value |
| --- | --- |
| ID | RC-002 |
| CrossReference | [SA-001], [QC-SA-001] |
## Version History
| Date | Status | Author | Reviewer | Change | Commit |
| --- | --- | --- | --- | --- | --- |
| 2026-10-13 | Proposed | Claude (AI) for S01 | AI as stand-in for S01 | Initial review record: Go | [b113e6e] |
---
## Artifact Under Review
- Instance reviewed: [SA-001]
- Checklist used: [QC-SA-001] and [QC-LANG-001]
- Scope: full review
- Language and domain: en / it
- Language reviewer: none (the reviewer reads English and knows the domain, as stand-in for S01)
- Mode: autonomous, not independent (the reviewer is `AI as stand-in for S01`; the author is the same AI)
## Checklist Results
| # | Criterion | Status | Evidence/Notes |
| --- | --- | --- | --- |
| 1 | Power/Interest grid is filled for every stakeholder, with no gaps or unclassified entries | Pass | S01, S02, S03 each have power, interest and quadrant. |
| 2 | Each stakeholder is assigned a unique, stable ID (e.g. S01-S11 style) reusable for RACI assignments in other artifacts | Pass | S01, S02, S03; used by the Business Case, plan and milestones. |
| 3 | Roles and organizational context are defined with explicit Power and Interest levels, not just narrative description | Pass | Role, organisation, power and interest in the summary table. |
| 4 | Communication needs (channel, frequency, deliverable type) are mapped to project phases or milestones | Pass | Communication table names milestone for each stakeholder. |
| 5 | Conflicting stakeholder interests are identified with documented mitigation or resolution strategies | Pass | Two conflicts, each with a mitigation. |
| 6 | Stakeholder concerns are explicitly traced to Business Case objectives | Pass | Business Goal Alignment table cites [BC-001] objectives. |
| 7 | Primary concerns are expressed in both business language and a recognized quality-attribute mapping (e.g. FURPS+) | Pass | Concerns table with FURPS+ attribute. |
| 8 | Document is understandable and navigable by non-technical stakeholders reviewing their own entry | Pass | One table row per stakeholder, plain wording. |
## Language and Domain Results
| # | Criterion | Status | Evidence/Notes |
| --- | --- | --- | --- |
| 1 | The Metadata table has a `Language` row and a `Domain` row, and neither is a placeholder | Pass | `Language` = en, `Domain` = it in Metadata. |
| 2 | `Language` is a BCP 47 code and `Domain` is a value from the registry's domain list | Pass | `en`; `it` is in the registry's domain table. |
| 3 | The content (prose and table cells) is written in the stated language | Pass | All prose and cells are English. Checked by the stand-in for S01, who reads English. |
| 4 | The register matches the one the registry gives for the artifact type | Pass | IT Professional English: concrete technical terms and checkable statements. |
| 5 | Domain terms are the PO terms of the domain's dictionary, with no synonyms | Pass | No `DICT` exists for domain `it` and none is in the plan; the document uses standard Python and software terms consistently (for example `states_to_learn.csv`, `missing_states`, Doxygen). Recorded as a stand-in decision. |
| 6 | Metadata keys, section headings, IDs and statuses are in English | Pass | All structural vocabulary is English. |
| 7 | No translated twin (`<name>.<language>.md`) exists beside the document | Pass | `check-languages.sh` reports no twin. |
| 8 | A change of language or domain since the previous accepted version has a Version History row and was reviewed again | Pass | First version; no earlier accepted version. |
| 9 | A reviewer competent in the domain, and in the language, has confirmed that the domain terms are used correctly | Pass | The reviewer, AI as stand-in for S01, reads English and the software domain; no second language reviewer is named. S01 is the Product Owner and reads both; a person may challenge this in the run summary. |
| 10 | Abbreviations are spelled out on first use, in the stated language | Pass | The only abbreviations are stakeholder IDs (S01 and so on), defined by the summary table, and FURPS+ (functionality, usability, reliability, performance, supportability plus), named in the method of the Purpose. |
## Overall Verdict
Go - The Stakeholder Analysis meets its checklist. Every Mandatory criterion of both checklists passes.
## Action Items
| Action | Owner | Due |
| --- | --- | --- |
| None | S01 | |
---
[SA-001]: ../../stakeholder-analysis.md
[QC-SA-001]: ../../../framework/qc/artifacts/qc-stakeholder-analysis.md
[QC-LANG-001]: ../../../framework/qc/artifacts/qc-language-domain.md
[b113e6e]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/025-us-states-game/commit/b113e6eacd12bb08045ecf6f7822837626a7b1f7
+66 -66
View File
@@ -1,66 +1,66 @@
# SQA Review Record
## Metadata
| Key | Value |
| --- | --- |
| ID | RC-003 |
| CrossReference | [MIL-001], [QC-MIL-001] |
## Version History
| Date | Status | Author | Reviewer | Change | Commit |
| --- | --- | --- | --- | --- | --- |
| 2026-10-13 | Proposed | Claude (AI) for S01 | AI as stand-in for S01 | Initial review record: Go | [b113e6e] |
---
## Artifact Under Review
- Instance reviewed: [MIL-001]
- Checklist used: [QC-MIL-001] and [QC-LANG-001]
- Scope: full review
- Language and domain: en / it
- Language reviewer: none (the reviewer reads English and knows the domain, as stand-in for S01)
- Mode: autonomous, not independent (the reviewer is `AI as stand-in for S01`; the author is the same AI)
## Checklist Results
| # | Criterion | Status | Evidence/Notes |
| --- | --- | --- | --- |
| 1 | A concrete deliverable is defined for every gate | Pass | Deliverable section: repository tooling, layout, assets, CI and surface |
| 2 | Explicit Go/No-Go criteria are stated for each gate | Pass | Go / No-Go table with objectively checkable criteria. |
| 3 | Dependencies on other milestones are explicitly mapped | Pass | First milestone; the table says None. |
| 4 | Each milestone is traceable to a Business Case objective or KPI | Pass | Traceability table cites [BC-001] objectives and success criteria. |
| 5 | Milestone owner and approving reviewer are identified | Pass | Ownership table: owner S01, approving reviewer S01 (stand-in in autonomous mode). |
| 6 | Milestone has a defined target date consistent with project constraints | Pass | 2026-10-13, consistent with the one-working-day duration constraint of [BC-001]. |
## Language and Domain Results
| # | Criterion | Status | Evidence/Notes |
| --- | --- | --- | --- |
| 1 | The Metadata table has a `Language` row and a `Domain` row, and neither is a placeholder | Pass | `Language` = en, `Domain` = it in Metadata. |
| 2 | `Language` is a BCP 47 code and `Domain` is a value from the registry's domain list | Pass | `en`; `it` is in the registry's domain table. |
| 3 | The content (prose and table cells) is written in the stated language | Pass | All prose and cells are English. Checked by the stand-in for S01, who reads English. |
| 4 | The register matches the one the registry gives for the artifact type | Pass | IT Executive English: plain objective-level prose with no implementation detail beyond what the scope needs. |
| 5 | Domain terms are the PO terms of the domain's dictionary, with no synonyms | Pass | No `DICT` exists for domain `it` and none is in the plan; the document uses standard Python and software terms consistently (for example `states_to_learn.csv`, `missing_states`, Doxygen). Recorded as a stand-in decision. |
| 6 | Metadata keys, section headings, IDs and statuses are in English | Pass | All structural vocabulary is English. |
| 7 | No translated twin (`<name>.<language>.md`) exists beside the document | Pass | `check-languages.sh` reports no twin. |
| 8 | A change of language or domain since the previous accepted version has a Version History row and was reviewed again | Pass | First version; no earlier accepted version. |
| 9 | A reviewer competent in the domain, and in the language, has confirmed that the domain terms are used correctly | Pass | The reviewer, AI as stand-in for S01, reads English and the software domain; no second language reviewer is named. S01 is the Product Owner and reads both; a person may challenge this in the run summary. |
| 10 | Abbreviations are spelled out on first use, in the stated language | Pass | CI and ADR are spelled out on first use in the milestone documents; Doxygen, pytest and README are tool or file names. |
## Overall Verdict
Go - The milestone meets its checklist. Every Mandatory criterion of both checklists passes.
## Action Items
| Action | Owner | Due |
| --- | --- | --- |
| None | S01 | |
---
[MIL-001]: ../../milestones/mil-001-baseline-setup.md
[QC-MIL-001]: ../../../framework/qc/artifacts/qc-milestones-gateways.md
[QC-LANG-001]: ../../../framework/qc/artifacts/qc-language-domain.md
[b113e6e]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/025-us-states-game/commit/b113e6eacd12bb08045ecf6f7822837626a7b1f7
# SQA Review Record
## Metadata
| Key | Value |
| --- | --- |
| ID | RC-003 |
| CrossReference | [MIL-001], [QC-MIL-001] |
## Version History
| Date | Status | Author | Reviewer | Change | Commit |
| --- | --- | --- | --- | --- | --- |
| 2026-10-13 | Proposed | Claude (AI) for S01 | AI as stand-in for S01 | Initial review record: Go | [b113e6e] |
---
## Artifact Under Review
- Instance reviewed: [MIL-001]
- Checklist used: [QC-MIL-001] and [QC-LANG-001]
- Scope: full review
- Language and domain: en / it
- Language reviewer: none (the reviewer reads English and knows the domain, as stand-in for S01)
- Mode: autonomous, not independent (the reviewer is `AI as stand-in for S01`; the author is the same AI)
## Checklist Results
| # | Criterion | Status | Evidence/Notes |
| --- | --- | --- | --- |
| 1 | A concrete deliverable is defined for every gate | Pass | Deliverable section: repository tooling, layout, assets, CI and surface |
| 2 | Explicit Go/No-Go criteria are stated for each gate | Pass | Go / No-Go table with objectively checkable criteria. |
| 3 | Dependencies on other milestones are explicitly mapped | Pass | First milestone; the table says None. |
| 4 | Each milestone is traceable to a Business Case objective or KPI | Pass | Traceability table cites [BC-001] objectives and success criteria. |
| 5 | Milestone owner and approving reviewer are identified | Pass | Ownership table: owner S01, approving reviewer S01 (stand-in in autonomous mode). |
| 6 | Milestone has a defined target date consistent with project constraints | Pass | 2026-10-13, consistent with the one-working-day duration constraint of [BC-001]. |
## Language and Domain Results
| # | Criterion | Status | Evidence/Notes |
| --- | --- | --- | --- |
| 1 | The Metadata table has a `Language` row and a `Domain` row, and neither is a placeholder | Pass | `Language` = en, `Domain` = it in Metadata. |
| 2 | `Language` is a BCP 47 code and `Domain` is a value from the registry's domain list | Pass | `en`; `it` is in the registry's domain table. |
| 3 | The content (prose and table cells) is written in the stated language | Pass | All prose and cells are English. Checked by the stand-in for S01, who reads English. |
| 4 | The register matches the one the registry gives for the artifact type | Pass | IT Executive English: plain objective-level prose with no implementation detail beyond what the scope needs. |
| 5 | Domain terms are the PO terms of the domain's dictionary, with no synonyms | Pass | No `DICT` exists for domain `it` and none is in the plan; the document uses standard Python and software terms consistently (for example `states_to_learn.csv`, `missing_states`, Doxygen). Recorded as a stand-in decision. |
| 6 | Metadata keys, section headings, IDs and statuses are in English | Pass | All structural vocabulary is English. |
| 7 | No translated twin (`<name>.<language>.md`) exists beside the document | Pass | `check-languages.sh` reports no twin. |
| 8 | A change of language or domain since the previous accepted version has a Version History row and was reviewed again | Pass | First version; no earlier accepted version. |
| 9 | A reviewer competent in the domain, and in the language, has confirmed that the domain terms are used correctly | Pass | The reviewer, AI as stand-in for S01, reads English and the software domain; no second language reviewer is named. S01 is the Product Owner and reads both; a person may challenge this in the run summary. |
| 10 | Abbreviations are spelled out on first use, in the stated language | Pass | CI and ADR are spelled out on first use in the milestone documents; Doxygen, pytest and README are tool or file names. |
## Overall Verdict
Go - The milestone meets its checklist. Every Mandatory criterion of both checklists passes.
## Action Items
| Action | Owner | Due |
| --- | --- | --- |
| None | S01 | |
---
[MIL-001]: ../../milestones/mil-001-baseline-setup.md
[QC-MIL-001]: ../../../framework/qc/artifacts/qc-milestones-gateways.md
[QC-LANG-001]: ../../../framework/qc/artifacts/qc-language-domain.md
[b113e6e]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/025-us-states-game/commit/b113e6eacd12bb08045ecf6f7822837626a7b1f7
+66 -66
View File
@@ -1,66 +1,66 @@
# SQA Review Record
## Metadata
| Key | Value |
| --- | --- |
| ID | RC-004 |
| CrossReference | [MIL-002], [QC-MIL-001] |
## Version History
| Date | Status | Author | Reviewer | Change | Commit |
| --- | --- | --- | --- | --- | --- |
| 2026-10-13 | Proposed | Claude (AI) for S01 | AI as stand-in for S01 | Initial review record: Go | [b113e6e] |
---
## Artifact Under Review
- Instance reviewed: [MIL-002]
- Checklist used: [QC-MIL-001] and [QC-LANG-001]
- Scope: full review
- Language and domain: en / it
- Language reviewer: none (the reviewer reads English and knows the domain, as stand-in for S01)
- Mode: autonomous, not independent (the reviewer is `AI as stand-in for S01`; the author is the same AI)
## Checklist Results
| # | Criterion | Status | Evidence/Notes |
| --- | --- | --- | --- |
| 1 | A concrete deliverable is defined for every gate | Pass | Deliverable section: display-free game logic with tests and an ADR |
| 2 | Explicit Go/No-Go criteria are stated for each gate | Pass | Go / No-Go table with objectively checkable criteria. |
| 3 | Dependencies on other milestones are explicitly mapped | Pass | Depends on MIL-001 with a reason. |
| 4 | Each milestone is traceable to a Business Case objective or KPI | Pass | Traceability table cites [BC-001] objectives and success criteria. |
| 5 | Milestone owner and approving reviewer are identified | Pass | Ownership table: owner S01, approving reviewer S01 (stand-in in autonomous mode). |
| 6 | Milestone has a defined target date consistent with project constraints | Pass | 2026-10-13, consistent with the one-working-day duration constraint of [BC-001]. |
## Language and Domain Results
| # | Criterion | Status | Evidence/Notes |
| --- | --- | --- | --- |
| 1 | The Metadata table has a `Language` row and a `Domain` row, and neither is a placeholder | Pass | `Language` = en, `Domain` = it in Metadata. |
| 2 | `Language` is a BCP 47 code and `Domain` is a value from the registry's domain list | Pass | `en`; `it` is in the registry's domain table. |
| 3 | The content (prose and table cells) is written in the stated language | Pass | All prose and cells are English. Checked by the stand-in for S01, who reads English. |
| 4 | The register matches the one the registry gives for the artifact type | Pass | IT Executive English: plain objective-level prose with no implementation detail beyond what the scope needs. |
| 5 | Domain terms are the PO terms of the domain's dictionary, with no synonyms | Pass | No `DICT` exists for domain `it` and none is in the plan; the document uses standard Python and software terms consistently (for example `states_to_learn.csv`, `missing_states`, Doxygen). Recorded as a stand-in decision. |
| 6 | Metadata keys, section headings, IDs and statuses are in English | Pass | All structural vocabulary is English. |
| 7 | No translated twin (`<name>.<language>.md`) exists beside the document | Pass | `check-languages.sh` reports no twin. |
| 8 | A change of language or domain since the previous accepted version has a Version History row and was reviewed again | Pass | First version; no earlier accepted version. |
| 9 | A reviewer competent in the domain, and in the language, has confirmed that the domain terms are used correctly | Pass | The reviewer, AI as stand-in for S01, reads English and the software domain; no second language reviewer is named. S01 is the Product Owner and reads both; a person may challenge this in the run summary. |
| 10 | Abbreviations are spelled out on first use, in the stated language | Pass | CI and ADR are spelled out on first use in the milestone documents; Doxygen, pytest and README are tool or file names. |
## Overall Verdict
Go - The milestone meets its checklist. Every Mandatory criterion of both checklists passes.
## Action Items
| Action | Owner | Due |
| --- | --- | --- |
| None | S01 | |
---
[MIL-002]: ../../milestones/mil-002-game-core.md
[QC-MIL-001]: ../../../framework/qc/artifacts/qc-milestones-gateways.md
[QC-LANG-001]: ../../../framework/qc/artifacts/qc-language-domain.md
[b113e6e]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/025-us-states-game/commit/b113e6eacd12bb08045ecf6f7822837626a7b1f7
# SQA Review Record
## Metadata
| Key | Value |
| --- | --- |
| ID | RC-004 |
| CrossReference | [MIL-002], [QC-MIL-001] |
## Version History
| Date | Status | Author | Reviewer | Change | Commit |
| --- | --- | --- | --- | --- | --- |
| 2026-10-13 | Proposed | Claude (AI) for S01 | AI as stand-in for S01 | Initial review record: Go | [b113e6e] |
---
## Artifact Under Review
- Instance reviewed: [MIL-002]
- Checklist used: [QC-MIL-001] and [QC-LANG-001]
- Scope: full review
- Language and domain: en / it
- Language reviewer: none (the reviewer reads English and knows the domain, as stand-in for S01)
- Mode: autonomous, not independent (the reviewer is `AI as stand-in for S01`; the author is the same AI)
## Checklist Results
| # | Criterion | Status | Evidence/Notes |
| --- | --- | --- | --- |
| 1 | A concrete deliverable is defined for every gate | Pass | Deliverable section: display-free game logic with tests and an ADR |
| 2 | Explicit Go/No-Go criteria are stated for each gate | Pass | Go / No-Go table with objectively checkable criteria. |
| 3 | Dependencies on other milestones are explicitly mapped | Pass | Depends on MIL-001 with a reason. |
| 4 | Each milestone is traceable to a Business Case objective or KPI | Pass | Traceability table cites [BC-001] objectives and success criteria. |
| 5 | Milestone owner and approving reviewer are identified | Pass | Ownership table: owner S01, approving reviewer S01 (stand-in in autonomous mode). |
| 6 | Milestone has a defined target date consistent with project constraints | Pass | 2026-10-13, consistent with the one-working-day duration constraint of [BC-001]. |
## Language and Domain Results
| # | Criterion | Status | Evidence/Notes |
| --- | --- | --- | --- |
| 1 | The Metadata table has a `Language` row and a `Domain` row, and neither is a placeholder | Pass | `Language` = en, `Domain` = it in Metadata. |
| 2 | `Language` is a BCP 47 code and `Domain` is a value from the registry's domain list | Pass | `en`; `it` is in the registry's domain table. |
| 3 | The content (prose and table cells) is written in the stated language | Pass | All prose and cells are English. Checked by the stand-in for S01, who reads English. |
| 4 | The register matches the one the registry gives for the artifact type | Pass | IT Executive English: plain objective-level prose with no implementation detail beyond what the scope needs. |
| 5 | Domain terms are the PO terms of the domain's dictionary, with no synonyms | Pass | No `DICT` exists for domain `it` and none is in the plan; the document uses standard Python and software terms consistently (for example `states_to_learn.csv`, `missing_states`, Doxygen). Recorded as a stand-in decision. |
| 6 | Metadata keys, section headings, IDs and statuses are in English | Pass | All structural vocabulary is English. |
| 7 | No translated twin (`<name>.<language>.md`) exists beside the document | Pass | `check-languages.sh` reports no twin. |
| 8 | A change of language or domain since the previous accepted version has a Version History row and was reviewed again | Pass | First version; no earlier accepted version. |
| 9 | A reviewer competent in the domain, and in the language, has confirmed that the domain terms are used correctly | Pass | The reviewer, AI as stand-in for S01, reads English and the software domain; no second language reviewer is named. S01 is the Product Owner and reads both; a person may challenge this in the run summary. |
| 10 | Abbreviations are spelled out on first use, in the stated language | Pass | CI and ADR are spelled out on first use in the milestone documents; Doxygen, pytest and README are tool or file names. |
## Overall Verdict
Go - The milestone meets its checklist. Every Mandatory criterion of both checklists passes.
## Action Items
| Action | Owner | Due |
| --- | --- | --- |
| None | S01 | |
---
[MIL-002]: ../../milestones/mil-002-game-core.md
[QC-MIL-001]: ../../../framework/qc/artifacts/qc-milestones-gateways.md
[QC-LANG-001]: ../../../framework/qc/artifacts/qc-language-domain.md
[b113e6e]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/025-us-states-game/commit/b113e6eacd12bb08045ecf6f7822837626a7b1f7
+66 -66
View File
@@ -1,66 +1,66 @@
# SQA Review Record
## Metadata
| Key | Value |
| --- | --- |
| ID | RC-005 |
| CrossReference | [MIL-003], [QC-MIL-001] |
## Version History
| Date | Status | Author | Reviewer | Change | Commit |
| --- | --- | --- | --- | --- | --- |
| 2026-10-13 | Proposed | Claude (AI) for S01 | AI as stand-in for S01 | Initial review record: Go | [b113e6e] |
---
## Artifact Under Review
- Instance reviewed: [MIL-003]
- Checklist used: [QC-MIL-001] and [QC-LANG-001]
- Scope: full review
- Language and domain: en / it
- Language reviewer: none (the reviewer reads English and knows the domain, as stand-in for S01)
- Mode: autonomous, not independent (the reviewer is `AI as stand-in for S01`; the author is the same AI)
## Checklist Results
| # | Criterion | Status | Evidence/Notes |
| --- | --- | --- | --- |
| 1 | A concrete deliverable is defined for every gate | Pass | Deliverable section: runnable game on the tested core |
| 2 | Explicit Go/No-Go criteria are stated for each gate | Pass | Go / No-Go table with objectively checkable criteria. |
| 3 | Dependencies on other milestones are explicitly mapped | Pass | Depends on MIL-002 with a reason. |
| 4 | Each milestone is traceable to a Business Case objective or KPI | Pass | Traceability table cites [BC-001] objectives and success criteria. |
| 5 | Milestone owner and approving reviewer are identified | Pass | Ownership table: owner S01, approving reviewer S01 (stand-in in autonomous mode). |
| 6 | Milestone has a defined target date consistent with project constraints | Pass | 2026-10-13, consistent with the one-working-day duration constraint of [BC-001]. |
## Language and Domain Results
| # | Criterion | Status | Evidence/Notes |
| --- | --- | --- | --- |
| 1 | The Metadata table has a `Language` row and a `Domain` row, and neither is a placeholder | Pass | `Language` = en, `Domain` = it in Metadata. |
| 2 | `Language` is a BCP 47 code and `Domain` is a value from the registry's domain list | Pass | `en`; `it` is in the registry's domain table. |
| 3 | The content (prose and table cells) is written in the stated language | Pass | All prose and cells are English. Checked by the stand-in for S01, who reads English. |
| 4 | The register matches the one the registry gives for the artifact type | Pass | IT Executive English: plain objective-level prose with no implementation detail beyond what the scope needs. |
| 5 | Domain terms are the PO terms of the domain's dictionary, with no synonyms | Pass | No `DICT` exists for domain `it` and none is in the plan; the document uses standard Python and software terms consistently (for example `states_to_learn.csv`, `missing_states`, Doxygen). Recorded as a stand-in decision. |
| 6 | Metadata keys, section headings, IDs and statuses are in English | Pass | All structural vocabulary is English. |
| 7 | No translated twin (`<name>.<language>.md`) exists beside the document | Pass | `check-languages.sh` reports no twin. |
| 8 | A change of language or domain since the previous accepted version has a Version History row and was reviewed again | Pass | First version; no earlier accepted version. |
| 9 | A reviewer competent in the domain, and in the language, has confirmed that the domain terms are used correctly | Pass | The reviewer, AI as stand-in for S01, reads English and the software domain; no second language reviewer is named. S01 is the Product Owner and reads both; a person may challenge this in the run summary. |
| 10 | Abbreviations are spelled out on first use, in the stated language | Pass | CI and ADR are spelled out on first use in the milestone documents; Doxygen, pytest and README are tool or file names. |
## Overall Verdict
Go - The milestone meets its checklist. Every Mandatory criterion of both checklists passes.
## Action Items
| Action | Owner | Due |
| --- | --- | --- |
| None | S01 | |
---
[MIL-003]: ../../milestones/mil-003-turtle-game.md
[QC-MIL-001]: ../../../framework/qc/artifacts/qc-milestones-gateways.md
[QC-LANG-001]: ../../../framework/qc/artifacts/qc-language-domain.md
[b113e6e]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/025-us-states-game/commit/b113e6eacd12bb08045ecf6f7822837626a7b1f7
# SQA Review Record
## Metadata
| Key | Value |
| --- | --- |
| ID | RC-005 |
| CrossReference | [MIL-003], [QC-MIL-001] |
## Version History
| Date | Status | Author | Reviewer | Change | Commit |
| --- | --- | --- | --- | --- | --- |
| 2026-10-13 | Proposed | Claude (AI) for S01 | AI as stand-in for S01 | Initial review record: Go | [b113e6e] |
---
## Artifact Under Review
- Instance reviewed: [MIL-003]
- Checklist used: [QC-MIL-001] and [QC-LANG-001]
- Scope: full review
- Language and domain: en / it
- Language reviewer: none (the reviewer reads English and knows the domain, as stand-in for S01)
- Mode: autonomous, not independent (the reviewer is `AI as stand-in for S01`; the author is the same AI)
## Checklist Results
| # | Criterion | Status | Evidence/Notes |
| --- | --- | --- | --- |
| 1 | A concrete deliverable is defined for every gate | Pass | Deliverable section: runnable game on the tested core |
| 2 | Explicit Go/No-Go criteria are stated for each gate | Pass | Go / No-Go table with objectively checkable criteria. |
| 3 | Dependencies on other milestones are explicitly mapped | Pass | Depends on MIL-002 with a reason. |
| 4 | Each milestone is traceable to a Business Case objective or KPI | Pass | Traceability table cites [BC-001] objectives and success criteria. |
| 5 | Milestone owner and approving reviewer are identified | Pass | Ownership table: owner S01, approving reviewer S01 (stand-in in autonomous mode). |
| 6 | Milestone has a defined target date consistent with project constraints | Pass | 2026-10-13, consistent with the one-working-day duration constraint of [BC-001]. |
## Language and Domain Results
| # | Criterion | Status | Evidence/Notes |
| --- | --- | --- | --- |
| 1 | The Metadata table has a `Language` row and a `Domain` row, and neither is a placeholder | Pass | `Language` = en, `Domain` = it in Metadata. |
| 2 | `Language` is a BCP 47 code and `Domain` is a value from the registry's domain list | Pass | `en`; `it` is in the registry's domain table. |
| 3 | The content (prose and table cells) is written in the stated language | Pass | All prose and cells are English. Checked by the stand-in for S01, who reads English. |
| 4 | The register matches the one the registry gives for the artifact type | Pass | IT Executive English: plain objective-level prose with no implementation detail beyond what the scope needs. |
| 5 | Domain terms are the PO terms of the domain's dictionary, with no synonyms | Pass | No `DICT` exists for domain `it` and none is in the plan; the document uses standard Python and software terms consistently (for example `states_to_learn.csv`, `missing_states`, Doxygen). Recorded as a stand-in decision. |
| 6 | Metadata keys, section headings, IDs and statuses are in English | Pass | All structural vocabulary is English. |
| 7 | No translated twin (`<name>.<language>.md`) exists beside the document | Pass | `check-languages.sh` reports no twin. |
| 8 | A change of language or domain since the previous accepted version has a Version History row and was reviewed again | Pass | First version; no earlier accepted version. |
| 9 | A reviewer competent in the domain, and in the language, has confirmed that the domain terms are used correctly | Pass | The reviewer, AI as stand-in for S01, reads English and the software domain; no second language reviewer is named. S01 is the Product Owner and reads both; a person may challenge this in the run summary. |
| 10 | Abbreviations are spelled out on first use, in the stated language | Pass | CI and ADR are spelled out on first use in the milestone documents; Doxygen, pytest and README are tool or file names. |
## Overall Verdict
Go - The milestone meets its checklist. Every Mandatory criterion of both checklists passes.
## Action Items
| Action | Owner | Due |
| --- | --- | --- |
| None | S01 | |
---
[MIL-003]: ../../milestones/mil-003-turtle-game.md
[QC-MIL-001]: ../../../framework/qc/artifacts/qc-milestones-gateways.md
[QC-LANG-001]: ../../../framework/qc/artifacts/qc-language-domain.md
[b113e6e]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/025-us-states-game/commit/b113e6eacd12bb08045ecf6f7822837626a7b1f7
+66 -66
View File
@@ -1,66 +1,66 @@
# SQA Review Record
## Metadata
| Key | Value |
| --- | --- |
| ID | RC-006 |
| CrossReference | [MIL-004], [QC-MIL-001] |
## Version History
| Date | Status | Author | Reviewer | Change | Commit |
| --- | --- | --- | --- | --- | --- |
| 2026-10-13 | Proposed | Claude (AI) for S01 | AI as stand-in for S01 | Initial review record: Go | [b113e6e] |
---
## Artifact Under Review
- Instance reviewed: [MIL-004]
- Checklist used: [QC-MIL-001] and [QC-LANG-001]
- Scope: full review
- Language and domain: en / it
- Language reviewer: none (the reviewer reads English and knows the domain, as stand-in for S01)
- Mode: autonomous, not independent (the reviewer is `AI as stand-in for S01`; the author is the same AI)
## Checklist Results
| # | Criterion | Status | Evidence/Notes |
| --- | --- | --- | --- |
| 1 | A concrete deliverable is defined for every gate | Pass | Deliverable section: README, Doxygen, screenshots and a three-language wiki |
| 2 | Explicit Go/No-Go criteria are stated for each gate | Pass | Go / No-Go table with objectively checkable criteria. |
| 3 | Dependencies on other milestones are explicitly mapped | Pass | Depends on MIL-003 with a reason. |
| 4 | Each milestone is traceable to a Business Case objective or KPI | Pass | Traceability table cites [BC-001] objectives and success criteria. |
| 5 | Milestone owner and approving reviewer are identified | Pass | Ownership table: owner S01, approving reviewer S01 (stand-in in autonomous mode). |
| 6 | Milestone has a defined target date consistent with project constraints | Pass | 2026-10-13, consistent with the one-working-day duration constraint of [BC-001]. |
## Language and Domain Results
| # | Criterion | Status | Evidence/Notes |
| --- | --- | --- | --- |
| 1 | The Metadata table has a `Language` row and a `Domain` row, and neither is a placeholder | Pass | `Language` = en, `Domain` = it in Metadata. |
| 2 | `Language` is a BCP 47 code and `Domain` is a value from the registry's domain list | Pass | `en`; `it` is in the registry's domain table. |
| 3 | The content (prose and table cells) is written in the stated language | Pass | All prose and cells are English. Checked by the stand-in for S01, who reads English. |
| 4 | The register matches the one the registry gives for the artifact type | Pass | IT Executive English: plain objective-level prose with no implementation detail beyond what the scope needs. |
| 5 | Domain terms are the PO terms of the domain's dictionary, with no synonyms | Pass | No `DICT` exists for domain `it` and none is in the plan; the document uses standard Python and software terms consistently (for example `states_to_learn.csv`, `missing_states`, Doxygen). Recorded as a stand-in decision. |
| 6 | Metadata keys, section headings, IDs and statuses are in English | Pass | All structural vocabulary is English. |
| 7 | No translated twin (`<name>.<language>.md`) exists beside the document | Pass | `check-languages.sh` reports no twin. |
| 8 | A change of language or domain since the previous accepted version has a Version History row and was reviewed again | Pass | First version; no earlier accepted version. |
| 9 | A reviewer competent in the domain, and in the language, has confirmed that the domain terms are used correctly | Pass | The reviewer, AI as stand-in for S01, reads English and the software domain; no second language reviewer is named. S01 is the Product Owner and reads both; a person may challenge this in the run summary. |
| 10 | Abbreviations are spelled out on first use, in the stated language | Pass | CI and ADR are spelled out on first use in the milestone documents; Doxygen, pytest and README are tool or file names. |
## Overall Verdict
Go - The milestone meets its checklist. Every Mandatory criterion of both checklists passes.
## Action Items
| Action | Owner | Due |
| --- | --- | --- |
| None | S01 | |
---
[MIL-004]: ../../milestones/mil-004-docs-release.md
[QC-MIL-001]: ../../../framework/qc/artifacts/qc-milestones-gateways.md
[QC-LANG-001]: ../../../framework/qc/artifacts/qc-language-domain.md
[b113e6e]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/025-us-states-game/commit/b113e6eacd12bb08045ecf6f7822837626a7b1f7
# SQA Review Record
## Metadata
| Key | Value |
| --- | --- |
| ID | RC-006 |
| CrossReference | [MIL-004], [QC-MIL-001] |
## Version History
| Date | Status | Author | Reviewer | Change | Commit |
| --- | --- | --- | --- | --- | --- |
| 2026-10-13 | Proposed | Claude (AI) for S01 | AI as stand-in for S01 | Initial review record: Go | [b113e6e] |
---
## Artifact Under Review
- Instance reviewed: [MIL-004]
- Checklist used: [QC-MIL-001] and [QC-LANG-001]
- Scope: full review
- Language and domain: en / it
- Language reviewer: none (the reviewer reads English and knows the domain, as stand-in for S01)
- Mode: autonomous, not independent (the reviewer is `AI as stand-in for S01`; the author is the same AI)
## Checklist Results
| # | Criterion | Status | Evidence/Notes |
| --- | --- | --- | --- |
| 1 | A concrete deliverable is defined for every gate | Pass | Deliverable section: README, Doxygen, screenshots and a three-language wiki |
| 2 | Explicit Go/No-Go criteria are stated for each gate | Pass | Go / No-Go table with objectively checkable criteria. |
| 3 | Dependencies on other milestones are explicitly mapped | Pass | Depends on MIL-003 with a reason. |
| 4 | Each milestone is traceable to a Business Case objective or KPI | Pass | Traceability table cites [BC-001] objectives and success criteria. |
| 5 | Milestone owner and approving reviewer are identified | Pass | Ownership table: owner S01, approving reviewer S01 (stand-in in autonomous mode). |
| 6 | Milestone has a defined target date consistent with project constraints | Pass | 2026-10-13, consistent with the one-working-day duration constraint of [BC-001]. |
## Language and Domain Results
| # | Criterion | Status | Evidence/Notes |
| --- | --- | --- | --- |
| 1 | The Metadata table has a `Language` row and a `Domain` row, and neither is a placeholder | Pass | `Language` = en, `Domain` = it in Metadata. |
| 2 | `Language` is a BCP 47 code and `Domain` is a value from the registry's domain list | Pass | `en`; `it` is in the registry's domain table. |
| 3 | The content (prose and table cells) is written in the stated language | Pass | All prose and cells are English. Checked by the stand-in for S01, who reads English. |
| 4 | The register matches the one the registry gives for the artifact type | Pass | IT Executive English: plain objective-level prose with no implementation detail beyond what the scope needs. |
| 5 | Domain terms are the PO terms of the domain's dictionary, with no synonyms | Pass | No `DICT` exists for domain `it` and none is in the plan; the document uses standard Python and software terms consistently (for example `states_to_learn.csv`, `missing_states`, Doxygen). Recorded as a stand-in decision. |
| 6 | Metadata keys, section headings, IDs and statuses are in English | Pass | All structural vocabulary is English. |
| 7 | No translated twin (`<name>.<language>.md`) exists beside the document | Pass | `check-languages.sh` reports no twin. |
| 8 | A change of language or domain since the previous accepted version has a Version History row and was reviewed again | Pass | First version; no earlier accepted version. |
| 9 | A reviewer competent in the domain, and in the language, has confirmed that the domain terms are used correctly | Pass | The reviewer, AI as stand-in for S01, reads English and the software domain; no second language reviewer is named. S01 is the Product Owner and reads both; a person may challenge this in the run summary. |
| 10 | Abbreviations are spelled out on first use, in the stated language | Pass | CI and ADR are spelled out on first use in the milestone documents; Doxygen, pytest and README are tool or file names. |
## Overall Verdict
Go - The milestone meets its checklist. Every Mandatory criterion of both checklists passes.
## Action Items
| Action | Owner | Due |
| --- | --- | --- |
| None | S01 | |
---
[MIL-004]: ../../milestones/mil-004-docs-release.md
[QC-MIL-001]: ../../../framework/qc/artifacts/qc-milestones-gateways.md
[QC-LANG-001]: ../../../framework/qc/artifacts/qc-language-domain.md
[b113e6e]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/025-us-states-game/commit/b113e6eacd12bb08045ecf6f7822837626a7b1f7
+81
View File
@@ -0,0 +1,81 @@
# SQA Review Record
## Metadata
| Key | Value |
| --- | --- |
| ID | RC-007 |
| CrossReference | [QC-PY-001], [QC-YML-001] |
## Version History
| Date | Status | Author | Reviewer | Change | Commit |
| --- | --- | --- | --- | --- | --- |
| 2026-10-13 | Proposed | Claude (AI) for S01 | AI as stand-in for S01 | Initial review record: Go | pending |
---
## Artifact Under Review
- Instance reviewed: source and workflow files delivered by MIL-001 (branch mil-001-baseline-setup)
- Checklist used: [QC-PY-001], [QC-YML-001]
- Scope: full review
- Language and domain: n/a (technical type)
- Language reviewer: none
- Mode: autonomous, not independent (the reviewer is `AI as stand-in for S01`; the author is the same AI)
## Checklist Results
### QC-PY-001
| # | Criterion | Status | Evidence/Notes |
| --- | --- | --- | --- |
| 1 | Packages, modules, functions, variables, classes and constants follow PEP 8 casing (`snake_case`, `PascalCase`, `UPPER_SNAKE`) (Mandatory) | Pass | Constants are UPPER_SNAKE, functions snake_case; ruff rule set N passes. |
| 2 | Names state purpose in the domain's language; no unexplained abbreviations, no single-letter names outside tiny scopes (Mandatory) | Pass | Names state purpose (STATES_TO_LEARN_FILENAME, NUMBER_OF_STATES). |
| 3 | Code is produced by the project's formatter and passes its linter with no unexplained suppressions (Mandatory) | Pass | `ruff format` leaves files unchanged and `ruff check` passes with no suppressions; configured in pyproject.toml. |
| 4 | Every function and method signature is type-annotated, including `-> None` (Mandatory) | Pass | Both test functions are annotated `-> None`; `mypy --strict` passes. |
| 5 | No bare `except:`, no swallowed exceptions; specific exceptions are raised and the cause is kept (`raise ... from`) (Mandatory) | N-A | No exception handling in this milestone's code. |
| 6 | No mutable default arguments and no shadowed builtins (Mandatory) | Pass | No function arguments with defaults; no builtin shadowed. |
| 7 | Files, locks and connections are managed with context managers (Mandatory) | Pass | Tests read the CSV with `Path.read_text`, which closes the file. |
| 8 | Public modules, classes and functions have docstrings that say what, not how (Optional) | Pass | Module docstrings and `##` Doxygen comments on every constant. |
| 9 | Logging uses `logging`, not `print`; no secrets or personal data in log output (Mandatory) | N-A | No logging or output in this milestone's code. |
| 10 | Classes and operations trace to the Design Class Diagram they implement; deviations are recorded (Mandatory) | N-A | No classes or operations; no Design Class Diagram exists for constants. |
| 11 | Tests exist for new behaviour, are named for the behaviour, and do not depend on order or the network (Mandatory) | Pass | tests/test_constants.py: two tests named for the behaviour; no order or network dependence. |
| 12 | Type checker runs in strict mode without errors; `Any` is justified in a comment (Optional) | Pass | `python -m mypy` strict mode reports no issues. |
| 13 | Dependencies are declared and pinned in the project's dependency file, none unused (Optional) | Pass | No runtime dependencies; dev extra lists pytest, ruff, mypy and yamllint with lower bounds. |
| 14 | Each piece of knowledge (a business rule, constant, format, validation or query) is defined in one place; code is merged only where it expresses the same knowledge, not where it merely looks alike (Mandatory) | Pass | Each path, file name and limit is defined once in constants.py. |
| 15 | Imports point inward: business-rule modules import no framework, database, UI or delivery-mechanism code, and there are no import cycles (Mandatory) | Pass | The package has no imports of UI or framework code. |
| 16 | SOLID holds: a class or module has one reason to change; new behaviour is added by extension, not by editing a type test in several places; subclasses honour the contract of their base; protocols are narrow; high-level code depends on protocols or abstract types and receives its implementations (Mandatory) | Pass | One module with one reason to change; no classes. |
### QC-YML-001
| # | Criterion | Status | Evidence/Notes |
| --- | --- | --- | --- |
| 1 | The file parses with a safe YAML loader and has no duplicate keys in any mapping (Mandatory) | Pass | yamllint (PyYAML safe loader) parses the workflow and reports no duplicate keys. |
| 2 | Indentation is 2 spaces everywhere, never tabs; lines end with LF; the file ends with one newline and has no trailing spaces (Mandatory) | Pass | 2-space indentation, LF endings enforced by .gitattributes, yamllint default rules pass. |
| 3 | Passes `yamllint` (or the project's YAML linter) with its configuration committed next to the code and no unexplained `disable` comments (Mandatory) | Pass | `yamllint .gitea .yamllint` passes with the committed .yamllint, no disable comments. |
| 4 | A scalar that YAML would coerce to another type is quoted: `yes`, `no`, `on`, `off`, `null`, `~`, numbers with a leading zero, versions such as `1.10`, and values that contain `: ` or ` #` (Mandatory) | Pass | `python-version: "3.13"` is quoted; `on` is allowed by the yamllint truthy rule for workflows. |
| 5 | Only safe, plain types are used: no language-specific tags (`!!python/object`, `!ruby/object`) and no `!include`-style extension unless the consuming tool documents it (Mandatory) | Pass | Plain mappings, sequences and strings only. |
| 6 | No secret is written in the file: no password, token, key or private connection string; a secret is referenced by name and supplied by the consuming tool (Mandatory) | Pass | No secret in the file; the workflow needs none. |
| 7 | Embedded program text (shell, Python, SQL, `jq`, and so on) in a value is at most five lines; a longer one is moved to a file of its own, in its own language, and the YAML calls it (Mandatory) | Pass | Each `run:` value has at most 2 lines. |
| 8 | A block of keys or values repeated in the file or across files is defined once (an anchor, a template, an include or a reusable unit the consumer supports) (Mandatory) | Pass | No repeated block. |
| 9 | Anchors, aliases and merge keys (`&`, `*`, `<<`) are used only where the consuming tool is known to support them (Mandatory) | Pass | No anchors or aliases. |
| 10 | The file validates against the schema of the consuming tool where one exists, and the schema or tool version is stated (Optional) | N-A | No published schema is checked; the workflow is exercised by the host runner. |
| 11 | A header comment states what the file is for, which tool reads it, and where its decision or design is recorded (Mandatory) | Pass | Header comment states purpose, reader and where the design is recorded. |
| 12 | Key names follow the convention of the consuming tool; one case style is used within the file (kebab-case or snake_case, never mixed) (Mandatory) | Pass | kebab-case keys (`runs-on`, `timeout-minutes`) throughout. |
| 13 | Multi-line strings use a block scalar (`\|` or `>`) and state the chomping indicator (`\|-`, `\|+`) where the trailing newline matters (Optional) | Pass | The `run:` block scalars use `|`; trailing newline does not matter. |
| 14 | The file name is lowercase kebab-case with one extension style (`.yml` or `.yaml`) used throughout the repository (Optional) | Pass | `run-tests.yml` is lowercase kebab-case with the .yml extension. |
| 15 | A change is exercised by a check that runs without the real target: a parse and schema test, or a dry run of the consuming tool (Optional) | N-A | The runner is not available locally; yamllint is the local check. |
## Overall Verdict
Go - Mandatory criteria of both checklists pass for the files delivered by MIL-001: constants module, package marker, smoke tests, pyproject and the workflow.
## Action Items
| Action | Owner | Due |
| --- | --- | --- |
| None | S01 | |
---
[QC-PY-001]: ../../../framework/qc/code/qc-programming-python.md
[QC-YML-001]: ../../../framework/qc/code/qc-yaml.md