From a07d05b385e6b831b90731aefe08f078ebb951ca Mon Sep 17 00:00:00 2001 From: Jens Tirsvad Nielsen Date: Fri, 6 Nov 2026 12:37:43 +0800 Subject: [PATCH 1/2] Add project baseline, reviews and repository configuration Business Case, Stakeholder Analysis, Project Plan, milestones MIL-001 to MIL-003, ADR-0001, review records RC-001 to RC-006, pyproject.toml, .gitignore, Doxyfile and README. --- .gitignore | 36 ++++ .gitmodules | 3 + Doxyfile | 15 ++ README.md | 134 ++++++++++++++- .../adr-0001-skip-stories-plain-package.md | 67 ++++++++ docs/artifact-registry.md | 61 +++++++ docs/business-case.md | 158 ++++++++++++++++++ docs/milestones/mil-001-project-baseline.md | 79 +++++++++ .../mil-002-speed-calc-decorator.md | 81 +++++++++ .../mil-003-wiki-and-screenshots.md | 76 +++++++++ docs/project-plan.md | 99 +++++++++++ docs/sqa/reviews/rc-001-business-case.md | 67 ++++++++ .../reviews/rc-002-stakeholder-analysis.md | 68 ++++++++ .../rc-003-mil-001-project-baseline.md | 65 +++++++ .../rc-004-mil-002-speed-calc-decorator.md | 65 +++++++ docs/sqa/reviews/rc-005-mil-003-wiki.md | 65 +++++++ docs/sqa/reviews/rc-006-adr-0001.md | 54 ++++++ docs/sqa/traceability-matrix.md | 87 ++++++++++ docs/stakeholder-analysis.md | 88 ++++++++++ framework | 1 + pyproject.toml | 29 ++++ 21 files changed, 1397 insertions(+), 1 deletion(-) create mode 100644 .gitignore create mode 100644 .gitmodules create mode 100644 Doxyfile create mode 100644 docs/adr/adr-0001-skip-stories-plain-package.md create mode 100644 docs/artifact-registry.md create mode 100644 docs/business-case.md create mode 100644 docs/milestones/mil-001-project-baseline.md create mode 100644 docs/milestones/mil-002-speed-calc-decorator.md create mode 100644 docs/milestones/mil-003-wiki-and-screenshots.md create mode 100644 docs/project-plan.md create mode 100644 docs/sqa/reviews/rc-001-business-case.md create mode 100644 docs/sqa/reviews/rc-002-stakeholder-analysis.md create mode 100644 docs/sqa/reviews/rc-003-mil-001-project-baseline.md create mode 100644 docs/sqa/reviews/rc-004-mil-002-speed-calc-decorator.md create mode 100644 docs/sqa/reviews/rc-005-mil-003-wiki.md create mode 100644 docs/sqa/reviews/rc-006-adr-0001.md create mode 100644 docs/sqa/traceability-matrix.md create mode 100644 docs/stakeholder-analysis.md create mode 160000 framework create mode 100644 pyproject.toml diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b1bd38c --- /dev/null +++ b/.gitignore @@ -0,0 +1,36 @@ +# Personal tokens: never commit +.env +.env.* + +# Python +__pycache__/ +*.py[cod] +*$py.class +*.so + +# Virtual environments +.venv/ +venv/ +env/ + +# Packaging and build +build/ +dist/ +*.egg-info/ +.eggs/ + +# Test and tool caches +.pytest_cache/ +.mypy_cache/ +.ruff_cache/ +.coverage +htmlcov/ + +# Doxygen output +docs/doxygen/ + +# IDE and OS +.idea/ +.vscode/ +.DS_Store +Thumbs.db diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..a759dc9 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "framework"] + path = framework + url = ssh://git@git.tirsystem.com:10022/TirSystem/SQA-QC-Framework.git diff --git a/Doxyfile b/Doxyfile new file mode 100644 index 0000000..305f4cb --- /dev/null +++ b/Doxyfile @@ -0,0 +1,15 @@ +# Doxygen configuration. Everything not listed here keeps the Doxygen default. +# Generate the HTML documentation with: doxygen Doxyfile +PROJECT_NAME = "Speed Calc Decorator" +PROJECT_BRIEF = "Decorator that measures how long a function takes to run" +OUTPUT_DIRECTORY = docs/doxygen +INPUT = src +FILE_PATTERNS = *.py +RECURSIVE = YES +EXTRACT_ALL = YES +OPTIMIZE_OUTPUT_JAVA = YES +MARKDOWN_SUPPORT = YES +GENERATE_HTML = YES +GENERATE_LATEX = NO +QUIET = YES +WARN_IF_UNDOCUMENTED = YES diff --git a/README.md b/README.md index f3e47ea..09c1881 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,134 @@ -# 054-speed-calc-decorator +# โฑ๏ธ Speed Calc Decorator +A Python decorator that measures how many seconds a function takes to run. It is +my solution to a lecture exercise from Udemy's *100 Days of Code: The Complete +Python Pro Bootcamp*, written for fellow course participants and for anyone +browsing for ideas. It has no runtime dependencies. + +## ๐Ÿ“š Table of Contents + +- [Overview](#-overview) +- [Requirements](#-requirements) +- [Setup](#-setup) +- [Run](#-run) +- [Tests](#-tests) +- [Documentation](#-documentation) +- [License](#-license) +- [Links](#-links) +- [Appendix: Project documents](#-appendix-project-documents) + +## ๐Ÿงญ Overview + +The assignment: write `speed_calc_decorator` and use it to print how long +`fast_function` and `slow_function` take. Expected output has this shape: + +```text +1695050908.1985211 +fast_function run speed: 0.33974480628967285s +slow_function run speed: 2.9590742588043213s +``` + +The numbers differ on every machine. The repository is laid out as: + +| Folder | Purpose | +| --- | --- | +| `src/speed_calc/` | The package: the decorator, the two demo functions, `constants.py` | +| `tests/` | pytest tests; they use a fake clock, so they never depend on real time | +| `docs/` | Project documents (Business Case, plan, milestones), screenshots and the wiki | + +## ๐Ÿ“‹ Requirements + +- Python 3.13 or newer (`python --version`). +- `git`, to clone the repository. +- Optional: [Doxygen](https://www.doxygen.nl/) to build the API documentation. + +There are no runtime dependencies. `pytest` is needed only to run the tests. + +## ๐Ÿ› ๏ธ Setup + +Create a local virtual environment named `.venv` in the project folder and +activate it. Windows (PowerShell): + +```powershell +python -m venv .venv +.venv\Scripts\Activate.ps1 +``` + +Linux and macOS: + +```bash +python3 -m venv .venv +source .venv/bin/activate +``` + +Upgrade pip, then install the project with the test tools: + +```bash +python -m pip install --upgrade pip +python -m pip install -e ".[dev]" +``` + +Leave the environment with `deactivate`. Delete the `.venv` folder to start over. +The `.venv` folder is ignored by git. + +## โ–ถ๏ธ Run + +With the environment active: + +```bash +python -m speed_calc +``` + +## ๐Ÿงช Tests + +```bash +python -m pytest +``` + +## ๐Ÿ“– Documentation + +The source uses Doxygen comments. Build the HTML documentation into +`docs/doxygen/`: + +```bash +doxygen Doxyfile +``` + +## ๐Ÿ“„ License + +GNU Affero General Public License v3.0, see [LICENSE](./LICENSE). + +## ๐Ÿ”— Links + +- [Repository][repository] +- [Wiki][documentation] +- [Issue tracker][issues] + +## ๐Ÿ“Ž Appendix: Project documents + +| Document | What it tells you | +| --- | --- | +| [AGENTS.md][agents] | The rules AI agents follow in this repository | +| [Business Case][BC-001] | Why the project exists, its scope and success criteria | +| [Stakeholder Analysis][SA-001] | Who is involved; the stakeholder IDs used for owners and reviewers | +| [Project Plan][PP-001] | The gateways and their schedule | +| [Milestones][milestones] | One document per gateway: Go/No-Go criteria and tasks | +| [Artifact registry][registry] | Where each artifact type lives, the next version, the PO language and domain | +| [Traceability matrix][TM-001] | How the artifacts link and when each was last reviewed | +| [Framework README][framework-readme] | The framework this project uses | +| [Framework changelog][framework-changelog] | What changed in each framework release | + +--- + +[repository]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/054-speed-calc-decorator +[documentation]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/054-speed-calc-decorator/wiki +[issues]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/054-speed-calc-decorator/issues +[agents]: ./AGENTS.md +[BC-001]: ./docs/business-case.md +[SA-001]: ./docs/stakeholder-analysis.md +[PP-001]: ./docs/project-plan.md +[milestones]: ./docs/milestones/ +[registry]: ./docs/artifact-registry.md +[TM-001]: ./docs/sqa/traceability-matrix.md +[framework-readme]: ./framework/README.md +[framework-changelog]: ./framework/CHANGELOG.md diff --git a/docs/adr/adr-0001-skip-stories-plain-package.md b/docs/adr/adr-0001-skip-stories-plain-package.md new file mode 100644 index 0000000..21175cf --- /dev/null +++ b/docs/adr/adr-0001-skip-stories-plain-package.md @@ -0,0 +1,67 @@ +# Skip user stories and use cases; plain package layout + +## Metadata +| Key | Value | +| --- | --- | +| ID | ADR-0001 | +| CrossReference | [BC-001], [PP-001] | + +## Version History +| Date | Status | Author | Reviewer | Change | Commit | +| --- | --- | --- | --- | --- | --- | +| 2026-11-06 | Deprecated | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version | pending | +| 2026-11-06 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Review RC-006 fixed 2 defects (stakeholder IDs S01 to S03 now explained; shared rationale for the two decisions stated in Context); accepted as stand-in for S01 in autonomous mode, not independent | pending | + +Allowed Status values: `Proposed`, `Accepted`, `Rejected`, `Deprecated`, `Superseded by ADR-NNNN`. + +--- + +## Context + +The project solves one course exercise: a decorator that prints how long a +function takes. Two decisions shape the plan and the code; both follow from one force: the +documentation and structure should stay in proportion to a one-function exercise. + +1. **User stories and use cases.** The framework asks for candidate stories and + use cases before milestones. The exercise has one actor (S01, the author and Product Owner) + running one command, with no input and no state. Options: (a) write a story and use case + for "run the timing demo"; (b) skip them and plan plain technical tasks. +2. **Code layout.** The `clean-architecture` skill describes layers (domain, + application, infrastructure, presentation). Options: (a) the full layers; + (b) one small package, `src/speed_calc/`, with a module per concern. + +Forces: the target is a prototype to finish by 2026-11-09; stakeholders S02 (Udemy +coursists) and S03 (GitHub viewers) want readable code with the assignment's function names and no runtime +dependencies; layers would hide the three functions the course asks for. + +## Decision + +Skip user stories and use cases, and plan every task as a plain technical task +(`Needs its own Use Case/User Story?` is `No`). Use one flat package +`src/speed_calc/` with `constants.py`, the decorator, the two demo functions and +a `__main__` entry point; apply the dependency rule by keeping the decorator +free of any import from the demo or entry modules. + +## Consequences + +**Positive:** + +- Less documentation than the code it describes; readers (S02, S03) find the + three assignment functions at once. +- No runtime dependencies and nothing to configure. + +**Negative:** + +- The layout does not scale to a larger program; a later lecture project with + real use cases needs its own decision. +- No story-level traceability; traceability stops at the milestone task. + +## Affected Artifacts + +- [BC-001] โ€” scope stays as written; no story-level scope items exist. +- [PP-001] โ€” the Stories column says "none" and points here. + +--- + +[BC-001]: ../business-case.md +[PP-001]: ../project-plan.md diff --git a/docs/artifact-registry.md b/docs/artifact-registry.md new file mode 100644 index 0000000..5a87d59 --- /dev/null +++ b/docs/artifact-registry.md @@ -0,0 +1,61 @@ +# Artifact Registry + +This project's artifact state. Types, short names and `CrossReference +Candidates` come from the framework catalog +(`framework/registry/artifact-catalog.md`); this file only records where +each document lives in *this* project and the next version to use. + +Delete rows for types you don't use. Add a row the first time you create a +document of a type. `Primary File` may contain a glob (e.g. +`docs/use-cases/uc-*/uc.md`); `framework/scripts/find-crossreferences.sh` reads it. + +| Short Name | Artifact Type | Primary File | Next Available Version | +| --- | --- | --- | --- | +| BC | Business Case | docs/business-case.md | 002 | +| SA | Stakeholder Analysis | docs/stakeholder-analysis.md | 002 | +| PP | Project Plan | docs/project-plan.md | 002 | +| MIL | Milestone / Gateway | docs/milestones/mil-*.md | 004 | +| TM | Traceability Matrix | docs/sqa/traceability-matrix.md | 002 | +| RC | SQA Review Record | docs/sqa/reviews/rc-*.md | 007 | +| ADR | Architecture Decision Record | docs/adr/adr-*.md | 0002 | + +## Languages + +Set the PO language when the project starts; `project-planning` asks for it +if it is missing. An artifact of a type marked "Written in the PO language" +exists once, in that language, under its normal name (`business-case.md`); the +`artifact` skill ("One file per artifact") has the rule. + +| Setting | Value | +| --- | --- | +| PO language | en | +| PO domain | it | +| High-level register | IT Executive English | +| Technical register | IT Professional English | +| Wiki languages | en, da, ms (`framework/process/wiki.md`) | + +Every artifact of a type marked "Yes" below states its language and domain in +its `Language` and `Domain` Metadata rows; `new-artifact.sh` fills them from +`PO language` and `PO domain`. `Language` is a BCP 47 code (`da`, `en`). +`Domain` is a value from this list; add a row to introduce a domain, so a +reviewer can see at once which professional vocabulary a document uses. + +| Domain | Meaning | +| --- | --- | +| it | Software and IT | +| medical | Healthcare and medical devices | +| construction | Construction and civil engineering | + +| Artifact types | Register | Written in the PO language | +| --- | --- | --- | +| BC, KPI, PP, MIL | IT Executive English | Yes | +| SA, BMC, BPMN, UCD, US, UC, SSD, DM, RA, GOV, DICT | IT Professional English | Yes | +| OC, SD, DCD, ERD, TP, AD, ADR, TM, RC, QC, source code | IT Professional English | No | + +## Notes + +- "Next Available Version" is the zero-padded (3-digit) version to use the + *next* time a new document of that type is created. Increment it only when + a brand-new document is created, not when an existing document's + `## Version History` gets a row. +- `ADR` uses 4 digits (`0001`); `RC` is sequential across all artifact types. diff --git a/docs/business-case.md b/docs/business-case.md new file mode 100644 index 0000000..7773f9a --- /dev/null +++ b/docs/business-case.md @@ -0,0 +1,158 @@ +# Business Case + +## Metadata +| Key | Value | +| --- | --- | +| ID | BC-001 | +| CrossReference | [SA-001] | +| Language | en | +| Domain | it | + +## Version History +| Date | Status | Author | Reviewer | Change | Commit | +| --- | --- | --- | --- | --- | --- | +| 2026-11-06 | Deprecated | Jens Tirsvad Nielsen | S01 | Review findings fixed: constraint wording, abbreviations spelled out (RC-001) | pending | +| 2026-11-06 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Go per RC-001; language checks confirmed by S01 | pending | + +--- + +## Executive Summary + +Lecture 054 of Udemy's "100 Days of Code: The Complete Python Pro Bootcamp" +asks the participant to write a decorator, `speed_calc_decorator`, that prints +how many seconds a function takes to run, and to apply it to `fast_function` +and `slow_function`. This project turns that exercise into a small, tested, +documented repository that other course participants can read and run, and that +GitHub visitors can browse. It is a prototype: one Python package, a test suite, +a README and a three-language wiki that explains what each lecture step taught. + +## Methodological and Standards Foundation + +The documents follow the SQA and QC framework mounted at `framework/` +(Business Case, Stakeholder Analysis, Project Plan, milestones, then code). +Quality criteria are tagged with ISO/IEC 25010:2023 characteristics. Source +code follows the `coding-conventions` skill (Python) and is documented with +Doxygen comments. + +## Problem Statement + +- The assignment gives only a stub (`def speed_calc_decorator(): pass`) and an + expected output; there is no shared, runnable, tested solution layout. +- Participants who compare solutions find loose scripts without setup + instructions, tests or an explanation of the decorator concepts involved. +- The author has no record of what each lecture step taught. + +## Business Opportunity + +A clean solution repository lets participants run the exercise in two commands, +lets visitors reuse the layout (`src/`, `tests/`, `docs/`) for other lectures of +the course, and gives the author a written record of the learning. + +## Objectives + +1. Deliver `speed_calc_decorator`, `fast_function` and `slow_function` with the + assignment's names, printing output in the shape of the expected output. +2. Cover the behaviour with pytest tests that do not depend on real elapsed time. +3. Document how to create and use a local `.venv` and run the project and tests. +4. Provide a README and a wiki in English, Danish and Bahasa Malaysia that + explain what each lecture step gained, with one screenshot per step. +5. Publish a repository description and topics on the git host. + +## Scope + +### In Scope + +- Python package under `src/`, tests under `tests/`, documents under `docs/`. +- `pyproject.toml`, Python `.gitignore`, `constants.py`, a `Doxyfile`. +- README from the framework template, with venv and test instructions. +- Wiki pages (en, da, ms) and one screenshot per lecture step. +- Repository description and topics on the git host. + +### Out of Scope + +- Other lectures of the course. +- Runtime dependencies, packaging to the Python Package Index (PyPI), a graphical user interface (GUI). +- Reading or importing the `.env` file in the project (personal use only). + +## Expected Benefits + +### Tangible Benefits + +- A runnable solution: `python -m speed_calc` prints the expected output shape. +- A passing test suite and a documented setup. +- README and wiki in three languages with screenshots. + +### Intangible Benefits + +- Understanding of decorators, closures, `functools.wraps` and `time.time()`. +- A reusable layout for later lectures. + +## Strategic Alignment + +The project supports the author's goal of completing the 100 Days of Code course +with a documented portfolio on the author's git host, and supports the sharing +of solutions among course participants. + +## Success Criteria + +| # | Criterion | Target | Measure | +| --- | --- | --- | --- | +| 1 | Tests pass | 100 % of tests green | `python -m pytest` exits 0 | +| 2 | Program output | 3 lines in the shape of the assignment's expected output | `python -m speed_calc` run captured in the lecture-step screenshots | +| 3 | Runtime dependencies | 0 | `pyproject.toml` has an empty `dependencies` list | +| 4 | Wiki languages | 3 languages, same page set | file listing of `docs/wiki/` | +| 5 | Screenshots | 1 per lecture step in README and wiki | image files in `docs/screenshots/` | +| 6 | Repository metadata | Description and at least 5 topics set | git host application programming interface (API) response | + +## Risks + +| Risk | Impact | Mitigation | +| --- | --- | --- | +| Timing tests are flaky on slow machines | Red continuous integration (CI) runs, false failures | Tests inject a fake clock and never assert real durations | +| Token in `.env` leaks | Account compromise | `.env` is git-ignored, never read by project code, never printed | +| Repository URL in the request differs from the configured `origin` | Metadata set on the wrong repository | Use the `origin` repository; the difference is recorded in Open Issues of [PP-001] | +| Translations contain mistakes | Misleading wiki text | Keep wording simple, English is authoritative, review by S01 | +| Screenshot capture on the host desktop disturbs the user | Interrupted work | Screenshots are rendered from captured program output, never from the desktop | + +## Assumptions + +- Python 3.13 or newer is installed on the author's machine. +- The git host accepts the token in `.env` for repository settings and pull requests. +- The wiki is enabled in the repository settings. +- The Product Owner is S01; S01 is the reviewer. The people for whom the work is + intended (S02, S03) are not contacted for this prototype. + +## Constraints + +- Python 3.13 or newer, venv, pytest, `pyproject.toml`. +- No runtime dependencies. +- `constants.py` holds the constants. +- Folder structure `src/`, `tests/`, `docs/`. +- One pull request (branch) per milestone. +- Target: finished by 2026-11-09. + +## Costโ€“Benefit Assessment + +| Costs | Benefits | +| --- | --- | +| About one working day of effort | Complete, shareable solution and learning record | +| No licence or infrastructure cost | Reusable layout for later lectures | + +The assessment is qualitative: this is a personal learning project with no +revenue, so numbers would add no information. + +## Stakeholders + +| Stakeholder ID (SA) | Interest in this project | +| --- | --- | +| S01 | Owner, developer and reviewer; wants a correct exercise and a learning record | +| S02 | Reads and runs the code; wants the assignment's function names and clear run instructions | +| S03 | Browses for ideas; wants a clear description, topics and README with no dependencies | + +## Recommendation + +Proceed โ€” the scope is small, the dependencies are none, and the outcome serves all three stakeholders. + +--- + +[SA-001]: ./stakeholder-analysis.md diff --git a/docs/milestones/mil-001-project-baseline.md b/docs/milestones/mil-001-project-baseline.md new file mode 100644 index 0000000..45212ac --- /dev/null +++ b/docs/milestones/mil-001-project-baseline.md @@ -0,0 +1,79 @@ +# Project baseline and repository + +## Metadata +| Key | Value | +| --- | --- | +| ID | MIL-001 | +| CrossReference | [BC-001] | +| Language | en | +| Domain | it | + +## Version History +| Date | Status | Author | Reviewer | Change | Commit | +| --- | --- | --- | --- | --- | --- | +| 2026-11-06 | Deprecated | Jens Tirsvad Nielsen | S01 | Review findings fixed: Go criterion 6 for ADR-0001, traceability to success criteria (RC-003) | pending | +| 2026-11-06 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Go per RC-003; language checks confirmed by S01 | pending | + +--- + +## Purpose + +Decide whether the repository is ready for code: configuration, documentation +skeleton and repository metadata exist and follow the Business Case constraints. + +## Deliverable + +`pyproject.toml`, Python `.gitignore`, `Doxyfile`, README from the framework +template with venv instructions, ADR-0001, and the repository description and +topics set on the git host. + +## Go / No-Go Criteria + +| # | Criterion (objectively checkable) | Go | No-Go | +| --- | --- | --- | --- | +| 1 | `pyproject.toml` requires Python 3.13 or newer, has no runtime dependencies and a pytest dev extra | Yes | No | +| 2 | `.env` is git-ignored and `git ls-files` does not list it | Yes | No | +| 3 | README follows the template and documents `.venv`, `python -m pip install --upgrade pip` and pytest | Yes | No | +| 4 | `Doxyfile` exists with `INPUT = src` | Yes | No | +| 5 | The git host application programming interface (API) returns a non-empty description and at least 5 topics | Yes | No | +| 6 | ADR-0001 exists, records why user stories and use cases are skipped, and its review is a Go | Yes | No | + +## Dependencies + +| Depends on | Reason | +| --- | --- | +| none | First gateway | + +## Traceability + +| Business Case objective / KPI / user story | Reference | +| --- | --- | +| Objective 3 (venv and run instructions) | [BC-001] | +| Objective 5 (description and topics) | [BC-001] | +| Success criteria 3 and 6 (0 runtime dependencies; repository metadata) | [BC-001] | + +## Ownership + +| Role | Stakeholder ID (SA) | +| --- | --- | +| Owner | S01 | +| Approving reviewer | S01 | + +## Target Date + +2026-11-06 โ€” within the Business Case target of 2026-11-09. + +## Tasks + +| # | Task | Summary | Needs its own Use Case/User Story? | Reference | +| --- | --- | --- | --- | --- | +| 1 | Record ADR-0001: skip user stories and use cases | The exercise is a single function with no user interaction, so stories and use cases add no information. Record the reason and the plain package layout (no clean-architecture layers) in an architecture decision record (ADR). | No | | +| 2 | Add pyproject.toml and venv setup | Configure the project for Python 3.13 or newer with the `src/` layout, no runtime dependencies, pytest as a dev extra, and pytest settings for `tests/`. | No | | +| 3 | Add Python .gitignore | Ignore `.venv`, caches, build output and `.env` so the personal token file is never committed. | No | | +| 4 | Add Doxyfile | Configure Doxygen to read `src/` and write `docs/doxygen/`, so the Doxygen comments in the source can be rendered. | No | | +| 5 | Write README from the framework template | Fill the template: overview, requirements, creating and using a local `.venv`, `python -m pip install --upgrade pip`, run and test commands, links. Screenshots are added in MIL-002. | No | | +| 6 | Set repository description and topics | Use the git host API with the token from `.env` (read by the shell only, never by the project or printed) to set a description and topics on the `origin` repository. | No | | + +--- + +[BC-001]: ../business-case.md diff --git a/docs/milestones/mil-002-speed-calc-decorator.md b/docs/milestones/mil-002-speed-calc-decorator.md new file mode 100644 index 0000000..50a1f52 --- /dev/null +++ b/docs/milestones/mil-002-speed-calc-decorator.md @@ -0,0 +1,81 @@ +# Speed calc decorator + +## Metadata +| Key | Value | +| --- | --- | +| ID | MIL-002 | +| CrossReference | [BC-001] | +| Language | en | +| Domain | it | + +## Version History +| Date | Status | Author | Reviewer | Change | Commit | +| --- | --- | --- | --- | --- | --- | +| 2026-11-06 | Deprecated | Jens Tirsvad Nielsen | S01 | Review findings fixed: traceability to success criteria and constraints (RC-004) | pending | +| 2026-11-06 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Go per RC-004; language checks confirmed by S01 | pending | + +--- + +## Purpose + +Decide whether the exercise is solved: the decorator works, is tested, and each +lecture step has a screenshot in the README. + +## Deliverable + +Package `speed_calc` under `src/` (`constants.py`, the decorator, `fast_function`, +`slow_function`, a `__main__` entry point), tests under `tests/`, and one +screenshot per lecture step in `docs/screenshots/`, shown in the README. + +## Go / No-Go Criteria + +| # | Criterion (objectively checkable) | Go | No-Go | +| --- | --- | --- | --- | +| 1 | `python -m pytest` exits 0 in a fresh `.venv` | Yes | No | +| 2 | `python -m speed_calc` prints the current time and two lines of the form ` run speed: s` | Yes | No | +| 3 | Function names are `speed_calc_decorator`, `fast_function`, `slow_function` | Yes | No | +| 4 | Constants are only in `constants.py`; source has Doxygen comments | Yes | No | +| 5 | `docs/screenshots/` has 4 images, one per lecture step, referenced in the README | Yes | No | +| 6 | `pyproject.toml` lists no runtime dependencies | Yes | No | + +## Dependencies + +| Depends on | Reason | +| --- | --- | +| MIL-001 | Needs the project configuration and README skeleton | + +## Traceability + +| Business Case objective / KPI / user story | Reference | +| --- | --- | +| Objectives 1 and 2 (function names, tests) | [BC-001] | +| Objective 4 (one screenshot per step, README part) | [BC-001] | +| Success criteria 1, 2, 3 and 5 (tests, output, 0 runtime dependencies, screenshots) | [BC-001] | +| Constraint: `constants.py` holds the constants; Doxygen comments (Methodological and Standards Foundation) | [BC-001] | + +## Ownership + +| Role | Stakeholder ID (SA) | +| --- | --- | +| Owner | S01 | +| Approving reviewer | S01 | + +## Target Date + +2026-11-07 โ€” within the Business Case target of 2026-11-09. + +## Tasks + +| # | Task | Summary | Needs its own Use Case/User Story? | Reference | +| --- | --- | --- | --- | --- | +| 1 | Lecture step 1: print the current time | Create the package and `constants.py`, and print `time.time()` as in the starting code. Test with a fake clock. | No | | +| 2 | Lecture step 2: decorator skeleton | Write `speed_calc_decorator(function)` that returns a wrapper calling the function and preserving its metadata with `functools.wraps`. Test that the result and name are preserved. | No | | +| 3 | Lecture step 3: time the call | Make the wrapper read the clock before and after the call and print ` run speed: s`. The clock is injectable so the test asserts exact values. | No | | +| 4 | Lecture step 4: fast vs slow | Add `fast_function` (range 1,000,000) and `slow_function` (range 10,000,000) with the decorator, and the `__main__` entry point that prints the expected output shape. Constants live in `constants.py`. | No | | +| 5 | Doxygen comments on all source | Document modules, functions and constants with Doxygen-style comments, and check that `doxygen Doxyfile` runs without warnings if Doxygen is installed. | No | | +| 6 | Screenshots per lecture step | Render each step's real program output to a Portable Network Graphics (PNG) image in `docs/screenshots/` with a dev-only script (no host desktop capture), and add them to the README. | No | | +| 7 | Update README with run and test output | Add the four screenshots, the run command and the test command with expected results. | No | | + +--- + +[BC-001]: ../business-case.md diff --git a/docs/milestones/mil-003-wiki-and-screenshots.md b/docs/milestones/mil-003-wiki-and-screenshots.md new file mode 100644 index 0000000..0bdc0d2 --- /dev/null +++ b/docs/milestones/mil-003-wiki-and-screenshots.md @@ -0,0 +1,76 @@ +# Wiki in three languages + +## Metadata +| Key | Value | +| --- | --- | +| ID | MIL-003 | +| CrossReference | [BC-001] | +| Language | en | +| Domain | it | + +## Version History +| Date | Status | Author | Reviewer | Change | Commit | +| --- | --- | --- | --- | --- | --- | +| 2026-11-06 | Deprecated | Jens Tirsvad Nielsen | S01 | Review findings fixed: traceability to success criteria 4 and 5 (RC-005) | pending | +| 2026-11-06 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Go per RC-005; language checks confirmed by S01 | pending | + +--- + +## Purpose + +Decide whether the wiki explains what each lecture step gained, in English, +Danish and Bahasa Malaysia, with a screenshot per step. + +## Deliverable + +`docs/wiki/` with the same page set in three languages (`Home`, `Setup`, +`Step-1-Current-Time`, `Step-2-Decorator-Skeleton`, `Step-3-Timing-Wrapper`, +`Step-4-Fast-vs-Slow`) and `_Sidebar.md`, reviewed against `QC-WIKI-001`. + +## Go / No-Go Criteria + +| # | Criterion (objectively checkable) | Go | No-Go | +| --- | --- | --- | --- | +| 1 | `docs/wiki/` is flat; every English page has a `-da` and a `-ms` page | Yes | No | +| 2 | Each page starts with the language switch line | Yes | No | +| 3 | Each step page shows its screenshot and a "What we gained" section | Yes | No | +| 4 | `_Sidebar.md` follows the framework's shape (English list, Languages last) | Yes | No | +| 5 | The wiki review against `QC-WIKI-001` is a Go | Yes | No | + +## Dependencies + +| Depends on | Reason | +| --- | --- | +| MIL-002 | Needs the screenshots and the finished lecture steps | + +## Traceability + +| Business Case objective / KPI / user story | Reference | +| --- | --- | +| Objective 4 (wiki in three languages) | [BC-001] | +| Success criteria 4 and 5 (wiki languages, screenshots) | [BC-001] | + +## Ownership + +| Role | Stakeholder ID (SA) | +| --- | --- | +| Owner | S01 | +| Approving reviewer | S01 | + +## Target Date + +2026-11-09 โ€” the Business Case target date. + +## Tasks + +| # | Task | Summary | Needs its own Use Case/User Story? | Reference | +| --- | --- | --- | --- | --- | +| 1 | Write English wiki pages | Home, Setup and one page per lecture step. Each step page shows the screenshot and explains what was gained (time.time, closures, functools.wraps, decorators). English is the authoritative text. | No | | +| 2 | Translate wiki to Danish | Same page set as English with `-da` suffix, language line, code and commands unchanged. | No | | +| 3 | Translate wiki to Bahasa Malaysia | Same page set as English with `-ms` suffix, language line, code and commands unchanged. | No | | +| 4 | Add _Sidebar.md | One English page list, then a Languages section with Home links for en, da, ms. | No | | +| 5 | Check the wiki is enabled on the host | The publish workflow copies `docs/wiki/` to the host wiki after merge only if the wiki is enabled. Check the setting and report if it is off. | No | | + +--- + +[BC-001]: ../business-case.md diff --git a/docs/project-plan.md b/docs/project-plan.md new file mode 100644 index 0000000..d09118c --- /dev/null +++ b/docs/project-plan.md @@ -0,0 +1,99 @@ +# Project Plan + +## Metadata +| Key | Value | +| --- | --- | +| ID | PP-001 | +| CrossReference | [BC-001], [SA-001], [MIL-001], [MIL-002], [MIL-003] | +| Language | en | +| Domain | it | + +## Version History +| Date | Status | Author | Reviewer | Change | Commit | +| --- | --- | --- | --- | --- | --- | +| 2026-11-06 | Deprecated | Jens Tirsvad Nielsen | S01 | Initial version | pending | +| 2026-11-06 | Accepted | Jens Tirsvad Nielsen | S01 | Informal review against QC-PP-001 fixed 7 defects (constants.py gateway, No-Go rule, sources, risk trace, stories, sync mark); accepted by S01 as Product Owner through the accepted plan in chat on 2026-11-06 | pending | + +--- + +## Purpose + +This plan schedules three gateways that take the lecture-054 exercise from an +empty repository to a tested, documented solution with a three-language wiki, +within the Business Case constraint of finishing by 2026-11-09. + +## Planning Assumptions + +- The plan starts 2026-11-06 and ends by 2026-11-09 (source: [BC-001] Constraints, target 2026-11-09). +- Phase length: one working session per gateway (source: the author, from the scope of [BC-001]). +- One branch and one pull request per gateway, so that the steps stay traceable. +- Stakeholder S01 owns and reviews every gateway ([SA-001]). + +## Gateway Schedule + +| Gateway | Document | Window | Decision date | Owner | Stories | Main deliverable | Milestone | +| --- | --- | --- | --- | --- | --- | --- | --- | +| Project baseline and repository | [MIL-001] | 2026-11-06 | 2026-11-06 | S01 | none (technical tasks, see ADR-0001) | Project configuration, README, Doxyfile, ADR-0001, repository metadata | not yet synced | +| Speed calc decorator | [MIL-002] | 2026-11-06 to 2026-11-07 | 2026-11-07 | S01 | none (technical tasks, see ADR-0001) | Working package, tests, one screenshot per lecture step | not yet synced | +| Wiki in three languages | [MIL-003] | 2026-11-07 to 2026-11-09 | 2026-11-09 | S01 | none (technical tasks, see ADR-0001) | Wiki pages in en, da, ms explaining each lecture step | not yet synced | + +```plantuml +@startgantt +Project starts 2026-11-06 +[Project baseline] starts 2026-11-06 and ends 2026-11-06 +[Project baseline Go/No-Go] happens 2026-11-06 +[Speed calc decorator] starts 2026-11-06 and ends 2026-11-07 +[Speed calc decorator Go/No-Go] happens 2026-11-07 +[Wiki] starts 2026-11-07 and ends 2026-11-09 +[Wiki Go/No-Go] happens 2026-11-09 +@endgantt +``` + +## Scope Coverage + +| Business Case scope item | Gateway | +| --- | --- | +| `pyproject.toml`, `.gitignore`, `Doxyfile` | [MIL-001] | +| `constants.py` | [MIL-002] | +| README with venv and test instructions | [MIL-001], updated in [MIL-002] | +| Repository description and topics | [MIL-001] | +| Python package under `src/`, tests under `tests/` | [MIL-002] | +| One screenshot per lecture step | [MIL-002] | +| Wiki in en, da, ms | [MIL-003] | + +## Dependencies + +``` +MIL-001 โ†’ MIL-002 โ†’ MIL-003 +``` + +A No-Go stops the later gateways; their dates move by the same number of days. +S01, as Product Owner, decides whether the end date of 2026-11-09 moves; a move +beyond it changes the constraint in [BC-001] and needs a new version of it. + +## Plan Risks + +| Risk | Impact | Mitigation | +| --- | --- | --- | +| The wiki is not enabled on the git host (assumption of [BC-001]) | MIL-003 cannot be published | Task checks the setting early; stop and report if disabled | +| Screenshots need a rendering tool (relates to the screenshot risk of [BC-001]) | Delay in MIL-002 | Render from captured output with a dev-only tool, no host desktop | +| Timing tests are flaky (risk of [BC-001]) | False failures in MIL-002 | Tests inject a fake clock; checked by Go criterion 1 of [MIL-002] | +| The token in `.env` leaks (risk of [BC-001]) | Account compromise during MIL-001 | `.env` is git-ignored; checked by Go criterion 2 of [MIL-001] | + +## Open Issues + +- The request names the repository `Tirsvad-Udemy-100_days_of_code`, but `origin` + is `Tirsvad-Udemy-100-days-of-code/054-speed-calc-decorator`. The plan uses + `origin`. +- User stories and use cases are skipped: the exercise is one function with no + user interaction. The reason is recorded in ADR-0001 (task in [MIL-001]). +- Under autonomous mode the reviews of S01's documents are performed by the AI + as stand-in for S01 and are recorded as not independent. + +--- + +[BC-001]: ./business-case.md +[SA-001]: ./stakeholder-analysis.md +[MIL-001]: ./milestones/mil-001-project-baseline.md +[MIL-002]: ./milestones/mil-002-speed-calc-decorator.md +[MIL-003]: ./milestones/mil-003-wiki-and-screenshots.md diff --git a/docs/sqa/reviews/rc-001-business-case.md b/docs/sqa/reviews/rc-001-business-case.md new file mode 100644 index 0000000..04aeaef --- /dev/null +++ b/docs/sqa/reviews/rc-001-business-case.md @@ -0,0 +1,67 @@ +# RC-001 Review of BC-001 Business Case + +## Metadata +| Key | Value | +| --- | --- | +| ID | RC-001 | +| CrossReference | [BC-001], [QC-BC-001], [QC-LANG-001] | + +## Version History +| Date | Status | Author | Reviewer | Change | Commit | +| --- | --- | --- | --- | --- | --- | +| 2026-11-06 | Proposed | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version | pending | + +--- + +## Artifact Under Review + +- Instance reviewed: [BC-001] +- Checklist used: [QC-BC-001] and [QC-LANG-001] (the type is written in the PO language) +- Scope: full review. Round 1 found the defects named under Overall Verdict; they were fixed in the document and the criteria re-checked in round 2, which this record shows. +- Language and domain: en / it +- Language reviewer: S01 (a person; confirmed criteria 3, 5 and 9 of QC-LANG-001 in chat on 2026-11-06) +- Mode: autonomous, not independent (the reviewer is `AI as stand-in for S01`; S01 is also the author, the Product Owner and the named reviewer) + +## Checklist Results + +| # | Criterion | Status | Evidence/Notes | +| --- | --- | --- | --- | +| 1 | ROI/Cost-Benefit analysis is quantitative, or where qualitative, is explicitly justified | Pass | Section "Costโ€“Benefit Assessment" is qualitative and says why: "this is a personal learning project with no revenue, so numbers would add no information" | +| 2 | Risks are identified with documented impact and mitigation | Pass | Five risks, each row has Impact and Mitigation (flaky timing tests, token leak, wrong repository, translations, screenshot capture) | +| 3 | Success criteria are measurable, stating explicit targets rather than vague aspirations | Pass | Six criteria with Target and Measure (e.g. 100 % tests green via `python -m pytest`, 0 runtime dependencies, at least 5 topics). The measure of criterion 2 ("captured in the lecture-step screenshots") is checked by MIL-002 Go criterion 2 | +| 4 | Scope explicitly separates In Scope vs Out of Scope | Pass | Subsections "In Scope" and "Out of Scope" | +| 5 | Stakeholders are cross-referenced to Stakeholder Analysis IDs rather than re-described inline | Pass | The "Stakeholders" table keys on S01, S02, S03 and gives only the interest in this project; roles and power are not re-described. [SA-001] is in CrossReference | +| 6 | Methodology and quality-standard foundation are stated explicitly (e.g. ISO/IEC 25010, Larman) | Pass | "Methodological and Standards Foundation" names the framework, the ISO/IEC 25010:2023 tags and the coding-conventions skill | +| 7 | Assumptions and constraints are explicit and clearly distinguished from one another | Pass | Separate sections. Round 1 defect (fixed): the constraint read "greater than 3.13 (3.13 or newer)" (ambiguous) and "No runtime dependencies unless needed" contradicted success criterion 3 (0 runtime dependencies). Now "Python 3.13 or newer" and "No runtime dependencies" | +| 8 | Document supports executive decision-making with a clear, unambiguous recommendation | Pass | "Recommendation": "Proceed", with the reason | + +## 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 | Metadata has `Language` = `en` and `Domain` = `it` | +| 2 | `Language` is a BCP 47 code and `Domain` is a value from the registry's domain list | Pass | `en` is a BCP 47 code; `it` is in the domain table of `docs/artifact-registry.md` | +| 3 | The content (prose and table cells) is written in the stated language | Pass | Confirmed by S01 (a person) in chat, 2026-11-06. The English wording is correct | +| 4 | The register matches the one the registry gives for the artifact type | Pass | IT Executive English: short, outcome-oriented prose; technical detail (file names, commands) is limited to Scope and the Success Criteria measures, where it makes them checkable | +| 5 | Domain terms are the PO terms of the domain's dictionary, with no synonyms | Pass | Confirmed by S01 (a person) in chat, 2026-11-06. No DICT exists; the PO confirmed the terms are correct | +| 6 | Metadata keys, section headings, IDs and statuses are in English | Pass | All keys, headings and statuses are the framework's English ones | +| 7 | No translated twin (`..md`) exists beside the document | Pass | The `docs/` listing has no twin file | +| 8 | A change of language or domain since the previous accepted version has a Version History row and was reviewed again | N-A | No earlier accepted version exists and the language has been `en` since the first row | +| 9 | A reviewer competent in the domain, and in the language, has confirmed that the domain terms are used correctly | Pass | Confirmed by S01 (a person) in chat, 2026-11-06. S01 reads English and knows software and IT; the IT domain terms are used correctly | +| 10 | Abbreviations are spelled out on first use, in the stated language | Pass | Round 1: GUI, PyPI, API and CI were used unexpanded; expanded on first use in round 2. README and ISO/IEC are names, not abbreviations to expand | + +## Overall Verdict + +Go. No Fail on QC-BC-001 in round 2. Round 1 found two defects (criterion 7: ambiguous Python version wording and a contradiction between the dependency constraint and success criterion 3; QC-LANG-001 criterion 10: unexpanded abbreviations), fixed in the document. Criteria 3, 5 and 9 of QC-LANG-001 were Pending and are now Pass: S01 (a person) confirmed the English wording and the IT domain terms in chat on 2026-11-06. All Mandatory rows pass, so the verdict is Go and the Version History row of the document is Accepted. The review remains `Mode: autonomous, not independent` for the rest. Finding: no Domain Dictionary exists, so criterion 5 has no reference; it is not in the plan and is not added here. + +## Action Items + +| Action | Owner | Due | +| --- | --- | --- | +| Confirm criteria 3, 5 and 9 of QC-LANG-001 as a person (Closed: confirmed by S01 in chat, 2026-11-06; criteria set to Pass, verdict Go, document row Accepted) | S01 | 2026-11-06 | + +--- + +[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 diff --git a/docs/sqa/reviews/rc-002-stakeholder-analysis.md b/docs/sqa/reviews/rc-002-stakeholder-analysis.md new file mode 100644 index 0000000..a8e25d5 --- /dev/null +++ b/docs/sqa/reviews/rc-002-stakeholder-analysis.md @@ -0,0 +1,68 @@ +# RC-002 Review of SA-001 Stakeholder Analysis + +## Metadata +| Key | Value | +| --- | --- | +| ID | RC-002 | +| CrossReference | [SA-001], [QC-SA-001], [QC-LANG-001] | + +## Version History +| Date | Status | Author | Reviewer | Change | Commit | +| --- | --- | --- | --- | --- | --- | +| 2026-11-06 | Proposed | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version | pending | + +--- + +## Artifact Under Review + +- Instance reviewed: [SA-001] +- Checklist used: [QC-SA-001] and [QC-LANG-001] (the type is written in the PO language) +- Scope: full review. Round 1 found the defects named under Overall Verdict; they were fixed in the document and the criteria re-checked in round 2, which this record shows. +- Language and domain: en / it +- Language reviewer: S01 (a person; confirmed criteria 3, 5 and 9 of QC-LANG-001 in chat on 2026-11-06) +- Mode: autonomous, not independent (the reviewer is `AI as stand-in for S01`; S01 is also the author, the Product Owner and the named reviewer) + +## Checklist Results + +| # | Criterion | Status | Evidence/Notes | +| --- | --- | --- | --- | +| 1 | Power/Interest grid is filled for every stakeholder, with no gaps or unclassified entries | Pass | S01 HIGH/HIGH, S02 LOW/HIGH, S03 LOW/LOW, each with a Quadrant (Manage Closely, Keep Informed, Monitor); consistent with the grid | +| 2 | Each stakeholder is assigned a unique, stable ID reusable for RACI assignments in other artifacts | Pass | S01, S02, S03; used by BC-001 and the MIL-* Ownership tables | +| 3 | Roles and organizational context are defined with explicit Power and Interest levels, not just narrative description | Pass | Role/Title, Organization, Power Level and Interest Level columns are filled; a rationale section follows | +| 4 | Communication needs (channel, frequency, deliverable type) are mapped to project phases or milestones | Pass | CR-001 to CR-003 give channel, frequency, deliverable and MIL-* | +| 5 | Conflicting stakeholder interests are identified with documented mitigation or resolution strategies | Pass | Two conflicts (S01/S02 structure vs exact shape; S01/S03 thorough wiki vs short entry), each with a mitigation | +| 6 | Stakeholder concerns are explicitly traced to Business Case objectives | Pass | "Business Goal Alignment" maps every CN-ID. Round 1 defect (fixed): CN-007 (no runtime dependencies) was traced to objective 3 (venv and run instructions), which does not cover it; it now cites BC-001 success criterion 3 and the constraint "No runtime dependencies" | +| 7 | Primary concerns are expressed in both business language and a recognized quality-attribute mapping (e.g. FURPS+) | Pass | The concern table has a FURPS+ attribute per concern | +| 8 | Document is understandable and navigable by non-technical stakeholders reviewing their own entry | Pass | Plain sentences, one table row per stakeholder, a rationale per quadrant | +| 9 | Every concern has a stable ID (`CN-NNN`) in the concern register, with the stakeholder who raised it; IDs are never renumbered or reused | Pass | CN-001 to CN-007, each with its stakeholder. First version, so no renumbering can have happened yet | + +## 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 | Metadata has `Language` = `en` and `Domain` = `it` | +| 2 | `Language` is a BCP 47 code and `Domain` is a value from the registry's domain list | Pass | `en` is a BCP 47 code; `it` is in the domain table of `docs/artifact-registry.md` | +| 3 | The content (prose and table cells) is written in the stated language | Pass | Confirmed by S01 (a person) in chat, 2026-11-06. The English wording is correct | +| 4 | The register matches the one the registry gives for the artifact type | Pass | IT Professional English: precise technical terms (decorator, venv, README) used without explanation, which suits the reader the registry assumes | +| 5 | Domain terms are the PO terms of the domain's dictionary, with no synonyms | Pass | Confirmed by S01 (a person) in chat, 2026-11-06. No DICT exists; the PO confirmed the terms are correct | +| 6 | Metadata keys, section headings, IDs and statuses are in English | Pass | All keys, headings and statuses are the framework's English ones | +| 7 | No translated twin (`..md`) exists beside the document | Pass | The `docs/` listing has no twin file | +| 8 | A change of language or domain since the previous accepted version has a Version History row and was reviewed again | N-A | No earlier accepted version exists and the language has been `en` since the first row | +| 9 | A reviewer competent in the domain, and in the language, has confirmed that the domain terms are used correctly | Pass | Confirmed by S01 (a person) in chat, 2026-11-06. S01 reads English and knows software and IT; the IT domain terms are used correctly | +| 10 | Abbreviations are spelled out on first use, in the stated language | Pass | Round 1: FURPS+ was not spelled out; Purpose now lists its attributes. Other abbreviations are IDs or names | + +## Overall Verdict + +Go. No Fail on QC-SA-001 in round 2. Round 1 found one defect (criterion 6: CN-007 traced to a Business Case objective that does not cover it) and QC-LANG-001 criterion 10 (FURPS+ not spelled out), both fixed in the document. Criteria 3, 5 and 9 of QC-LANG-001 were Pending and are now Pass: S01 (a person) confirmed the English wording and the IT domain terms in chat on 2026-11-06. All Mandatory rows pass, so the verdict is Go and the Version History row of the document is Accepted. The review remains `Mode: autonomous, not independent` for the rest. + +## Action Items + +| Action | Owner | Due | +| --- | --- | --- | +| Confirm criteria 3, 5 and 9 of QC-LANG-001 as a person (Closed: confirmed by S01 in chat, 2026-11-06; criteria set to Pass, verdict Go, document row Accepted) | S01 | 2026-11-06 | + +--- + +[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 diff --git a/docs/sqa/reviews/rc-003-mil-001-project-baseline.md b/docs/sqa/reviews/rc-003-mil-001-project-baseline.md new file mode 100644 index 0000000..6972116 --- /dev/null +++ b/docs/sqa/reviews/rc-003-mil-001-project-baseline.md @@ -0,0 +1,65 @@ +# RC-003 Review of MIL-001 Project baseline and repository + +## Metadata +| Key | Value | +| --- | --- | +| ID | RC-003 | +| CrossReference | [MIL-001], [QC-MIL-001], [QC-LANG-001] | + +## Version History +| Date | Status | Author | Reviewer | Change | Commit | +| --- | --- | --- | --- | --- | --- | +| 2026-11-06 | Proposed | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version | pending | + +--- + +## Artifact Under Review + +- Instance reviewed: [MIL-001] +- Checklist used: [QC-MIL-001] and [QC-LANG-001] (the type is written in the PO language) +- Scope: full review. Round 1 found the defects named under Overall Verdict; they were fixed in the document and the criteria re-checked in round 2, which this record shows. +- Language and domain: en / it +- Language reviewer: S01 (a person; confirmed criteria 3, 5 and 9 of QC-LANG-001 in chat on 2026-11-06) +- Mode: autonomous, not independent (the reviewer is `AI as stand-in for S01`; S01 is also the author, the Product Owner and the named reviewer) + +## Checklist Results + +| # | Criterion | Status | Evidence/Notes | +| --- | --- | --- | --- | +| 1 | A concrete deliverable is defined for every gate | Pass | "Deliverable": pyproject.toml, Python .gitignore, Doxyfile, README, ADR-0001, repository description and topics | +| 2 | Explicit Go/No-Go criteria are stated for each gate | Pass | Six criteria, each checkable by a command or an API call. Round 1 defect (fixed): the deliverable ADR-0001 had no criterion; criterion 6 added | +| 3 | Dependencies on other milestones are explicitly mapped | Pass | "Dependencies": none, first gateway; matches PP-001 | +| 4 | Each milestone is traceable to a Business Case objective or KPI | Pass | Objectives 3 and 5; round 1 added success criteria 3 and 6, which Go criteria 1 and 5 verify | +| 5 | Milestone owner and approving reviewer are identified | Pass | Owner S01, approving reviewer S01. Note: the same person, so not independent; the project has no governance document that requires otherwise | +| 6 | Milestone has a defined target date consistent with project constraints | Pass | 2026-11-06, before the BC-001 target 2026-11-09; equals the decision date in PP-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 | Metadata has `Language` = `en` and `Domain` = `it` | +| 2 | `Language` is a BCP 47 code and `Domain` is a value from the registry's domain list | Pass | `en` is a BCP 47 code; `it` is in the domain table of `docs/artifact-registry.md` | +| 3 | The content (prose and table cells) is written in the stated language | Pass | Confirmed by S01 (a person) in chat, 2026-11-06. The English wording is correct | +| 4 | The register matches the one the registry gives for the artifact type | Pass | IT Executive English: purpose and target date read at a glance; Go/No-Go criteria are necessarily concrete (files, commands) so that they are checkable | +| 5 | Domain terms are the PO terms of the domain's dictionary, with no synonyms | Pass | Confirmed by S01 (a person) in chat, 2026-11-06. No DICT exists; the PO confirmed the terms are correct | +| 6 | Metadata keys, section headings, IDs and statuses are in English | Pass | All keys, headings and statuses are the framework's English ones | +| 7 | No translated twin (`..md`) exists beside the document | Pass | The `docs/` listing has no twin file | +| 8 | A change of language or domain since the previous accepted version has a Version History row and was reviewed again | N-A | No earlier accepted version exists and the language has been `en` since the first row | +| 9 | A reviewer competent in the domain, and in the language, has confirmed that the domain terms are used correctly | Pass | Confirmed by S01 (a person) in chat, 2026-11-06. S01 reads English and knows software and IT; the IT domain terms are used correctly | +| 10 | Abbreviations are spelled out on first use, in the stated language | Pass | Round 1: API and ADR were not expanded; expanded on first use in the Go criteria and the task | + +## Overall Verdict + +Go. No Fail on QC-MIL-001 in round 2. Round 1 found one defect (criterion 2: deliverable ADR-0001 without a Go criterion; plus thin traceability for criterion 4) and QC-LANG-001 criterion 10 (API and ADR unexpanded), all fixed. ADR-0001 is a task of this milestone; it is now written and accepted (RC-006). Criteria 3, 5 and 9 of QC-LANG-001 were Pending and are now Pass: S01 (a person) confirmed the English wording and the IT domain terms in chat on 2026-11-06. All Mandatory rows pass, so the verdict is Go and the Version History row of the document is Accepted. The review remains `Mode: autonomous, not independent` for the rest. Finding: no governance document defines escalation; S01 is owner and reviewer. + +## Action Items + +| Action | Owner | Due | +| --- | --- | --- | +| Confirm criteria 3, 5 and 9 of QC-LANG-001 as a person (Closed: confirmed by S01 in chat, 2026-11-06; criteria set to Pass, verdict Go, document row Accepted) | S01 | 2026-11-06 | + +--- + +[MIL-001]: ../../milestones/mil-001-project-baseline.md +[QC-MIL-001]: ../../../framework/qc/artifacts/qc-milestones-gateways.md +[QC-LANG-001]: ../../../framework/qc/artifacts/qc-language-domain.md diff --git a/docs/sqa/reviews/rc-004-mil-002-speed-calc-decorator.md b/docs/sqa/reviews/rc-004-mil-002-speed-calc-decorator.md new file mode 100644 index 0000000..c562a49 --- /dev/null +++ b/docs/sqa/reviews/rc-004-mil-002-speed-calc-decorator.md @@ -0,0 +1,65 @@ +# RC-004 Review of MIL-002 Speed calc decorator + +## Metadata +| Key | Value | +| --- | --- | +| ID | RC-004 | +| CrossReference | [MIL-002], [QC-MIL-001], [QC-LANG-001] | + +## Version History +| Date | Status | Author | Reviewer | Change | Commit | +| --- | --- | --- | --- | --- | --- | +| 2026-11-06 | Proposed | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version | pending | + +--- + +## Artifact Under Review + +- Instance reviewed: [MIL-002] +- Checklist used: [QC-MIL-001] and [QC-LANG-001] (the type is written in the PO language) +- Scope: full review. Round 1 found the defects named under Overall Verdict; they were fixed in the document and the criteria re-checked in round 2, which this record shows. +- Language and domain: en / it +- Language reviewer: S01 (a person; confirmed criteria 3, 5 and 9 of QC-LANG-001 in chat on 2026-11-06) +- Mode: autonomous, not independent (the reviewer is `AI as stand-in for S01`; S01 is also the author, the Product Owner and the named reviewer) + +## Checklist Results + +| # | Criterion | Status | Evidence/Notes | +| --- | --- | --- | --- | +| 1 | A concrete deliverable is defined for every gate | Pass | "Deliverable": package `speed_calc` with its modules, tests, one screenshot per lecture step shown in the README | +| 2 | Explicit Go/No-Go criteria are stated for each gate | Pass | Six criteria; 1, 2, 3, 5 and 6 are command or count checks. Criterion 4 (Doxygen comments) is by inspection and is backed by task 5, which runs `doxygen Doxyfile`; accepted as checkable | +| 3 | Dependencies on other milestones are explicitly mapped | Pass | Depends on MIL-001; matches PP-001 | +| 4 | Each milestone is traceable to a Business Case objective or KPI | Pass | Objectives 1, 2 and 4. Round 1 defect (fixed): success criteria 1, 2, 3, 5 and the constants and Doxygen constraint were not cited; now in the Traceability table | +| 5 | Milestone owner and approving reviewer are identified | Pass | Owner S01, approving reviewer S01 (not independent; see the note in RC-003) | +| 6 | Milestone has a defined target date consistent with project constraints | Pass | 2026-11-07, before 2026-11-09; equals the decision date in PP-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 | Metadata has `Language` = `en` and `Domain` = `it` | +| 2 | `Language` is a BCP 47 code and `Domain` is a value from the registry's domain list | Pass | `en` is a BCP 47 code; `it` is in the domain table of `docs/artifact-registry.md` | +| 3 | The content (prose and table cells) is written in the stated language | Pass | Confirmed by S01 (a person) in chat, 2026-11-06. The English wording is correct | +| 4 | The register matches the one the registry gives for the artifact type | Pass | IT Executive English: purpose and target date read at a glance; Go/No-Go criteria are necessarily concrete so that they are checkable | +| 5 | Domain terms are the PO terms of the domain's dictionary, with no synonyms | Pass | Confirmed by S01 (a person) in chat, 2026-11-06. No DICT exists; the PO confirmed the terms are correct | +| 6 | Metadata keys, section headings, IDs and statuses are in English | Pass | All keys, headings and statuses are the framework's English ones | +| 7 | No translated twin (`..md`) exists beside the document | Pass | The `docs/` listing has no twin file | +| 8 | A change of language or domain since the previous accepted version has a Version History row and was reviewed again | N-A | No earlier accepted version exists and the language has been `en` since the first row | +| 9 | A reviewer competent in the domain, and in the language, has confirmed that the domain terms are used correctly | Pass | Confirmed by S01 (a person) in chat, 2026-11-06. S01 reads English and knows software and IT; the IT domain terms are used correctly | +| 10 | Abbreviations are spelled out on first use, in the stated language | Pass | Round 1: PNG was not expanded; expanded in task 6 | + +## Overall Verdict + +Go. No Fail on QC-MIL-001 in round 2. Round 1 found one defect (criterion 4: thin traceability) and QC-LANG-001 criterion 10 (PNG unexpanded), both fixed. Criteria 3, 5 and 9 of QC-LANG-001 were Pending and are now Pass: S01 (a person) confirmed the English wording and the IT domain terms in chat on 2026-11-06. All Mandatory rows pass, so the verdict is Go and the Version History row of the document is Accepted. The review remains `Mode: autonomous, not independent` for the rest. + +## Action Items + +| Action | Owner | Due | +| --- | --- | --- | +| Confirm criteria 3, 5 and 9 of QC-LANG-001 as a person (Closed: confirmed by S01 in chat, 2026-11-06; criteria set to Pass, verdict Go, document row Accepted) | S01 | 2026-11-06 | + +--- + +[MIL-002]: ../../milestones/mil-002-speed-calc-decorator.md +[QC-MIL-001]: ../../../framework/qc/artifacts/qc-milestones-gateways.md +[QC-LANG-001]: ../../../framework/qc/artifacts/qc-language-domain.md diff --git a/docs/sqa/reviews/rc-005-mil-003-wiki.md b/docs/sqa/reviews/rc-005-mil-003-wiki.md new file mode 100644 index 0000000..62f781c --- /dev/null +++ b/docs/sqa/reviews/rc-005-mil-003-wiki.md @@ -0,0 +1,65 @@ +# RC-005 Review of MIL-003 Wiki in three languages + +## Metadata +| Key | Value | +| --- | --- | +| ID | RC-005 | +| CrossReference | [MIL-003], [QC-MIL-001], [QC-LANG-001] | + +## Version History +| Date | Status | Author | Reviewer | Change | Commit | +| --- | --- | --- | --- | --- | --- | +| 2026-11-06 | Proposed | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version | pending | + +--- + +## Artifact Under Review + +- Instance reviewed: [MIL-003] +- Checklist used: [QC-MIL-001] and [QC-LANG-001] (the type is written in the PO language) +- Scope: full review. Round 1 found the defects named under Overall Verdict; they were fixed in the document and the criteria re-checked in round 2, which this record shows. +- Language and domain: en / it +- Language reviewer: S01 (a person; confirmed criteria 3, 5 and 9 of QC-LANG-001 in chat on 2026-11-06) +- Mode: autonomous, not independent (the reviewer is `AI as stand-in for S01`; S01 is also the author, the Product Owner and the named reviewer) + +## Checklist Results + +| # | Criterion | Status | Evidence/Notes | +| --- | --- | --- | --- | +| 1 | A concrete deliverable is defined for every gate | Pass | "Deliverable": `docs/wiki/` with six pages in three languages plus `_Sidebar.md`, reviewed against QC-WIKI-001 | +| 2 | Explicit Go/No-Go criteria are stated for each gate | Pass | Five criteria, checkable by file listing, first-line check and the QC-WIKI-001 review (that checklist exists as `framework/qc/artifacts/qc-wiki.md`); page set and sidebar shape match `framework/process/wiki.md` and QC-WIKI-001 criteria 2, 5, 10, 11, 12 and 16 | +| 3 | Dependencies on other milestones are explicitly mapped | Pass | Depends on MIL-002 (screenshots); matches PP-001 | +| 4 | Each milestone is traceable to a Business Case objective or KPI | Pass | Objective 4; round 1 added success criteria 4 and 5, which Go criteria 1 and 3 verify | +| 5 | Milestone owner and approving reviewer are identified | Pass | Owner S01, approving reviewer S01 (not independent; see the note in RC-003) | +| 6 | Milestone has a defined target date consistent with project constraints | Pass | 2026-11-09, equal to the BC-001 target and to the decision date in PP-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 | Metadata has `Language` = `en` and `Domain` = `it` | +| 2 | `Language` is a BCP 47 code and `Domain` is a value from the registry's domain list | Pass | `en` is a BCP 47 code; `it` is in the domain table of `docs/artifact-registry.md` | +| 3 | The content (prose and table cells) is written in the stated language | Pass | Confirmed by S01 (a person) in chat, 2026-11-06. The English wording is correct | +| 4 | The register matches the one the registry gives for the artifact type | Pass | IT Executive English: purpose and target date read at a glance; Go/No-Go criteria are necessarily concrete so that they are checkable | +| 5 | Domain terms are the PO terms of the domain's dictionary, with no synonyms | Pass | Confirmed by S01 (a person) in chat, 2026-11-06. No DICT exists; the PO confirmed the terms are correct | +| 6 | Metadata keys, section headings, IDs and statuses are in English | Pass | All keys, headings and statuses are the framework's English ones | +| 7 | No translated twin (`..md`) exists beside the document | Pass | The `docs/` listing has no twin file | +| 8 | A change of language or domain since the previous accepted version has a Version History row and was reviewed again | N-A | No earlier accepted version exists and the language has been `en` since the first row | +| 9 | A reviewer competent in the domain, and in the language, has confirmed that the domain terms are used correctly | Pass | Confirmed by S01 (a person) in chat, 2026-11-06. S01 reads English and knows software and IT; the IT domain terms are used correctly | +| 10 | Abbreviations are spelled out on first use, in the stated language | Pass | No abbreviation needs expanding | + +## Overall Verdict + +Go. No Fail on QC-MIL-001 in round 2. Round 1 found one weak spot (criterion 4: thin traceability), fixed. Observation: the file name says wiki-and-screenshots while the title and scope are the wiki only (screenshots belong to MIL-002); harmless, not renamed to keep the link stable. Criteria 3, 5 and 9 of QC-LANG-001 were Pending and are now Pass: S01 (a person) confirmed the English wording and the IT domain terms in chat on 2026-11-06. All Mandatory rows pass, so the verdict is Go and the Version History row of the document is Accepted. The review remains `Mode: autonomous, not independent` for the rest. + +## Action Items + +| Action | Owner | Due | +| --- | --- | --- | +| Confirm criteria 3, 5 and 9 of QC-LANG-001 as a person (Closed: confirmed by S01 in chat, 2026-11-06; criteria set to Pass, verdict Go, document row Accepted) | S01 | 2026-11-06 | + +--- + +[MIL-003]: ../../milestones/mil-003-wiki-and-screenshots.md +[QC-MIL-001]: ../../../framework/qc/artifacts/qc-milestones-gateways.md +[QC-LANG-001]: ../../../framework/qc/artifacts/qc-language-domain.md diff --git a/docs/sqa/reviews/rc-006-adr-0001.md b/docs/sqa/reviews/rc-006-adr-0001.md new file mode 100644 index 0000000..e9d4491 --- /dev/null +++ b/docs/sqa/reviews/rc-006-adr-0001.md @@ -0,0 +1,54 @@ +# SQA Review Record + +## Metadata +| Key | Value | +| --- | --- | +| ID | RC-006 | +| CrossReference | [ADR-0001], [QC-ADR-001] | + +## Version History +| Date | Status | Author | Reviewer | Change | Commit | +| --- | --- | --- | --- | --- | --- | +| 2026-11-06 | Proposed | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version: review of ADR-0001, two rounds | pending | + +--- + +## Artifact Under Review + +- Instance reviewed: [ADR-0001] +- Checklist used: [QC-ADR-001] (a technical type: no QC-LANG-001 table) +- Scope: full review. Round 1 found two defects (criterion 10 and the shared rationale for criterion 4); they were fixed in the ADR and the criteria re-checked in round 2, which this record shows. +- Language and domain: n/a (technical type) +- Language reviewer: none +- Mode: autonomous, not independent (the reviewer is `AI as stand-in for S01`; S01 is also the author and Product Owner) + +## Checklist Results + +| # | Criterion | Status | Evidence/Notes | +| --- | --- | --- | --- | +| 1 | The ID (`ADR-NNNN`, 4-digit) matches the filename number and is unique and sequential | Pass | ID `ADR-0001`, file `adr-0001-...`; the only ADR; registry next version is 0002 | +| 2 | Context states the problem, the forces (cost, risk, constraints) and the options evaluated | Pass | Problem: stories/use cases and code layout for a one-function exercise; Forces paragraph (date 2026-11-09, S02 and S03 wants, layers hiding the three functions); options (a) and (b) for both decisions | +| 3 | At least two options were considered, or the absence of alternatives is justified | Pass | Two options for each of the two decisions | +| 4 | Decision is stated in one or two unhedged sentences and matches one of the evaluated options | Pass | Two sentences, no hedging; they match option (b) of each decision. Round 1: two decisions share one driver (proportion to the exercise), now stated in Context, so they are not unrelated | +| 5 | Consequences list both Positive and Negative outcomes | Pass | Both lists present; negatives: does not scale, no story-level traceability | +| 6 | Quality-attribute impacts (performance, security, portability, etc.) are named where the decision affects them | Pass | Maintainability/scalability limit named as negative; no runtime dependencies named as positive; performance and security are not affected | +| 7 | Affected Artifacts are listed as links, and each is also in CrossReference | Pass | BC-001 and PP-001 are linked and both in CrossReference; PP-001 "Stories" column does say "none" and point to ADR-0001 | +| 8 | Status changes are recorded as new Version History rows with a Change summary and Commit link; retained rows are never rewritten | Pass | Acceptance is a new row, the earlier row only moves to Deprecated as the RC process says; Commit is `pending` until the commit exists (resolved by `resolve-pending-commits.sh`) | +| 9 | A superseded or deprecated ADR names its successor, and the successor links back | N-A | ADR-0001 is not superseded; the Deprecated row is a version row, not the ADR | +| 10 | Written in business or technical language of the domain, with no unexplained abbreviations | Pass | Round 1 Fail: S01 to S03 were bare IDs. Fixed: S01, S02 and S03 are now glossed in Context | +| 11 | Status is one of `Proposed`, `Accepted`, `Rejected`, `Deprecated` or `Superseded by ADR-NNNN`, and every Version History row uses only these | Pass | Rows use `Deprecated` and `Accepted` only | + +## Overall Verdict + +Go. Every Mandatory criterion passes after the two round 1 fixes; criterion 9 is N-A with a reason. Not independent: the author and the stand-in reviewer are the same party. + +## Action Items + +| Action | Owner | Due | +| --- | --- | --- | +| Resolve the pending commit links after the commit | S01 | 2026-11-09 | + +--- + +[ADR-0001]: ../../adr/adr-0001-skip-stories-plain-package.md +[QC-ADR-001]: ../../../framework/qc/artifacts/qc-adr.md diff --git a/docs/sqa/traceability-matrix.md b/docs/sqa/traceability-matrix.md new file mode 100644 index 0000000..cd081ed --- /dev/null +++ b/docs/sqa/traceability-matrix.md @@ -0,0 +1,87 @@ +# Traceability Matrix + +## Metadata +| Key | Value | +| --- | --- | +| ID | TM-001 | +| CrossReference | [BC-001], [SA-001] | + +## Version History +| Date | Status | Author | Reviewer | Change | Commit | +| --- | --- | --- | --- | --- | --- | +| 2026-11-06 | Proposed | Jens Tirsvad Nielsen | S01 | Initial version: BC, SA, PP, MIL-001 to MIL-003 and RC-001 to RC-005 | pending | + +--- + +## Purpose + +Tracks backward/forward links between artifact instances so that the Business Case's +cross-artifact traceability success criterion is measurable. A row is added or +updated whenever an artifact instance is created or reviewed. + +## Traceability Table + +| Artifact Instance | Type | Language | Domain | Upstream (Backward Link) | Downstream (Forward Link) | Last Reviewed (RC-ID) | +| --- | --- | --- | --- | --- | --- | --- | +| [SA-001] | Stakeholder Analysis | en | it | - | [BC-001], [PP-001] | [RC-002] (Go) | +| [BC-001] | Business Case | en | it | [SA-001] | [PP-001], [MIL-001], [MIL-002], [MIL-003] | [RC-001] (Go) | +| [PP-001] | Project Plan | en | it | [BC-001], [SA-001] | [MIL-001], [MIL-002], [MIL-003] | - (no review gate; accepted by S01 through the accepted plan) | +| [MIL-001] | Milestone / Gateway | en | it | [BC-001], [PP-001] | [MIL-002]; source code is not built yet; ADR-0001 is written | [RC-003] (Go) | +| [MIL-002] | Milestone / Gateway | en | it | [BC-001], [PP-001], [MIL-001] | [MIL-003]; source code and tests are not built yet | [RC-004] (Go) | +| [MIL-003] | Milestone / Gateway | en | it | [BC-001], [PP-001], [MIL-002] | - | [RC-005] (Go) | +| [ADR-0001] | Architecture Decision Record | n/a | n/a | [BC-001], [PP-001] | source code and tests are not built yet | [RC-006] (Go) | +| [RC-001] | SQA Review Record | - | - | [BC-001] | - | - | +| [RC-002] | SQA Review Record | - | - | [SA-001] | - | - | +| [RC-003] | SQA Review Record | - | - | [MIL-001] | - | - | +| [RC-004] | SQA Review Record | - | - | [MIL-002] | - | - | +| [RC-005] | SQA Review Record | - | - | [MIL-003] | - | - | +| [RC-006] | SQA Review Record | - | - | [ADR-0001] | - | - | + +## Concern Coverage + +No view (architecture, design or use case artifact) exists yet, and none is planned +before the milestones: the exercise is one function and the reason for skipping +user stories and use cases is recorded in ADR-0001, a task of [MIL-001] +(accepted). Each concern is delivered by a milestone Go criterion; that is +noted in the first column. There is no Architecture Description, so the gaps +are not listed there. + +| Concern (CN-ID) | Views that answer it | Decisions (ADR) | Quality check (TP) | Status | +| --- | --- | --- | --- | --- | +| CN-001 | none; delivered by [MIL-002] Go criteria 1 and 2 | none (ADR-0001 does not address it) | none | Gap | +| CN-002 | none; delivered by [MIL-002] Go criterion 1 | none (ADR-0001 does not address it) | none | Gap | +| CN-003 | none; delivered by [MIL-003] Go criteria 1 to 3 | none (ADR-0001 does not address it) | none | Gap | +| CN-004 | none; delivered by [MIL-002] Go criterion 3 | none (ADR-0001 does not address it) | none | Gap | +| CN-005 | none; delivered by [MIL-001] Go criterion 3 | none (ADR-0001 does not address it) | none | Gap | +| CN-006 | none; delivered by [MIL-001] Go criteria 3 and 5 | none (ADR-0001 does not address it) | none | Gap | +| CN-007 | none; delivered by [MIL-001] Go criterion 1 and [MIL-002] Go criterion 6 | none (ADR-0001 does not address it) | none | Gap | + +## Open Inconsistencies + +| # | Views | Inconsistency | Found in (RC-ID) | Status | Resolved in | +| --- | --- | --- | --- | --- | --- | +| 1 | [SA-001], [BC-001] | CN-007 (no runtime dependencies) was traced to Business Case objective 3 (venv and run instructions), which does not cover it | [RC-002] | Closed | [SA-001] version of 2026-11-06 | +| 2 | [BC-001] | The constraint "No runtime dependencies unless needed" contradicted success criterion 3 (0 runtime dependencies) | [RC-001] | Closed | [BC-001] version of 2026-11-06 | +| 3 | [PP-001], [MIL-002] | The plan placed `constants.py` at [MIL-001], while [MIL-002] task 1 creates it | informal review of [PP-001] (no RC) | Closed | [PP-001] version of 2026-11-06 | + +## Coverage Notes + +- Types with no instance yet: KPI, BMC, BPMN, UCD, US, UC, DM, SSD, OC, SD, DCD, ERD, TP, AD, GOV, DICT. User stories and use cases are skipped on purpose (recorded in [ADR-0001]); GOV and DICT are not in the plan, which leaves QC-LANG-001 criterion 5 without a dictionary to check against. +- `-` in Upstream means foundational; in Downstream, nothing is built on it yet; in Last Reviewed, no `RC-*` exists yet. +- All five reviews are `Mode: autonomous, not independent` and `Go`: S01 confirmed criteria 3, 5 and 9 of QC-LANG-001 as a person in chat on 2026-11-06, so BC-001, SA-001 and MIL-001 to MIL-003 are `Accepted`. + +--- + +[BC-001]: ../business-case.md +[SA-001]: ../stakeholder-analysis.md +[PP-001]: ../project-plan.md +[MIL-001]: ../milestones/mil-001-project-baseline.md +[MIL-002]: ../milestones/mil-002-speed-calc-decorator.md +[MIL-003]: ../milestones/mil-003-wiki-and-screenshots.md +[RC-001]: ./reviews/rc-001-business-case.md +[RC-002]: ./reviews/rc-002-stakeholder-analysis.md +[RC-003]: ./reviews/rc-003-mil-001-project-baseline.md +[RC-004]: ./reviews/rc-004-mil-002-speed-calc-decorator.md +[RC-005]: ./reviews/rc-005-mil-003-wiki.md +[RC-006]: ./reviews/rc-006-adr-0001.md +[ADR-0001]: ../adr/adr-0001-skip-stories-plain-package.md diff --git a/docs/stakeholder-analysis.md b/docs/stakeholder-analysis.md new file mode 100644 index 0000000..25d2ab9 --- /dev/null +++ b/docs/stakeholder-analysis.md @@ -0,0 +1,88 @@ +# Stakeholder Analysis + +## Metadata +| Key | Value | +| --- | --- | +| ID | SA-001 | +| CrossReference | [BC-001] | +| Language | en | +| Domain | it | + +## Version History +| Date | Status | Author | Reviewer | Change | Commit | +| --- | --- | --- | --- | --- | --- | +| 2026-11-06 | Deprecated | Jens Tirsvad Nielsen | S01 | Review findings fixed: CN-007 traced to success criterion 3, abbreviations (RC-002) | pending | +| 2026-11-06 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Go per RC-002; language checks confirmed by S01 | pending | + +--- + +## Purpose + +This analysis names the people the project serves and what each needs, so that +owners, reviewers and tasks can cite stable IDs. It uses the power/interest grid +and maps concerns to FURPS+ (Functionality, Usability, Reliability, Performance, +Supportability, plus design, implementation, interface and physical constraints). + +## Stakeholder Summary Table + +| ID | Name | Role/Title | Organization | Power Level | Interest Level | Quadrant | Primary Concern (Business Language) | +| --- | --- | --- | --- | --- | --- | --- | --- | +| S01 | Jens Tirsvad Nielsen (course participant) | Product Owner, developer and reviewer | Tirsvad | HIGH | HIGH | Manage Closely | A correct exercise solution and a record of what was learned | +| S02 | Udemy coursists | Fellow participants who share and compare code | Udemy course community | LOW | HIGH | Keep Informed | Readable, runnable code with the assignment's function names, and README run instructions | +| S03 | GitHub viewers | Visitors who browse the repository for ideas | Public | LOW | LOW | Monitor | A clear repository description, topics and README, and no runtime dependencies | + +## Power/Interest Classification Rationale + +- **Manage Closely (S01):** decides scope, writes, reviews and accepts everything. +- **Keep Informed (S02):** no authority over the project, but depends on its + clarity; the README and wiki are the channel. +- **Monitor (S03):** casual visitors with no stake beyond a good first + impression; the description, topics and README serve them. + +## Primary Concerns and FURPS+ Mapping + +| Concern ID | Stakeholder | Concern | FURPS+ attribute | +| --- | --- | --- | --- | +| CN-001 | S01 | The decorator prints the time a function takes, like the expected output | Functionality | +| CN-002 | S01 | Tests prove the behaviour without depending on real elapsed time | Reliability | +| CN-003 | S01 | The learning of each lecture step is written down in three languages | Supportability | +| CN-004 | S02 | Function names match the assignment (`speed_calc_decorator`, `fast_function`, `slow_function`) | Functionality | +| CN-005 | S02 | Setup and run instructions with a local `.venv` are easy to follow | Usability | +| CN-006 | S03 | Repository description, topics and README explain the project at a glance | Usability | +| CN-007 | S03 | The project installs and runs with no runtime dependencies | Implementation | + +## Communication Requirements + +| ID | Channel | Frequency | Deliverable | Phase / Milestone | +| --- | --- | --- | --- | --- | +| CR-001 | Pull request review | One per milestone | Pull request with the milestone's changes | MIL-001, MIL-002, MIL-003 | +| CR-002 | README | Updated per milestone | Run and test instructions with screenshots | MIL-001, MIL-002 | +| CR-003 | Wiki (en, da, ms) | Once | Lecture-step explanations with screenshots | MIL-003 | + +## Conflicting Interests and Mitigations + +| Conflict | Stakeholders | Mitigation | +| --- | --- | --- | +| S02 wants the exact assignment shape, S01 wants well-structured code (package, constants, tests) | S01, S02 | Keep the assignment's function names and output; add structure around them | +| S01 wants a thorough wiki in three languages, S03 wants a short entry point | S01, S03 | README is short and links to the wiki for detail | + +## Traceability Analysis + +### Business Goal Alignment + +| Stakeholder | Concern | Business Case objective | +| --- | --- | --- | +| S01 | CN-001, CN-002 | [BC-001] objectives 1 and 2 | +| S01 | CN-003 | [BC-001] objective 4 | +| S02 | CN-004 | [BC-001] objective 1 | +| S02 | CN-005 | [BC-001] objective 3 | +| S03 | CN-006 | [BC-001] objectives 4 and 5 | +| S03 | CN-007 | [BC-001] success criterion 3 (0 runtime dependencies) and the constraint "No runtime dependencies" | + +## Sign-Off + +Product Owner: S01, accepted 2026-11-06 via RC-002. + +--- + +[BC-001]: ./business-case.md diff --git a/framework b/framework new file mode 160000 index 0000000..be602df --- /dev/null +++ b/framework @@ -0,0 +1 @@ +Subproject commit be602df82f39e02ecba8d8b4665730e71d0a79a0 diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..66505d2 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,29 @@ +[build-system] +requires = ["setuptools>=75"] +build-backend = "setuptools.build_meta" + +[project] +name = "speed-calc-decorator" +version = "0.1.0" +description = "Udemy 100 Days of Code, lecture 054: a decorator that measures how long a function takes to run." +readme = "README.md" +requires-python = ">=3.13" +license = "AGPL-3.0-or-later" +license-files = ["LICENSE"] +authors = [{ name = "Jens Tirsvad Nielsen" }] +keywords = ["python", "decorator", "udemy", "100-days-of-code", "timing"] +dependencies = [] + +[project.optional-dependencies] +dev = ["pytest>=8", "pillow>=11"] + +[tool.setuptools.packages.find] +where = ["src"] + +[tool.pytest.ini_options] +testpaths = ["tests"] +pythonpath = ["src"] +addopts = "-ra" + +[tool.ruff] +line-length = 88 -- 2.54.0 From fa6cc8ba18be9f134280c794f7406c818aff5ff2 Mon Sep 17 00:00:00 2001 From: Jens Tirsvad Nielsen Date: Fri, 6 Nov 2026 12:37:51 +0800 Subject: [PATCH 2/2] Resolve pending commit links --- docs/adr/adr-0001-skip-stories-plain-package.md | 5 +++-- docs/business-case.md | 5 +++-- docs/milestones/mil-001-project-baseline.md | 5 +++-- docs/milestones/mil-002-speed-calc-decorator.md | 5 +++-- docs/milestones/mil-003-wiki-and-screenshots.md | 5 +++-- docs/project-plan.md | 5 +++-- docs/sqa/reviews/rc-001-business-case.md | 3 ++- docs/sqa/reviews/rc-002-stakeholder-analysis.md | 3 ++- docs/sqa/reviews/rc-003-mil-001-project-baseline.md | 3 ++- docs/sqa/reviews/rc-004-mil-002-speed-calc-decorator.md | 3 ++- docs/sqa/reviews/rc-005-mil-003-wiki.md | 3 ++- docs/sqa/reviews/rc-006-adr-0001.md | 3 ++- docs/sqa/traceability-matrix.md | 3 ++- docs/stakeholder-analysis.md | 5 +++-- 14 files changed, 35 insertions(+), 21 deletions(-) diff --git a/docs/adr/adr-0001-skip-stories-plain-package.md b/docs/adr/adr-0001-skip-stories-plain-package.md index 21175cf..a3c25e0 100644 --- a/docs/adr/adr-0001-skip-stories-plain-package.md +++ b/docs/adr/adr-0001-skip-stories-plain-package.md @@ -9,8 +9,8 @@ ## Version History | Date | Status | Author | Reviewer | Change | Commit | | --- | --- | --- | --- | --- | --- | -| 2026-11-06 | Deprecated | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version | pending | -| 2026-11-06 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Review RC-006 fixed 2 defects (stakeholder IDs S01 to S03 now explained; shared rationale for the two decisions stated in Context); accepted as stand-in for S01 in autonomous mode, not independent | pending | +| 2026-11-06 | Deprecated | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version | [a07d05b] | +| 2026-11-06 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Review RC-006 fixed 2 defects (stakeholder IDs S01 to S03 now explained; shared rationale for the two decisions stated in Context); accepted as stand-in for S01 in autonomous mode, not independent | [a07d05b] | Allowed Status values: `Proposed`, `Accepted`, `Rejected`, `Deprecated`, `Superseded by ADR-NNNN`. @@ -65,3 +65,4 @@ free of any import from the demo or entry modules. [BC-001]: ../business-case.md [PP-001]: ../project-plan.md +[a07d05b]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/054-speed-calc-decorator/commit/a07d05b385e6b831b90731aefe08f078ebb951ca diff --git a/docs/business-case.md b/docs/business-case.md index 7773f9a..3b7e7c1 100644 --- a/docs/business-case.md +++ b/docs/business-case.md @@ -11,8 +11,8 @@ ## Version History | Date | Status | Author | Reviewer | Change | Commit | | --- | --- | --- | --- | --- | --- | -| 2026-11-06 | Deprecated | Jens Tirsvad Nielsen | S01 | Review findings fixed: constraint wording, abbreviations spelled out (RC-001) | pending | -| 2026-11-06 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Go per RC-001; language checks confirmed by S01 | pending | +| 2026-11-06 | Deprecated | Jens Tirsvad Nielsen | S01 | Review findings fixed: constraint wording, abbreviations spelled out (RC-001) | [a07d05b] | +| 2026-11-06 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Go per RC-001; language checks confirmed by S01 | [a07d05b] | --- @@ -156,3 +156,4 @@ Proceed โ€” the scope is small, the dependencies are none, and the outcome serve --- [SA-001]: ./stakeholder-analysis.md +[a07d05b]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/054-speed-calc-decorator/commit/a07d05b385e6b831b90731aefe08f078ebb951ca diff --git a/docs/milestones/mil-001-project-baseline.md b/docs/milestones/mil-001-project-baseline.md index 45212ac..29db0ab 100644 --- a/docs/milestones/mil-001-project-baseline.md +++ b/docs/milestones/mil-001-project-baseline.md @@ -11,8 +11,8 @@ ## Version History | Date | Status | Author | Reviewer | Change | Commit | | --- | --- | --- | --- | --- | --- | -| 2026-11-06 | Deprecated | Jens Tirsvad Nielsen | S01 | Review findings fixed: Go criterion 6 for ADR-0001, traceability to success criteria (RC-003) | pending | -| 2026-11-06 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Go per RC-003; language checks confirmed by S01 | pending | +| 2026-11-06 | Deprecated | Jens Tirsvad Nielsen | S01 | Review findings fixed: Go criterion 6 for ADR-0001, traceability to success criteria (RC-003) | [a07d05b] | +| 2026-11-06 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Go per RC-003; language checks confirmed by S01 | [a07d05b] | --- @@ -77,3 +77,4 @@ topics set on the git host. --- [BC-001]: ../business-case.md +[a07d05b]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/054-speed-calc-decorator/commit/a07d05b385e6b831b90731aefe08f078ebb951ca diff --git a/docs/milestones/mil-002-speed-calc-decorator.md b/docs/milestones/mil-002-speed-calc-decorator.md index 50a1f52..6253a74 100644 --- a/docs/milestones/mil-002-speed-calc-decorator.md +++ b/docs/milestones/mil-002-speed-calc-decorator.md @@ -11,8 +11,8 @@ ## Version History | Date | Status | Author | Reviewer | Change | Commit | | --- | --- | --- | --- | --- | --- | -| 2026-11-06 | Deprecated | Jens Tirsvad Nielsen | S01 | Review findings fixed: traceability to success criteria and constraints (RC-004) | pending | -| 2026-11-06 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Go per RC-004; language checks confirmed by S01 | pending | +| 2026-11-06 | Deprecated | Jens Tirsvad Nielsen | S01 | Review findings fixed: traceability to success criteria and constraints (RC-004) | [a07d05b] | +| 2026-11-06 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Go per RC-004; language checks confirmed by S01 | [a07d05b] | --- @@ -79,3 +79,4 @@ screenshot per lecture step in `docs/screenshots/`, shown in the README. --- [BC-001]: ../business-case.md +[a07d05b]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/054-speed-calc-decorator/commit/a07d05b385e6b831b90731aefe08f078ebb951ca diff --git a/docs/milestones/mil-003-wiki-and-screenshots.md b/docs/milestones/mil-003-wiki-and-screenshots.md index 0bdc0d2..9363039 100644 --- a/docs/milestones/mil-003-wiki-and-screenshots.md +++ b/docs/milestones/mil-003-wiki-and-screenshots.md @@ -11,8 +11,8 @@ ## Version History | Date | Status | Author | Reviewer | Change | Commit | | --- | --- | --- | --- | --- | --- | -| 2026-11-06 | Deprecated | Jens Tirsvad Nielsen | S01 | Review findings fixed: traceability to success criteria 4 and 5 (RC-005) | pending | -| 2026-11-06 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Go per RC-005; language checks confirmed by S01 | pending | +| 2026-11-06 | Deprecated | Jens Tirsvad Nielsen | S01 | Review findings fixed: traceability to success criteria 4 and 5 (RC-005) | [a07d05b] | +| 2026-11-06 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Go per RC-005; language checks confirmed by S01 | [a07d05b] | --- @@ -74,3 +74,4 @@ Danish and Bahasa Malaysia, with a screenshot per step. --- [BC-001]: ../business-case.md +[a07d05b]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/054-speed-calc-decorator/commit/a07d05b385e6b831b90731aefe08f078ebb951ca diff --git a/docs/project-plan.md b/docs/project-plan.md index d09118c..c125dbe 100644 --- a/docs/project-plan.md +++ b/docs/project-plan.md @@ -11,8 +11,8 @@ ## Version History | Date | Status | Author | Reviewer | Change | Commit | | --- | --- | --- | --- | --- | --- | -| 2026-11-06 | Deprecated | Jens Tirsvad Nielsen | S01 | Initial version | pending | -| 2026-11-06 | Accepted | Jens Tirsvad Nielsen | S01 | Informal review against QC-PP-001 fixed 7 defects (constants.py gateway, No-Go rule, sources, risk trace, stories, sync mark); accepted by S01 as Product Owner through the accepted plan in chat on 2026-11-06 | pending | +| 2026-11-06 | Deprecated | Jens Tirsvad Nielsen | S01 | Initial version | [a07d05b] | +| 2026-11-06 | Accepted | Jens Tirsvad Nielsen | S01 | Informal review against QC-PP-001 fixed 7 defects (constants.py gateway, No-Go rule, sources, risk trace, stories, sync mark); accepted by S01 as Product Owner through the accepted plan in chat on 2026-11-06 | [a07d05b] | --- @@ -97,3 +97,4 @@ beyond it changes the constraint in [BC-001] and needs a new version of it. [MIL-001]: ./milestones/mil-001-project-baseline.md [MIL-002]: ./milestones/mil-002-speed-calc-decorator.md [MIL-003]: ./milestones/mil-003-wiki-and-screenshots.md +[a07d05b]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/054-speed-calc-decorator/commit/a07d05b385e6b831b90731aefe08f078ebb951ca diff --git a/docs/sqa/reviews/rc-001-business-case.md b/docs/sqa/reviews/rc-001-business-case.md index 04aeaef..30aa59a 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-11-06 | Proposed | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version | pending | +| 2026-11-06 | Proposed | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version | [a07d05b] | --- @@ -65,3 +65,4 @@ Go. No Fail on QC-BC-001 in round 2. Round 1 found two defects (criterion 7: amb [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 +[a07d05b]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/054-speed-calc-decorator/commit/a07d05b385e6b831b90731aefe08f078ebb951ca diff --git a/docs/sqa/reviews/rc-002-stakeholder-analysis.md b/docs/sqa/reviews/rc-002-stakeholder-analysis.md index a8e25d5..d28659c 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-11-06 | Proposed | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version | pending | +| 2026-11-06 | Proposed | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version | [a07d05b] | --- @@ -66,3 +66,4 @@ Go. No Fail on QC-SA-001 in round 2. Round 1 found one defect (criterion 6: CN-0 [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 +[a07d05b]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/054-speed-calc-decorator/commit/a07d05b385e6b831b90731aefe08f078ebb951ca diff --git a/docs/sqa/reviews/rc-003-mil-001-project-baseline.md b/docs/sqa/reviews/rc-003-mil-001-project-baseline.md index 6972116..697a4e9 100644 --- a/docs/sqa/reviews/rc-003-mil-001-project-baseline.md +++ b/docs/sqa/reviews/rc-003-mil-001-project-baseline.md @@ -9,7 +9,7 @@ ## Version History | Date | Status | Author | Reviewer | Change | Commit | | --- | --- | --- | --- | --- | --- | -| 2026-11-06 | Proposed | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version | pending | +| 2026-11-06 | Proposed | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version | [a07d05b] | --- @@ -63,3 +63,4 @@ Go. No Fail on QC-MIL-001 in round 2. Round 1 found one defect (criterion 2: del [MIL-001]: ../../milestones/mil-001-project-baseline.md [QC-MIL-001]: ../../../framework/qc/artifacts/qc-milestones-gateways.md [QC-LANG-001]: ../../../framework/qc/artifacts/qc-language-domain.md +[a07d05b]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/054-speed-calc-decorator/commit/a07d05b385e6b831b90731aefe08f078ebb951ca diff --git a/docs/sqa/reviews/rc-004-mil-002-speed-calc-decorator.md b/docs/sqa/reviews/rc-004-mil-002-speed-calc-decorator.md index c562a49..be1c47f 100644 --- a/docs/sqa/reviews/rc-004-mil-002-speed-calc-decorator.md +++ b/docs/sqa/reviews/rc-004-mil-002-speed-calc-decorator.md @@ -9,7 +9,7 @@ ## Version History | Date | Status | Author | Reviewer | Change | Commit | | --- | --- | --- | --- | --- | --- | -| 2026-11-06 | Proposed | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version | pending | +| 2026-11-06 | Proposed | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version | [a07d05b] | --- @@ -63,3 +63,4 @@ Go. No Fail on QC-MIL-001 in round 2. Round 1 found one defect (criterion 4: thi [MIL-002]: ../../milestones/mil-002-speed-calc-decorator.md [QC-MIL-001]: ../../../framework/qc/artifacts/qc-milestones-gateways.md [QC-LANG-001]: ../../../framework/qc/artifacts/qc-language-domain.md +[a07d05b]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/054-speed-calc-decorator/commit/a07d05b385e6b831b90731aefe08f078ebb951ca diff --git a/docs/sqa/reviews/rc-005-mil-003-wiki.md b/docs/sqa/reviews/rc-005-mil-003-wiki.md index 62f781c..be07c53 100644 --- a/docs/sqa/reviews/rc-005-mil-003-wiki.md +++ b/docs/sqa/reviews/rc-005-mil-003-wiki.md @@ -9,7 +9,7 @@ ## Version History | Date | Status | Author | Reviewer | Change | Commit | | --- | --- | --- | --- | --- | --- | -| 2026-11-06 | Proposed | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version | pending | +| 2026-11-06 | Proposed | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version | [a07d05b] | --- @@ -63,3 +63,4 @@ Go. No Fail on QC-MIL-001 in round 2. Round 1 found one weak spot (criterion 4: [MIL-003]: ../../milestones/mil-003-wiki-and-screenshots.md [QC-MIL-001]: ../../../framework/qc/artifacts/qc-milestones-gateways.md [QC-LANG-001]: ../../../framework/qc/artifacts/qc-language-domain.md +[a07d05b]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/054-speed-calc-decorator/commit/a07d05b385e6b831b90731aefe08f078ebb951ca diff --git a/docs/sqa/reviews/rc-006-adr-0001.md b/docs/sqa/reviews/rc-006-adr-0001.md index e9d4491..e36a414 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-11-06 | Proposed | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version: review of ADR-0001, two rounds | pending | +| 2026-11-06 | Proposed | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version: review of ADR-0001, two rounds | [a07d05b] | --- @@ -52,3 +52,4 @@ Go. Every Mandatory criterion passes after the two round 1 fixes; criterion 9 is [ADR-0001]: ../../adr/adr-0001-skip-stories-plain-package.md [QC-ADR-001]: ../../../framework/qc/artifacts/qc-adr.md +[a07d05b]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/054-speed-calc-decorator/commit/a07d05b385e6b831b90731aefe08f078ebb951ca diff --git a/docs/sqa/traceability-matrix.md b/docs/sqa/traceability-matrix.md index cd081ed..e5ed342 100644 --- a/docs/sqa/traceability-matrix.md +++ b/docs/sqa/traceability-matrix.md @@ -9,7 +9,7 @@ ## Version History | Date | Status | Author | Reviewer | Change | Commit | | --- | --- | --- | --- | --- | --- | -| 2026-11-06 | Proposed | Jens Tirsvad Nielsen | S01 | Initial version: BC, SA, PP, MIL-001 to MIL-003 and RC-001 to RC-005 | pending | +| 2026-11-06 | Proposed | Jens Tirsvad Nielsen | S01 | Initial version: BC, SA, PP, MIL-001 to MIL-003 and RC-001 to RC-005 | [a07d05b] | --- @@ -85,3 +85,4 @@ are not listed there. [RC-005]: ./reviews/rc-005-mil-003-wiki.md [RC-006]: ./reviews/rc-006-adr-0001.md [ADR-0001]: ../adr/adr-0001-skip-stories-plain-package.md +[a07d05b]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/054-speed-calc-decorator/commit/a07d05b385e6b831b90731aefe08f078ebb951ca diff --git a/docs/stakeholder-analysis.md b/docs/stakeholder-analysis.md index 25d2ab9..d57c5b1 100644 --- a/docs/stakeholder-analysis.md +++ b/docs/stakeholder-analysis.md @@ -11,8 +11,8 @@ ## Version History | Date | Status | Author | Reviewer | Change | Commit | | --- | --- | --- | --- | --- | --- | -| 2026-11-06 | Deprecated | Jens Tirsvad Nielsen | S01 | Review findings fixed: CN-007 traced to success criterion 3, abbreviations (RC-002) | pending | -| 2026-11-06 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Go per RC-002; language checks confirmed by S01 | pending | +| 2026-11-06 | Deprecated | Jens Tirsvad Nielsen | S01 | Review findings fixed: CN-007 traced to success criterion 3, abbreviations (RC-002) | [a07d05b] | +| 2026-11-06 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Go per RC-002; language checks confirmed by S01 | [a07d05b] | --- @@ -86,3 +86,4 @@ Product Owner: S01, accepted 2026-11-06 via RC-002. --- [BC-001]: ./business-case.md +[a07d05b]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/054-speed-calc-decorator/commit/a07d05b385e6b831b90731aefe08f078ebb951ca -- 2.54.0