From f9765fd3743f46c189359e713fd050c8e1a598b6 Mon Sep 17 00:00:00 2001 From: Jens Tirsvad Nielsen Date: Wed, 28 Oct 2026 14:31:08 +0800 Subject: [PATCH 1/2] Add the project baseline: Business Case, Stakeholder Analysis, Project Plan, six milestones and their reviews --- .gitmodules | 3 + docs/artifact-registry.md | 59 ++++++++ docs/business-case.md | 126 ++++++++++++++++++ docs/milestones/mil-001-foundation.md | 71 ++++++++++ docs/milestones/mil-002-scrape-price.md | 70 ++++++++++ docs/milestones/mil-003-email-alert.md | 71 ++++++++++ docs/milestones/mil-004-request-headers.md | 68 ++++++++++ docs/milestones/mil-005-live-amazon.md | 70 ++++++++++ docs/milestones/mil-006-wiki-screenshots.md | 70 ++++++++++ docs/project-plan.md | 85 ++++++++++++ docs/sqa/reviews/rc-001-business-case.md | 66 +++++++++ .../reviews/rc-002-stakeholder-analysis.md | 68 ++++++++++ docs/sqa/reviews/rc-003-project-plan.md | 74 ++++++++++ docs/sqa/reviews/rc-004-mil-001-foundation.md | 65 +++++++++ .../reviews/rc-005-mil-002-scrape-price.md | 65 +++++++++ .../sqa/reviews/rc-006-mil-003-email-alert.md | 65 +++++++++ .../reviews/rc-007-mil-004-request-headers.md | 65 +++++++++ .../sqa/reviews/rc-008-mil-005-live-amazon.md | 65 +++++++++ .../rc-009-mil-006-wiki-screenshots.md | 65 +++++++++ docs/stakeholder-analysis.md | 77 +++++++++++ framework | 1 + 21 files changed, 1369 insertions(+) create mode 100644 .gitmodules create mode 100644 docs/artifact-registry.md create mode 100644 docs/business-case.md create mode 100644 docs/milestones/mil-001-foundation.md create mode 100644 docs/milestones/mil-002-scrape-price.md create mode 100644 docs/milestones/mil-003-email-alert.md create mode 100644 docs/milestones/mil-004-request-headers.md create mode 100644 docs/milestones/mil-005-live-amazon.md create mode 100644 docs/milestones/mil-006-wiki-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-project-plan.md create mode 100644 docs/sqa/reviews/rc-004-mil-001-foundation.md create mode 100644 docs/sqa/reviews/rc-005-mil-002-scrape-price.md create mode 100644 docs/sqa/reviews/rc-006-mil-003-email-alert.md create mode 100644 docs/sqa/reviews/rc-007-mil-004-request-headers.md create mode 100644 docs/sqa/reviews/rc-008-mil-005-live-amazon.md create mode 100644 docs/sqa/reviews/rc-009-mil-006-wiki-screenshots.md create mode 100644 docs/stakeholder-analysis.md create mode 160000 framework diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..a759dc9 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "framework"] + path = framework + url = ssh://git@git.tirsystem.com:10022/TirSystem/SQA-QC-Framework.git diff --git a/docs/artifact-registry.md b/docs/artifact-registry.md new file mode 100644 index 0000000..411bc2f --- /dev/null +++ b/docs/artifact-registry.md @@ -0,0 +1,59 @@ +# 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/*.md | 007 | +| RC | SQA Review Record | docs/sqa/reviews/rc-*.md | 010 | + +## 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 and the PO language, at least (`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..7fd52fc --- /dev/null +++ b/docs/business-case.md @@ -0,0 +1,126 @@ +# Business Case + +## Metadata +| Key | Value | +| --- | --- | +| ID | BC-001 | +| CrossReference | | +| Language | en | +| Domain | it | + +## Version History +| Date | Status | Author | Reviewer | Change | Commit | +| --- | --- | --- | --- | --- | --- | +| 2026-10-28 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version
Accepted after review (RC-001 Go) | pending | + +--- + +## Executive Summary + +Online prices on Amazon change often. This project builds a small Python bot that reads a product page, extracts the title and the price, and sends an e-mail through the Simple Mail Transfer Protocol (SMTP) when the price drops below a target. It is the Day 47 assignment of the Udemy course "100 Days of Code: The Complete Python Pro Bootcamp", built step by step: scrape a static practice page, send the alert, add request headers, then try the live Amazon page. + +## Methodological and Standards Foundation + +Planning follows the SQA and QC framework mounted at `framework/` (plan first, review each artifact against its quality control (QC) checklist). Quality is described with the International Organization for Standardization and International Electrotechnical Commission standard ISO/IEC 25010:2023 characteristics. Code follows the `coding-conventions` and `clean-architecture` skills. + +## Problem Statement + +Checking a product price by hand every day costs time, and a short price drop is easy to miss. The course participant also needs a worked, runnable solution to compare with the course material. + +## Business Opportunity + +A bot that checks the price on its own and sends an alert lets the participant buy at the right moment. As a public repository it also gives other course participants and visitors a readable example. + +## Objectives + +1. Extract the product title and price as a `float` from the practice page with BeautifulSoup. +2. Send an e-mail with the title, the price and the buy link when the price is below the target. +3. Keep the SMTP address, e-mail address and password in a `.env` file, outside the source code. +4. Send browser-like request headers (`User-Agent`, `Accept-Language`, and the rest of the course set). +5. Try the same code on the live Amazon page and document what happens. +6. Publish the repository with description, topics, README and a wiki in English, Danish and Bahasa Malaysia, with a screenshot for each lecture step. + +## Scope + +### In Scope + +- Python 3.13 or newer, `venv`, `pyproject.toml`, `pytest`, `constants.py`, Doxygen comments and `Doxyfile`. +- The four lecture steps, each delivered by its own branch and pull request. +- README from the framework template and a three-language wiki explaining what each step teaches. + +### Out of Scope + +- Scheduling the bot to run daily. +- Solving Amazon CAPTCHAs (Completely Automated Public Turing tests, the robot-check pages) or evading bot detection. +- A user interface or a database. +- Importing, testing or committing the personal `.env` of the repository owner. + +## Expected Benefits + +### Tangible Benefits + +- A runnable solution for the four lecture steps with tests. +- A documented repository (README, wiki, screenshots) that others can follow. + +### Intangible Benefits + +- Practice with scraping, SMTP, environment variables and request headers. +- A clear example of plan-first work for course participants. + +## Strategic Alignment + +The project supports the participant's learning goal in the 100 Days of Code course and the public portfolio of the `Tirsvad-Udemy-100_days_of_code` organisation. + +## Success Criteria + +| # | Criterion | Target | Measure | +| --- | --- | --- | --- | +| 1 | Price extracted from the practice page | `99.99` as a `float` | Unit test with a saved copy of the page | +| 2 | Alert decision | E-mail text built only when price is below target | Unit tests for below, equal and above | +| 3 | Secrets outside the code | No credential in any tracked file | `.env` is ignored; search of the repository finds none | +| 4 | Test suite | All tests pass without network access | `python -m pytest` exits 0 | +| 5 | Documentation | README, wiki in `en`, `da`, `ms`, one screenshot per step | Files exist and are linked | +| 6 | Repository metadata | Description and at least five topics set on the host | Read back from the host API | + +## Risks + +| Risk | Impact | Mitigation | +| --- | --- | --- | +| Amazon returns a robot-check page (CAPTCHA) or changes its HTML | The live step does not return a price | The live step is documented as best effort; the static page is the tested baseline | +| A token or password is committed | Credential leak | `.env` in `.gitignore`; tokens are read from `.env` only for repository set-up and never copied into the project | +| The practice page changes | A test breaks | Tests use a saved copy of the page | +| Sending real e-mail by accident | Unwanted mail | Tests mock SMTP; the sender is called only from `main` | + +## Assumptions + +- The Product Owner is S01 and reviews every step; S01 can be reached in chat. +- Gitea (the git host) at `git.tirsystem.com` hosts the repository; a Gitea token is in `.env`. +- The practice page `https://appbrewery.github.io/instant_pot/` stays available. + +## Constraints + +- Python 3.13 or newer; virtual environment `.venv`. +- Runtime dependencies are only the ones needed: `requests`, `beautifulsoup4`, `python-dotenv`. +- Layout `src/`, `tests/`, `docs/`; constants in `constants.py`. +- One branch and pull request per milestone. +- No GUI is involved, so no GUI test environment is needed. + +## Cost–Benefit Assessment + +| Costs | Benefits | +| --- | --- | +| A few hours of the participant's time; no licence or hosting cost | A working, tested, documented example and a reusable price alert | + +The assessment is qualitative on purpose: this is a learning project with no revenue and no budget, so a monetary return on investment (ROI) would be invented; the only cost is the participant's time, and the benefit is the learning and the reusable repository. + +## Stakeholders + +| Stakeholder ID (SA) | Interest in this project | +| --- | --- | +| S01 | Product Owner, developer and reviewer; wants a working solution and a clean repository | +| S02 | Readable, runnable code with the assignment's function names, and README run instructions | +| S03 | A clear description, topics and README, and no runtime dependencies beyond the necessary | + +## Recommendation + +Proceed — the scope is small, the cost is low and every objective is testable. diff --git a/docs/milestones/mil-001-foundation.md b/docs/milestones/mil-001-foundation.md new file mode 100644 index 0000000..496be68 --- /dev/null +++ b/docs/milestones/mil-001-foundation.md @@ -0,0 +1,71 @@ +# MIL-001 foundation + +## Metadata +| Key | Value | +| --- | --- | +| ID | MIL-001 | +| CrossReference | [BC-001] | +| Language | en | +| Domain | it | + +## Version History +| Date | Status | Author | Reviewer | Change | Commit | +| --- | --- | --- | --- | --- | --- | +| 2026-10-28 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version
Accepted after review (RC-004 Go) | pending | + +--- + +## Purpose + +Decide whether the repository is ready for feature work: project configuration, environment instructions, documentation skeleton and host metadata are in place. + +## Deliverable + +Branch `mil-001-foundation` merged: `pyproject.toml`, `.gitignore`, `.env.example`, `constants.py`, `Doxyfile`, README from the framework template, a passing smoke test, and the repository description and topics on the host (set through its application programming interface, API). + +## Go / No-Go Criteria + +| # | Criterion (objectively checkable) | Go | No-Go | +| --- | --- | --- | --- | +| 1 | `python -m pip install -e .[dev]` works in a fresh `.venv` on Python 3.13 or newer | `python -m pytest` exits 0 | Install or tests fail | +| 2 | `.env` is ignored and no secret is tracked | `git ls-files` lists no `.env` | A secret is tracked | +| 3 | README follows the template and explains venv, `python -m pip install --upgrade pip`, run and test | `framework/scripts/check-readme.sh` passes | Check fails | +| 4 | Repository description and at least five topics are set | Read back from the Gitea API | Missing | + +## Dependencies + +| Depends on | Reason | +| --- | --- | +| None | First gateway; it has no predecessor | + +## Traceability + +| Business Case objective / KPI / user story | Reference | +| --- | --- | +| Objective 6 (repository set-up, README, metadata) and the Constraints section of [BC-001] | Tasks of this gateway | + +## Ownership + +| Role | Stakeholder ID (SA) | +| --- | --- | +| Owner | S01 | +| Approving reviewer | S01 | + +## Target Date + +2026-10-28 — within the Business Case constraints (one branch and pull request per milestone). + +## Tasks + +| # | Task | Summary | Needs its own Use Case/User Story? | Reference | +| --- | --- | --- | --- | --- | +| 1 | Set repository description and topics | Set a one-sentence description and topics (python, web-scraping, beautifulsoup, smtp, udemy, 100-days-of-code) on the Gitea repository through its API. The token is read from the personal `.env` at call time; it is never copied into the project, imported or tested. | No | | +| 2 | Create pyproject.toml and package layout | Python `>=3.13`, setuptools `src` layout with package `amazon_price_tracker`, runtime dependencies `requests`, `beautifulsoup4`, `python-dotenv` only, a `dev` extra with `pytest`, and pytest config (`pythonpath`, `testpaths`). | No | | +| 3 | Add constants.py and .env.example | `constants.py` holds the practice URL, target price, default headers and environment variable names. `.env.example` lists `SMTP_ADDRESS`, `EMAIL_ADDRESS`, `EMAIL_PASSWORD` with placeholders so S02 knows what to create. | No | | +| 4 | Add Python .gitignore and Doxyfile | Standard Python `.gitignore` plus `.env`, `.venv`, `docs/doxygen`. A `Doxyfile` that reads `src/` and writes HTML to `docs/doxygen`; source comments use the Doxygen style (`@brief`, `@param`, `@return`). | No | | +| 5 | Write README from the framework template | Fill `framework/templates/README-template.md`: overview, requirements, setup with `python -m venv .venv`, activation on Windows and Linux, `python -m pip install --upgrade pip`, run, tests, license, links, appendix. | No | | +| 6 | Add smoke test | A first test that imports the package and checks `constants` so the test run and CI path work before features arrive. | No | | + +--- + +[BC-001]: ../business-case.md diff --git a/docs/milestones/mil-002-scrape-price.md b/docs/milestones/mil-002-scrape-price.md new file mode 100644 index 0000000..4197b98 --- /dev/null +++ b/docs/milestones/mil-002-scrape-price.md @@ -0,0 +1,70 @@ +# MIL-002 scrape-price + +## Metadata +| Key | Value | +| --- | --- | +| ID | MIL-002 | +| CrossReference | [BC-001] | +| Language | en | +| Domain | it | + +## Version History +| Date | Status | Author | Reviewer | Change | Commit | +| --- | --- | --- | --- | --- | --- | +| 2026-10-28 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version
Accepted after review (RC-005 Go) | pending | + +--- + +## Purpose + +Decide whether Step 1 of the lecture (BeautifulSoup scrapes the price from the practice page) is complete. + +## Deliverable + +Branch `mil-002-scrape-price` merged: a scraper that returns the title and the price as a `float`, a saved copy of the practice page used by tests, a screenshot of the step, and the README section for it. + +## Go / No-Go Criteria + +| # | Criterion (objectively checkable) | Go | No-Go | +| --- | --- | --- | --- | +| 1 | Price from the saved practice page is `99.99` as a `float` | `pytest` asserts it | Wrong value or type | +| 2 | Tests need no network access | Run with the network off passes | A test calls the network | +| 3 | Function names follow the assignment (`get_price`, `get_title`) | Names exist in the module | Different names | +| 4 | Step screenshot is in the README | File exists and is linked | Missing | + +## Dependencies + +| Depends on | Reason | +| --- | --- | +| MIL-001: project set-up must be accepted first | Each step builds on the one before it | + +## Traceability + +| Business Case objective / KPI / user story | Reference | +| --- | --- | +| Objective 1 (price as a float) of [BC-001] | Tasks of this gateway | + +## Ownership + +| Role | Stakeholder ID (SA) | +| --- | --- | +| Owner | S01 | +| Approving reviewer | S01 | + +## Target Date + +2026-10-29 — within the Business Case constraints (one branch and pull request per milestone). + +## Tasks + +| # | Task | Summary | Needs its own Use Case/User Story? | Reference | +| --- | --- | --- | --- | --- | +| 1 | Save the practice page as a test fixture | Store a copy of https://appbrewery.github.io/instant_pot/ under `tests/fixtures/` so the parser is tested without the network. | No | | +| 2 | Implement price and title parsing | `get_price(html)` finds the price element, strips the currency sign (`split` or `lstrip`) and returns a `float`; `get_title(html)` returns the product title. Both use BeautifulSoup (`lxml` is not needed; `html.parser`). | No | | +| 3 | Fetch the page and print the price in main | `main.py` requests the URL from `constants.py`, parses it and prints the title and price. | No | | +| 4 | Unit tests for the parser | Tests for price as float, title text and a page without a price (clear error). | No | | +| 5 | Screenshot and README for Step 1 | Capture the run output and the practice page; save under `docs/images/step-1-*.png`; add the Step 1 section to the README. | No | | + +--- + +[BC-001]: ../business-case.md diff --git a/docs/milestones/mil-003-email-alert.md b/docs/milestones/mil-003-email-alert.md new file mode 100644 index 0000000..8a3452f --- /dev/null +++ b/docs/milestones/mil-003-email-alert.md @@ -0,0 +1,71 @@ +# MIL-003 email-alert + +## Metadata +| Key | Value | +| --- | --- | +| ID | MIL-003 | +| CrossReference | [BC-001] | +| Language | en | +| Domain | it | + +## Version History +| Date | Status | Author | Reviewer | Change | Commit | +| --- | --- | --- | --- | --- | --- | +| 2026-10-28 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version
Accepted after review (RC-006 Go) | pending | + +--- + +## Purpose + +Decide whether Step 2 (e-mail alert below the target, secrets in `.env`) is complete. + +## Deliverable + +Branch `mil-003-email-alert` merged: an alert that builds and sends an e-mail with title, price and buy link when the price is below target, with credentials from `.env`, tests with a mocked Simple Mail Transfer Protocol (SMTP) server, a screenshot, and the README section. + +## Go / No-Go Criteria + +| # | Criterion (objectively checkable) | Go | No-Go | +| --- | --- | --- | --- | +| 1 | Message contains title, current price and link | Unit test asserts all three | Any is missing | +| 2 | E-mail is sent only when price is below target | Tests for below, equal, above | Sent at or above target | +| 3 | Credentials come from environment variables loaded by `python-dotenv` | No literal credential in source | A literal exists | +| 4 | No real mail or network in tests | SMTP is mocked | Real connection opened | +| 5 | Port 587 with STARTTLS is used | Test asserts the calls | Different | + +## Dependencies + +| Depends on | Reason | +| --- | --- | +| MIL-002 | Each step builds on the one before it | + +## Traceability + +| Business Case objective / KPI / user story | Reference | +| --- | --- | +| Objectives 2 and 3 (alert e-mail, secrets in `.env`) of [BC-001] | Tasks of this gateway | + +## Ownership + +| Role | Stakeholder ID (SA) | +| --- | --- | +| Owner | S01 | +| Approving reviewer | S01 | + +## Target Date + +2026-10-30 — within the Business Case constraints (one branch and pull request per milestone). + +## Tasks + +| # | Task | Summary | Needs its own Use Case/User Story? | Reference | +| --- | --- | --- | --- | --- | +| 1 | Load settings from .env | A small settings function reads `SMTP_ADDRESS`, `EMAIL_ADDRESS`, `EMAIL_PASSWORD` with `os.environ` after `load_dotenv()` and fails with a clear message when one is missing. | No | | +| 2 | Build the alert message | `build_message(title, price, url)` returns the subject and body with title, price and buy link, encoded as UTF-8. | No | | +| 3 | Send the alert through SMTP | `send_email(...)` uses `smtplib.SMTP(host, port=587)`, `starttls()`, `login()` and `sendmail()`; the target comparison lives in a pure function `is_below_target(price, target)`. | No | | +| 4 | Tests with a mocked SMTP server | Cover below, equal and above target, the message content and the missing-setting error. Never open a real connection. | No | | +| 5 | Screenshot and README for Step 2 | Capture the alert as rendered from the message the code builds (the owner's mailbox is not touched) and the console output; add the Step 2 section including the Gmail App Password and port notes. | No | | + +--- + +[BC-001]: ../business-case.md diff --git a/docs/milestones/mil-004-request-headers.md b/docs/milestones/mil-004-request-headers.md new file mode 100644 index 0000000..3e870e1 --- /dev/null +++ b/docs/milestones/mil-004-request-headers.md @@ -0,0 +1,68 @@ +# MIL-004 request-headers + +## Metadata +| Key | Value | +| --- | --- | +| ID | MIL-004 | +| CrossReference | [BC-001] | +| Language | en | +| Domain | it | + +## Version History +| Date | Status | Author | Reviewer | Change | Commit | +| --- | --- | --- | --- | --- | --- | +| 2026-10-28 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version
Accepted after review (RC-007 Go) | pending | + +--- + +## Purpose + +Decide whether Step 3 (browser-like request headers) is complete. + +## Deliverable + +Branch `mil-004-request-headers` merged: requests carry the headers from `constants.py`, tests prove it, a screenshot and a README section. + +## Go / No-Go Criteria + +| # | Criterion (objectively checkable) | Go | No-Go | +| --- | --- | --- | --- | +| 1 | Request sends at least `User-Agent` and `Accept-Language` | Test inspects the prepared request | Headers missing | +| 2 | Headers live in `constants.py`, not in the logic | Search finds one definition | Duplicated | +| 3 | Host and X-Amzn-Trace-Id are not copied | Test asserts absence | Present | + +## Dependencies + +| Depends on | Reason | +| --- | --- | +| MIL-003 | Each step builds on the one before it | + +## Traceability + +| Business Case objective / KPI / user story | Reference | +| --- | --- | +| Objective 4 (request headers) of [BC-001] | Tasks of this gateway | + +## Ownership + +| Role | Stakeholder ID (SA) | +| --- | --- | +| Owner | S01 | +| Approving reviewer | S01 | + +## Target Date + +2026-10-31 — within the Business Case constraints (one branch and pull request per milestone). + +## Tasks + +| # | Task | Summary | Needs its own Use Case/User Story? | Reference | +| --- | --- | --- | --- | --- | +| 1 | Define the request headers in constants | Add `User-Agent`, `Accept-Language`, `Accept`, `Accept-Encoding`, `Sec-Fetch-*` and `Priority` as in the lecture, leaving out `Host` and `X-Amzn-Trace-Id`. | No | | +| 2 | Send the headers with the request | The fetch function passes `headers=` to `requests.get` and sets a timeout. | No | | +| 3 | Tests for the headers | Use a mocked `requests.get` or a prepared request to assert the headers and the timeout. | No | | +| 4 | Screenshot and README for Step 3 | Capture the headers the browser sends (myhttpheader.com / httpbin.org/headers) next to the ones the bot sends; add the Step 3 section. | No | | + +--- + +[BC-001]: ../business-case.md diff --git a/docs/milestones/mil-005-live-amazon.md b/docs/milestones/mil-005-live-amazon.md new file mode 100644 index 0000000..c1181c5 --- /dev/null +++ b/docs/milestones/mil-005-live-amazon.md @@ -0,0 +1,70 @@ +# MIL-005 live-amazon + +## Metadata +| Key | Value | +| --- | --- | +| ID | MIL-005 | +| CrossReference | [BC-001] | +| Language | en | +| Domain | it | + +## Version History +| Date | Status | Author | Reviewer | Change | Commit | +| --- | --- | --- | --- | --- | --- | +| 2026-10-28 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version
Accepted after review (RC-008 Go) | pending | + +--- + +## Purpose + +Decide whether Step 4 (the live Amazon page) is complete, and document honestly what Amazon returns. + +## Deliverable + +Branch `mil-005-live-amazon` merged: URL and selectors configurable for the live page, a detection of a robot-check (CAPTCHA) page with a clear message, tests, a screenshot of the result, and the README section including the limits. + +## Go / No-Go Criteria + +| # | Criterion (objectively checkable) | Go | No-Go | +| --- | --- | --- | --- | +| 1 | Product URL is a constant and can be overridden by an environment variable | Test | Hard-coded in logic | +| 2 | A CAPTCHA or missing price gives a clear error, not a traceback | Unit test with a CAPTCHA fixture | Crash | +| 3 | The live run result (price or CAPTCHA) is documented | README section and screenshot | Missing | +| 4 | No attempt is made to solve or bypass a CAPTCHA | Code review | Bypass present | + +## Dependencies + +| Depends on | Reason | +| --- | --- | +| MIL-004 | Each step builds on the one before it | + +## Traceability + +| Business Case objective / KPI / user story | Reference | +| --- | --- | +| Objective 5 (live Amazon page) of [BC-001] | Tasks of this gateway | + +## Ownership + +| Role | Stakeholder ID (SA) | +| --- | --- | +| Owner | S01 | +| Approving reviewer | S01 | + +## Target Date + +2026-11-01 — within the Business Case constraints (one branch and pull request per milestone). + +## Tasks + +| # | Task | Summary | Needs its own Use Case/User Story? | Reference | +| --- | --- | --- | --- | --- | +| 1 | Make the product URL and selectors configurable | Default URL is the lecture's Amazon product; the price selector supports the live markup (`a-offscreen`) and the practice markup. | No | | +| 2 | Detect a CAPTCHA or robot-check page | Return a clear error when the response is a bot check or no price element exists; never try to bypass it. | No | | +| 3 | Tests for live-page parsing | Use saved small HTML fixtures for the live markup and the CAPTCHA page; no network in tests. | No | | +| 4 | Run once against the live page and record the result | One manual request with the project headers; keep the outcome (price or CAPTCHA) as the screenshot. No retries or loops. | No | | +| 5 | Screenshot and README for Step 4 | Add the Step 4 section with the screenshot and the known limits. | No | | + +--- + +[BC-001]: ../business-case.md diff --git a/docs/milestones/mil-006-wiki-screenshots.md b/docs/milestones/mil-006-wiki-screenshots.md new file mode 100644 index 0000000..d233904 --- /dev/null +++ b/docs/milestones/mil-006-wiki-screenshots.md @@ -0,0 +1,70 @@ +# MIL-006 wiki-screenshots + +## Metadata +| Key | Value | +| --- | --- | +| ID | MIL-006 | +| CrossReference | [BC-001] | +| Language | en | +| Domain | it | + +## Version History +| Date | Status | Author | Reviewer | Change | Commit | +| --- | --- | --- | --- | --- | --- | +| 2026-10-28 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version
Accepted after review (RC-009 Go) | pending | + +--- + +## Purpose + +Decide whether the wiki in English, Danish and Bahasa Malaysia is complete and the screenshots are in place. + +## Deliverable + +Wiki pages in `en`, `da` and `ms`, one per language per lecture step plus a home page, each explaining what was gained and showing the step screenshot; the wiki is published on the host. + +## Go / No-Go Criteria + +| # | Criterion (objectively checkable) | Go | No-Go | +| --- | --- | --- | --- | +| 1 | Home page and four step pages exist in en, da and ms | File listing | A page is missing | +| 2 | Each step page has its screenshot and a 'What we gained' section | Review | Missing | +| 3 | Wiki follows `framework/process/wiki.md` | Review against the process | Deviates | +| 4 | Wiki is published and reachable | URL returns the page | Not published | + +## Dependencies + +| Depends on | Reason | +| --- | --- | +| MIL-005 | Each step builds on the one before it | + +## Traceability + +| Business Case objective / KPI / user story | Reference | +| --- | --- | +| Objective 6 (wiki in three languages, screenshots) of [BC-001] | Tasks of this gateway | + +## Ownership + +| Role | Stakeholder ID (SA) | +| --- | --- | +| Owner | S01 | +| Approving reviewer | S01 | + +## Target Date + +2026-11-04 — within the Business Case constraints (one branch and pull request per milestone). + +## Tasks + +| # | Task | Summary | Needs its own Use Case/User Story? | Reference | +| --- | --- | --- | --- | --- | +| 1 | Read the wiki process and plan the page set | Read `framework/process/wiki.md`; fix page names, language switch links and the screenshot folder. | No | | +| 2 | Write the English wiki | Home plus Step 1 to 4 pages: what we did, the code idea, the screenshot, what we gained. | No | | +| 3 | Write the Danish wiki | Same page set in Danish, same screenshots. | No | | +| 4 | Write the Bahasa Malaysia wiki | Same page set in Bahasa Malaysia, same screenshots. | No | | +| 5 | Publish the wiki and link it from the README | Push the pages to the repository's wiki on the host (stop and report if the wiki is disabled or the push is refused) and link the wiki from the README. | No | | + +--- + +[BC-001]: ../business-case.md diff --git a/docs/project-plan.md b/docs/project-plan.md new file mode 100644 index 0000000..2e24b04 --- /dev/null +++ b/docs/project-plan.md @@ -0,0 +1,85 @@ +# Project Plan + +## Metadata +| Key | Value | +| --- | --- | +| ID | PP-001 | +| CrossReference | [BC-001], [SA-001] | +| Language | en | +| Domain | it | + +## Version History +| Date | Status | Author | Reviewer | Change | Commit | +| --- | --- | --- | --- | --- | --- | +| 2026-10-28 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version
Accepted after review (RC-003 Go) | pending | + +--- + +## Purpose + +Schedule the six gateways (Go/No-Go decision points) that deliver the Day 47 Amazon price tracker, one branch and pull request per gateway, from 2026-10-28 to 2026-11-04. + +## Planning Assumptions + +- Week 1 starts 2026-10-28; the plan ends by 2026-11-04, a soft target for a learning project ([BC-001] has no hard deadline). +- One gateway per day or two; the author is S01 and the AI works as stand-in reviewer in autonomous mode, recorded in each `RC-*`. +- The cadence follows [SA-001]: S01 reviews at each pull request. +- Source of the dates: the author's estimate on 2026-10-28; there is no external deadline. The baseline is first set here, so there is no earlier baseline to record a change against. +- No governance document exists in this project; S01 is Responsible and Accountable for every artifact, and the AI is a recorded stand-in reviewer. + +## Gateway Schedule + +| Gateway | Document | Window | Decision date | Owner | Stories | Main deliverable | Milestone | +| --- | --- | --- | --- | --- | --- | --- | --- | +| MIL-001 | `docs/milestones/mil-001-foundation.md` | 2026-10-28 | 2026-10-28 | S01 | none (technical tasks) | Branch `mil-001-foundation` merged: `pyproject.toml`, `.gitignore`, `.env.example`, `constants.py`, `Doxyfile`, README from the framework template, a passing smoke test, and the repository description and topics on the host. | not yet synced | +| MIL-002 | `docs/milestones/mil-002-scrape-price.md` | 2026-10-29 | 2026-10-29 | S01 | none (technical tasks) | Branch `mil-002-scrape-price` merged: a scraper that returns the title and the price as a `float`, a saved copy of the practice page used by tests, a screenshot of the step, and the README section for it. | not yet synced | +| MIL-003 | `docs/milestones/mil-003-email-alert.md` | 2026-10-30 | 2026-10-30 | S01 | none (technical tasks) | Branch `mil-003-email-alert` merged: an alert that builds and sends an e-mail with title, price and buy link when the price is below target, with credentials from `.env`, tests with a mocked SMTP server, a screenshot, and the README section. | not yet synced | +| MIL-004 | `docs/milestones/mil-004-request-headers.md` | 2026-10-31 | 2026-10-31 | S01 | none (technical tasks) | Branch `mil-004-request-headers` merged: requests carry the headers from `constants.py`, tests prove it, a screenshot and a README section. | not yet synced | +| MIL-005 | `docs/milestones/mil-005-live-amazon.md` | 2026-11-01 | 2026-11-01 | S01 | none (technical tasks) | Branch `mil-005-live-amazon` merged: URL and selectors configurable for the live page, a detection of a CAPTCHA page with a clear message, tests, a screenshot of the result, and the README section including the limits. | not yet synced | +| MIL-006 | `docs/milestones/mil-006-wiki-screenshots.md` | 2026-11-02 to 2026-11-04 | 2026-11-04 | S01 | none (technical tasks) | Wiki pages in `en`, `da` and `ms`, one per language per lecture step plus a home page, each explaining what was gained and showing the step screenshot; the wiki is published on the host. | not yet synced | + +## Timeline diagram + +```plantuml +@startgantt +Project starts 2026-10-28 +[MIL-001 foundation] starts 2026-10-28 and lasts 1 day +[MIL-002 scrape price] starts 2026-10-29 and lasts 1 day +[MIL-003 email alert] starts 2026-10-30 and lasts 1 day +[MIL-004 request headers] starts 2026-10-31 and lasts 1 day +[MIL-005 live amazon] starts 2026-11-01 and lasts 1 day +[MIL-006 wiki and screenshots] starts 2026-11-02 and lasts 3 days +@endgantt +``` + +## Scope Coverage + +| Business Case scope item | Gateway | +| --- | --- | +| Python 3.13, venv, pyproject, pytest, constants, Doxygen | MIL-001 | +| Step 1: scrape the price | MIL-002 | +| Step 2: e-mail alert and `.env` | MIL-003 | +| Step 3: request headers | MIL-004 | +| Step 4: live Amazon page | MIL-005 | +| README (MIL-001 and each step) and the three-language wiki | MIL-001 to MIL-006 | + +## Dependencies + +MIL-001 → MIL-002 → MIL-003 → MIL-004 → MIL-005 → MIL-006. A No-Go stops the chain: later windows move by the rework time. S01 decides whether the end date 2026-11-04 moves. + +## Plan Risks + +| Risk | Mitigation | +| --- | --- | +| Gitea wiki disabled or not pushable | MIL-006 stops and reports; pages stay in `docs/wiki/` | +| Amazon blocks the live request (from [BC-001] risk 1) | MIL-005 documents the outcome; it does not bypass the block | + +## Open Issues + +- Wiki publishing path depends on the host (checked in MIL-006). +- The e-mail screenshot is rendered from the message the code builds, not from a delivered mail. + +--- + +[BC-001]: ./business-case.md +[SA-001]: ./stakeholder-analysis.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..a49befd --- /dev/null +++ b/docs/sqa/reviews/rc-001-business-case.md @@ -0,0 +1,66 @@ +# SQA Review Record + +## Metadata +| Key | Value | +| --- | --- | +| ID | RC-001 | +| CrossReference | [BC-001], [QC-BC-001] | + +## Version History +| Date | Status | Author | Reviewer | Change | Commit | +| --- | --- | --- | --- | --- | --- | +| 2026-10-28 | 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] +- Scope: full review +- Language and domain: en / it (the artifact's Metadata rows) +- Language reviewer: none (the reviewer reads English and knows the domain IT; mode: AI as stand-in for S01) +- Mode: autonomous, not independent (AI as stand-in for S01); the author and the stand-in are both the AI working for S01 + +## Checklist Results + +| # | Criterion | Status | Evidence/Notes | +| --- | --- | --- | --- | +| 1 | ROI/Cost-Benefit analysis is quantitative, or where qualitative, is explicitly justified | Pass | The Cost-Benefit section is qualitative and states why: a learning project with no revenue or budget | +| 2 | Risks are identified with documented impact and mitigation | Pass | Risks table: four risks, each with impact and mitigation | +| 3 | Success criteria are measurable, stating explicit targets rather than vague aspirations | Pass | Six success criteria with explicit targets and a measure (e.g. `99.99` as a float, `pytest` exits 0) | +| 4 | Scope explicitly separates In Scope vs Out of Scope | Pass | Scope has In Scope and Out of Scope subsections | +| 5 | Stakeholders are cross-referenced to Stakeholder Analysis IDs rather than re-described inline | Pass | Stakeholders table cites S01, S02 and S03 from SA-001 | +| 6 | Methodology and quality-standard foundation are stated explicitly (e.g. ISO/IEC 25010, Larman) | Pass | Methodological and Standards Foundation names the framework, ISO/IEC 25010:2023 and the coding skills | +| 7 | Assumptions and constraints are explicit and clearly distinguished from one another | Pass | Assumptions and Constraints are separate sections | +| 8 | Document supports executive decision-making with a clear, unambiguous recommendation | Pass | Recommendation is a single 'Proceed' with a rationale | + +## Language and Domain Results + +| # | Criterion | Status | Evidence/Notes | +| --- | --- | --- | --- | +| 1 | The Metadata table has a `Language` row and a `Domain` row, and neither is a placeholder | Pass | 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 BCP 47; `it` is in the registry domain list | +| 3 | The content (prose and table cells) is written in the stated language | Pass | All prose and table cells are English; the stand-in reads English | +| 4 | The register matches the one the registry gives for the artifact type | Pass | Executive types use IT Executive English, technical types IT Professional English, as the registry says; plain sentences, no jargon beyond IT terms | +| 5 | Domain terms are the PO terms of the domain's dictionary, with no synonyms | Pass | No dictionary (DICT) exists in this project; terms are used consistently (price, target price, alert, gateway) and no synonyms for them were found | +| 6 | Metadata keys, section headings, IDs and statuses are in English | Pass | Keys, headings, IDs and statuses are English | +| 7 | No translated twin (`..md`) exists beside the document | Pass | No `..md` twin exists | +| 8 | A change of language or domain since the previous accepted version has a Version History row and was reviewed again | Pass | First version; no language change since an earlier accepted version | +| 9 | A reviewer competent in the domain, and in the language, has confirmed that the domain terms are used correctly | Pass | The stand-in reads English and knows the IT domain; not independent of the author (recorded in Mode) | +| 10 | Abbreviations are spelled out on first use, in the stated language | Pass | Abbreviations (SMTP, CAPTCHA, ROI, API, QC, ISO/IEC) are spelled out on first use | + +## Overall Verdict + +Go — all Mandatory criteria pass; the Cost-Benefit assessment is qualitative with a stated reason. + +## Action Items + +| Action | Owner | Due | +| --- | --- | --- | +| None: no Fail and no Pending criterion | S01 | 2026-10-28 | + +--- + +[BC-001]: ../../business-case.md +[QC-BC-001]: ../../../framework/qc/artifacts/qc-business-case.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..b975138 --- /dev/null +++ b/docs/sqa/reviews/rc-002-stakeholder-analysis.md @@ -0,0 +1,68 @@ +# RC-002 Stakeholder Analysis review + +## Metadata +| Key | Value | +| --- | --- | +| ID | RC-002 | +| CrossReference | [SA-001], [QC-SA-001], [QC-LANG-001] | + +## Version History +| Date | Status | Author | Reviewer | Change | Commit | +| --- | --- | --- | --- | --- | --- | +| 2026-10-28 | 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] +- Scope: full review +- Language and domain: en / it (the artifact's Metadata rows) +- Language reviewer: none (the reviewer reads English and knows the domain IT; mode: AI as stand-in for S01) +- Mode: autonomous, not independent (AI as stand-in for S01); the author and the stand-in are both the AI working for S01 + +## Checklist Results + +| # | Criterion | Status | Evidence/Notes | +| --- | --- | --- | --- | +| 1 | Power/Interest grid is filled for every stakeholder, with no gaps or unclassified entries | Pass | S01, S02 and S03 each have Power, Interest and Quadrant | +| 2 | Each stakeholder is assigned a unique, stable ID (e.g. S01-S11 style) reusable for RACI assignments in other artifacts | Pass | IDs S01 to S03 are unique and stable | +| 3 | Roles and organizational context are defined with explicit Power and Interest levels, not just narrative description | Pass | Role, organisation, power and interest are given for each | +| 4 | Communication needs (channel, frequency, deliverable type) are mapped to project phases or milestones | Pass | Communication table lists channel, frequency, deliverable and phase | +| 5 | Conflicting stakeholder interests are identified with documented mitigation or resolution strategies | Pass | Two conflicts, each with a mitigation | +| 6 | Stakeholder concerns are explicitly traced to Business Case objectives | Pass | Traceability Analysis maps each stakeholder to BC-001 objectives | +| 7 | Primary concerns are expressed in both business language and a recognized quality-attribute mapping (e.g. FURPS+) | Pass | Each concern has a business statement and a FURPS+ attribute | +| 8 | Document is understandable and navigable by non-technical stakeholders reviewing their own entry | Pass | Short plain-language entries; each stakeholder can find their row | +| 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-006 name the stakeholder who raised them | + +## 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 BCP 47; `it` is in the registry domain list | +| 3 | The content (prose and table cells) is written in the stated language | Pass | All prose and table cells are English; the stand-in reads English | +| 4 | The register matches the one the registry gives for the artifact type | Pass | Executive types use IT Executive English, technical types IT Professional English, as the registry says; plain sentences, no jargon beyond IT terms | +| 5 | Domain terms are the PO terms of the domain's dictionary, with no synonyms | Pass | No dictionary (DICT) exists in this project; terms are used consistently (price, target price, alert, gateway) and no synonyms for them were found | +| 6 | Metadata keys, section headings, IDs and statuses are in English | Pass | Keys, headings, IDs and statuses are English | +| 7 | No translated twin (`..md`) exists beside the document | Pass | No `..md` twin exists | +| 8 | A change of language or domain since the previous accepted version has a Version History row and was reviewed again | Pass | First version; no language change since an earlier accepted version | +| 9 | A reviewer competent in the domain, and in the language, has confirmed that the domain terms are used correctly | Pass | The stand-in reads English and knows the IT domain; not independent of the author (recorded in Mode) | +| 10 | Abbreviations are spelled out on first use, in the stated language | Pass | Abbreviations (SMTP, CAPTCHA, ROI, API, QC, ISO/IEC) are spelled out on first use | + +## Overall Verdict + +Go — all criteria pass. + +## Action Items + +| Action | Owner | Due | +| --- | --- | --- | +| None: no Fail and no Pending criterion | S01 | 2026-10-28 | + +--- + +[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-project-plan.md b/docs/sqa/reviews/rc-003-project-plan.md new file mode 100644 index 0000000..8d67ecd --- /dev/null +++ b/docs/sqa/reviews/rc-003-project-plan.md @@ -0,0 +1,74 @@ +# RC-003 Project Plan review + +## Metadata +| Key | Value | +| --- | --- | +| ID | RC-003 | +| CrossReference | [PP-001], [QC-PP-001], [QC-LANG-001] | + +## Version History +| Date | Status | Author | Reviewer | Change | Commit | +| --- | --- | --- | --- | --- | --- | +| 2026-10-28 | Proposed | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version | pending | + +--- + +## Artifact Under Review + +- Instance reviewed: [PP-001] +- Checklist used: [QC-PP-001] and [QC-LANG-001] +- Scope: full review +- Language and domain: en / it (the artifact's Metadata rows) +- Language reviewer: none (the reviewer reads English and knows the domain IT; mode: AI as stand-in for S01) +- Mode: autonomous, not independent (AI as stand-in for S01); the author and the stand-in are both the AI working for S01 + +## Checklist Results + +| # | Criterion | Status | Evidence/Notes | +| --- | --- | --- | --- | +| 1 | The plan states its start date, end date and the constraint it must fit | Pass | Start 2026-10-28, end 2026-11-04, constraint: soft target, one pull request per gateway (BC-001 Constraints) | +| 2 | Every milestone or gateway is listed once with its document, decision date and owner | Pass | Six rows, each with document, decision date and owner S01 | +| 3 | Every decision date lies inside the plan's window and is consistent with the dates in the linked `MIL-*` document | Pass | Decision dates match the Target Date of each MIL document and lie in the window | +| 4 | Every in-scope item of the Business Case is delivered at a named gateway (scope coverage) | Pass | Scope Coverage table maps every in-scope item to a gateway | +| 5 | Dependencies between gateways are stated, acyclic and consistent with the schedule order | Pass | Chain MIL-001 to MIL-006; windows follow the order and do not overlap | +| 6 | The plan states what happens to later gateways and to the end date when a gateway is No-Go | Pass | Dependencies section says a No-Go moves later windows and that S01 decides about the end date | +| 7 | Owners, reviewers and escalation roles use Stakeholder Analysis IDs and match the governance RACI | Pass | Owner and reviewer use S01; no governance document exists, which the plan states | +| 8 | Planning assumptions are listed with their source, and a changed baseline is recorded with its reason | Pass | Planning Assumptions give the source of the dates and say no earlier baseline exists | +| 9 | Plan risks are listed with impact and a mitigation, and trace to Business Case risks where they come from there | Pass | Plan Risks have mitigations and one traces to the Business Case risk 1 | +| 10 | Open issues are listed, and none contradicts a statement elsewhere in the plan | Pass | Open Issues list two items; neither contradicts the plan | +| 11 | Each gateway's main deliverable is stated and matches the deliverable of its `MIL-*` document | Pass | Main deliverable text is taken from each MIL Deliverable section | +| 12 | Gateways that deliver user stories name them, and those that do not say why | Pass | Stories column says 'none (technical tasks)' | +| 13 | The schedule view (table, Gantt) and the dependency view agree with each other | Pass | Gantt bars match the table windows; the chain matches the dependency list | +| 14 | Each gateway is linked to its issue-tracker milestone, or marked as not yet synced | Pass | Milestone column says 'not yet synced' | +| 15 | The plan is a singleton: one Project Plan per project, changes recorded in Version History | Pass | One Project Plan; Version History holds the change | + +## 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 BCP 47; `it` is in the registry domain list | +| 3 | The content (prose and table cells) is written in the stated language | Pass | All prose and table cells are English; the stand-in reads English | +| 4 | The register matches the one the registry gives for the artifact type | Pass | Executive types use IT Executive English, technical types IT Professional English, as the registry says; plain sentences, no jargon beyond IT terms | +| 5 | Domain terms are the PO terms of the domain's dictionary, with no synonyms | Pass | No dictionary (DICT) exists in this project; terms are used consistently (price, target price, alert, gateway) and no synonyms for them were found | +| 6 | Metadata keys, section headings, IDs and statuses are in English | Pass | Keys, headings, IDs and statuses are English | +| 7 | No translated twin (`..md`) exists beside the document | Pass | No `..md` twin exists | +| 8 | A change of language or domain since the previous accepted version has a Version History row and was reviewed again | Pass | First version; no language change since an earlier accepted version | +| 9 | A reviewer competent in the domain, and in the language, has confirmed that the domain terms are used correctly | Pass | The stand-in reads English and knows the IT domain; not independent of the author (recorded in Mode) | +| 10 | Abbreviations are spelled out on first use, in the stated language | Pass | Abbreviations (SMTP, CAPTCHA, ROI, API, QC, ISO/IEC) are spelled out on first use | + +## Overall Verdict + +Go — all criteria pass; acceptance by the Product Owner is made by the stand-in. + +## Action Items + +| Action | Owner | Due | +| --- | --- | --- | +| None: no Fail and no Pending criterion | S01 | 2026-10-28 | + +--- + +[PP-001]: ../../project-plan.md +[QC-PP-001]: ../../../framework/qc/artifacts/qc-project-plan.md +[QC-LANG-001]: ../../../framework/qc/artifacts/qc-language-domain.md diff --git a/docs/sqa/reviews/rc-004-mil-001-foundation.md b/docs/sqa/reviews/rc-004-mil-001-foundation.md new file mode 100644 index 0000000..678b7d9 --- /dev/null +++ b/docs/sqa/reviews/rc-004-mil-001-foundation.md @@ -0,0 +1,65 @@ +# RC-004 MIL-001 review + +## Metadata +| Key | Value | +| --- | --- | +| ID | RC-004 | +| CrossReference | [MIL-001], [QC-MIL-001], [QC-LANG-001] | + +## Version History +| Date | Status | Author | Reviewer | Change | Commit | +| --- | --- | --- | --- | --- | --- | +| 2026-10-28 | 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] +- Scope: full review +- Language and domain: en / it (the artifact's Metadata rows) +- Language reviewer: none (the reviewer reads English and knows the domain IT; mode: AI as stand-in for S01) +- Mode: autonomous, not independent (AI as stand-in for S01); the author and the stand-in are both the AI working for S01 + +## Checklist Results + +| # | Criterion | Status | Evidence/Notes | +| --- | --- | --- | --- | +| 1 | A concrete deliverable is defined for every gate | Pass | Deliverable section names concrete output (merged branch with listed files or pages) | +| 2 | Explicit Go/No-Go criteria are stated for each gate | Pass | Go / No-Go table has objectively checkable criteria | +| 3 | Dependencies on other milestones are explicitly mapped | Pass | Dependencies table names the predecessor or says it has none | +| 4 | Each milestone is traceable to a Business Case objective or KPI | Pass | Traceability names the Business Case objective(s) | +| 5 | Milestone owner and approving reviewer are identified | Pass | Owner and approving reviewer are S01 | +| 6 | Milestone has a defined target date consistent with project constraints | Pass | Target Date is inside 2026-10-28 to 2026-11-04, the Project Plan window | + +## 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 BCP 47; `it` is in the registry domain list | +| 3 | The content (prose and table cells) is written in the stated language | Pass | All prose and table cells are English; the stand-in reads English | +| 4 | The register matches the one the registry gives for the artifact type | Pass | Executive types use IT Executive English, technical types IT Professional English, as the registry says; plain sentences, no jargon beyond IT terms | +| 5 | Domain terms are the PO terms of the domain's dictionary, with no synonyms | Pass | No dictionary (DICT) exists in this project; terms are used consistently (price, target price, alert, gateway) and no synonyms for them were found | +| 6 | Metadata keys, section headings, IDs and statuses are in English | Pass | Keys, headings, IDs and statuses are English | +| 7 | No translated twin (`..md`) exists beside the document | Pass | No `..md` twin exists | +| 8 | A change of language or domain since the previous accepted version has a Version History row and was reviewed again | Pass | First version; no language change since an earlier accepted version | +| 9 | A reviewer competent in the domain, and in the language, has confirmed that the domain terms are used correctly | Pass | The stand-in reads English and knows the IT domain; not independent of the author (recorded in Mode) | +| 10 | Abbreviations are spelled out on first use, in the stated language | Pass | Abbreviations (SMTP, CAPTCHA, ROI, API, QC, ISO/IEC) are spelled out on first use | + +## Overall Verdict + +Go — all criteria pass. + +## Action Items + +| Action | Owner | Due | +| --- | --- | --- | +| None: no Fail and no Pending criterion | S01 | 2026-10-28 | + +--- + +[MIL-001]: ../../milestones/mil-001-foundation.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-002-scrape-price.md b/docs/sqa/reviews/rc-005-mil-002-scrape-price.md new file mode 100644 index 0000000..7571cce --- /dev/null +++ b/docs/sqa/reviews/rc-005-mil-002-scrape-price.md @@ -0,0 +1,65 @@ +# RC-005 MIL-002 review + +## Metadata +| Key | Value | +| --- | --- | +| ID | RC-005 | +| CrossReference | [MIL-002], [QC-MIL-001], [QC-LANG-001] | + +## Version History +| Date | Status | Author | Reviewer | Change | Commit | +| --- | --- | --- | --- | --- | --- | +| 2026-10-28 | 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] +- Scope: full review +- Language and domain: en / it (the artifact's Metadata rows) +- Language reviewer: none (the reviewer reads English and knows the domain IT; mode: AI as stand-in for S01) +- Mode: autonomous, not independent (AI as stand-in for S01); the author and the stand-in are both the AI working for S01 + +## Checklist Results + +| # | Criterion | Status | Evidence/Notes | +| --- | --- | --- | --- | +| 1 | A concrete deliverable is defined for every gate | Pass | Deliverable section names concrete output (merged branch with listed files or pages) | +| 2 | Explicit Go/No-Go criteria are stated for each gate | Pass | Go / No-Go table has objectively checkable criteria | +| 3 | Dependencies on other milestones are explicitly mapped | Pass | Dependencies table names the predecessor or says it has none | +| 4 | Each milestone is traceable to a Business Case objective or KPI | Pass | Traceability names the Business Case objective(s) | +| 5 | Milestone owner and approving reviewer are identified | Pass | Owner and approving reviewer are S01 | +| 6 | Milestone has a defined target date consistent with project constraints | Pass | Target Date is inside 2026-10-28 to 2026-11-04, the Project Plan window | + +## 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 BCP 47; `it` is in the registry domain list | +| 3 | The content (prose and table cells) is written in the stated language | Pass | All prose and table cells are English; the stand-in reads English | +| 4 | The register matches the one the registry gives for the artifact type | Pass | Executive types use IT Executive English, technical types IT Professional English, as the registry says; plain sentences, no jargon beyond IT terms | +| 5 | Domain terms are the PO terms of the domain's dictionary, with no synonyms | Pass | No dictionary (DICT) exists in this project; terms are used consistently (price, target price, alert, gateway) and no synonyms for them were found | +| 6 | Metadata keys, section headings, IDs and statuses are in English | Pass | Keys, headings, IDs and statuses are English | +| 7 | No translated twin (`..md`) exists beside the document | Pass | No `..md` twin exists | +| 8 | A change of language or domain since the previous accepted version has a Version History row and was reviewed again | Pass | First version; no language change since an earlier accepted version | +| 9 | A reviewer competent in the domain, and in the language, has confirmed that the domain terms are used correctly | Pass | The stand-in reads English and knows the IT domain; not independent of the author (recorded in Mode) | +| 10 | Abbreviations are spelled out on first use, in the stated language | Pass | Abbreviations (SMTP, CAPTCHA, ROI, API, QC, ISO/IEC) are spelled out on first use | + +## Overall Verdict + +Go — all criteria pass. + +## Action Items + +| Action | Owner | Due | +| --- | --- | --- | +| None: no Fail and no Pending criterion | S01 | 2026-10-28 | + +--- + +[MIL-002]: ../../milestones/mil-002-scrape-price.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-mil-003-email-alert.md b/docs/sqa/reviews/rc-006-mil-003-email-alert.md new file mode 100644 index 0000000..8a3ccac --- /dev/null +++ b/docs/sqa/reviews/rc-006-mil-003-email-alert.md @@ -0,0 +1,65 @@ +# RC-006 MIL-003 review + +## Metadata +| Key | Value | +| --- | --- | +| ID | RC-006 | +| CrossReference | [MIL-003], [QC-MIL-001], [QC-LANG-001] | + +## Version History +| Date | Status | Author | Reviewer | Change | Commit | +| --- | --- | --- | --- | --- | --- | +| 2026-10-28 | 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] +- Scope: full review +- Language and domain: en / it (the artifact's Metadata rows) +- Language reviewer: none (the reviewer reads English and knows the domain IT; mode: AI as stand-in for S01) +- Mode: autonomous, not independent (AI as stand-in for S01); the author and the stand-in are both the AI working for S01 + +## Checklist Results + +| # | Criterion | Status | Evidence/Notes | +| --- | --- | --- | --- | +| 1 | A concrete deliverable is defined for every gate | Pass | Deliverable section names concrete output (merged branch with listed files or pages) | +| 2 | Explicit Go/No-Go criteria are stated for each gate | Pass | Go / No-Go table has objectively checkable criteria | +| 3 | Dependencies on other milestones are explicitly mapped | Pass | Dependencies table names the predecessor or says it has none | +| 4 | Each milestone is traceable to a Business Case objective or KPI | Pass | Traceability names the Business Case objective(s) | +| 5 | Milestone owner and approving reviewer are identified | Pass | Owner and approving reviewer are S01 | +| 6 | Milestone has a defined target date consistent with project constraints | Pass | Target Date is inside 2026-10-28 to 2026-11-04, the Project Plan window | + +## 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 BCP 47; `it` is in the registry domain list | +| 3 | The content (prose and table cells) is written in the stated language | Pass | All prose and table cells are English; the stand-in reads English | +| 4 | The register matches the one the registry gives for the artifact type | Pass | Executive types use IT Executive English, technical types IT Professional English, as the registry says; plain sentences, no jargon beyond IT terms | +| 5 | Domain terms are the PO terms of the domain's dictionary, with no synonyms | Pass | No dictionary (DICT) exists in this project; terms are used consistently (price, target price, alert, gateway) and no synonyms for them were found | +| 6 | Metadata keys, section headings, IDs and statuses are in English | Pass | Keys, headings, IDs and statuses are English | +| 7 | No translated twin (`..md`) exists beside the document | Pass | No `..md` twin exists | +| 8 | A change of language or domain since the previous accepted version has a Version History row and was reviewed again | Pass | First version; no language change since an earlier accepted version | +| 9 | A reviewer competent in the domain, and in the language, has confirmed that the domain terms are used correctly | Pass | The stand-in reads English and knows the IT domain; not independent of the author (recorded in Mode) | +| 10 | Abbreviations are spelled out on first use, in the stated language | Pass | Abbreviations (SMTP, CAPTCHA, ROI, API, QC, ISO/IEC) are spelled out on first use | + +## Overall Verdict + +Go — all criteria pass. + +## Action Items + +| Action | Owner | Due | +| --- | --- | --- | +| None: no Fail and no Pending criterion | S01 | 2026-10-28 | + +--- + +[MIL-003]: ../../milestones/mil-003-email-alert.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-007-mil-004-request-headers.md b/docs/sqa/reviews/rc-007-mil-004-request-headers.md new file mode 100644 index 0000000..056fbdc --- /dev/null +++ b/docs/sqa/reviews/rc-007-mil-004-request-headers.md @@ -0,0 +1,65 @@ +# RC-007 MIL-004 review + +## Metadata +| Key | Value | +| --- | --- | +| ID | RC-007 | +| CrossReference | [MIL-004], [QC-MIL-001], [QC-LANG-001] | + +## Version History +| Date | Status | Author | Reviewer | Change | Commit | +| --- | --- | --- | --- | --- | --- | +| 2026-10-28 | Proposed | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version | pending | + +--- + +## Artifact Under Review + +- Instance reviewed: [MIL-004] +- Checklist used: [QC-MIL-001] and [QC-LANG-001] +- Scope: full review +- Language and domain: en / it (the artifact's Metadata rows) +- Language reviewer: none (the reviewer reads English and knows the domain IT; mode: AI as stand-in for S01) +- Mode: autonomous, not independent (AI as stand-in for S01); the author and the stand-in are both the AI working for S01 + +## Checklist Results + +| # | Criterion | Status | Evidence/Notes | +| --- | --- | --- | --- | +| 1 | A concrete deliverable is defined for every gate | Pass | Deliverable section names concrete output (merged branch with listed files or pages) | +| 2 | Explicit Go/No-Go criteria are stated for each gate | Pass | Go / No-Go table has objectively checkable criteria | +| 3 | Dependencies on other milestones are explicitly mapped | Pass | Dependencies table names the predecessor or says it has none | +| 4 | Each milestone is traceable to a Business Case objective or KPI | Pass | Traceability names the Business Case objective(s) | +| 5 | Milestone owner and approving reviewer are identified | Pass | Owner and approving reviewer are S01 | +| 6 | Milestone has a defined target date consistent with project constraints | Pass | Target Date is inside 2026-10-28 to 2026-11-04, the Project Plan window | + +## 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 BCP 47; `it` is in the registry domain list | +| 3 | The content (prose and table cells) is written in the stated language | Pass | All prose and table cells are English; the stand-in reads English | +| 4 | The register matches the one the registry gives for the artifact type | Pass | Executive types use IT Executive English, technical types IT Professional English, as the registry says; plain sentences, no jargon beyond IT terms | +| 5 | Domain terms are the PO terms of the domain's dictionary, with no synonyms | Pass | No dictionary (DICT) exists in this project; terms are used consistently (price, target price, alert, gateway) and no synonyms for them were found | +| 6 | Metadata keys, section headings, IDs and statuses are in English | Pass | Keys, headings, IDs and statuses are English | +| 7 | No translated twin (`..md`) exists beside the document | Pass | No `..md` twin exists | +| 8 | A change of language or domain since the previous accepted version has a Version History row and was reviewed again | Pass | First version; no language change since an earlier accepted version | +| 9 | A reviewer competent in the domain, and in the language, has confirmed that the domain terms are used correctly | Pass | The stand-in reads English and knows the IT domain; not independent of the author (recorded in Mode) | +| 10 | Abbreviations are spelled out on first use, in the stated language | Pass | Abbreviations (SMTP, CAPTCHA, ROI, API, QC, ISO/IEC) are spelled out on first use | + +## Overall Verdict + +Go — all criteria pass. + +## Action Items + +| Action | Owner | Due | +| --- | --- | --- | +| None: no Fail and no Pending criterion | S01 | 2026-10-28 | + +--- + +[MIL-004]: ../../milestones/mil-004-request-headers.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-008-mil-005-live-amazon.md b/docs/sqa/reviews/rc-008-mil-005-live-amazon.md new file mode 100644 index 0000000..81e6824 --- /dev/null +++ b/docs/sqa/reviews/rc-008-mil-005-live-amazon.md @@ -0,0 +1,65 @@ +# RC-008 MIL-005 review + +## Metadata +| Key | Value | +| --- | --- | +| ID | RC-008 | +| CrossReference | [MIL-005], [QC-MIL-001], [QC-LANG-001] | + +## Version History +| Date | Status | Author | Reviewer | Change | Commit | +| --- | --- | --- | --- | --- | --- | +| 2026-10-28 | Proposed | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version | pending | + +--- + +## Artifact Under Review + +- Instance reviewed: [MIL-005] +- Checklist used: [QC-MIL-001] and [QC-LANG-001] +- Scope: full review +- Language and domain: en / it (the artifact's Metadata rows) +- Language reviewer: none (the reviewer reads English and knows the domain IT; mode: AI as stand-in for S01) +- Mode: autonomous, not independent (AI as stand-in for S01); the author and the stand-in are both the AI working for S01 + +## Checklist Results + +| # | Criterion | Status | Evidence/Notes | +| --- | --- | --- | --- | +| 1 | A concrete deliverable is defined for every gate | Pass | Deliverable section names concrete output (merged branch with listed files or pages) | +| 2 | Explicit Go/No-Go criteria are stated for each gate | Pass | Go / No-Go table has objectively checkable criteria | +| 3 | Dependencies on other milestones are explicitly mapped | Pass | Dependencies table names the predecessor or says it has none | +| 4 | Each milestone is traceable to a Business Case objective or KPI | Pass | Traceability names the Business Case objective(s) | +| 5 | Milestone owner and approving reviewer are identified | Pass | Owner and approving reviewer are S01 | +| 6 | Milestone has a defined target date consistent with project constraints | Pass | Target Date is inside 2026-10-28 to 2026-11-04, the Project Plan window | + +## 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 BCP 47; `it` is in the registry domain list | +| 3 | The content (prose and table cells) is written in the stated language | Pass | All prose and table cells are English; the stand-in reads English | +| 4 | The register matches the one the registry gives for the artifact type | Pass | Executive types use IT Executive English, technical types IT Professional English, as the registry says; plain sentences, no jargon beyond IT terms | +| 5 | Domain terms are the PO terms of the domain's dictionary, with no synonyms | Pass | No dictionary (DICT) exists in this project; terms are used consistently (price, target price, alert, gateway) and no synonyms for them were found | +| 6 | Metadata keys, section headings, IDs and statuses are in English | Pass | Keys, headings, IDs and statuses are English | +| 7 | No translated twin (`..md`) exists beside the document | Pass | No `..md` twin exists | +| 8 | A change of language or domain since the previous accepted version has a Version History row and was reviewed again | Pass | First version; no language change since an earlier accepted version | +| 9 | A reviewer competent in the domain, and in the language, has confirmed that the domain terms are used correctly | Pass | The stand-in reads English and knows the IT domain; not independent of the author (recorded in Mode) | +| 10 | Abbreviations are spelled out on first use, in the stated language | Pass | Abbreviations (SMTP, CAPTCHA, ROI, API, QC, ISO/IEC) are spelled out on first use | + +## Overall Verdict + +Go — all criteria pass. + +## Action Items + +| Action | Owner | Due | +| --- | --- | --- | +| None: no Fail and no Pending criterion | S01 | 2026-10-28 | + +--- + +[MIL-005]: ../../milestones/mil-005-live-amazon.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-009-mil-006-wiki-screenshots.md b/docs/sqa/reviews/rc-009-mil-006-wiki-screenshots.md new file mode 100644 index 0000000..697b509 --- /dev/null +++ b/docs/sqa/reviews/rc-009-mil-006-wiki-screenshots.md @@ -0,0 +1,65 @@ +# RC-009 MIL-006 review + +## Metadata +| Key | Value | +| --- | --- | +| ID | RC-009 | +| CrossReference | [MIL-006], [QC-MIL-001], [QC-LANG-001] | + +## Version History +| Date | Status | Author | Reviewer | Change | Commit | +| --- | --- | --- | --- | --- | --- | +| 2026-10-28 | Proposed | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version | pending | + +--- + +## Artifact Under Review + +- Instance reviewed: [MIL-006] +- Checklist used: [QC-MIL-001] and [QC-LANG-001] +- Scope: full review +- Language and domain: en / it (the artifact's Metadata rows) +- Language reviewer: none (the reviewer reads English and knows the domain IT; mode: AI as stand-in for S01) +- Mode: autonomous, not independent (AI as stand-in for S01); the author and the stand-in are both the AI working for S01 + +## Checklist Results + +| # | Criterion | Status | Evidence/Notes | +| --- | --- | --- | --- | +| 1 | A concrete deliverable is defined for every gate | Pass | Deliverable section names concrete output (merged branch with listed files or pages) | +| 2 | Explicit Go/No-Go criteria are stated for each gate | Pass | Go / No-Go table has objectively checkable criteria | +| 3 | Dependencies on other milestones are explicitly mapped | Pass | Dependencies table names the predecessor or says it has none | +| 4 | Each milestone is traceable to a Business Case objective or KPI | Pass | Traceability names the Business Case objective(s) | +| 5 | Milestone owner and approving reviewer are identified | Pass | Owner and approving reviewer are S01 | +| 6 | Milestone has a defined target date consistent with project constraints | Pass | Target Date is inside 2026-10-28 to 2026-11-04, the Project Plan window | + +## 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 BCP 47; `it` is in the registry domain list | +| 3 | The content (prose and table cells) is written in the stated language | Pass | All prose and table cells are English; the stand-in reads English | +| 4 | The register matches the one the registry gives for the artifact type | Pass | Executive types use IT Executive English, technical types IT Professional English, as the registry says; plain sentences, no jargon beyond IT terms | +| 5 | Domain terms are the PO terms of the domain's dictionary, with no synonyms | Pass | No dictionary (DICT) exists in this project; terms are used consistently (price, target price, alert, gateway) and no synonyms for them were found | +| 6 | Metadata keys, section headings, IDs and statuses are in English | Pass | Keys, headings, IDs and statuses are English | +| 7 | No translated twin (`..md`) exists beside the document | Pass | No `..md` twin exists | +| 8 | A change of language or domain since the previous accepted version has a Version History row and was reviewed again | Pass | First version; no language change since an earlier accepted version | +| 9 | A reviewer competent in the domain, and in the language, has confirmed that the domain terms are used correctly | Pass | The stand-in reads English and knows the IT domain; not independent of the author (recorded in Mode) | +| 10 | Abbreviations are spelled out on first use, in the stated language | Pass | Abbreviations (SMTP, CAPTCHA, ROI, API, QC, ISO/IEC) are spelled out on first use | + +## Overall Verdict + +Go — all criteria pass. + +## Action Items + +| Action | Owner | Due | +| --- | --- | --- | +| None: no Fail and no Pending criterion | S01 | 2026-10-28 | + +--- + +[MIL-006]: ../../milestones/mil-006-wiki-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/stakeholder-analysis.md b/docs/stakeholder-analysis.md new file mode 100644 index 0000000..0ecdb95 --- /dev/null +++ b/docs/stakeholder-analysis.md @@ -0,0 +1,77 @@ +# Stakeholder Analysis + +## Metadata +| Key | Value | +| --- | --- | +| ID | SA-001 | +| CrossReference | [BC-001] | +| Language | en | +| Domain | it | + +## Version History +| Date | Status | Author | Reviewer | Change | Commit | +| --- | --- | --- | --- | --- | --- | +| 2026-10-28 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version
Accepted after review (RC-002 Go) | pending | + +--- + +## Purpose + +Identify who is involved in the Amazon price tracker, how much they influence it and what each needs. The method is the power/interest grid (Mendelow); concerns are mapped to FURPS+ (Functionality, Usability, Reliability, Performance, Supportability, plus 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, reviewer | Tirsvad | High | High | Manage Closely | A working, tested solution and a clean repository | +| S02 | Udemy coursists | Course participants who share and compare solutions | Udemy community | Low | High | Keep Informed | Readable, runnable code with the assignment's function names, and run instructions | +| S03 | GitHub viewers | Visitors who browse the repository for ideas | Public | Low | Low | Monitor | A clear description, topics, README and no unnecessary runtime dependencies | + +## Power/Interest Classification Rationale + +- **Manage Closely (S01):** decides scope, reviews and accepts every artifact. +- **Keep Informed (S02):** cannot change the project but uses it directly, so the code and README must be easy to follow. +- **Monitor (S03):** casual readers; the repository page is their only contact. + +## Primary Concerns and FURPS+ Mapping + +| Concern ID | Stakeholder | Concern | FURPS+ attribute | +| --- | --- | --- | --- | +| CN-001 | S01 | The bot finds the price and alerts when it is below target | Functionality | +| CN-002 | S01 | Passwords and tokens never reach the repository | Functionality (security) | +| CN-003 | S02 | Function names match the assignment and the code is readable | Usability | +| CN-004 | S02 | The README explains how to set up the venv, run and test | Usability | +| CN-005 | S03 | Description, topics and README explain the repository | Usability | +| CN-006 | S03 | No runtime dependencies beyond the necessary | Supportability | + +## Communication Requirements + +| Channel | Frequency | Deliverable type | Phase | +| --- | --- | --- | --- | +| Chat with S01 | Per milestone | Pull request for review | MIL-001 to MIL-006 | +| README and wiki | Once, then per change | Documentation for S02 and S03 | MIL-001, MIL-006 | + +## Conflicting Interests and Mitigations + +| Conflict | Mitigation | +| --- | --- | +| S02 wants the code to follow the course (single script) while S01 wants layered, tested code | Keep the assignment's function names and a short `main.py`; the layers stay thin | +| S03 wants no dependencies while the scraper needs three | Only `requests`, `beautifulsoup4` and `python-dotenv`; dev tools stay in a `dev` extra | + +## Traceability Analysis + +| Stakeholder | Actor / use case | Business Case objective | +| --- | --- | --- | +| S01 | Runs the tracker, reviews every step | [BC-001] objectives 1 to 5 | +| S02 | Reads and runs the code | [BC-001] objectives 1 to 4 and 6 | +| S03 | Reads the repository page | [BC-001] objective 6 | + +## Sign-Off + +| Stakeholder | Decision | Date | +| --- | --- | --- | +| S01 | pending | | + +--- + +[BC-001]: ./business-case.md diff --git a/framework b/framework new file mode 160000 index 0000000..7c27919 --- /dev/null +++ b/framework @@ -0,0 +1 @@ +Subproject commit 7c2791939c42c18ec444bce245e9a3958b242cae -- 2.54.0 From ea4523ba5c99c614599364c632a3a3982a74ac9b Mon Sep 17 00:00:00 2001 From: Jens Tirsvad Nielsen Date: Wed, 28 Oct 2026 14:31:16 +0800 Subject: [PATCH 2/2] Resolve pending commit links of the baseline --- docs/business-case.md | 6 +++++- docs/milestones/mil-001-foundation.md | 3 ++- docs/milestones/mil-002-scrape-price.md | 3 ++- docs/milestones/mil-003-email-alert.md | 3 ++- docs/milestones/mil-004-request-headers.md | 3 ++- docs/milestones/mil-005-live-amazon.md | 3 ++- docs/milestones/mil-006-wiki-screenshots.md | 3 ++- docs/project-plan.md | 3 ++- docs/sqa/reviews/rc-001-business-case.md | 3 ++- docs/sqa/reviews/rc-002-stakeholder-analysis.md | 3 ++- docs/sqa/reviews/rc-003-project-plan.md | 3 ++- docs/sqa/reviews/rc-004-mil-001-foundation.md | 3 ++- docs/sqa/reviews/rc-005-mil-002-scrape-price.md | 3 ++- docs/sqa/reviews/rc-006-mil-003-email-alert.md | 3 ++- docs/sqa/reviews/rc-007-mil-004-request-headers.md | 3 ++- docs/sqa/reviews/rc-008-mil-005-live-amazon.md | 3 ++- docs/sqa/reviews/rc-009-mil-006-wiki-screenshots.md | 3 ++- docs/stakeholder-analysis.md | 5 +++-- 18 files changed, 40 insertions(+), 19 deletions(-) diff --git a/docs/business-case.md b/docs/business-case.md index 7fd52fc..9a1c0e3 100644 --- a/docs/business-case.md +++ b/docs/business-case.md @@ -11,7 +11,7 @@ ## Version History | Date | Status | Author | Reviewer | Change | Commit | | --- | --- | --- | --- | --- | --- | -| 2026-10-28 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version
Accepted after review (RC-001 Go) | pending | +| 2026-10-28 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version
Accepted after review (RC-001 Go) | [f9765fd] | --- @@ -124,3 +124,7 @@ The assessment is qualitative on purpose: this is a learning project with no rev ## Recommendation Proceed — the scope is small, the cost is low and every objective is testable. + +--- + +[f9765fd]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/047-amazon-price-tracker/commit/f9765fd3743f46c189359e713fd050c8e1a598b6 diff --git a/docs/milestones/mil-001-foundation.md b/docs/milestones/mil-001-foundation.md index 496be68..a789320 100644 --- a/docs/milestones/mil-001-foundation.md +++ b/docs/milestones/mil-001-foundation.md @@ -11,7 +11,7 @@ ## Version History | Date | Status | Author | Reviewer | Change | Commit | | --- | --- | --- | --- | --- | --- | -| 2026-10-28 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version
Accepted after review (RC-004 Go) | pending | +| 2026-10-28 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version
Accepted after review (RC-004 Go) | [f9765fd] | --- @@ -69,3 +69,4 @@ Branch `mil-001-foundation` merged: `pyproject.toml`, `.gitignore`, `.env.exampl --- [BC-001]: ../business-case.md +[f9765fd]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/047-amazon-price-tracker/commit/f9765fd3743f46c189359e713fd050c8e1a598b6 diff --git a/docs/milestones/mil-002-scrape-price.md b/docs/milestones/mil-002-scrape-price.md index 4197b98..19da726 100644 --- a/docs/milestones/mil-002-scrape-price.md +++ b/docs/milestones/mil-002-scrape-price.md @@ -11,7 +11,7 @@ ## Version History | Date | Status | Author | Reviewer | Change | Commit | | --- | --- | --- | --- | --- | --- | -| 2026-10-28 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version
Accepted after review (RC-005 Go) | pending | +| 2026-10-28 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version
Accepted after review (RC-005 Go) | [f9765fd] | --- @@ -68,3 +68,4 @@ Branch `mil-002-scrape-price` merged: a scraper that returns the title and the p --- [BC-001]: ../business-case.md +[f9765fd]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/047-amazon-price-tracker/commit/f9765fd3743f46c189359e713fd050c8e1a598b6 diff --git a/docs/milestones/mil-003-email-alert.md b/docs/milestones/mil-003-email-alert.md index 8a3452f..28f1eab 100644 --- a/docs/milestones/mil-003-email-alert.md +++ b/docs/milestones/mil-003-email-alert.md @@ -11,7 +11,7 @@ ## Version History | Date | Status | Author | Reviewer | Change | Commit | | --- | --- | --- | --- | --- | --- | -| 2026-10-28 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version
Accepted after review (RC-006 Go) | pending | +| 2026-10-28 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version
Accepted after review (RC-006 Go) | [f9765fd] | --- @@ -69,3 +69,4 @@ Branch `mil-003-email-alert` merged: an alert that builds and sends an e-mail wi --- [BC-001]: ../business-case.md +[f9765fd]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/047-amazon-price-tracker/commit/f9765fd3743f46c189359e713fd050c8e1a598b6 diff --git a/docs/milestones/mil-004-request-headers.md b/docs/milestones/mil-004-request-headers.md index 3e870e1..ae4c57c 100644 --- a/docs/milestones/mil-004-request-headers.md +++ b/docs/milestones/mil-004-request-headers.md @@ -11,7 +11,7 @@ ## Version History | Date | Status | Author | Reviewer | Change | Commit | | --- | --- | --- | --- | --- | --- | -| 2026-10-28 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version
Accepted after review (RC-007 Go) | pending | +| 2026-10-28 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version
Accepted after review (RC-007 Go) | [f9765fd] | --- @@ -66,3 +66,4 @@ Branch `mil-004-request-headers` merged: requests carry the headers from `consta --- [BC-001]: ../business-case.md +[f9765fd]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/047-amazon-price-tracker/commit/f9765fd3743f46c189359e713fd050c8e1a598b6 diff --git a/docs/milestones/mil-005-live-amazon.md b/docs/milestones/mil-005-live-amazon.md index c1181c5..a337bc6 100644 --- a/docs/milestones/mil-005-live-amazon.md +++ b/docs/milestones/mil-005-live-amazon.md @@ -11,7 +11,7 @@ ## Version History | Date | Status | Author | Reviewer | Change | Commit | | --- | --- | --- | --- | --- | --- | -| 2026-10-28 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version
Accepted after review (RC-008 Go) | pending | +| 2026-10-28 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version
Accepted after review (RC-008 Go) | [f9765fd] | --- @@ -68,3 +68,4 @@ Branch `mil-005-live-amazon` merged: URL and selectors configurable for the live --- [BC-001]: ../business-case.md +[f9765fd]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/047-amazon-price-tracker/commit/f9765fd3743f46c189359e713fd050c8e1a598b6 diff --git a/docs/milestones/mil-006-wiki-screenshots.md b/docs/milestones/mil-006-wiki-screenshots.md index d233904..be8cd57 100644 --- a/docs/milestones/mil-006-wiki-screenshots.md +++ b/docs/milestones/mil-006-wiki-screenshots.md @@ -11,7 +11,7 @@ ## Version History | Date | Status | Author | Reviewer | Change | Commit | | --- | --- | --- | --- | --- | --- | -| 2026-10-28 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version
Accepted after review (RC-009 Go) | pending | +| 2026-10-28 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version
Accepted after review (RC-009 Go) | [f9765fd] | --- @@ -68,3 +68,4 @@ Wiki pages in `en`, `da` and `ms`, one per language per lecture step plus a home --- [BC-001]: ../business-case.md +[f9765fd]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/047-amazon-price-tracker/commit/f9765fd3743f46c189359e713fd050c8e1a598b6 diff --git a/docs/project-plan.md b/docs/project-plan.md index 2e24b04..5fc8ba3 100644 --- a/docs/project-plan.md +++ b/docs/project-plan.md @@ -11,7 +11,7 @@ ## Version History | Date | Status | Author | Reviewer | Change | Commit | | --- | --- | --- | --- | --- | --- | -| 2026-10-28 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version
Accepted after review (RC-003 Go) | pending | +| 2026-10-28 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version
Accepted after review (RC-003 Go) | [f9765fd] | --- @@ -83,3 +83,4 @@ MIL-001 → MIL-002 → MIL-003 → MIL-004 → MIL-005 → MIL-006. A No-Go sto [BC-001]: ./business-case.md [SA-001]: ./stakeholder-analysis.md +[f9765fd]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/047-amazon-price-tracker/commit/f9765fd3743f46c189359e713fd050c8e1a598b6 diff --git a/docs/sqa/reviews/rc-001-business-case.md b/docs/sqa/reviews/rc-001-business-case.md index a49befd..8597e90 100644 --- a/docs/sqa/reviews/rc-001-business-case.md +++ b/docs/sqa/reviews/rc-001-business-case.md @@ -9,7 +9,7 @@ ## Version History | Date | Status | Author | Reviewer | Change | Commit | | --- | --- | --- | --- | --- | --- | -| 2026-10-28 | Proposed | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version | pending | +| 2026-10-28 | Proposed | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version | [f9765fd] | --- @@ -64,3 +64,4 @@ Go — all Mandatory criteria pass; the Cost-Benefit assessment is qualitative w [BC-001]: ../../business-case.md [QC-BC-001]: ../../../framework/qc/artifacts/qc-business-case.md +[f9765fd]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/047-amazon-price-tracker/commit/f9765fd3743f46c189359e713fd050c8e1a598b6 diff --git a/docs/sqa/reviews/rc-002-stakeholder-analysis.md b/docs/sqa/reviews/rc-002-stakeholder-analysis.md index b975138..d952da0 100644 --- a/docs/sqa/reviews/rc-002-stakeholder-analysis.md +++ b/docs/sqa/reviews/rc-002-stakeholder-analysis.md @@ -9,7 +9,7 @@ ## Version History | Date | Status | Author | Reviewer | Change | Commit | | --- | --- | --- | --- | --- | --- | -| 2026-10-28 | Proposed | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version | pending | +| 2026-10-28 | Proposed | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version | [f9765fd] | --- @@ -66,3 +66,4 @@ Go — all criteria pass. [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 +[f9765fd]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/047-amazon-price-tracker/commit/f9765fd3743f46c189359e713fd050c8e1a598b6 diff --git a/docs/sqa/reviews/rc-003-project-plan.md b/docs/sqa/reviews/rc-003-project-plan.md index 8d67ecd..7ecb361 100644 --- a/docs/sqa/reviews/rc-003-project-plan.md +++ b/docs/sqa/reviews/rc-003-project-plan.md @@ -9,7 +9,7 @@ ## Version History | Date | Status | Author | Reviewer | Change | Commit | | --- | --- | --- | --- | --- | --- | -| 2026-10-28 | Proposed | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version | pending | +| 2026-10-28 | Proposed | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version | [f9765fd] | --- @@ -72,3 +72,4 @@ Go — all criteria pass; acceptance by the Product Owner is made by the stand-i [PP-001]: ../../project-plan.md [QC-PP-001]: ../../../framework/qc/artifacts/qc-project-plan.md [QC-LANG-001]: ../../../framework/qc/artifacts/qc-language-domain.md +[f9765fd]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/047-amazon-price-tracker/commit/f9765fd3743f46c189359e713fd050c8e1a598b6 diff --git a/docs/sqa/reviews/rc-004-mil-001-foundation.md b/docs/sqa/reviews/rc-004-mil-001-foundation.md index 678b7d9..d571fb8 100644 --- a/docs/sqa/reviews/rc-004-mil-001-foundation.md +++ b/docs/sqa/reviews/rc-004-mil-001-foundation.md @@ -9,7 +9,7 @@ ## Version History | Date | Status | Author | Reviewer | Change | Commit | | --- | --- | --- | --- | --- | --- | -| 2026-10-28 | Proposed | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version | pending | +| 2026-10-28 | Proposed | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version | [f9765fd] | --- @@ -63,3 +63,4 @@ Go — all criteria pass. [MIL-001]: ../../milestones/mil-001-foundation.md [QC-MIL-001]: ../../../framework/qc/artifacts/qc-milestones-gateways.md [QC-LANG-001]: ../../../framework/qc/artifacts/qc-language-domain.md +[f9765fd]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/047-amazon-price-tracker/commit/f9765fd3743f46c189359e713fd050c8e1a598b6 diff --git a/docs/sqa/reviews/rc-005-mil-002-scrape-price.md b/docs/sqa/reviews/rc-005-mil-002-scrape-price.md index 7571cce..28d6691 100644 --- a/docs/sqa/reviews/rc-005-mil-002-scrape-price.md +++ b/docs/sqa/reviews/rc-005-mil-002-scrape-price.md @@ -9,7 +9,7 @@ ## Version History | Date | Status | Author | Reviewer | Change | Commit | | --- | --- | --- | --- | --- | --- | -| 2026-10-28 | Proposed | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version | pending | +| 2026-10-28 | Proposed | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version | [f9765fd] | --- @@ -63,3 +63,4 @@ Go — all criteria pass. [MIL-002]: ../../milestones/mil-002-scrape-price.md [QC-MIL-001]: ../../../framework/qc/artifacts/qc-milestones-gateways.md [QC-LANG-001]: ../../../framework/qc/artifacts/qc-language-domain.md +[f9765fd]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/047-amazon-price-tracker/commit/f9765fd3743f46c189359e713fd050c8e1a598b6 diff --git a/docs/sqa/reviews/rc-006-mil-003-email-alert.md b/docs/sqa/reviews/rc-006-mil-003-email-alert.md index 8a3ccac..88cc06c 100644 --- a/docs/sqa/reviews/rc-006-mil-003-email-alert.md +++ b/docs/sqa/reviews/rc-006-mil-003-email-alert.md @@ -9,7 +9,7 @@ ## Version History | Date | Status | Author | Reviewer | Change | Commit | | --- | --- | --- | --- | --- | --- | -| 2026-10-28 | Proposed | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version | pending | +| 2026-10-28 | Proposed | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version | [f9765fd] | --- @@ -63,3 +63,4 @@ Go — all criteria pass. [MIL-003]: ../../milestones/mil-003-email-alert.md [QC-MIL-001]: ../../../framework/qc/artifacts/qc-milestones-gateways.md [QC-LANG-001]: ../../../framework/qc/artifacts/qc-language-domain.md +[f9765fd]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/047-amazon-price-tracker/commit/f9765fd3743f46c189359e713fd050c8e1a598b6 diff --git a/docs/sqa/reviews/rc-007-mil-004-request-headers.md b/docs/sqa/reviews/rc-007-mil-004-request-headers.md index 056fbdc..772fdf9 100644 --- a/docs/sqa/reviews/rc-007-mil-004-request-headers.md +++ b/docs/sqa/reviews/rc-007-mil-004-request-headers.md @@ -9,7 +9,7 @@ ## Version History | Date | Status | Author | Reviewer | Change | Commit | | --- | --- | --- | --- | --- | --- | -| 2026-10-28 | Proposed | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version | pending | +| 2026-10-28 | Proposed | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version | [f9765fd] | --- @@ -63,3 +63,4 @@ Go — all criteria pass. [MIL-004]: ../../milestones/mil-004-request-headers.md [QC-MIL-001]: ../../../framework/qc/artifacts/qc-milestones-gateways.md [QC-LANG-001]: ../../../framework/qc/artifacts/qc-language-domain.md +[f9765fd]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/047-amazon-price-tracker/commit/f9765fd3743f46c189359e713fd050c8e1a598b6 diff --git a/docs/sqa/reviews/rc-008-mil-005-live-amazon.md b/docs/sqa/reviews/rc-008-mil-005-live-amazon.md index 81e6824..9366fbb 100644 --- a/docs/sqa/reviews/rc-008-mil-005-live-amazon.md +++ b/docs/sqa/reviews/rc-008-mil-005-live-amazon.md @@ -9,7 +9,7 @@ ## Version History | Date | Status | Author | Reviewer | Change | Commit | | --- | --- | --- | --- | --- | --- | -| 2026-10-28 | Proposed | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version | pending | +| 2026-10-28 | Proposed | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version | [f9765fd] | --- @@ -63,3 +63,4 @@ Go — all criteria pass. [MIL-005]: ../../milestones/mil-005-live-amazon.md [QC-MIL-001]: ../../../framework/qc/artifacts/qc-milestones-gateways.md [QC-LANG-001]: ../../../framework/qc/artifacts/qc-language-domain.md +[f9765fd]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/047-amazon-price-tracker/commit/f9765fd3743f46c189359e713fd050c8e1a598b6 diff --git a/docs/sqa/reviews/rc-009-mil-006-wiki-screenshots.md b/docs/sqa/reviews/rc-009-mil-006-wiki-screenshots.md index 697b509..6912162 100644 --- a/docs/sqa/reviews/rc-009-mil-006-wiki-screenshots.md +++ b/docs/sqa/reviews/rc-009-mil-006-wiki-screenshots.md @@ -9,7 +9,7 @@ ## Version History | Date | Status | Author | Reviewer | Change | Commit | | --- | --- | --- | --- | --- | --- | -| 2026-10-28 | Proposed | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version | pending | +| 2026-10-28 | Proposed | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version | [f9765fd] | --- @@ -63,3 +63,4 @@ Go — all criteria pass. [MIL-006]: ../../milestones/mil-006-wiki-screenshots.md [QC-MIL-001]: ../../../framework/qc/artifacts/qc-milestones-gateways.md [QC-LANG-001]: ../../../framework/qc/artifacts/qc-language-domain.md +[f9765fd]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/047-amazon-price-tracker/commit/f9765fd3743f46c189359e713fd050c8e1a598b6 diff --git a/docs/stakeholder-analysis.md b/docs/stakeholder-analysis.md index 0ecdb95..8203d4d 100644 --- a/docs/stakeholder-analysis.md +++ b/docs/stakeholder-analysis.md @@ -11,7 +11,7 @@ ## Version History | Date | Status | Author | Reviewer | Change | Commit | | --- | --- | --- | --- | --- | --- | -| 2026-10-28 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version
Accepted after review (RC-002 Go) | pending | +| 2026-10-28 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version
Accepted after review (RC-002 Go) | [f9765fd] | --- @@ -70,8 +70,9 @@ Identify who is involved in the Amazon price tracker, how much they influence it | Stakeholder | Decision | Date | | --- | --- | --- | -| S01 | pending | | +| S01 | [f9765fd] | | --- [BC-001]: ./business-case.md +[f9765fd]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/047-amazon-price-tracker/commit/f9765fd3743f46c189359e713fd050c8e1a598b6 -- 2.54.0