Add project plan, milestones, business case and stakeholder analysis #1
@@ -0,0 +1,3 @@
|
|||||||
|
[submodule "framework"]
|
||||||
|
path = framework
|
||||||
|
url = ssh://git@git.tirsystem.com:10022/TirSystem/SQA-QC-Framework.git
|
||||||
@@ -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 | 006 |
|
||||||
|
| RC | SQA Review Record | docs/sqa/reviews/rc-*.md | 009 |
|
||||||
|
|
||||||
|
## Languages
|
||||||
|
|
||||||
|
Set the PO language when the project starts; `project-planning` asks for it
|
||||||
|
if it is missing. An artifact of a type marked "Written in the PO language"
|
||||||
|
exists once, in that language, under its normal name (`business-case.md`); the
|
||||||
|
`artifact` skill ("One file per artifact") has the rule.
|
||||||
|
|
||||||
|
| Setting | Value |
|
||||||
|
| --- | --- |
|
||||||
|
| PO language | en |
|
||||||
|
| PO domain | it |
|
||||||
|
| High-level register | IT Executive English |
|
||||||
|
| Technical register | IT Professional English |
|
||||||
|
| Wiki languages | en, da, ms (`framework/process/wiki.md`) |
|
||||||
|
|
||||||
|
Every artifact of a type marked "Yes" below states its language and domain in
|
||||||
|
its `Language` and `Domain` Metadata rows; `new-artifact.sh` fills them from
|
||||||
|
`PO language` and `PO domain`. `Language` is a BCP 47 code (`da`, `en`).
|
||||||
|
`Domain` is a value from this list; add a row to introduce a domain, so a
|
||||||
|
reviewer can see at once which professional vocabulary a document uses.
|
||||||
|
|
||||||
|
| Domain | Meaning |
|
||||||
|
| --- | --- |
|
||||||
|
| it | Software and IT |
|
||||||
|
| medical | Healthcare and medical devices |
|
||||||
|
| construction | Construction and civil engineering |
|
||||||
|
|
||||||
|
| Artifact types | Register | Written in the PO language |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| BC, KPI, PP, MIL | IT Executive English | Yes |
|
||||||
|
| SA, BMC, BPMN, UCD, US, UC, SSD, DM, RA, GOV, DICT | IT Professional English | Yes |
|
||||||
|
| OC, SD, DCD, ERD, TP, AD, ADR, TM, RC, QC, source code | IT Professional English | No |
|
||||||
|
|
||||||
|
## Notes
|
||||||
|
|
||||||
|
- "Next Available Version" is the zero-padded (3-digit) version to use the
|
||||||
|
*next* time a new document of that type is created. Increment it only when
|
||||||
|
a brand-new document is created, not when an existing document's
|
||||||
|
`## Version History` gets a row.
|
||||||
|
- `ADR` uses 4 digits (`0001`); `RC` is sequential across all artifact types.
|
||||||
@@ -0,0 +1,127 @@
|
|||||||
|
# Business Case
|
||||||
|
|
||||||
|
## Metadata
|
||||||
|
| Key | Value |
|
||||||
|
| --- | --- |
|
||||||
|
| ID | BC-001 |
|
||||||
|
| CrossReference | [SA-001] |
|
||||||
|
| Language | en |
|
||||||
|
| Domain | it |
|
||||||
|
|
||||||
|
## Version History
|
||||||
|
| Date | Status | Author | Reviewer | Change | Commit |
|
||||||
|
| --- | --- | --- | --- | --- | --- |
|
||||||
|
| 2026-10-28 | Accepted | Claude (AI) | AI as stand-in for S01 | Initial version; accepted after a Go review | [b344b6e] |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Executive Summary
|
||||||
|
|
||||||
|
The Udemy course "100 Days of Code: The Complete Python Pro Bootcamp" has a lecture on web scraping with Selenium: create `interaction.py`, start a Chrome driver, open the Wikipedia main page and print the article count found with a CSS (Cascading Style Sheets) selector. This project delivers that lecture as a small, tested and documented Python 3.13+ program. Every lecture step has a screenshot in the README and in a wiki written in English, Danish and Bahasa Malaysia that explains what was learned.
|
||||||
|
|
||||||
|
## Methodological and Standards Foundation
|
||||||
|
|
||||||
|
The SQA and QC framework in `framework/` (plan first, then code, every step reviewed), ISO/IEC 25010:2023 for quality characteristics, and the Python conventions of the `coding-conventions` skill.
|
||||||
|
|
||||||
|
## Problem Statement
|
||||||
|
|
||||||
|
A lecture exercise is usually one untested script that only runs on the author's machine. Course participants who compare solutions (S02) and visitors who browse for ideas (S03) get no setup instructions, no tests and no explanation of what each step teaches. A browser-driven script also cannot be tested on the author's desktop without taking over the mouse and keyboard.
|
||||||
|
|
||||||
|
## Business Opportunity
|
||||||
|
|
||||||
|
A finished reference solution for the lecture that others can run and compare against, and a template for the later Selenium lectures (clicking links, typing into fields).
|
||||||
|
|
||||||
|
## Objectives
|
||||||
|
|
||||||
|
1. Provide `interaction.py` that starts a Chrome driver, opens `https://en.wikipedia.org/wiki/Main_Page` with `get()`, finds the anchor inside the `articlecount` div with `find_element` and a CSS selector, and prints its text.
|
||||||
|
2. Keep constants (URL, selector) in `constants.py` and document the source with Doxygen comments and a `Doxyfile`.
|
||||||
|
3. Cover the logic with pytest tests that need no browser, and run the browser end to end only in an isolated Docker container.
|
||||||
|
4. Provide a screenshot for each lecture step, shown in the README and in the wiki.
|
||||||
|
5. Provide a wiki in English, Danish and Bahasa Malaysia that explains what each lecture step taught.
|
||||||
|
6. Provide a README from the framework template with instructions to create and use a local `.venv`, upgrade pip, run the project and run its tests.
|
||||||
|
7. Set the description and topics on the git host repository.
|
||||||
|
|
||||||
|
## Scope
|
||||||
|
|
||||||
|
### In Scope
|
||||||
|
|
||||||
|
Python package under `src/`, tests under `tests/`, documentation under `docs/` (screenshots, wiki, Doxygen), `pyproject.toml`, `Doxyfile`, Python `.gitignore`, Dockerfile for the screenshot and end-to-end run, README, wiki in three languages, repository description and topics.
|
||||||
|
|
||||||
|
### Out of Scope
|
||||||
|
|
||||||
|
Clicking links and typing into search fields (later lectures), other websites, a graphical or web interface of our own, packaging for PyPI, testing the GUI on the host desktop, reading or testing the `.env` file.
|
||||||
|
|
||||||
|
## Expected Benefits
|
||||||
|
|
||||||
|
### Tangible Benefits
|
||||||
|
|
||||||
|
A working, tested lecture solution; reproducible setup from a clean `.venv`; screenshots and a trilingual wiki that others can follow.
|
||||||
|
|
||||||
|
### Intangible Benefits
|
||||||
|
|
||||||
|
Practice with the plan-first process on a browser-automation task and with isolated GUI testing.
|
||||||
|
|
||||||
|
## Strategic Alignment
|
||||||
|
|
||||||
|
Supports completing the Python Pro Bootcamp with reviewed, portfolio-quality projects, and makes the repository useful to other course participants.
|
||||||
|
|
||||||
|
## Success Criteria
|
||||||
|
|
||||||
|
| # | Criterion | Target | Measure |
|
||||||
|
| --- | --- | --- | --- |
|
||||||
|
| 1 | Unit tests pass without a browser | All tests pass | `python -m pytest` in the `.venv` |
|
||||||
|
| 2 | End to end run prints the article count | A number is printed, exit code 0 | Docker container run, log file |
|
||||||
|
| 3 | Screenshot per lecture step | 7 lecture steps, 7 screenshots | Files in `docs/screenshots/` |
|
||||||
|
| 4 | Wiki languages | 3 languages, same page set | `framework/scripts/check-languages.sh` |
|
||||||
|
| 5 | Setup is reproducible | README steps work on a clean `.venv` | Manual run of the README |
|
||||||
|
| 6 | Runtime dependencies | Exactly one: `selenium` | `pyproject.toml` |
|
||||||
|
| 7 | Repository metadata | Description and at least 5 topics set | Git host API (application programming interface) response |
|
||||||
|
|
||||||
|
## Risks
|
||||||
|
|
||||||
|
| Risk | Impact | Mitigation |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| Wikipedia changes the page and the selector `#articlecount a` stops matching | End to end run and screenshots fail | Selector lives in `constants.py`; the end to end run is the check; the README names the date it was verified |
|
||||||
|
| Chrome driver cannot be fetched in the container | No screenshots | Dockerfile installs Chromium and its driver from the distribution packages |
|
||||||
|
| Token in `.env` leaks | Account compromise | `.env` stays git-ignored, is used only by personal tooling and is never read, tested or imported by the project |
|
||||||
|
| Running Selenium on the host desktop takes the user's mouse and keyboard | Interrupted work | GUI runs only in Docker, as `framework/process/gui-testing.md` requires |
|
||||||
|
| Translations drift from the English text | Inconsistent wiki | English is authoritative; same page set in all languages; `check-languages.sh` |
|
||||||
|
|
||||||
|
## Assumptions
|
||||||
|
|
||||||
|
- Python 3.13 or newer, Docker and (optionally) Doxygen are installed on the Product Owner's machine.
|
||||||
|
- The Product Owner (S01) is the reviewer; in autonomous mode the AI acts as S01's stand-in and records it in the review.
|
||||||
|
- The git host is reachable and the `.env` token may create repository metadata and issues.
|
||||||
|
- Wikipedia is reachable from the Docker container.
|
||||||
|
|
||||||
|
## Constraints
|
||||||
|
|
||||||
|
- Python 3.13 or newer, `venv`, `pytest`, folders `src/`, `tests/`, `docs/`, constants in `constants.py`, Doxygen comments and a `Doxyfile`.
|
||||||
|
- Runtime dependencies only where needed: `selenium` is the one the lecture requires.
|
||||||
|
- Product Owner language English, domain IT; wiki in English, Danish and Bahasa Malaysia.
|
||||||
|
- No GUI or browser test on the host desktop.
|
||||||
|
|
||||||
|
## Cost–Benefit Assessment
|
||||||
|
|
||||||
|
Qualitative, by decision: this is an unpaid course assignment with no revenue or budget, so no ROI can be calculated; the cost is the time of S01 and the AI.
|
||||||
|
|
||||||
|
| Costs | Benefits |
|
||||||
|
| --- | --- |
|
||||||
|
| A few hours of the Product Owner's time and the AI's work; Docker image build time | A finished, documented lecture solution that others can run and learn from |
|
||||||
|
|
||||||
|
## Stakeholders
|
||||||
|
|
||||||
|
| Stakeholder ID (SA) | Interest in this project |
|
||||||
|
| --- | --- |
|
||||||
|
| S01 | Product Owner, developer and reviewer; accepts each milestone |
|
||||||
|
| S02 | Course participants; need readable, runnable code with the assignment's names and run instructions |
|
||||||
|
| S03 | Repository viewers; need a clear description, topics and README and no extra runtime dependencies |
|
||||||
|
|
||||||
|
## Recommendation
|
||||||
|
|
||||||
|
Proceed — the scope is small, the cost is low and it completes the lecture with a reusable, documented result.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
[SA-001]: ./stakeholder-analysis.md
|
||||||
|
[b344b6e]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/048-scrapping-wiki/commit/b344b6e2cba397e23714c73a45ad4155bb1e00e0
|
||||||
@@ -0,0 +1,75 @@
|
|||||||
|
# MIL-001 Project scaffold
|
||||||
|
|
||||||
|
## Metadata
|
||||||
|
| Key | Value |
|
||||||
|
| --- | --- |
|
||||||
|
| ID | MIL-001 |
|
||||||
|
| CrossReference | [BC-001], [SA-001], [PP-001] |
|
||||||
|
| Language | en |
|
||||||
|
| Domain | it |
|
||||||
|
|
||||||
|
## Version History
|
||||||
|
| Date | Status | Author | Reviewer | Change | Commit |
|
||||||
|
| --- | --- | --- | --- | --- | --- |
|
||||||
|
| 2026-10-28 | Accepted | Claude (AI) | AI as stand-in for S01 | Initial version; accepted after a Go review | [b344b6e] |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Purpose
|
||||||
|
|
||||||
|
Decide whether the repository is ready for code: layout, tooling and configuration exist, a fresh clone can create a local virtual environment, and the repository is described on the git host.
|
||||||
|
|
||||||
|
## Deliverable
|
||||||
|
|
||||||
|
`pyproject.toml`, Python `.gitignore`, `src/scraping_wiki/` and `tests/` skeletons, `Doxyfile`, repository description and topics on the git host, `origin` pointing at the repository named by the Product Owner.
|
||||||
|
|
||||||
|
## Go / No-Go Criteria
|
||||||
|
|
||||||
|
| # | Criterion (objectively checkable) | Go | No-Go |
|
||||||
|
| --- | --- | --- | --- |
|
||||||
|
| 1 | `pyproject.toml` requires Python 3.13 or newer; the only runtime dependency is `selenium`; `pytest` is a `dev` extra | Met | Not met |
|
||||||
|
| 2 | `.gitignore` is the Python one and also covers `.env`, `.venv` and `docs/doxygen/` | Met | Not met |
|
||||||
|
| 3 | Folders `src/`, `tests/` and `docs/` exist | Met | Not met |
|
||||||
|
| 4 | `doxygen Doxyfile` runs without error | Met | Not met |
|
||||||
|
| 5 | Repository description and at least 5 topics are set on the git host (API response checked) | Met | Not met |
|
||||||
|
| 6 | `.env` is not tracked by git | Met | Not met |
|
||||||
|
|
||||||
|
## Dependencies
|
||||||
|
|
||||||
|
| Depends on | Reason |
|
||||||
|
| --- | --- |
|
||||||
|
| None | First milestone |
|
||||||
|
|
||||||
|
## Traceability
|
||||||
|
|
||||||
|
| Business Case objective / KPI / user story | Reference |
|
||||||
|
| --- | --- |
|
||||||
|
| Objectives 2, 6 and 7; success criteria 6 and 7 | [BC-001] |
|
||||||
|
|
||||||
|
## Ownership
|
||||||
|
|
||||||
|
| Role | Stakeholder ID (SA) |
|
||||||
|
| --- | --- |
|
||||||
|
| Owner | S01 |
|
||||||
|
| Approving reviewer | S01 |
|
||||||
|
|
||||||
|
## Target Date
|
||||||
|
|
||||||
|
2026-10-28
|
||||||
|
|
||||||
|
## Tasks
|
||||||
|
|
||||||
|
| # | Task | Summary | Needs its own Use Case/User Story? | Reference |
|
||||||
|
| --- | --- | --- | --- | --- |
|
||||||
|
| 1 | Add pyproject.toml | Project configuration: name `scraping-wiki`, Python 3.13 or newer, `selenium` as the only runtime dependency, `dev` extra with pytest, setuptools `src` layout and pytest settings (`testpaths`, `pythonpath`). | No | |
|
||||||
|
| 2 | Add Python .gitignore and folder layout | Python `.gitignore` that also ignores `.env`, `.venv`, `docs/doxygen/` and the e2e results folder; create `src/scraping_wiki/` and `tests/`. | No | |
|
||||||
|
| 3 | Add Doxyfile | Doxygen configuration reading `src/` and writing to `docs/doxygen/`, so Doxygen comments in the source build into API documentation. | No | |
|
||||||
|
| 4 | Set repository description and topics | On the git host, set the description and topics (selenium, web-scraping, python, udemy, 100-days-of-code, wikipedia) through its API (application programming interface) with the token from `.env`, which is personal tooling and never part of the project. Check that `origin` is the repository the Product Owner named and correct it if not. | No | |
|
||||||
|
| 5 | Start the AI prompt log | Create `docs/ai-prompts/session-NNN/prompts.md` and check the repository's visibility through the host's API; when it is public, add `/docs/ai-prompts/` to `.gitignore` ([ai-prompt-log.md](../../framework/process/ai-prompt-log.md)). | No | |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
[BC-001]: ../business-case.md
|
||||||
|
[SA-001]: ../stakeholder-analysis.md
|
||||||
|
[PP-001]: ../project-plan.md
|
||||||
|
[b344b6e]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/048-scrapping-wiki/commit/b344b6e2cba397e23714c73a45ad4155bb1e00e0
|
||||||
@@ -0,0 +1,74 @@
|
|||||||
|
# MIL-002 Interaction script
|
||||||
|
|
||||||
|
## Metadata
|
||||||
|
| Key | Value |
|
||||||
|
| --- | --- |
|
||||||
|
| ID | MIL-002 |
|
||||||
|
| CrossReference | [BC-001], [SA-001], [PP-001] |
|
||||||
|
| Language | en |
|
||||||
|
| Domain | it |
|
||||||
|
|
||||||
|
## Version History
|
||||||
|
| Date | Status | Author | Reviewer | Change | Commit |
|
||||||
|
| --- | --- | --- | --- | --- | --- |
|
||||||
|
| 2026-10-28 | Accepted | Claude (AI) | AI as stand-in for S01 | Initial version; accepted after a Go review | [b344b6e] |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Purpose
|
||||||
|
|
||||||
|
Decide whether the lecture's code is correct and tested: `interaction.py` starts a Chrome driver, opens the Wikipedia main page, finds the article count with a CSS (Cascading Style Sheets) selector and prints it, and its logic is tested without a browser.
|
||||||
|
|
||||||
|
## Deliverable
|
||||||
|
|
||||||
|
`src/scraping_wiki/constants.py`, `src/scraping_wiki/interaction.py` (Doxygen comments, runnable with `python -m scraping_wiki.interaction`) and unit tests in `tests/`.
|
||||||
|
|
||||||
|
## Go / No-Go Criteria
|
||||||
|
|
||||||
|
| # | Criterion (objectively checkable) | Go | No-Go |
|
||||||
|
| --- | --- | --- | --- |
|
||||||
|
| 1 | The URL and the CSS selector are in `constants.py` and nowhere else | Met | Not met |
|
||||||
|
| 2 | `interaction.py` uses `webdriver.Chrome`, `get()` and `find_element(By.CSS_SELECTOR, ...)` as in the lecture and prints the element text | Met | Not met |
|
||||||
|
| 3 | `python -m pytest` passes in a fresh `.venv` and starts no browser | Met | Not met |
|
||||||
|
| 4 | Every public function and constant has a Doxygen comment | Met | Not met |
|
||||||
|
| 5 | The code review against the Python `qc-programming-*` checklist is a Go | Met | Not met |
|
||||||
|
|
||||||
|
## Dependencies
|
||||||
|
|
||||||
|
| Depends on | Reason |
|
||||||
|
| --- | --- |
|
||||||
|
| [MIL-001] | Needs `pyproject.toml`, layout and `.venv` setup |
|
||||||
|
|
||||||
|
## Traceability
|
||||||
|
|
||||||
|
| Business Case objective / KPI / user story | Reference |
|
||||||
|
| --- | --- |
|
||||||
|
| Objectives 1, 2 and 3; success criterion 1 | [BC-001] |
|
||||||
|
|
||||||
|
## Ownership
|
||||||
|
|
||||||
|
| Role | Stakeholder ID (SA) |
|
||||||
|
| --- | --- |
|
||||||
|
| Owner | S01 |
|
||||||
|
| Approving reviewer | S01 |
|
||||||
|
|
||||||
|
## Target Date
|
||||||
|
|
||||||
|
2026-10-29
|
||||||
|
|
||||||
|
## Tasks
|
||||||
|
|
||||||
|
| # | Task | Summary | Needs its own Use Case/User Story? | Reference |
|
||||||
|
| --- | --- | --- | --- | --- |
|
||||||
|
| 1 | Add constants.py | Constants for the Wikipedia main page URL (`https://en.wikipedia.org/wiki/Main_Page`), the CSS selector `#articlecount a`, and the Chrome options used for a headless run. | No | |
|
||||||
|
| 2 | Add interaction.py | The lecture's code as small functions with Doxygen comments: create the Chrome driver (`webdriver.Chrome`, optional headless for Docker), open the main page with `get()`, read the article count with `find_element(By.CSS_SELECTOR, ...)` and print it, then quit the driver. Runnable as `python -m scraping_wiki.interaction`. | No | |
|
||||||
|
| 3 | Add unit tests | pytest tests for the functions using a fake driver so no browser starts: the URL is opened, the selector is used, the text is printed, the driver is always quit. | No | |
|
||||||
|
| 4 | Review the code | Review `src/` and `tests/` against the Python `qc-programming-*` checklist and write the `RC-*` record before the pull request. | No | |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
[BC-001]: ../business-case.md
|
||||||
|
[SA-001]: ../stakeholder-analysis.md
|
||||||
|
[PP-001]: ../project-plan.md
|
||||||
|
[MIL-001]: ./mil-001-project-scaffold.md
|
||||||
|
[b344b6e]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/048-scrapping-wiki/commit/b344b6e2cba397e23714c73a45ad4155bb1e00e0
|
||||||
@@ -0,0 +1,74 @@
|
|||||||
|
# MIL-003 Screenshots in Docker
|
||||||
|
|
||||||
|
## Metadata
|
||||||
|
| Key | Value |
|
||||||
|
| --- | --- |
|
||||||
|
| ID | MIL-003 |
|
||||||
|
| CrossReference | [BC-001], [SA-001], [PP-001] |
|
||||||
|
| Language | en |
|
||||||
|
| Domain | it |
|
||||||
|
|
||||||
|
## Version History
|
||||||
|
| Date | Status | Author | Reviewer | Change | Commit |
|
||||||
|
| --- | --- | --- | --- | --- | --- |
|
||||||
|
| 2026-10-28 | Accepted | Claude (AI) | AI as stand-in for S01 | Initial version; accepted after a Go review | [b344b6e] |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Purpose
|
||||||
|
|
||||||
|
Decide whether the browser run works end to end and the lecture steps are documented visually, without ever driving the host desktop.
|
||||||
|
|
||||||
|
## Deliverable
|
||||||
|
|
||||||
|
`Dockerfile` and `.dockerignore`, the end to end (e2e) run and screenshot capture under `tests/e2e/`, the lecture step scripts, and seven PNG (Portable Network Graphics) screenshots in `docs/screenshots/` (one per lecture step), with the run log and exit code.
|
||||||
|
|
||||||
|
## Go / No-Go Criteria
|
||||||
|
|
||||||
|
| # | Criterion (objectively checkable) | Go | No-Go |
|
||||||
|
| --- | --- | --- | --- |
|
||||||
|
| 1 | The container run exits 0 and its log shows the article count printed by `interaction.py` | Met | Not met |
|
||||||
|
| 2 | `docs/screenshots/` has one PNG for each of the 7 lecture steps, named `step-1-...` to `step-7-...` | Met | Not met |
|
||||||
|
| 3 | `.dockerignore` excludes `.env` and `.venv`, and the image contains no `.env` | Met | Not met |
|
||||||
|
| 4 | No browser or GUI was started on the host; results were read from the shared results folder | Met | Not met |
|
||||||
|
| 5 | The default `python -m pytest` run does not collect the e2e tests | Met | Not met |
|
||||||
|
|
||||||
|
## Dependencies
|
||||||
|
|
||||||
|
| Depends on | Reason |
|
||||||
|
| --- | --- |
|
||||||
|
| [MIL-002] | The e2e run executes `interaction.py` |
|
||||||
|
|
||||||
|
## Traceability
|
||||||
|
|
||||||
|
| Business Case objective / KPI / user story | Reference |
|
||||||
|
| --- | --- |
|
||||||
|
| Objectives 3 and 4; success criteria 2 and 3 | [BC-001] |
|
||||||
|
|
||||||
|
## Ownership
|
||||||
|
|
||||||
|
| Role | Stakeholder ID (SA) |
|
||||||
|
| --- | --- |
|
||||||
|
| Owner | S01 |
|
||||||
|
| Approving reviewer | S01 |
|
||||||
|
|
||||||
|
## Target Date
|
||||||
|
|
||||||
|
2026-10-30
|
||||||
|
|
||||||
|
## Tasks
|
||||||
|
|
||||||
|
| # | Task | Summary | Needs its own Use Case/User Story? | Reference |
|
||||||
|
| --- | --- | --- | --- | --- |
|
||||||
|
| 1 | Add Dockerfile and .dockerignore | Image with Python 3.13, Chromium and its driver from the distribution packages, running as a non-root user and installing the project. `.dockerignore` keeps `.env`, `.venv` and `.git` out of the build context. | No | |
|
||||||
|
| 2 | Add lecture step scripts | One script per lecture step (create the file, import Selenium, initialise the Chrome driver, navigate with `get()`, identify the element, `find_element` and print, and the hint at future interactions) so each step's code can be shown and run. | No | |
|
||||||
|
| 3 | Add e2e run and screenshot capture | `tests/e2e/` code that runs `interaction.py` against the live Wikipedia main page and writes one PNG for each of the 7 lecture steps (code views for steps 1 to 3, page views for steps 4 to 7 with the target element highlighted, the printed count for step 6) plus a log and an exit code file into a results folder. Environment: Docker container (headless Chromium), never the host desktop. | No | |
|
||||||
|
| 4 | Run the e2e in Docker and keep the screenshots | Build the image, run it with the results folder mounted, read the log and exit code, and copy the 7 screenshots to `docs/screenshots/`. Environment: Docker container. | No | |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
[BC-001]: ../business-case.md
|
||||||
|
[SA-001]: ../stakeholder-analysis.md
|
||||||
|
[PP-001]: ../project-plan.md
|
||||||
|
[MIL-002]: ./mil-002-interaction-script.md
|
||||||
|
[b344b6e]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/048-scrapping-wiki/commit/b344b6e2cba397e23714c73a45ad4155bb1e00e0
|
||||||
@@ -0,0 +1,74 @@
|
|||||||
|
# MIL-004 README and API docs
|
||||||
|
|
||||||
|
## Metadata
|
||||||
|
| Key | Value |
|
||||||
|
| --- | --- |
|
||||||
|
| ID | MIL-004 |
|
||||||
|
| CrossReference | [BC-001], [SA-001], [PP-001] |
|
||||||
|
| Language | en |
|
||||||
|
| Domain | it |
|
||||||
|
|
||||||
|
## Version History
|
||||||
|
| Date | Status | Author | Reviewer | Change | Commit |
|
||||||
|
| --- | --- | --- | --- | --- | --- |
|
||||||
|
| 2026-10-28 | Accepted | Claude (AI) | AI as stand-in for S01 | Initial version; accepted after a Go review | [b344b6e] |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Purpose
|
||||||
|
|
||||||
|
Decide whether a newcomer can set up, run and test the project from the README alone, and see each lecture step as a screenshot.
|
||||||
|
|
||||||
|
## Deliverable
|
||||||
|
|
||||||
|
`README.md` built from the framework template, with the screenshots of the 7 lecture steps, and a verified Doxygen build.
|
||||||
|
|
||||||
|
## Go / No-Go Criteria
|
||||||
|
|
||||||
|
| # | Criterion (objectively checkable) | Go | No-Go |
|
||||||
|
| --- | --- | --- | --- |
|
||||||
|
| 1 | `README.md` follows `framework/templates/README-template.md` and `check-readme.sh` passes | Met | Not met |
|
||||||
|
| 2 | README shows how to create and use a local `.venv` and runs `python -m pip install --upgrade pip` | Met | Not met |
|
||||||
|
| 3 | README shows how to run the project, run the tests and run the Docker end to end run | Met | Not met |
|
||||||
|
| 4 | README shows the 7 lecture step screenshots and the images exist | Met | Not met |
|
||||||
|
| 5 | The README steps work on a fresh `.venv` (commands executed and passing) | Met | Not met |
|
||||||
|
| 6 | `doxygen Doxyfile` builds without warnings | Met | Not met |
|
||||||
|
|
||||||
|
## Dependencies
|
||||||
|
|
||||||
|
| Depends on | Reason |
|
||||||
|
| --- | --- |
|
||||||
|
| [MIL-003] | The README uses its screenshots and the Docker run |
|
||||||
|
|
||||||
|
## Traceability
|
||||||
|
|
||||||
|
| Business Case objective / KPI / user story | Reference |
|
||||||
|
| --- | --- |
|
||||||
|
| Objectives 2, 4 and 6; success criterion 5 | [BC-001] |
|
||||||
|
|
||||||
|
## Ownership
|
||||||
|
|
||||||
|
| Role | Stakeholder ID (SA) |
|
||||||
|
| --- | --- |
|
||||||
|
| Owner | S01 |
|
||||||
|
| Approving reviewer | S01 |
|
||||||
|
|
||||||
|
## Target Date
|
||||||
|
|
||||||
|
2026-10-31
|
||||||
|
|
||||||
|
## Tasks
|
||||||
|
|
||||||
|
| # | Task | Summary | Needs its own Use Case/User Story? | Reference |
|
||||||
|
| --- | --- | --- | --- | --- |
|
||||||
|
| 1 | Write README.md from the template | Fill every section of the framework README template: overview, requirements (Python 3.13 or newer, Docker, optional Doxygen), the screenshots of the 7 lecture steps, license and links, and the appendix of project documents. | No | |
|
||||||
|
| 2 | Document .venv, pip upgrade, run and tests | Setup steps for Windows and Linux/macOS: create `.venv`, activate it, `python -m pip install --upgrade pip`, `pip install -e ".[dev]"`; the run command, `python -m pytest`, and the Docker command for the end to end run. | No | |
|
||||||
|
| 3 | Verify the README steps and the Doxygen build | Execute the README commands in a fresh `.venv`, run `doxygen Doxyfile`, run `check-readme.sh`, and fix whatever fails. | No | |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
[BC-001]: ../business-case.md
|
||||||
|
[SA-001]: ../stakeholder-analysis.md
|
||||||
|
[PP-001]: ../project-plan.md
|
||||||
|
[MIL-003]: ./mil-003-screenshots-in-docker.md
|
||||||
|
[b344b6e]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/048-scrapping-wiki/commit/b344b6e2cba397e23714c73a45ad4155bb1e00e0
|
||||||
@@ -0,0 +1,76 @@
|
|||||||
|
# MIL-005 Wiki in three languages
|
||||||
|
|
||||||
|
## Metadata
|
||||||
|
| Key | Value |
|
||||||
|
| --- | --- |
|
||||||
|
| ID | MIL-005 |
|
||||||
|
| CrossReference | [BC-001], [SA-001], [PP-001] |
|
||||||
|
| Language | en |
|
||||||
|
| Domain | it |
|
||||||
|
|
||||||
|
## Version History
|
||||||
|
| Date | Status | Author | Reviewer | Change | Commit |
|
||||||
|
| --- | --- | --- | --- | --- | --- |
|
||||||
|
| 2026-10-28 | Accepted | Claude (AI) | AI as stand-in for S01 | Initial version; accepted after a Go review | [b344b6e] |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Purpose
|
||||||
|
|
||||||
|
Decide whether the wiki explains what each lecture step taught, with its screenshot, in English, Danish and Bahasa Malaysia, and is ready to publish.
|
||||||
|
|
||||||
|
## Deliverable
|
||||||
|
|
||||||
|
`docs/wiki/` with the same page set in English (`Page.md`), Danish (`Page-da.md`) and Bahasa Malaysia (`Page-ms.md`), the screenshots, `_Sidebar.md`, and the publish workflow.
|
||||||
|
|
||||||
|
## Go / No-Go Criteria
|
||||||
|
|
||||||
|
| # | Criterion (objectively checkable) | Go | No-Go |
|
||||||
|
| --- | --- | --- | --- |
|
||||||
|
| 1 | Every English page has a `-da` and a `-ms` page, and each page starts with the language line | Met | Not met |
|
||||||
|
| 2 | The lecture steps page has all 7 steps, each with its screenshot and a "what we gained" paragraph, in all three languages | Met | Not met |
|
||||||
|
| 3 | Code blocks, commands, file names and IDs stay in English in all languages | Met | Not met |
|
||||||
|
| 4 | `_Sidebar.md` lists every language and every page | Met | Not met |
|
||||||
|
| 5 | `.gitea/workflows/publish-wiki.yml` is installed from the framework template | Met | Not met |
|
||||||
|
| 6 | `framework/scripts/check-languages.sh` passes | Met | Not met |
|
||||||
|
|
||||||
|
## Dependencies
|
||||||
|
|
||||||
|
| Depends on | Reason |
|
||||||
|
| --- | --- |
|
||||||
|
| [MIL-004] | The wiki links to the README instructions and reuses the screenshots |
|
||||||
|
|
||||||
|
## Traceability
|
||||||
|
|
||||||
|
| Business Case objective / KPI / user story | Reference |
|
||||||
|
| --- | --- |
|
||||||
|
| Objectives 4 and 5; success criteria 3 and 4 | [BC-001] |
|
||||||
|
|
||||||
|
## Ownership
|
||||||
|
|
||||||
|
| Role | Stakeholder ID (SA) |
|
||||||
|
| --- | --- |
|
||||||
|
| Owner | S01 |
|
||||||
|
| Approving reviewer | S01 |
|
||||||
|
|
||||||
|
## Target Date
|
||||||
|
|
||||||
|
2026-11-02
|
||||||
|
|
||||||
|
## Tasks
|
||||||
|
|
||||||
|
| # | Task | Summary | Needs its own Use Case/User Story? | Reference |
|
||||||
|
| --- | --- | --- | --- | --- |
|
||||||
|
| 1 | Write the English wiki pages | Pages Home, Lecture-Steps (each of the 7 steps with its screenshot and what we gained), Setup-and-Run and Docker-Testing, following `framework/process/wiki.md`. English is the authoritative text. | No | |
|
||||||
|
| 2 | Translate the wiki to Danish | The same page set as `Page-da.md`, page by page, with the language line; code, commands and file names stay in English. | No | |
|
||||||
|
| 3 | Translate the wiki to Bahasa Malaysia | The same page set as `Page-ms.md`, page by page, with the language line; code, commands and file names stay in English. | No | |
|
||||||
|
| 4 | Add sidebar, screenshots and publish workflow | `_Sidebar.md` listing all languages and pages; screenshots reachable from the pages; `.gitea/workflows/publish-wiki.yml` copied from the framework template. The wiki secret and runner are the host's setup and are reported, not created. | No | |
|
||||||
|
| 5 | Check the wiki | Run `check-languages.sh` and a link check of the pages and images. | No | |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
[BC-001]: ../business-case.md
|
||||||
|
[SA-001]: ../stakeholder-analysis.md
|
||||||
|
[PP-001]: ../project-plan.md
|
||||||
|
[MIL-004]: ./mil-004-readme-and-api-docs.md
|
||||||
|
[b344b6e]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/048-scrapping-wiki/commit/b344b6e2cba397e23714c73a45ad4155bb1e00e0
|
||||||
@@ -0,0 +1,103 @@
|
|||||||
|
# Project Plan
|
||||||
|
|
||||||
|
## Metadata
|
||||||
|
| Key | Value |
|
||||||
|
| --- | --- |
|
||||||
|
| ID | PP-001 |
|
||||||
|
| CrossReference | [BC-001], [SA-001], [MIL-001], [MIL-002], [MIL-003], [MIL-004], [MIL-005] |
|
||||||
|
| Language | en |
|
||||||
|
| Domain | it |
|
||||||
|
|
||||||
|
## Version History
|
||||||
|
| Date | Status | Author | Reviewer | Change | Commit |
|
||||||
|
| --- | --- | --- | --- | --- | --- |
|
||||||
|
| 2026-10-28 | Accepted | Claude (AI) | S01 | Initial version; accepted by the Product Owner's acceptance of the plan | [b344b6e] |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Purpose
|
||||||
|
|
||||||
|
Schedule the five phases that deliver the Selenium Wikipedia lecture of Udemy's "100 Days of Code" as a tested, documented Python project with a screenshot for each lecture step and a wiki in English, Danish and Bahasa Malaysia. Each phase is one branch and one pull request, so the steps can be followed in the git history; each task is synced as an issue.
|
||||||
|
|
||||||
|
## Planning Assumptions
|
||||||
|
|
||||||
|
- Work starts 2026-10-28 and ends by 2026-11-02, about one phase per day. Source: the Product Owner's prompt; [BC-001] has no fixed deadline, so no constraint is exceeded.
|
||||||
|
- Owner is the Product Owner S01 (source: [SA-001]). In autonomous mode the AI reviews each artifact as stand-in for S01 and the review record says so.
|
||||||
|
- Product Owner language English, domain IT; wiki languages English, Danish and Bahasa Malaysia (source: the Product Owner's prompt, recorded in the registry).
|
||||||
|
- Source for the rest: the Product Owner's prompt and the Constraints of [BC-001]. Python 3.13 or newer, `venv`, `pytest`, `src/ tests/ docs/` layout, constants in `constants.py`, Doxygen comments.
|
||||||
|
- Browser and screenshot runs happen in Docker only, never on the host desktop ([gui-testing.md](../framework/process/gui-testing.md)).
|
||||||
|
- `.env` holds personal tokens used only by tooling; the project never reads, imports or tests it, and `.dockerignore` keeps it out of the image.
|
||||||
|
- One branch and one pull request per phase; the merge is done through the host's API once the checks are green.
|
||||||
|
|
||||||
|
## Gateway Schedule
|
||||||
|
|
||||||
|
| Gateway | Document | Window | Decision date | Owner | Stories | Main deliverable | Milestone |
|
||||||
|
| --- | --- | --- | --- | --- | --- | --- | --- |
|
||||||
|
| Project scaffold | [MIL-001] | 2026-10-28 | 2026-10-28 | S01 | none (technical tasks) | `pyproject.toml`, `.gitignore`, `src/` and `tests/` skeletons, `Doxyfile`, repository description and topics, `origin` corrected | not yet synced |
|
||||||
|
| Interaction script | [MIL-002] | 2026-10-29 | 2026-10-29 | S01 | none (technical tasks) | `src/scraping_wiki/constants.py`, `interaction.py` with Doxygen comments, and unit tests | not yet synced |
|
||||||
|
| Screenshots in Docker | [MIL-003] | 2026-10-30 | 2026-10-30 | S01 | none (technical tasks) | `Dockerfile`, `.dockerignore`, end to end (e2e) run, lecture step scripts and 7 screenshots in `docs/screenshots/` | not yet synced |
|
||||||
|
| README and API docs | [MIL-004] | 2026-10-31 | 2026-10-31 | S01 | none (technical tasks) | `README.md` from the template with the 7 screenshots, verified Doxygen build | not yet synced |
|
||||||
|
| Wiki in three languages | [MIL-005] | 2026-11-02 | 2026-11-02 | S01 | none (technical tasks) | `docs/wiki/` in en, da and ms with screenshots and sidebar, publish workflow | not yet synced |
|
||||||
|
|
||||||
|
```plantuml
|
||||||
|
@startgantt
|
||||||
|
Project starts 2026-10-28
|
||||||
|
[Project scaffold] starts 2026-10-28 and ends 2026-10-28
|
||||||
|
[Project scaffold Go/No-Go] happens 2026-10-28
|
||||||
|
[Interaction script] starts 2026-10-29 and ends 2026-10-29
|
||||||
|
[Interaction script Go/No-Go] happens 2026-10-29
|
||||||
|
[Screenshots in Docker] starts 2026-10-30 and ends 2026-10-30
|
||||||
|
[Screenshots in Docker Go/No-Go] happens 2026-10-30
|
||||||
|
[README and API docs] starts 2026-10-31 and ends 2026-10-31
|
||||||
|
[README and API docs Go/No-Go] happens 2026-10-31
|
||||||
|
[Wiki in three languages] starts 2026-11-02 and ends 2026-11-02
|
||||||
|
[Wiki in three languages Go/No-Go] happens 2026-11-02
|
||||||
|
@endgantt
|
||||||
|
```
|
||||||
|
|
||||||
|
## Scope Coverage
|
||||||
|
|
||||||
|
| Scope item | Gateway |
|
||||||
|
| --- | --- |
|
||||||
|
| `pyproject.toml`, `.gitignore`, folder layout, `Doxyfile`, repository description and topics | [MIL-001] |
|
||||||
|
| `interaction.py`, constants, Doxygen comments, pytest tests without a browser | [MIL-002] |
|
||||||
|
| Dockerfile, end to end run, screenshot for each lecture step | [MIL-003] |
|
||||||
|
| README with `.venv`, pip upgrade, run and test instructions; Doxygen build | [MIL-004] |
|
||||||
|
| Wiki in English, Danish and Bahasa Malaysia explaining what each lecture step taught | [MIL-005] |
|
||||||
|
|
||||||
|
## Dependencies
|
||||||
|
|
||||||
|
```
|
||||||
|
MIL-001 -> MIL-002 -> MIL-003 -> MIL-004 -> MIL-005
|
||||||
|
```
|
||||||
|
|
||||||
|
A No-Go moves every later gateway, and the end date, by the time needed to fix the failed criterion. S01, as Product Owner, decides the move of the end date.
|
||||||
|
|
||||||
|
## Plan Risks
|
||||||
|
|
||||||
|
| Risk | Impact | Mitigation |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| Wikipedia changes the main page (BC risk 1) | Selector and screenshots go stale | Selector in `constants.py`; e2e run is the check |
|
||||||
|
| Docker image build fails or is slow (BC risk 2) | MIL-003 slips | Pin the base image; use distribution packages for Chromium |
|
||||||
|
| Wiki publish workflow needs a runner and an organization secret | Wiki not published by merge | The pages exist in `docs/wiki/` either way; publishing is reported, not blocked |
|
||||||
|
| Three-language wiki takes longer than a day (BC risk 5) | MIL-005 slips | English first; da and ms follow page by page |
|
||||||
|
| Token in `.env` leaks through a commit or the Docker image (BC risk 3) | Account compromise | `.gitignore` and `.dockerignore` exclude `.env`; checked in MIL-001 and MIL-003 |
|
||||||
|
|
||||||
|
## Open Issues
|
||||||
|
|
||||||
|
- The prompt names `https://git.tirsystem.com/Tirsvad-Udemy-100_days_of_code`. Checked through the host's API on 2026-10-28: that owner name and the current `origin` owner (`Tirsvad-Udemy-100-days-of-code`) resolve to the same repository `048-scrapping-wiki`, so `origin` is correct and stays.
|
||||||
|
- "Python greater than 3.13" is read as 3.13 or newer (`requires-python = ">=3.13"`), as in 010-calc.
|
||||||
|
- S03 wants no runtime dependencies; the lecture needs Selenium, so it is the single runtime dependency (conflict recorded in [SA-001]).
|
||||||
|
- Whether the repository is public decides whether `docs/ai-prompts/` is ignored ([ai-prompt-log.md](../framework/process/ai-prompt-log.md)); checked on 2026-10-28 through the host's API: the repository is public, so `/docs/ai-prompts/` is ignored (MIL-001).
|
||||||
|
- Milestone links in the Gateway Schedule are filled in after the publish (until then each row says `not yet synced`).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
[BC-001]: ./business-case.md
|
||||||
|
[SA-001]: ./stakeholder-analysis.md
|
||||||
|
[MIL-001]: ./milestones/mil-001-project-scaffold.md
|
||||||
|
[MIL-002]: ./milestones/mil-002-interaction-script.md
|
||||||
|
[MIL-003]: ./milestones/mil-003-screenshots-in-docker.md
|
||||||
|
[MIL-004]: ./milestones/mil-004-readme-and-api-docs.md
|
||||||
|
[MIL-005]: ./milestones/mil-005-wiki.md
|
||||||
|
[b344b6e]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/048-scrapping-wiki/commit/b344b6e2cba397e23714c73a45ad4155bb1e00e0
|
||||||
@@ -0,0 +1,68 @@
|
|||||||
|
# RC-001 Review of BC-001
|
||||||
|
|
||||||
|
## Metadata
|
||||||
|
| Key | Value |
|
||||||
|
| --- | --- |
|
||||||
|
| ID | RC-001 |
|
||||||
|
| CrossReference | [BC-001], [QC-BC-001], [QC-LANG-001] |
|
||||||
|
|
||||||
|
## Version History
|
||||||
|
| Date | Status | Author | Reviewer | Change | Commit |
|
||||||
|
| --- | --- | --- | --- | --- | --- |
|
||||||
|
| 2026-10-28 | Accepted | Claude (AI) | AI as stand-in for S01 | Initial version: Go | [b344b6e] |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 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 (S01 reads the language and knows the domain; the stand-in applies S01's role)
|
||||||
|
- Mode: autonomous, not independent (the reviewer is `AI as stand-in for S01`)
|
||||||
|
|
||||||
|
## Checklist Results
|
||||||
|
|
||||||
|
| # | Criterion | Status | Evidence/Notes |
|
||||||
|
| --- | --- | --- | --- |
|
||||||
|
| 1 | ROI/Cost-Benefit analysis is quantitative, or where qualitative, is explicitly justified | Pass | Qualitative, and justified in the Cost–Benefit Assessment (unpaid course assignment, no revenue or budget). |
|
||||||
|
| 2 | Risks are identified with documented impact and mitigation | Pass | Five risks, each with an impact and a mitigation. |
|
||||||
|
| 3 | Success criteria are measurable, stating explicit targets rather than vague aspirations | Pass | Success Criteria table has 7 rows with targets and measures. |
|
||||||
|
| 4 | Scope explicitly separates In Scope vs Out of Scope | Pass | `### In Scope` and `### Out of Scope` are separate subsections. |
|
||||||
|
| 5 | Stakeholders are cross-referenced to Stakeholder Analysis IDs rather than re-described inline | Pass | Stakeholders table cites S01, S02 and S03 and does not re-describe roles. |
|
||||||
|
| 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 conventions. |
|
||||||
|
| 7 | Assumptions and constraints are explicit and clearly distinguished from one another | Pass | Assumptions and Constraints are separate lists. |
|
||||||
|
| 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 a BCP 47 code; `it` is in the registry's domain list. |
|
||||||
|
| 3 | The content (prose and table cells) is written in the stated language | Pass | All prose and table cells are English; quoted file names and code stay as they are. |
|
||||||
|
| 4 | The register matches the one the registry gives for the artifact type | Pass | Register is IT Executive English: outcome-focused, little implementation detail. as the registry says for this type. |
|
||||||
|
| 5 | Domain terms are the PO terms of the domain's dictionary, with no synonyms | Pass | No domain dictionary exists yet, so no PO term can contradict one; the IT terms used (Selenium, CSS selector, Docker, headless, driver) are standard and used with one word per concept. Stand-in judgement, open to challenge. |
|
||||||
|
| 6 | Metadata keys, section headings, IDs and statuses are in English | Pass | Metadata keys, headings, IDs and statuses are English. |
|
||||||
|
| 7 | No translated twin (`<name>.<language>.md`) exists beside the document | Pass | No translated twin file exists beside the document. |
|
||||||
|
| 8 | A change of language or domain since the previous accepted version has a Version History row and was reviewed again | Pass | First version; language and domain have not changed. |
|
||||||
|
| 9 | A reviewer competent in the domain, and in the language, has confirmed that the domain terms are used correctly | Pass | Confirmed by `AI as stand-in for S01` (S01 reads English and knows the IT domain, as the registry states). Not independent; open to challenge in the end-of-run summary. |
|
||||||
|
| 10 | Abbreviations are spelled out on first use, in the stated language | Pass | Abbreviations used (CSS, API, PNG, FURPS+, e2e) are spelled out on first use where they appear. |
|
||||||
|
|
||||||
|
## Overall Verdict
|
||||||
|
|
||||||
|
Go — Every Mandatory criterion of the type checklist and of QC-LANG-001 passes; no Fail. Stand-in review as `AI as stand-in for S01`, not independent: S01 can challenge it in the end-of-run summary.
|
||||||
|
|
||||||
|
## Action Items
|
||||||
|
|
||||||
|
| Action | Owner | Due |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| None | S01 | n/a |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
[BC-001]: ../../business-case.md
|
||||||
|
[QC-BC-001]: ../../../framework/qc/artifacts/qc-business-case.md
|
||||||
|
[QC-LANG-001]: ../../../framework/qc/artifacts/qc-language-domain.md
|
||||||
|
[b344b6e]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/048-scrapping-wiki/commit/b344b6e2cba397e23714c73a45ad4155bb1e00e0
|
||||||
@@ -0,0 +1,69 @@
|
|||||||
|
# RC-002 Review of SA-001
|
||||||
|
|
||||||
|
## 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 | Accepted | Claude (AI) | AI as stand-in for S01 | Initial version: Go | [b344b6e] |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 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 (S01 reads the language and knows the domain; the stand-in applies S01's role)
|
||||||
|
- Mode: autonomous, not independent (the reviewer is `AI as stand-in for S01`)
|
||||||
|
|
||||||
|
## Checklist Results
|
||||||
|
|
||||||
|
| # | Criterion | Status | Evidence/Notes |
|
||||||
|
| --- | --- | --- | --- |
|
||||||
|
| 1 | Power/Interest grid is filled for every stakeholder, with no gaps or unclassified entries | Pass | All three stakeholders 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 | Roles, organisation, Power and Interest are in the table, not only in narrative. |
|
||||||
|
| 4 | Communication needs (channel, frequency, deliverable type) are mapped to project phases or milestones | Pass | Communication table maps each stakeholder to channel, frequency, deliverable and milestone. |
|
||||||
|
| 5 | Conflicting stakeholder interests are identified with documented mitigation or resolution strategies | Pass | Two conflicts, each with a mitigation. |
|
||||||
|
| 6 | Stakeholder concerns are explicitly traced to Business Case objectives | Pass | Business Goal Alignment table traces each concern to Business Case objectives. |
|
||||||
|
| 7 | Primary concerns are expressed in both business language and a recognized quality-attribute mapping (e.g. FURPS+) | Pass | Concern register maps every concern to a FURPS+ attribute. |
|
||||||
|
| 8 | Document is understandable and navigable by non-technical stakeholders reviewing their own entry | Pass | Short, plain table and prose; each stakeholder can find their entry. |
|
||||||
|
| 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 | Concerns CN-001 to CN-007 have stable IDs and name the stakeholder. |
|
||||||
|
|
||||||
|
## Language and Domain Results
|
||||||
|
|
||||||
|
| # | Criterion | Status | Evidence/Notes |
|
||||||
|
| --- | --- | --- | --- |
|
||||||
|
| 1 | The Metadata table has a `Language` row and a `Domain` row, and neither is a placeholder | Pass | Metadata has `Language | en` and `Domain | it`. |
|
||||||
|
| 2 | `Language` is a BCP 47 code and `Domain` is a value from the registry's domain list | Pass | `en` is a BCP 47 code; `it` is in the registry's domain list. |
|
||||||
|
| 3 | The content (prose and table cells) is written in the stated language | Pass | All prose and table cells are English; quoted file names and code stay as they are. |
|
||||||
|
| 4 | The register matches the one the registry gives for the artifact type | Pass | Register is IT Professional English. as the registry says for this type. |
|
||||||
|
| 5 | Domain terms are the PO terms of the domain's dictionary, with no synonyms | Pass | No domain dictionary exists yet, so no PO term can contradict one; the IT terms used (Selenium, CSS selector, Docker, headless, driver) are standard and used with one word per concept. Stand-in judgement, open to challenge. |
|
||||||
|
| 6 | Metadata keys, section headings, IDs and statuses are in English | Pass | Metadata keys, headings, IDs and statuses are English. |
|
||||||
|
| 7 | No translated twin (`<name>.<language>.md`) exists beside the document | Pass | No translated twin file exists beside the document. |
|
||||||
|
| 8 | A change of language or domain since the previous accepted version has a Version History row and was reviewed again | Pass | First version; language and domain have not changed. |
|
||||||
|
| 9 | A reviewer competent in the domain, and in the language, has confirmed that the domain terms are used correctly | Pass | Confirmed by `AI as stand-in for S01` (S01 reads English and knows the IT domain, as the registry states). Not independent; open to challenge in the end-of-run summary. |
|
||||||
|
| 10 | Abbreviations are spelled out on first use, in the stated language | Pass | Abbreviations used (CSS, API, PNG, FURPS+, e2e) are spelled out on first use where they appear. |
|
||||||
|
|
||||||
|
## Overall Verdict
|
||||||
|
|
||||||
|
Go — Every Mandatory criterion of the type checklist and of QC-LANG-001 passes; no Fail. Stand-in review as `AI as stand-in for S01`, not independent: S01 can challenge it in the end-of-run summary.
|
||||||
|
|
||||||
|
## Action Items
|
||||||
|
|
||||||
|
| Action | Owner | Due |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| None | S01 | n/a |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
[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
|
||||||
|
[b344b6e]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/048-scrapping-wiki/commit/b344b6e2cba397e23714c73a45ad4155bb1e00e0
|
||||||
@@ -0,0 +1,75 @@
|
|||||||
|
# RC-003 Review of PP-001
|
||||||
|
|
||||||
|
## 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 | Accepted | Claude (AI) | AI as stand-in for S01 | Initial version: Go | [b344b6e] |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 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 (S01 reads the language and knows the domain; the stand-in applies S01's role)
|
||||||
|
- Mode: autonomous, not independent (the reviewer is `AI as stand-in 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-02; the Business Case has no deadline, which the plan says. |
|
||||||
|
| 2 | Every milestone or gateway is listed once with its document, decision date and owner | Pass | Five gateways, each with document, decision date and owner S01, each linking to its `MIL-*`. |
|
||||||
|
| 3 | Every decision date lies inside the plan's window and is consistent with the dates in the linked `MIL-*` document | Pass | Decision dates in the plan equal the Target Date in each `MIL-*` and lie inside the window. |
|
||||||
|
| 4 | Every in-scope item of the Business Case is delivered at a named gateway (scope coverage) | Pass | Scope Coverage maps every In Scope item to a gateway. |
|
||||||
|
| 5 | Dependencies between gateways are stated, acyclic and consistent with the schedule order | Pass | Dependency chain MIL-001 to MIL-005 is acyclic and follows the schedule order. |
|
||||||
|
| 6 | The plan states what happens to later gateways and to the end date when a gateway is No-Go | Pass | Plan states that a No-Go moves later gateways and the end date, and that S01 decides. |
|
||||||
|
| 7 | Owners, reviewers and escalation roles use Stakeholder Analysis IDs and match the governance RACI | Pass | Owners are S01; no governance document exists in this project, so there is no RACI to contradict. |
|
||||||
|
| 8 | Planning assumptions are listed with their source, and a changed baseline is recorded with its reason | Pass | Planning Assumptions give their source. |
|
||||||
|
| 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 impact and mitigation and cite the Business Case risks they come from. |
|
||||||
|
| 10 | Open issues are listed, and none contradicts a statement elsewhere in the plan | Pass | Open Issues are current and do not contradict the plan. |
|
||||||
|
| 11 | Each gateway's main deliverable is stated and matches the deliverable of its `MIL-*` document | Pass | Each deliverable matches the Deliverable of its `MIL-*`. |
|
||||||
|
| 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 and the table agree; the chain matches the dependency list. |
|
||||||
|
| 14 | Each gateway is linked to its issue-tracker milestone, or marked as not yet synced | Pass | Each gateway is marked `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 present. |
|
||||||
|
|
||||||
|
## Language and Domain Results
|
||||||
|
|
||||||
|
| # | Criterion | Status | Evidence/Notes |
|
||||||
|
| --- | --- | --- | --- |
|
||||||
|
| 1 | The Metadata table has a `Language` row and a `Domain` row, and neither is a placeholder | Pass | Metadata has `Language | en` and `Domain | it`. |
|
||||||
|
| 2 | `Language` is a BCP 47 code and `Domain` is a value from the registry's domain list | Pass | `en` is a BCP 47 code; `it` is in the registry's domain list. |
|
||||||
|
| 3 | The content (prose and table cells) is written in the stated language | Pass | All prose and table cells are English; quoted file names and code stay as they are. |
|
||||||
|
| 4 | The register matches the one the registry gives for the artifact type | Pass | Register is IT Executive English. as the registry says for this type. |
|
||||||
|
| 5 | Domain terms are the PO terms of the domain's dictionary, with no synonyms | Pass | No domain dictionary exists yet, so no PO term can contradict one; the IT terms used (Selenium, CSS selector, Docker, headless, driver) are standard and used with one word per concept. Stand-in judgement, open to challenge. |
|
||||||
|
| 6 | Metadata keys, section headings, IDs and statuses are in English | Pass | Metadata keys, headings, IDs and statuses are English. |
|
||||||
|
| 7 | No translated twin (`<name>.<language>.md`) exists beside the document | Pass | No translated twin file exists beside the document. |
|
||||||
|
| 8 | A change of language or domain since the previous accepted version has a Version History row and was reviewed again | Pass | First version; language and domain have not changed. |
|
||||||
|
| 9 | A reviewer competent in the domain, and in the language, has confirmed that the domain terms are used correctly | Pass | Confirmed by `AI as stand-in for S01` (S01 reads English and knows the IT domain, as the registry states). Not independent; open to challenge in the end-of-run summary. |
|
||||||
|
| 10 | Abbreviations are spelled out on first use, in the stated language | Pass | Abbreviations used (CSS, API, PNG, FURPS+, e2e) are spelled out on first use where they appear. |
|
||||||
|
|
||||||
|
## Overall Verdict
|
||||||
|
|
||||||
|
Go — Every Mandatory criterion of the type checklist and of QC-LANG-001 passes; no Fail. Stand-in review as `AI as stand-in for S01`, not independent: S01 can challenge it in the end-of-run summary.
|
||||||
|
|
||||||
|
## Action Items
|
||||||
|
|
||||||
|
| Action | Owner | Due |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| None | S01 | n/a |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
[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
|
||||||
|
[b344b6e]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/048-scrapping-wiki/commit/b344b6e2cba397e23714c73a45ad4155bb1e00e0
|
||||||
@@ -0,0 +1,66 @@
|
|||||||
|
# RC-004 Review of MIL-001
|
||||||
|
|
||||||
|
## 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 | Accepted | Claude (AI) | AI as stand-in for S01 | Initial version: Go | [b344b6e] |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 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 (S01 reads the language and knows the domain; the stand-in applies S01's role)
|
||||||
|
- Mode: autonomous, not independent (the reviewer is `AI as stand-in for S01`)
|
||||||
|
|
||||||
|
## Checklist Results
|
||||||
|
|
||||||
|
| # | Criterion | Status | Evidence/Notes |
|
||||||
|
| --- | --- | --- | --- |
|
||||||
|
| 1 | A concrete deliverable is defined for every gate | Pass | Deliverable section names concrete files and outputs for project scaffold. |
|
||||||
|
| 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 is filled. |
|
||||||
|
| 4 | Each milestone is traceable to a Business Case objective or KPI | Pass | Traceability cites Business Case objectives and success criteria. |
|
||||||
|
| 5 | Milestone owner and approving reviewer are identified | Pass | Ownership names S01 as owner and approving reviewer. |
|
||||||
|
| 6 | Milestone has a defined target date consistent with project constraints | Pass | Target Date is inside the plan's window; the Business Case sets no deadline. |
|
||||||
|
|
||||||
|
## Language and Domain Results
|
||||||
|
|
||||||
|
| # | Criterion | Status | Evidence/Notes |
|
||||||
|
| --- | --- | --- | --- |
|
||||||
|
| 1 | The Metadata table has a `Language` row and a `Domain` row, and neither is a placeholder | Pass | Metadata has `Language | en` and `Domain | it`. |
|
||||||
|
| 2 | `Language` is a BCP 47 code and `Domain` is a value from the registry's domain list | Pass | `en` is a BCP 47 code; `it` is in the registry's domain list. |
|
||||||
|
| 3 | The content (prose and table cells) is written in the stated language | Pass | All prose and table cells are English; quoted file names and code stay as they are. |
|
||||||
|
| 4 | The register matches the one the registry gives for the artifact type | Pass | Register is IT Executive English. as the registry says for this type. |
|
||||||
|
| 5 | Domain terms are the PO terms of the domain's dictionary, with no synonyms | Pass | No domain dictionary exists yet, so no PO term can contradict one; the IT terms used (Selenium, CSS selector, Docker, headless, driver) are standard and used with one word per concept. Stand-in judgement, open to challenge. |
|
||||||
|
| 6 | Metadata keys, section headings, IDs and statuses are in English | Pass | Metadata keys, headings, IDs and statuses are English. |
|
||||||
|
| 7 | No translated twin (`<name>.<language>.md`) exists beside the document | Pass | No translated twin file exists beside the document. |
|
||||||
|
| 8 | A change of language or domain since the previous accepted version has a Version History row and was reviewed again | Pass | First version; language and domain have not changed. |
|
||||||
|
| 9 | A reviewer competent in the domain, and in the language, has confirmed that the domain terms are used correctly | Pass | Confirmed by `AI as stand-in for S01` (S01 reads English and knows the IT domain, as the registry states). Not independent; open to challenge in the end-of-run summary. |
|
||||||
|
| 10 | Abbreviations are spelled out on first use, in the stated language | Pass | Abbreviations used (CSS, API, PNG, FURPS+, e2e) are spelled out on first use where they appear. |
|
||||||
|
|
||||||
|
## Overall Verdict
|
||||||
|
|
||||||
|
Go — Every Mandatory criterion of the type checklist and of QC-LANG-001 passes; no Fail. Stand-in review as `AI as stand-in for S01`, not independent: S01 can challenge it in the end-of-run summary.
|
||||||
|
|
||||||
|
## Action Items
|
||||||
|
|
||||||
|
| Action | Owner | Due |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| None | S01 | n/a |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
[MIL-001]: ../../milestones/mil-001-project-scaffold.md
|
||||||
|
[QC-MIL-001]: ../../../framework/qc/artifacts/qc-milestones-gateways.md
|
||||||
|
[QC-LANG-001]: ../../../framework/qc/artifacts/qc-language-domain.md
|
||||||
|
[b344b6e]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/048-scrapping-wiki/commit/b344b6e2cba397e23714c73a45ad4155bb1e00e0
|
||||||
@@ -0,0 +1,66 @@
|
|||||||
|
# RC-005 Review of MIL-002
|
||||||
|
|
||||||
|
## 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 | Accepted | Claude (AI) | AI as stand-in for S01 | Initial version: Go | [b344b6e] |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 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 (S01 reads the language and knows the domain; the stand-in applies S01's role)
|
||||||
|
- Mode: autonomous, not independent (the reviewer is `AI as stand-in for S01`)
|
||||||
|
|
||||||
|
## Checklist Results
|
||||||
|
|
||||||
|
| # | Criterion | Status | Evidence/Notes |
|
||||||
|
| --- | --- | --- | --- |
|
||||||
|
| 1 | A concrete deliverable is defined for every gate | Pass | Deliverable section names concrete files and outputs for interaction script. |
|
||||||
|
| 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 is filled. |
|
||||||
|
| 4 | Each milestone is traceable to a Business Case objective or KPI | Pass | Traceability cites Business Case objectives and success criteria. |
|
||||||
|
| 5 | Milestone owner and approving reviewer are identified | Pass | Ownership names S01 as owner and approving reviewer. |
|
||||||
|
| 6 | Milestone has a defined target date consistent with project constraints | Pass | Target Date is inside the plan's window; the Business Case sets no deadline. |
|
||||||
|
|
||||||
|
## Language and Domain Results
|
||||||
|
|
||||||
|
| # | Criterion | Status | Evidence/Notes |
|
||||||
|
| --- | --- | --- | --- |
|
||||||
|
| 1 | The Metadata table has a `Language` row and a `Domain` row, and neither is a placeholder | Pass | Metadata has `Language | en` and `Domain | it`. |
|
||||||
|
| 2 | `Language` is a BCP 47 code and `Domain` is a value from the registry's domain list | Pass | `en` is a BCP 47 code; `it` is in the registry's domain list. |
|
||||||
|
| 3 | The content (prose and table cells) is written in the stated language | Pass | All prose and table cells are English; quoted file names and code stay as they are. |
|
||||||
|
| 4 | The register matches the one the registry gives for the artifact type | Pass | Register is IT Executive English. as the registry says for this type. |
|
||||||
|
| 5 | Domain terms are the PO terms of the domain's dictionary, with no synonyms | Pass | No domain dictionary exists yet, so no PO term can contradict one; the IT terms used (Selenium, CSS selector, Docker, headless, driver) are standard and used with one word per concept. Stand-in judgement, open to challenge. |
|
||||||
|
| 6 | Metadata keys, section headings, IDs and statuses are in English | Pass | Metadata keys, headings, IDs and statuses are English. |
|
||||||
|
| 7 | No translated twin (`<name>.<language>.md`) exists beside the document | Pass | No translated twin file exists beside the document. |
|
||||||
|
| 8 | A change of language or domain since the previous accepted version has a Version History row and was reviewed again | Pass | First version; language and domain have not changed. |
|
||||||
|
| 9 | A reviewer competent in the domain, and in the language, has confirmed that the domain terms are used correctly | Pass | Confirmed by `AI as stand-in for S01` (S01 reads English and knows the IT domain, as the registry states). Not independent; open to challenge in the end-of-run summary. |
|
||||||
|
| 10 | Abbreviations are spelled out on first use, in the stated language | Pass | Abbreviations used (CSS, API, PNG, FURPS+, e2e) are spelled out on first use where they appear. |
|
||||||
|
|
||||||
|
## Overall Verdict
|
||||||
|
|
||||||
|
Go — Every Mandatory criterion of the type checklist and of QC-LANG-001 passes; no Fail. Stand-in review as `AI as stand-in for S01`, not independent: S01 can challenge it in the end-of-run summary.
|
||||||
|
|
||||||
|
## Action Items
|
||||||
|
|
||||||
|
| Action | Owner | Due |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| None | S01 | n/a |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
[MIL-002]: ../../milestones/mil-002-interaction-script.md
|
||||||
|
[QC-MIL-001]: ../../../framework/qc/artifacts/qc-milestones-gateways.md
|
||||||
|
[QC-LANG-001]: ../../../framework/qc/artifacts/qc-language-domain.md
|
||||||
|
[b344b6e]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/048-scrapping-wiki/commit/b344b6e2cba397e23714c73a45ad4155bb1e00e0
|
||||||
@@ -0,0 +1,66 @@
|
|||||||
|
# RC-006 Review of MIL-003
|
||||||
|
|
||||||
|
## 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 | Accepted | Claude (AI) | AI as stand-in for S01 | Initial version: Go | [b344b6e] |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 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 (S01 reads the language and knows the domain; the stand-in applies S01's role)
|
||||||
|
- Mode: autonomous, not independent (the reviewer is `AI as stand-in for S01`)
|
||||||
|
|
||||||
|
## Checklist Results
|
||||||
|
|
||||||
|
| # | Criterion | Status | Evidence/Notes |
|
||||||
|
| --- | --- | --- | --- |
|
||||||
|
| 1 | A concrete deliverable is defined for every gate | Pass | Deliverable section names concrete files and outputs for screenshots in Docker. |
|
||||||
|
| 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 is filled. |
|
||||||
|
| 4 | Each milestone is traceable to a Business Case objective or KPI | Pass | Traceability cites Business Case objectives and success criteria. |
|
||||||
|
| 5 | Milestone owner and approving reviewer are identified | Pass | Ownership names S01 as owner and approving reviewer. |
|
||||||
|
| 6 | Milestone has a defined target date consistent with project constraints | Pass | Target Date is inside the plan's window; the Business Case sets no deadline. |
|
||||||
|
|
||||||
|
## Language and Domain Results
|
||||||
|
|
||||||
|
| # | Criterion | Status | Evidence/Notes |
|
||||||
|
| --- | --- | --- | --- |
|
||||||
|
| 1 | The Metadata table has a `Language` row and a `Domain` row, and neither is a placeholder | Pass | Metadata has `Language | en` and `Domain | it`. |
|
||||||
|
| 2 | `Language` is a BCP 47 code and `Domain` is a value from the registry's domain list | Pass | `en` is a BCP 47 code; `it` is in the registry's domain list. |
|
||||||
|
| 3 | The content (prose and table cells) is written in the stated language | Pass | All prose and table cells are English; quoted file names and code stay as they are. |
|
||||||
|
| 4 | The register matches the one the registry gives for the artifact type | Pass | Register is IT Executive English. as the registry says for this type. |
|
||||||
|
| 5 | Domain terms are the PO terms of the domain's dictionary, with no synonyms | Pass | No domain dictionary exists yet, so no PO term can contradict one; the IT terms used (Selenium, CSS selector, Docker, headless, driver) are standard and used with one word per concept. Stand-in judgement, open to challenge. |
|
||||||
|
| 6 | Metadata keys, section headings, IDs and statuses are in English | Pass | Metadata keys, headings, IDs and statuses are English. |
|
||||||
|
| 7 | No translated twin (`<name>.<language>.md`) exists beside the document | Pass | No translated twin file exists beside the document. |
|
||||||
|
| 8 | A change of language or domain since the previous accepted version has a Version History row and was reviewed again | Pass | First version; language and domain have not changed. |
|
||||||
|
| 9 | A reviewer competent in the domain, and in the language, has confirmed that the domain terms are used correctly | Pass | Confirmed by `AI as stand-in for S01` (S01 reads English and knows the IT domain, as the registry states). Not independent; open to challenge in the end-of-run summary. |
|
||||||
|
| 10 | Abbreviations are spelled out on first use, in the stated language | Pass | Abbreviations used (CSS, API, PNG, FURPS+, e2e) are spelled out on first use where they appear. |
|
||||||
|
|
||||||
|
## Overall Verdict
|
||||||
|
|
||||||
|
Go — Every Mandatory criterion of the type checklist and of QC-LANG-001 passes; no Fail. Stand-in review as `AI as stand-in for S01`, not independent: S01 can challenge it in the end-of-run summary.
|
||||||
|
|
||||||
|
## Action Items
|
||||||
|
|
||||||
|
| Action | Owner | Due |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| None | S01 | n/a |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
[MIL-003]: ../../milestones/mil-003-screenshots-in-docker.md
|
||||||
|
[QC-MIL-001]: ../../../framework/qc/artifacts/qc-milestones-gateways.md
|
||||||
|
[QC-LANG-001]: ../../../framework/qc/artifacts/qc-language-domain.md
|
||||||
|
[b344b6e]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/048-scrapping-wiki/commit/b344b6e2cba397e23714c73a45ad4155bb1e00e0
|
||||||
@@ -0,0 +1,66 @@
|
|||||||
|
# RC-007 Review of MIL-004
|
||||||
|
|
||||||
|
## 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 | Accepted | Claude (AI) | AI as stand-in for S01 | Initial version: Go | [b344b6e] |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 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 (S01 reads the language and knows the domain; the stand-in applies S01's role)
|
||||||
|
- Mode: autonomous, not independent (the reviewer is `AI as stand-in for S01`)
|
||||||
|
|
||||||
|
## Checklist Results
|
||||||
|
|
||||||
|
| # | Criterion | Status | Evidence/Notes |
|
||||||
|
| --- | --- | --- | --- |
|
||||||
|
| 1 | A concrete deliverable is defined for every gate | Pass | Deliverable section names concrete files and outputs for README and API docs. |
|
||||||
|
| 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 is filled. |
|
||||||
|
| 4 | Each milestone is traceable to a Business Case objective or KPI | Pass | Traceability cites Business Case objectives and success criteria. |
|
||||||
|
| 5 | Milestone owner and approving reviewer are identified | Pass | Ownership names S01 as owner and approving reviewer. |
|
||||||
|
| 6 | Milestone has a defined target date consistent with project constraints | Pass | Target Date is inside the plan's window; the Business Case sets no deadline. |
|
||||||
|
|
||||||
|
## Language and Domain Results
|
||||||
|
|
||||||
|
| # | Criterion | Status | Evidence/Notes |
|
||||||
|
| --- | --- | --- | --- |
|
||||||
|
| 1 | The Metadata table has a `Language` row and a `Domain` row, and neither is a placeholder | Pass | Metadata has `Language | en` and `Domain | it`. |
|
||||||
|
| 2 | `Language` is a BCP 47 code and `Domain` is a value from the registry's domain list | Pass | `en` is a BCP 47 code; `it` is in the registry's domain list. |
|
||||||
|
| 3 | The content (prose and table cells) is written in the stated language | Pass | All prose and table cells are English; quoted file names and code stay as they are. |
|
||||||
|
| 4 | The register matches the one the registry gives for the artifact type | Pass | Register is IT Executive English. as the registry says for this type. |
|
||||||
|
| 5 | Domain terms are the PO terms of the domain's dictionary, with no synonyms | Pass | No domain dictionary exists yet, so no PO term can contradict one; the IT terms used (Selenium, CSS selector, Docker, headless, driver) are standard and used with one word per concept. Stand-in judgement, open to challenge. |
|
||||||
|
| 6 | Metadata keys, section headings, IDs and statuses are in English | Pass | Metadata keys, headings, IDs and statuses are English. |
|
||||||
|
| 7 | No translated twin (`<name>.<language>.md`) exists beside the document | Pass | No translated twin file exists beside the document. |
|
||||||
|
| 8 | A change of language or domain since the previous accepted version has a Version History row and was reviewed again | Pass | First version; language and domain have not changed. |
|
||||||
|
| 9 | A reviewer competent in the domain, and in the language, has confirmed that the domain terms are used correctly | Pass | Confirmed by `AI as stand-in for S01` (S01 reads English and knows the IT domain, as the registry states). Not independent; open to challenge in the end-of-run summary. |
|
||||||
|
| 10 | Abbreviations are spelled out on first use, in the stated language | Pass | Abbreviations used (CSS, API, PNG, FURPS+, e2e) are spelled out on first use where they appear. |
|
||||||
|
|
||||||
|
## Overall Verdict
|
||||||
|
|
||||||
|
Go — Every Mandatory criterion of the type checklist and of QC-LANG-001 passes; no Fail. Stand-in review as `AI as stand-in for S01`, not independent: S01 can challenge it in the end-of-run summary.
|
||||||
|
|
||||||
|
## Action Items
|
||||||
|
|
||||||
|
| Action | Owner | Due |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| None | S01 | n/a |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
[MIL-004]: ../../milestones/mil-004-readme-and-api-docs.md
|
||||||
|
[QC-MIL-001]: ../../../framework/qc/artifacts/qc-milestones-gateways.md
|
||||||
|
[QC-LANG-001]: ../../../framework/qc/artifacts/qc-language-domain.md
|
||||||
|
[b344b6e]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/048-scrapping-wiki/commit/b344b6e2cba397e23714c73a45ad4155bb1e00e0
|
||||||
@@ -0,0 +1,66 @@
|
|||||||
|
# RC-008 Review of MIL-005
|
||||||
|
|
||||||
|
## 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 | Accepted | Claude (AI) | AI as stand-in for S01 | Initial version: Go | [b344b6e] |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 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 (S01 reads the language and knows the domain; the stand-in applies S01's role)
|
||||||
|
- Mode: autonomous, not independent (the reviewer is `AI as stand-in for S01`)
|
||||||
|
|
||||||
|
## Checklist Results
|
||||||
|
|
||||||
|
| # | Criterion | Status | Evidence/Notes |
|
||||||
|
| --- | --- | --- | --- |
|
||||||
|
| 1 | A concrete deliverable is defined for every gate | Pass | Deliverable section names concrete files and outputs for wiki. |
|
||||||
|
| 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 is filled. |
|
||||||
|
| 4 | Each milestone is traceable to a Business Case objective or KPI | Pass | Traceability cites Business Case objectives and success criteria. |
|
||||||
|
| 5 | Milestone owner and approving reviewer are identified | Pass | Ownership names S01 as owner and approving reviewer. |
|
||||||
|
| 6 | Milestone has a defined target date consistent with project constraints | Pass | Target Date is inside the plan's window; the Business Case sets no deadline. |
|
||||||
|
|
||||||
|
## Language and Domain Results
|
||||||
|
|
||||||
|
| # | Criterion | Status | Evidence/Notes |
|
||||||
|
| --- | --- | --- | --- |
|
||||||
|
| 1 | The Metadata table has a `Language` row and a `Domain` row, and neither is a placeholder | Pass | Metadata has `Language | en` and `Domain | it`. |
|
||||||
|
| 2 | `Language` is a BCP 47 code and `Domain` is a value from the registry's domain list | Pass | `en` is a BCP 47 code; `it` is in the registry's domain list. |
|
||||||
|
| 3 | The content (prose and table cells) is written in the stated language | Pass | All prose and table cells are English; quoted file names and code stay as they are. |
|
||||||
|
| 4 | The register matches the one the registry gives for the artifact type | Pass | Register is IT Executive English. as the registry says for this type. |
|
||||||
|
| 5 | Domain terms are the PO terms of the domain's dictionary, with no synonyms | Pass | No domain dictionary exists yet, so no PO term can contradict one; the IT terms used (Selenium, CSS selector, Docker, headless, driver) are standard and used with one word per concept. Stand-in judgement, open to challenge. |
|
||||||
|
| 6 | Metadata keys, section headings, IDs and statuses are in English | Pass | Metadata keys, headings, IDs and statuses are English. |
|
||||||
|
| 7 | No translated twin (`<name>.<language>.md`) exists beside the document | Pass | No translated twin file exists beside the document. |
|
||||||
|
| 8 | A change of language or domain since the previous accepted version has a Version History row and was reviewed again | Pass | First version; language and domain have not changed. |
|
||||||
|
| 9 | A reviewer competent in the domain, and in the language, has confirmed that the domain terms are used correctly | Pass | Confirmed by `AI as stand-in for S01` (S01 reads English and knows the IT domain, as the registry states). Not independent; open to challenge in the end-of-run summary. |
|
||||||
|
| 10 | Abbreviations are spelled out on first use, in the stated language | Pass | Abbreviations used (CSS, API, PNG, FURPS+, e2e) are spelled out on first use where they appear. |
|
||||||
|
|
||||||
|
## Overall Verdict
|
||||||
|
|
||||||
|
Go — Every Mandatory criterion of the type checklist and of QC-LANG-001 passes; no Fail. Stand-in review as `AI as stand-in for S01`, not independent: S01 can challenge it in the end-of-run summary.
|
||||||
|
|
||||||
|
## Action Items
|
||||||
|
|
||||||
|
| Action | Owner | Due |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| None | S01 | n/a |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
[MIL-005]: ../../milestones/mil-005-wiki.md
|
||||||
|
[QC-MIL-001]: ../../../framework/qc/artifacts/qc-milestones-gateways.md
|
||||||
|
[QC-LANG-001]: ../../../framework/qc/artifacts/qc-language-domain.md
|
||||||
|
[b344b6e]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/048-scrapping-wiki/commit/b344b6e2cba397e23714c73a45ad4155bb1e00e0
|
||||||
@@ -0,0 +1,88 @@
|
|||||||
|
# Stakeholder Analysis
|
||||||
|
|
||||||
|
## Metadata
|
||||||
|
| Key | Value |
|
||||||
|
| --- | --- |
|
||||||
|
| ID | SA-001 |
|
||||||
|
| CrossReference | [BC-001] |
|
||||||
|
| Language | en |
|
||||||
|
| Domain | it |
|
||||||
|
|
||||||
|
## Version History
|
||||||
|
| Date | Status | Author | Reviewer | Change | Commit |
|
||||||
|
| --- | --- | --- | --- | --- | --- |
|
||||||
|
| 2026-10-28 | Accepted | Claude (AI) | AI as stand-in for S01 | Initial version; accepted after a Go review | [b344b6e] |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Purpose
|
||||||
|
|
||||||
|
Name the people affected by the project so that owners and reviewers in the other documents cite stakeholder IDs. The method is the power/interest grid and FURPS+ (Functionality, Usability, Reliability, Performance, Supportability, plus design, implementation, interface and physical constraints). The project is a course assignment, so the analysis is short ([BC-001]).
|
||||||
|
|
||||||
|
## Stakeholder Summary Table
|
||||||
|
|
||||||
|
| ID | Name | Role/Title | Organization | Power Level | Interest Level | Quadrant | Primary Concern (Business Language) |
|
||||||
|
| --- | --- | --- | --- | --- | --- | --- | --- |
|
||||||
|
| S01 | Jens Tirsvad Nielsen | Course participant, Product Owner, developer and reviewer | Tirsvad | HIGH | HIGH | Manage Closely | A correct, tested and documented lecture solution with screenshots and a three-language wiki |
|
||||||
|
| S02 | Udemy coursists | Course participants who share code and compare solutions | Udemy community | LOW | HIGH | Keep Informed | Readable, runnable code with the assignment's function names and README instructions to run it |
|
||||||
|
| S03 | GitHub viewers | Visitors who browse the repository for ideas | Public | LOW | LOW | Monitor | A clear repository description, topics and README, and no heavy runtime dependencies |
|
||||||
|
|
||||||
|
## Power/Interest Classification Rationale
|
||||||
|
|
||||||
|
- **Manage Closely (S01):** decides scope, does the work and accepts every milestone.
|
||||||
|
- **Keep Informed (S02):** cannot change the project but depend on its quality and clarity; they get the README and the wiki.
|
||||||
|
- **Monitor (S03):** casual visitors; they get the repository description, topics and README.
|
||||||
|
|
||||||
|
## Primary Concerns and FURPS+ Mapping
|
||||||
|
|
||||||
|
| Concern ID | Stakeholder | Concern | FURPS+ attribute |
|
||||||
|
| --- | --- | --- | --- |
|
||||||
|
| CN-001 | S01 | The script opens Wikipedia and prints the article count as in the lecture | Functionality |
|
||||||
|
| CN-002 | S01 | Browser runs never take over the desktop | Supportability |
|
||||||
|
| CN-003 | S01 | Each lecture step has a screenshot and the wiki explains what was learned, in three languages | Functionality |
|
||||||
|
| CN-004 | S02 | Code is readable and runs from the README steps; uses the assignment's names (`interaction.py`) | Usability |
|
||||||
|
| CN-005 | S02 | Setup with a local `.venv` and tests with pytest works first time | Supportability |
|
||||||
|
| CN-006 | S03 | Clear repository description, topics and README | Usability |
|
||||||
|
| CN-007 | S03 | No runtime dependencies beyond what the lecture needs | Supportability |
|
||||||
|
|
||||||
|
## Communication Requirements
|
||||||
|
|
||||||
|
| ID | Channel | Frequency | Deliverable | Phase / Milestone |
|
||||||
|
| --- | --- | --- | --- | --- |
|
||||||
|
| S01 | Chat | Per milestone | Pull request and summary | MIL-001 to MIL-005 |
|
||||||
|
| S02 | README and wiki | At release | Run instructions, screenshots, explanations | MIL-004, MIL-005 |
|
||||||
|
| S03 | Repository page | At release | Description, topics, README | MIL-001, MIL-004 |
|
||||||
|
|
||||||
|
## Conflicting Interests and Mitigations
|
||||||
|
|
||||||
|
| Conflict | Stakeholders | Mitigation |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| S03 wants no runtime dependencies; the lecture needs Selenium | S03, S01 | Selenium is the only runtime dependency; pytest stays a `dev` extra; the README says why |
|
||||||
|
| S02 wants it to run on their machine; GUI runs must not take S01's desktop | S02, S01 | `python -m scraping_wiki.interaction` runs locally for S02; S01's own runs and the screenshots use Docker |
|
||||||
|
|
||||||
|
## Traceability Analysis
|
||||||
|
|
||||||
|
### Stakeholder to Actor / Use Case
|
||||||
|
|
||||||
|
| Stakeholder | Actor | Use case |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| S01, S02 | Course participant | Run the script and read the article count (a plain task; no use case document for this size) |
|
||||||
|
|
||||||
|
### Business Goal Alignment
|
||||||
|
|
||||||
|
| Stakeholder | Concern | Business Case objective |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| S01 | CN-001 | Objective 1 in [BC-001] |
|
||||||
|
| S01 | CN-002 | Objective 3 in [BC-001] |
|
||||||
|
| S01 | CN-003 | Objectives 4 and 5 in [BC-001] |
|
||||||
|
| S02 | CN-004, CN-005 | Objectives 2 and 6 in [BC-001] |
|
||||||
|
| S03 | CN-006, CN-007 | Objective 7 and the runtime dependency criterion in [BC-001] |
|
||||||
|
|
||||||
|
## Sign-Off
|
||||||
|
|
||||||
|
Accepted by `AI as stand-in for S01`, after a Go review (RC-002).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
[BC-001]: ./business-case.md
|
||||||
|
[b344b6e]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/048-scrapping-wiki/commit/b344b6e2cba397e23714c73a45ad4155bb1e00e0
|
||||||
Submodule
+1
Submodule framework added at 7c2791939c
Reference in New Issue
Block a user