diff --git a/docs/adr/adr-0001-read-nato-data-with-csv-module.md b/docs/adr/adr-0001-read-nato-data-with-csv-module.md index 9e085da..2c31081 100644 --- a/docs/adr/adr-0001-read-nato-data-with-csv-module.md +++ b/docs/adr/adr-0001-read-nato-data-with-csv-module.md @@ -9,7 +9,7 @@ ## Version History | Date | Status | Author | Reviewer | Change | Commit | | --- | --- | --- | --- | --- | --- | -| 2026-10-14 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version, reviewed in RC-006 | pending | +| 2026-10-14 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version, reviewed in RC-006 | [f42e610] | Allowed Status values: `Proposed`, `Accepted`, `Rejected`, `Deprecated`, `Superseded by ADR-NNNN`. @@ -51,3 +51,4 @@ Read the NATO alphabet with the standard library `csv` module (`csv.DictReader`) [BC-001]: ../business-case.md [SA-001]: ../stakeholder-analysis.md +[f42e610]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/030-nato-phonetic-alphabet/commit/f42e6109ac82937291e5c8207c0631f710b9da85 diff --git a/docs/adr/adr-0002-skip-analysis-artifacts.md b/docs/adr/adr-0002-skip-analysis-artifacts.md index a72eecd..a462ad8 100644 --- a/docs/adr/adr-0002-skip-analysis-artifacts.md +++ b/docs/adr/adr-0002-skip-analysis-artifacts.md @@ -9,7 +9,7 @@ ## Version History | Date | Status | Author | Reviewer | Change | Commit | | --- | --- | --- | --- | --- | --- | -| 2026-10-14 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version, reviewed in RC-007 | pending | +| 2026-10-14 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version, reviewed in RC-007 | [f42e610] | Allowed Status values: `Proposed`, `Accepted`, `Rejected`, `Deprecated`, `Superseded by ADR-NNNN`. @@ -48,3 +48,4 @@ Skip the KPI definitions, the Business Model Canvas, the BPMN process model and --- [BC-001]: ../business-case.md +[f42e610]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/030-nato-phonetic-alphabet/commit/f42e6109ac82937291e5c8207c0631f710b9da85 diff --git a/docs/business-case.md b/docs/business-case.md index 779063c..ed771cb 100644 --- a/docs/business-case.md +++ b/docs/business-case.md @@ -11,7 +11,7 @@ ## Version History | Date | Status | Author | Reviewer | Change | Commit | | --- | --- | --- | --- | --- | --- | -| 2026-10-14 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version, reviewed in RC-001 | pending | +| 2026-10-14 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version, reviewed in RC-001 | [f42e610] | --- @@ -138,3 +138,4 @@ Proceed: the scope is small, the risks are low and every objective is verifiable --- [SA-001]: ./stakeholder-analysis.md +[f42e610]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/030-nato-phonetic-alphabet/commit/f42e6109ac82937291e5c8207c0631f710b9da85 diff --git a/docs/milestones/mil-001-repository-foundation.md b/docs/milestones/mil-001-repository-foundation.md index 8ded841..366583c 100644 --- a/docs/milestones/mil-001-repository-foundation.md +++ b/docs/milestones/mil-001-repository-foundation.md @@ -11,7 +11,7 @@ ## Version History | Date | Status | Author | Reviewer | Change | Commit | | --- | --- | --- | --- | --- | --- | -| 2026-10-14 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version, reviewed in RC-003 | pending | +| 2026-10-14 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version, reviewed in RC-003 | [f42e610] | --- @@ -72,3 +72,4 @@ A repository containing `pyproject.toml`, a Python `.gitignore`, the `src/` pack --- [BC-001]: ../business-case.md +[f42e610]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/030-nato-phonetic-alphabet/commit/f42e6109ac82937291e5c8207c0631f710b9da85 diff --git a/docs/project-plan.md b/docs/project-plan.md index e113cce..06af256 100644 --- a/docs/project-plan.md +++ b/docs/project-plan.md @@ -11,7 +11,7 @@ ## Version History | Date | Status | Author | Reviewer | Change | Commit | | --- | --- | --- | --- | --- | --- | -| 2026-10-14 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version, accepted as Product Owner stand-in (no QC checklist for PP yet); plan accepted by S01 in chat | pending | +| 2026-10-14 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version, accepted as Product Owner stand-in (no QC checklist for PP yet); plan accepted by S01 in chat | [f42e610] | --- @@ -87,3 +87,4 @@ A No-Go on a gateway holds the later ones until the cause is fixed and the gatew [MIL-001]: ./milestones/mil-001-repository-foundation.md [MIL-002]: ./milestones/mil-002-nato-converter.md [MIL-003]: ./milestones/mil-003-documentation-and-publication.md +[f42e610]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/030-nato-phonetic-alphabet/commit/f42e6109ac82937291e5c8207c0631f710b9da85 diff --git a/docs/sqa/reviews/rc-001-business-case.md b/docs/sqa/reviews/rc-001-business-case.md index 5762ca8..b3bd285 100644 --- a/docs/sqa/reviews/rc-001-business-case.md +++ b/docs/sqa/reviews/rc-001-business-case.md @@ -9,7 +9,7 @@ ## Version History | Date | Status | Author | Reviewer | Change | Commit | | --- | --- | --- | --- | --- | --- | -| 2026-10-14 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Review of BC-001 | pending | +| 2026-10-14 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Review of BC-001 | [f42e610] | --- @@ -65,3 +65,4 @@ Go — every Mandatory criterion of QC-BC-001 and of QC-LANG-001 passes. The rev [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 +[f42e610]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/030-nato-phonetic-alphabet/commit/f42e6109ac82937291e5c8207c0631f710b9da85 diff --git a/docs/sqa/reviews/rc-002-stakeholder-analysis.md b/docs/sqa/reviews/rc-002-stakeholder-analysis.md index 887695c..a98dfb8 100644 --- a/docs/sqa/reviews/rc-002-stakeholder-analysis.md +++ b/docs/sqa/reviews/rc-002-stakeholder-analysis.md @@ -9,7 +9,7 @@ ## Version History | Date | Status | Author | Reviewer | Change | Commit | | --- | --- | --- | --- | --- | --- | -| 2026-10-14 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Review of SA-001 | pending | +| 2026-10-14 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Review of SA-001 | [f42e610] | --- @@ -65,3 +65,4 @@ Go — every Mandatory criterion of QC-SA-001 and of QC-LANG-001 passes. The rev [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 +[f42e610]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/030-nato-phonetic-alphabet/commit/f42e6109ac82937291e5c8207c0631f710b9da85 diff --git a/docs/sqa/reviews/rc-003-mil-001.md b/docs/sqa/reviews/rc-003-mil-001.md index 9bcf7ae..c3c6708 100644 --- a/docs/sqa/reviews/rc-003-mil-001.md +++ b/docs/sqa/reviews/rc-003-mil-001.md @@ -9,7 +9,7 @@ ## Version History | Date | Status | Author | Reviewer | Change | Commit | | --- | --- | --- | --- | --- | --- | -| 2026-10-14 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Review of MIL-001 | pending | +| 2026-10-14 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Review of MIL-001 | [f42e610] | --- @@ -63,3 +63,4 @@ Go — every Mandatory criterion of QC-MIL-001 and of QC-LANG-001 passes. The re [MIL-001]: ../../milestones/mil-001-repository-foundation.md [QC-MIL-001]: ../../../framework/qc/artifacts/qc-milestones-gateways.md [QC-LANG-001]: ../../../framework/qc/artifacts/qc-language-domain.md +[f42e610]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/030-nato-phonetic-alphabet/commit/f42e6109ac82937291e5c8207c0631f710b9da85 diff --git a/docs/sqa/reviews/rc-006-adr-0001.md b/docs/sqa/reviews/rc-006-adr-0001.md index d02b8a0..21ce807 100644 --- a/docs/sqa/reviews/rc-006-adr-0001.md +++ b/docs/sqa/reviews/rc-006-adr-0001.md @@ -9,7 +9,7 @@ ## Version History | Date | Status | Author | Reviewer | Change | Commit | | --- | --- | --- | --- | --- | --- | -| 2026-10-14 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Review of ADR-0001 | pending | +| 2026-10-14 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Review of ADR-0001 | [f42e610] | --- @@ -52,3 +52,4 @@ Go — every Mandatory criterion of QC-ADR-001 passes. [ADR-0001]: ../../adr/adr-0001-read-nato-data-with-csv-module.md [QC-ADR-001]: ../../../framework/qc/artifacts/qc-adr.md +[f42e610]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/030-nato-phonetic-alphabet/commit/f42e6109ac82937291e5c8207c0631f710b9da85 diff --git a/docs/sqa/reviews/rc-007-adr-0002.md b/docs/sqa/reviews/rc-007-adr-0002.md index dbb2f0f..0e1ebd6 100644 --- a/docs/sqa/reviews/rc-007-adr-0002.md +++ b/docs/sqa/reviews/rc-007-adr-0002.md @@ -9,7 +9,7 @@ ## Version History | Date | Status | Author | Reviewer | Change | Commit | | --- | --- | --- | --- | --- | --- | -| 2026-10-14 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Review of ADR-0002 | pending | +| 2026-10-14 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Review of ADR-0002 | [f42e610] | --- @@ -52,3 +52,4 @@ Go — every Mandatory criterion of QC-ADR-001 passes. [ADR-0002]: ../../adr/adr-0002-skip-analysis-artifacts.md [QC-ADR-001]: ../../../framework/qc/artifacts/qc-adr.md +[f42e610]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/030-nato-phonetic-alphabet/commit/f42e6109ac82937291e5c8207c0631f710b9da85 diff --git a/docs/sqa/reviews/rc-008-ci-workflow.md b/docs/sqa/reviews/rc-008-ci-workflow.md index f3bb4d1..50dd43a 100644 --- a/docs/sqa/reviews/rc-008-ci-workflow.md +++ b/docs/sqa/reviews/rc-008-ci-workflow.md @@ -9,7 +9,7 @@ ## Version History | Date | Status | Author | Reviewer | Change | Commit | | --- | --- | --- | --- | --- | --- | -| 2026-10-14 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Review of WF-001 | pending | +| 2026-10-14 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Review of WF-001 | [f42e610] | --- @@ -86,3 +86,4 @@ Go — every Mandatory criterion of QC-WF-001 and QC-YML-001 passes; the run on [WF-001]: ../../../.gitea/workflows/ci.yml [QC-WF-001]: ../../../framework/qc/code/qc-workflow.md [QC-YML-001]: ../../../framework/qc/code/qc-yaml.md +[f42e610]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/030-nato-phonetic-alphabet/commit/f42e6109ac82937291e5c8207c0631f710b9da85 diff --git a/docs/sqa/reviews/rc-009-python-skeleton.md b/docs/sqa/reviews/rc-009-python-skeleton.md index d9da952..09efc8a 100644 --- a/docs/sqa/reviews/rc-009-python-skeleton.md +++ b/docs/sqa/reviews/rc-009-python-skeleton.md @@ -9,7 +9,7 @@ ## Version History | Date | Status | Author | Reviewer | Change | Commit | | --- | --- | --- | --- | --- | --- | -| 2026-10-14 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Review of PY-001 | pending | +| 2026-10-14 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Review of PY-001 | [f42e610] | --- @@ -57,3 +57,4 @@ Go — every Mandatory criterion of QC-PY-001 passes or is not applicable to the [PY-001]: ../../../src/nato_phonetic_alphabet/constants.py [QC-PY-001]: ../../../framework/qc/code/qc-programming-python.md +[f42e610]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/030-nato-phonetic-alphabet/commit/f42e6109ac82937291e5c8207c0631f710b9da85 diff --git a/docs/stakeholder-analysis.md b/docs/stakeholder-analysis.md index 0a9dbe1..0ac68d6 100644 --- a/docs/stakeholder-analysis.md +++ b/docs/stakeholder-analysis.md @@ -11,7 +11,7 @@ ## Version History | Date | Status | Author | Reviewer | Change | Commit | | --- | --- | --- | --- | --- | --- | -| 2026-10-14 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version, reviewed in RC-002 | pending | +| 2026-10-14 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version, reviewed in RC-002 | [f42e610] | --- @@ -76,3 +76,4 @@ Reviewer: S01 (in autonomous mode the AI acts as S01's stand-in; the review reco --- [BC-001]: ./business-case.md +[f42e610]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/030-nato-phonetic-alphabet/commit/f42e6109ac82937291e5c8207c0631f710b9da85 diff --git a/docs/use-case-diagram.md b/docs/use-case-diagram.md new file mode 100644 index 0000000..c7d338b --- /dev/null +++ b/docs/use-case-diagram.md @@ -0,0 +1,58 @@ +# Use Case Diagram + +## Metadata +| Key | Value | +| --- | --- | +| ID | UCD-001 | +| CrossReference | [SA-001], [BC-001], [US-001], [UC-001] | +| Language | en | +| Domain | it | + +## Version History +| Date | Status | Author | Reviewer | Change | Commit | +| --- | --- | --- | --- | --- | --- | +| 2026-10-14 | Proposed | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version, adapted from the 026 NATO alphabet project | pending | + +--- + +## Purpose and Scope + +The boundary is the NATO alphabet console tool. One actor, the User, asks the tool to spell a word. Everything outside the console program (the course platform, the git host, the wiki) is outside the boundary. + +## Diagram + +```plantuml +@startuml +left to right direction +actor "User" <> as U +rectangle "NATO alphabet tool" <> { + usecase "Spell a Word" as UC1 +} +U --> UC1 +@enduml +``` + +## Actor Table + +| Actor | Stereotype | Stakeholder ID (SA) | Goals (use cases) | +| --- | --- | --- | --- | +| User | `<>` | S01, S02 | Spell a Word | + +## Use Case Table + +| Use Case | Actor(s) | Goal | +| --- | --- | --- | +| Spell a Word | User | Get the NATO code word of each letter of a word, so the word can be spelled out over the phone | + +## Relationships + +| From | Relationship (`<>` / `<>`) | To | Justification | +| --- | --- | --- | --- | +| None | - | None | A single use case has no include or extend relationship | + +--- + +[SA-001]: ./stakeholder-analysis.md +[BC-001]: ./business-case.md +[US-001]: ./user-stories.md +[UC-001]: ./uc-001/uc.md diff --git a/docs/user-stories.md b/docs/user-stories.md new file mode 100644 index 0000000..891a11d --- /dev/null +++ b/docs/user-stories.md @@ -0,0 +1,48 @@ +# User Story + +## Metadata +| Key | Value | +| --- | --- | +| ID | US-001 | +| CrossReference | [UCD-001], [BC-001], [MIL-002] | +| Language | en | +| Domain | it | + +## Version History +| Date | Status | Author | Reviewer | Change | Commit | +| --- | --- | --- | --- | --- | --- | +| 2026-10-14 | Proposed | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version, adapted from the 026 NATO alphabet project | pending | + +--- + +## Purpose and Scope + +The epic is [MIL-002] "NATO converter": the console behaviour that turns a typed word into NATO code words. + +## Story List + +### US-001.01 — Spell a word + +**As a** User, **I want** to type a word and see the NATO code word of each of its letters, **so that** I can spell the word clearly over the phone. + +**Acceptance Criteria** + +- Given the program is running, when I enter `Hello`, then it lists `Hotel`, `Echo`, `Lima`, `Lima`, `Oscar` in that order. +- Given the program is running, when I enter the same word in lower case or upper case, then the result is the same. +- Given the program is running, when I enter a word with a character that is not a letter, then the program does not crash, tells me to enter only letters of the alphabet and asks for the word again. +- Given I entered an invalid word, when I then enter a valid word, then it lists the code words of that word. + +| Traces to | Size | INVEST exceptions | +| --- | --- | --- | +| [UC-001] | fits one iteration | none | + +## INVEST Check + +Independent (no other story is needed), Negotiable (wording of the messages is open), Valuable (it is the whole purpose of the tool), Estimable, Small (one console interaction) and Testable (each criterion is a pytest case). No exceptions. + +--- + +[UCD-001]: ./use-case-diagram.md +[BC-001]: ./business-case.md +[MIL-002]: ./milestones/mil-002-nato-converter.md +[UC-001]: ./uc-001/uc.md