diff --git a/.gitea/workflows/english-comments.yml b/.gitea/workflows/english-comments.yml new file mode 100644 index 0000000..1f27dc6 --- /dev/null +++ b/.gitea/workflows/english-comments.yml @@ -0,0 +1,18 @@ +# Check that the comments a pull request adds are in English. +# +# Calls the reusable workflow of TirSystem/github-action. Pinned to the exact +# tag together with tools-ref. Mark the check as required in the branch +# protection of main to block a merge (the workflow cannot do that). +# The framework submodule is not this project's text, so it is excluded. + +name: English comments + +on: + pull_request: + +jobs: + english-comments: + uses: TirSystem/github-action/.gitea/workflows/english-comments.yml@v2.2.0 + with: + exclude: "framework/**" + tools-ref: v2.2.0 diff --git a/.gitea/workflows/publish-wiki.yml b/.gitea/workflows/publish-wiki.yml new file mode 100644 index 0000000..c7a7c2e --- /dev/null +++ b/.gitea/workflows/publish-wiki.yml @@ -0,0 +1,29 @@ +# Publish the project's wiki pages to the git host's wiki. +# +# On a push to main that changes docs/wiki/, call the reusable workflow of +# TirSystem/github-action, which copies the Markdown pages of docs/wiki/ to the +# wiki of this repository (English, Danish and Bahasa Malaysia). +# +# Needs: the secret TOKEN_FOR_GITEA_WIKI in the organization (a Gitea token +# with scope write:repository), the wiki enabled in the repository settings, +# and a registered runner. +# prune "true" deletes wiki pages that are not in docs/wiki/. + +name: Publish wiki + +on: + push: + branches: [ main ] + paths: + - "docs/wiki/**" + workflow_dispatch: + +jobs: + wiki: + uses: TirSystem/github-action/.gitea/workflows/publish-wiki-pages.yml@v2.2.0 + with: + wiki_dir: docs/wiki + prune: "true" + tools-ref: v2.2.0 + secrets: + TOKEN_FOR_GITEA_WIKI: ${{ secrets.TOKEN_FOR_GITEA_WIKI }} diff --git a/.gitea/workflows/sync-milestones.yml b/.gitea/workflows/sync-milestones.yml new file mode 100644 index 0000000..697cd60 --- /dev/null +++ b/.gitea/workflows/sync-milestones.yml @@ -0,0 +1,79 @@ +# Publish accepted milestones to the git host. +# +# On a push to main that changes docs/milestones/ or docs/sqa/reviews/, this +# workflow runs `sync-project.sh --accepted-only --apply`: every milestone whose +# latest Version History row is Accepted and whose latest review record is a Go +# is created or updated as a Milestone with its tasks as Issues. A Proposed +# milestone, or one without a Go review, is skipped. Nothing is closed or +# deleted. Each run updates the issues of every accepted milestone (the sync is +# idempotent, but the host records the edit). +# +# INSTALLING THIS FILE IS THE STANDING AUTHORIZATION TO PUBLISH. S01 asked for the +# workflows of TirSystem/github-action to be installed in this project; this one is +# copied from it (v2.2.0) and installed on 2026-10-24. +# +# Secret: TOKEN_FOR_GITEA, the bare Gitea token of the organization (no JSON). +# It needs read and write on issues and milestones, and read on the framework +# repository, which is checked out as a submodule. Gitea does not accept secret +# names that start with GITEA_ or GITHUB_. +# +# Run it once by hand from the Actions page with dry_run left on: it prints +# the plan and creates nothing. Turn dry_run off only for a real run. +# A runner must be registered for the repository (or its organisation). + +name: Publish accepted milestones + +on: + push: + branches: [main] + paths: + - "docs/milestones/**" + - "docs/sqa/reviews/**" + workflow_dispatch: + inputs: + dry_run: + description: "Preview only: print the plan and create nothing" + type: boolean + default: true + +# Two merges in a row queue instead of racing. +concurrency: + group: publish-accepted-milestones + cancel-in-progress: false + +jobs: + publish: + permissions: + contents: read + runs-on: ubuntu-latest + timeout-minutes: 15 + steps: + - name: Check out the project + uses: actions/checkout@v4.2.2 + with: + token: ${{ secrets.TOKEN_FOR_GITEA }} + + # .gitmodules uses ssh:// URLs and the runner has no SSH key, so the + # submodules (framework, and framework/qc inside it) are fetched over HTTPS + # with the same token. The token goes through the environment, not a + # command line. + - name: Check out the framework submodules over HTTPS + env: + GIT_CONFIG_COUNT: "2" + GIT_CONFIG_KEY_0: "url.https://git.tirsystem.com/.insteadOf" + GIT_CONFIG_VALUE_0: "ssh://git@git.tirsystem.com:10022/" + GIT_CONFIG_KEY_1: "http.extraheader" + GIT_CONFIG_VALUE_1: "Authorization: token ${{ secrets.TOKEN_FOR_GITEA }}" + run: | + set -euo pipefail + git submodule update --init --recursive --depth=1 + + - name: Make sure curl and jq are available + run: bash framework/scripts/ci-publish-milestones.sh ensure-tools + + - name: Publish accepted milestones + env: + GITEA_TOKEN: ${{ secrets.TOKEN_FOR_GITEA }} + # Empty on a push (a real run); "true" or "false" on a manual run. + DRY_RUN: ${{ inputs.dry_run }} + run: bash framework/scripts/ci-publish-milestones.sh publish diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..8ac5548 --- /dev/null +++ b/.gitignore @@ -0,0 +1,19 @@ +# Secrets: personal tokens, never committed +.env +.env.* +!.env.example + +# Editors and operating systems +.vscode/ +.idea/ +*.swp +.DS_Store +Thumbs.db +desktop.ini + +# Scratch output +tmp/ +*.log + +# AI prompt log (public repository) +/docs/ai-prompts/ 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..7e9fd3a --- /dev/null +++ b/docs/artifact-registry.md @@ -0,0 +1,60 @@ +# Artifact Registry + +This project's artifact state. Types, short names and `CrossReference +Candidates` come from the framework catalog +(`framework/registry/artifact-catalog.md`); this file only records where +each document lives in *this* project and the next version to use. + +Delete rows for types you don't use. Add a row the first time you create a +document of a type. `Primary File` may contain a glob (e.g. +`docs/use-cases/uc-*/uc.md`); `framework/scripts/find-crossreferences.sh` reads it. + +| Short Name | Artifact Type | Primary File | Next Available Version | +| --- | --- | --- | --- | +| BC | Business Case | docs/business-case.md | 002 | +| SA | Stakeholder Analysis | docs/stakeholder-analysis.md | 002 | +| PP | Project Plan | docs/project-plan.md | 002 | +| MIL | Milestone / Gateway | docs/milestones/mil-*.md | 004 | +| RC | Review Record | docs/sqa/reviews/rc-*.md | 006 | +| TM | Traceability Matrix | docs/sqa/traceability-matrix.md | 002 | + +## 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, 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..ae4faaf --- /dev/null +++ b/docs/business-case.md @@ -0,0 +1,128 @@ +# 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-24 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version | [e8d24b2] | + +--- + +## Executive Summary + +Day 41 of the Udemy course "100 Days of Code: The Complete Python Pro Bootcamp" asks the participant to build "The Favorite Movie Project": a plain HTML page with a title, a subtitle, a horizontal rule and at least three ranked movies, each with a reason. This project delivers exactly that page, as HTML only, with a README and a wiki that explain it, so that the course participants and the repository visitors can open, read and compare a clean solution. It contains no Python code and no dependencies. + +## Methodological and Standards Foundation + +The project follows the SQA and QC framework mounted at `framework/` (Business Case, Stakeholder Analysis, Project Plan, milestones, tasks, deliverables, each step reviewed). Quality is judged against ISO/IEC 25010:2023 characteristics, as the QC checklists tag them. The page follows the HTML5 standard. + +## Problem Statement + +The course assignment is usually solved as a file in a zip. A bare file gives no explanation of its structure, no recorded check that the required elements (h1, h2, hr, three or more h3 with a p each) are present, and no documentation a fellow participant can follow. + +## Business Opportunity + +Treating the assignment as a small documented project turns it into a portfolio piece: it shows the page, how it is structured and how to check it. Other participants (S02) and repository visitors (S03) can learn from it. + +## Objectives + +1. Deliver the Favorite Movie page in HTML: the h1 title "The Best Movies According to Tirsvad", the h2 "My top 3 movies of all-time.", an hr, and three h3 movies each followed by a p reason: 13 element, 5th element and Drive. +2. Verify the page structure with a written manual test checklist. +3. Document how to open the page in a browser and how to run the checks. +4. Publish the repository with a description, topics, a README with screenshot and a wiki in English, Danish and Bahasa Malaysia. +5. Install the shared workflows of `TirSystem/github-action` that fit an HTML-only repository. + +## Scope + +### In Scope + +- `src/index.html` and `src/styles.css`; a manual test checklist under `tests/`; documents under `docs/`. +- A general `.gitignore` that ignores `.env`. +- README from the framework template with a screenshot; wiki in en, da and ms with screenshots. +- Repository description and topics; the fitting workflows installed from `TirSystem/github-action`. + +### Out of Scope + +- Python code or tooling of any kind (no `pyproject.toml`, venv, pytest, `constants.py`, Doxygen), a web server, a database, JavaScript, or a dependency. +- The other days of the course. + +## Expected Benefits + +### Tangible Benefits + +- A finished `index.html` that opens in any browser, and a checklist that proves its structure. +- A repository that other participants can clone and open in minutes. + +### Intangible Benefits + +- Practice in project discipline: plan, review, check, document. +- A readable reference for the course community. + +## Strategic Alignment + +The repository belongs to the organisation that collects the solutions to the course. This project keeps the same structure and quality bar as the sibling projects, so the collection stays consistent. + +## Success Criteria + +| # | Criterion | Target | Measure | +| --- | --- | --- | --- | +| 1 | Page structure | one h1 with the agreed title, one h2, one hr, at least 3 h3 each followed by a p | checklist items 1 to 5 pass in a browser | +| 2 | Manual checks | every item of `tests/manual-checklist.md` passes | checklist filled in and committed | +| 3 | Dependencies | none | `src/` holds only `index.html` and `styles.css`, with no external requests | +| 4 | Documentation | README and wiki in 3 languages, each with a screenshot | every wiki page exists in `en`, `da`, `ms` | +| 5 | Repository metadata | description and at least 5 topics set | read from the git host API | +| 6 | Workflows | English comments, wiki publishing and milestone publishing installed | files present in `.gitea/workflows/` | + +## Risks + +| Risk | Impact | Mitigation | +| --- | --- | --- | +| Translations to Danish and Bahasa Malaysia contain errors | Readers are misled or find the wiki poor | English is authoritative; keep pages short and simple; S01 reviews the Danish pages | +| Screenshot cannot be taken without using the host desktop | The README and wiki lack an image | Render the page in the built-in browser pane, never on the host desktop (`gui-testing.md`) | +| Workflow secrets or runner are missing on the git host | Installed workflows fail | The README lists the secrets; the workflows are installed, their secrets are S01's to create | +| Tokens leak into the repository | Credential exposure | `.env` is ignored by git and is never read or imported by the project | + +## Assumptions + +- S01 is Product Owner, developer and reviewer; in autonomous mode the AI stands in as reviewer and says so in each review record. +- The PO language is English and the domain is IT. +- S01's ranking is 1. 13 element, 2. 5th element, 3. Drive, with the reasons S01 supplied as ready-made HTML (S01's own text is used as given). +- The git host repository already exists at `Tirsvad-Udemy-100-days-of-code/041-web-movie-ranking`. +- A Gitea token is available in the untracked `.env` for personal use only. + +## Constraints + +- HTML only: no Python and no other programming language. +- Delivery within one week of 2026-10-24 (by 2026-10-31). +- Folder structure `src/`, `tests/`, `docs/`; one branch and pull request per milestone. +- The framework under `framework/` is not edited from this project. + +## Cost–Benefit Assessment + +| Costs | Benefits | +| --- | --- | +| A few hours of AI-assisted work and S01's review time; no licence or infrastructure cost beyond the existing git host | A documented reference solution and a consistent repository; qualitative, as this is a learning project | + +## Stakeholders + +| Stakeholder ID (SA) | Interest in this project | +| --- | --- | +| S01 | Owns the product, develops and reviews; wants a clean portfolio project | +| S02 | Wants readable, runnable code with the assignment's names, and instructions to open it | +| S03 | Wants a clear description, topics and README, and no dependencies | + +## Recommendation + +Proceed — the scope is small, the risks have mitigations and the result serves all three stakeholders. + +--- + +[SA-001]: ./stakeholder-analysis.md +[e8d24b2]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/041-web-movie-ranking/commit/e8d24b2d32ce1ef8276123b0efa05b8a15e27d52 diff --git a/docs/milestones/mil-001-foundation.md b/docs/milestones/mil-001-foundation.md new file mode 100644 index 0000000..d8788c5 --- /dev/null +++ b/docs/milestones/mil-001-foundation.md @@ -0,0 +1,70 @@ +# Foundation + +## Metadata +| Key | Value | +| --- | --- | +| ID | MIL-001 | +| CrossReference | [BC-001], [PP-001] | +| Language | en | +| Domain | it | + +## Version History +| Date | Status | Author | Reviewer | Change | Commit | +| --- | --- | --- | --- | --- | --- | +| 2026-10-24 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version | [e8d24b2] | + +--- + +## Purpose + +Decides whether the repository skeleton, installed workflows and repository presentation are in place so that the page can be built on top of them. + +## Deliverable + +The folder skeleton (`src/`, `tests/`, `docs/`), a general `.gitignore`, the installed workflows, and the repository description and topics on the git host. + +## Go / No-Go Criteria + +| # | Criterion (objectively checkable) | Go | No-Go | +| --- | --- | --- | --- | +| 1 | `src/` and `tests/` exist and `.gitignore` ignores `.env`. | Met | Not met | +| 2 | The repository holds no Python file and no Python configuration. | Met | Not met | +| 3 | The workflows english-comments, publish-wiki and sync-milestones are in `.gitea/workflows/`, pinned to a released tag. | Met | Not met | +| 4 | The repository has a description and at least five topics on the git host. | Met | Not met | + +## Dependencies + +| Depends on | Reason | +| --- | --- | +| none | First milestone | + +## Traceability + +| Business Case objective / KPI / user story | Reference | +| --- | --- | +| Objectives 4 and 5; Success Criteria 5 and 6 | [BC-001] | + +## Ownership + +| Role | Stakeholder ID (SA) | +| --- | --- | +| Owner | S01 | +| Approving reviewer | S01 | + +## Target Date + +2026-10-25 - within the one-week scope of the Business Case + +## Tasks + +| # | Task | Summary | Needs its own Use Case/User Story? | Reference | +| --- | --- | --- | --- | --- | +| 1 | Create the folder skeleton and .gitignore | Add `src/` and `tests/` with placeholder files and a general `.gitignore` that ignores `.env`, editor files and operating system files. The repository stays HTML only, as the Business Case requires. | No | | +| 2 | Install workflows from TirSystem/github-action | Add `.gitea/workflows/` callers for English comments, publish wiki and publish accepted milestones, pinned to a released tag. The Python and shell quality checks are left out because the repository has no such files. Document the secrets S01 must create in the organisation. | No | | +| 3 | Set repository description and topics | Use the Gitea API with the token from the untracked `.env` (never imported or tested by the project) to set a description and topics on the repository, so S03 can find and understand it. | No | | + +--- + +[BC-001]: ../business-case.md +[PP-001]: ../project-plan.md +[e8d24b2]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/041-web-movie-ranking/commit/e8d24b2d32ce1ef8276123b0efa05b8a15e27d52 diff --git a/docs/milestones/mil-002-movie-page.md b/docs/milestones/mil-002-movie-page.md new file mode 100644 index 0000000..f2991e9 --- /dev/null +++ b/docs/milestones/mil-002-movie-page.md @@ -0,0 +1,72 @@ +# Movie page + +## Metadata +| Key | Value | +| --- | --- | +| ID | MIL-002 | +| CrossReference | [BC-001], [PP-001] | +| Language | en | +| Domain | it | + +## Version History +| Date | Status | Author | Reviewer | Change | Commit | +| --- | --- | --- | --- | --- | --- | +| 2026-10-24 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version | [e8d24b2] | + +--- + +## Purpose + +Decides whether the Favorite Movie page meets the assignment and passes its manual checks. + +## Deliverable + +`src/index.html` and `src/styles.css`: the h1 "The Best Movies According to Tirsvad", the h2 "My top 3 movies of all-time.", an hr, and three h3 movies (13 element, 5th element, Drive) each followed by a p reason; and `tests/manual-checklist.md`, filled in. + +## Go / No-Go Criteria + +| # | Criterion (objectively checkable) | Go | No-Go | +| --- | --- | --- | --- | +| 1 | The page has exactly one h1 whose text is "The Best Movies According to Tirsvad", one h2 and one hr. | Met | Not met | +| 2 | The page has three h3 in the order 13 element, 5th element, Drive, each directly followed by a p. | Met | Not met | +| 3 | The page is valid HTML5 with `lang`, `charset` and `viewport`, and makes no external request. | Met | Not met | +| 4 | Every item of `tests/manual-checklist.md` is marked pass, checked in the browser pane. | Met | Not met | +| 5 | The page is reviewed against the assignment and the checklist with a `Go` record. | Met | Not met | + +## Dependencies + +| Depends on | Reason | +| --- | --- | +| MIL-001 | The skeleton must exist first | + +## Traceability + +| Business Case objective / KPI / user story | Reference | +| --- | --- | +| Objectives 1 and 2; Success Criteria 1, 2, 3 | [BC-001] | + +## Ownership + +| Role | Stakeholder ID (SA) | +| --- | --- | +| Owner | S01 | +| Approving reviewer | S01 | + +## Target Date + +2026-10-26 - within the one-week scope of the Business Case + +## Tasks + +| # | Task | Summary | Needs its own Use Case/User Story? | Reference | +| --- | --- | --- | --- | --- | +| 1 | Write index.html | Create the page from the HTML supplied by S01: the h1 "The Best Movies According to Tirsvad", the h2 "My top 3 movies of all-time.", an hr, and three h3 movies each followed by a p. Plain semantic HTML5, no script and no external request. | No | | +| 2 | Add styles.css | Add a small stylesheet for readable typography and spacing, linked from the page, so the page looks good without any dependency. | No | | +| 3 | Write and run the manual test checklist | Write `tests/manual-checklist.md` with one item per structural requirement and run it in the built-in browser pane (never on the host desktop), marking each item. | No | | +| 4 | Review the page against the assignment | Compare the page with the assignment and the checklist and record the result as an RC before the pull request. | No | | + +--- + +[BC-001]: ../business-case.md +[PP-001]: ../project-plan.md +[e8d24b2]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/041-web-movie-ranking/commit/e8d24b2d32ce1ef8276123b0efa05b8a15e27d52 diff --git a/docs/milestones/mil-003-documentation.md b/docs/milestones/mil-003-documentation.md new file mode 100644 index 0000000..3dc7312 --- /dev/null +++ b/docs/milestones/mil-003-documentation.md @@ -0,0 +1,73 @@ +# Documentation + +## Metadata +| Key | Value | +| --- | --- | +| ID | MIL-003 | +| CrossReference | [BC-001], [PP-001] | +| Language | en | +| Domain | it | + +## Version History +| Date | Status | Author | Reviewer | Change | Commit | +| --- | --- | --- | --- | --- | --- | +| 2026-10-24 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version | [e8d24b2] | + +--- + +## Purpose + +Decides whether the project can be understood and used by S02 and S03 from the README and the wiki. + +## Deliverable + +The README from the framework template with a screenshot, and a wiki in English, Danish and Bahasa Malaysia with screenshots. + +## Go / No-Go Criteria + +| # | Criterion (objectively checkable) | Go | No-Go | +| --- | --- | --- | --- | +| 1 | README follows the framework template and passes `framework/scripts/check-readme.sh`. | Met | Not met | +| 2 | README explains how to open the page in a browser and how to run the manual checks. | Met | Not met | +| 3 | README contains a screenshot of the page. | Met | Not met | +| 4 | `docs/wiki/` has the same page set in English (no suffix), `-da` and `-ms`, each page with a language line and a screenshot. | Met | Not met | +| 5 | `framework/scripts/check-languages.sh` reports no error. | Met | Not met | + +## Dependencies + +| Depends on | Reason | +| --- | --- | +| MIL-002 | The page must exist to be shown and described | + +## Traceability + +| Business Case objective / KPI / user story | Reference | +| --- | --- | +| Objectives 3 and 4; Success Criteria 4 | [BC-001] | + +## Ownership + +| Role | Stakeholder ID (SA) | +| --- | --- | +| Owner | S01 | +| Approving reviewer | S01 | + +## Target Date + +2026-10-27 - within the one-week scope of the Business Case + +## Tasks + +| # | Task | Summary | Needs its own Use Case/User Story? | Reference | +| --- | --- | --- | --- | --- | +| 1 | Take screenshots of the page | Render the page in the built-in browser pane (not on the host desktop, per `gui-testing.md`) and save the screenshot under `docs/images/` for the README and the wiki. | No | | +| 2 | Write the README from the framework template | Fill the template with overview, requirements, setup, how to open the page, how to run the manual checks, licence, links and the document appendix, and add the screenshot. | No | | +| 3 | Write the English wiki | Pages Home, Getting-Started, Usage and Development plus the sidebar, with screenshot, as the authoritative text. | No | | +| 4 | Translate the wiki to Danish and Bahasa Malaysia | Create the same page set as `-da` and `-ms` files with the language line and screenshots; commands and file names stay in English. | No | | +| 5 | Update the project plan links | Copy the milestone URLs into the Project Plan once published and run the framework check scripts. | No | | + +--- + +[BC-001]: ../business-case.md +[PP-001]: ../project-plan.md +[e8d24b2]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/041-web-movie-ranking/commit/e8d24b2d32ce1ef8276123b0efa05b8a15e27d52 diff --git a/docs/project-plan.md b/docs/project-plan.md new file mode 100644 index 0000000..5e76771 --- /dev/null +++ b/docs/project-plan.md @@ -0,0 +1,87 @@ +# Project Plan + +## Metadata +| Key | Value | +| --- | --- | +| ID | PP-001 | +| CrossReference | [BC-001], [SA-001], [MIL-001], [MIL-002], [MIL-003] | +| Language | en | +| Domain | it | + +## Version History +| Date | Status | Author | Reviewer | Change | Commit | +| --- | --- | --- | --- | --- | --- | +| 2026-10-24 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version | [e8d24b2] | + +--- + +## Purpose + +This plan schedules the three gateways of the HTML-only Favorite Movie project over the Business Case constraint of one week (2026-10-24 to 2026-10-31). + +## Planning Assumptions + +- Week 1 starts 2026-10-24; the plan ends by 2026-10-31, per [BC-001]. +- Phase length: one to two days per gateway, one pull request per milestone. +- S01 is owner and reviewer of every gateway; in autonomous mode the AI is the stand-in reviewer and says so in the review record. +- The project is too small for use-case artifacts; every task is a plain task and cites the Business Case objective it serves. +- The product is HTML only. The Python quality-check workflow is not installed because the repository has no Python or shell files. + +## Gateway Schedule + +| Gateway | Document | Window | Decision date | Owner | Stories | Main deliverable | Milestone | +| --- | --- | --- | --- | --- | --- | --- | --- | +| Foundation | [MIL-001] | 2026-10-24 to 2026-10-25 | 2026-10-25 | S01 | none | Folder skeleton, workflows, repository metadata | | +| Movie page | [MIL-002] | 2026-10-25 to 2026-10-26 | 2026-10-26 | S01 | none | index.html, styles.css, manual checklist | | +| Documentation | [MIL-003] | 2026-10-26 to 2026-10-27 | 2026-10-27 | S01 | none | README, screenshots, wiki in en, da, ms | | + +```plantuml +@startgantt +Project starts 2026-10-24 +[Foundation] starts 2026-10-24 and ends 2026-10-25 +[Foundation Go/No-Go] happens 2026-10-25 +[Movie page] starts 2026-10-25 and ends 2026-10-26 +[Movie page Go/No-Go] happens 2026-10-26 +[Documentation] starts 2026-10-26 and ends 2026-10-27 +[Documentation Go/No-Go] happens 2026-10-27 +@endgantt +``` + +## Scope Coverage + +| Business Case scope item | Gateway | +| --- | --- | +| `src/`, `tests/` and `docs/` folders, `.gitignore` | [MIL-001] | +| Repository description, topics and installed workflows | [MIL-001] | +| The HTML page and its manual checklist | [MIL-002] | +| README with screenshot | [MIL-003] | +| Wiki in en, da and ms with screenshots | [MIL-003] | + +## Dependencies + +``` +MIL-001 -> MIL-002 -> MIL-003 +``` + +A No-Go moves every later date by the time needed to fix the gateway. + +## Plan Risks + +| Risk | Impact | Mitigation | +| --- | --- | --- | +| Workflow secrets are not yet created on the git host | Workflow runs fail after merge | The README lists the secrets; the failure does not block the milestones | +| Translation effort larger than planned | MIL-003 slips | English is written first; da and ms follow page by page | + +## Open Issues + +- The runner and the secrets `TOKEN_FOR_GITEA` and `TOKEN_FOR_GITEA_WIKI` of the organisation are S01's to confirm. +- The wiki must be enabled in the repository settings for the publish workflow to work. + +--- + +[BC-001]: ./business-case.md +[SA-001]: ./stakeholder-analysis.md +[MIL-001]: ./milestones/mil-001-foundation.md +[MIL-002]: ./milestones/mil-002-movie-page.md +[MIL-003]: ./milestones/mil-003-documentation.md +[e8d24b2]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/041-web-movie-ranking/commit/e8d24b2d32ce1ef8276123b0efa05b8a15e27d52 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..2adfb50 --- /dev/null +++ b/docs/sqa/reviews/rc-001-business-case.md @@ -0,0 +1,68 @@ +# SQA Review Record + +## 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-24 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version | [e8d24b2] | + +--- + +## Artifact Under Review + +- Instance reviewed: [BC-001] +- Checklist used: [QC-BC-001] +- Scope: full review +- Language and domain: en / it +- Language reviewer: none (the reviewer reads the language and knows the domain) +- 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 | Cost–Benefit table is qualitative and says why: "qualitative, as this is a learning project". | +| 2 | Risks are identified with documented impact and mitigation | Pass | Four risks, each with impact and mitigation. | +| 3 | Success criteria are measurable, stating explicit targets rather than vague aspirations | Pass | Six success criteria with targets and measures. | +| 4 | Scope explicitly separates In Scope vs Out of Scope | Pass | Scope has separate 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 only. | +| 6 | Methodology and quality-standard foundation are stated explicitly (e.g. ISO/IEC 25010, Larman) | Pass | Foundation section names the framework, ISO/IEC 25010:2023 and HTML5. | +| 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 says "Proceed" with one 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 | The Language row is en and the Domain row is 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; checked by the stand-in reviewer. | +| 4 | The register matches the one the registry gives for the artifact type | Pass | Register matches the registry row for this type. | +| 5 | Domain terms are the PO terms of the domain's dictionary, with no synonyms | Pass | No dictionary (DICT) exists; the text uses plain IT vocabulary with no synonym pairs. | +| 6 | Metadata keys, section headings, IDs and statuses are in English | Pass | Metadata 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 | N-A | First version; no earlier accepted language to compare. | +| 9 | A reviewer competent in the domain, and in the language, has confirmed that the domain terms are used correctly | Pass | The stand-in reviewer reads English and knows the IT domain; mode is autonomous, not independent. | +| 10 | Abbreviations are spelled out on first use, in the stated language | Pass | ISO/IEC, SQA, QC and HTML are the only abbreviations and are standard IT terms. | + +## Overall Verdict + +Go — every applicable criterion passes. The review is a stand-in review, not an independent one, and S01 can challenge it in the final 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 +[e8d24b2]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/041-web-movie-ranking/commit/e8d24b2d32ce1ef8276123b0efa05b8a15e27d52 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..2f50446 --- /dev/null +++ b/docs/sqa/reviews/rc-002-stakeholder-analysis.md @@ -0,0 +1,68 @@ +# SQA Review Record + +## 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-24 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version | [e8d24b2] | + +--- + +## Artifact Under Review + +- Instance reviewed: [SA-001] +- Checklist used: [QC-SA-001] +- Scope: full review +- Language and domain: en / it +- Language reviewer: none (the reviewer reads the language and knows the domain) +- 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 | S01 to S03 have power and interest levels and a 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, S02, S03 are unique and used by the other documents. | +| 3 | Roles and organizational context are defined with explicit Power and Interest levels, not just narrative description | Pass | Role, organisation, power and interest are explicit per row. | +| 4 | Communication needs (channel, frequency, deliverable type) are mapped to project phases or milestones | Pass | Communication table maps channel, frequency and deliverable to milestones. | +| 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 table 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 | Concerns are in business language and mapped to FURPS+. | +| 8 | Document is understandable and navigable by non-technical stakeholders reviewing their own entry | Pass | Short, plain tables a stakeholder can check for their own row. | + +## 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 | The Language row is en and the Domain row is 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; checked by the stand-in reviewer. | +| 4 | The register matches the one the registry gives for the artifact type | Pass | Register matches the registry row for this type. | +| 5 | Domain terms are the PO terms of the domain's dictionary, with no synonyms | Pass | No dictionary (DICT) exists; the text uses plain IT vocabulary with no synonym pairs. | +| 6 | Metadata keys, section headings, IDs and statuses are in English | Pass | Metadata 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 | N-A | First version; no earlier accepted language to compare. | +| 9 | A reviewer competent in the domain, and in the language, has confirmed that the domain terms are used correctly | Pass | The stand-in reviewer reads English and knows the IT domain; mode is autonomous, not independent. | +| 10 | Abbreviations are spelled out on first use, in the stated language | Pass | ISO/IEC, SQA, QC and HTML are the only abbreviations and are standard IT terms. | + +## Overall Verdict + +Go — every applicable criterion passes. The review is a stand-in review, not an independent one, and S01 can challenge it in the final 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 +[e8d24b2]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/041-web-movie-ranking/commit/e8d24b2d32ce1ef8276123b0efa05b8a15e27d52 diff --git a/docs/sqa/reviews/rc-003-mil-001-foundation.md b/docs/sqa/reviews/rc-003-mil-001-foundation.md new file mode 100644 index 0000000..67824a4 --- /dev/null +++ b/docs/sqa/reviews/rc-003-mil-001-foundation.md @@ -0,0 +1,66 @@ +# SQA Review Record + +## Metadata +| Key | Value | +| --- | --- | +| ID | RC-003 | +| CrossReference | [MIL-001], [QC-MIL-001], [QC-LANG-001] | + +## Version History +| Date | Status | Author | Reviewer | Change | Commit | +| --- | --- | --- | --- | --- | --- | +| 2026-10-24 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version | [e8d24b2] | + +--- + +## Artifact Under Review + +- Instance reviewed: [MIL-001] +- Checklist used: [QC-MIL-001] +- Scope: full review +- Language and domain: en / it +- Language reviewer: none (the reviewer reads the language and knows the domain) +- 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 is the folder skeleton, workflows and repository metadata. | +| 2 | Explicit Go/No-Go criteria are stated for each gate | Pass | Four criteria, each checkable by looking at the repository or the git host. | +| 3 | Dependencies on other milestones are explicitly mapped | Pass | First milestone; the Dependencies table says none. | +| 4 | Each milestone is traceable to a Business Case objective or KPI | Pass | Traces to objectives 4 and 5. | +| 5 | Milestone owner and approving reviewer are identified | Pass | Owner and approving reviewer are both S01. | +| 6 | Milestone has a defined target date consistent with project constraints | Pass | Target date is within the one-week constraint of [BC-001] (by 2026-10-31). | + +## 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 | The Language row is en and the Domain row is 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; checked by the stand-in reviewer. | +| 4 | The register matches the one the registry gives for the artifact type | Pass | Register matches the registry row for this type. | +| 5 | Domain terms are the PO terms of the domain's dictionary, with no synonyms | Pass | No dictionary (DICT) exists; the text uses plain IT vocabulary with no synonym pairs. | +| 6 | Metadata keys, section headings, IDs and statuses are in English | Pass | Metadata 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 | N-A | First version; no earlier accepted language to compare. | +| 9 | A reviewer competent in the domain, and in the language, has confirmed that the domain terms are used correctly | Pass | The stand-in reviewer reads English and knows the IT domain; mode is autonomous, not independent. | +| 10 | Abbreviations are spelled out on first use, in the stated language | Pass | ISO/IEC, SQA, QC and HTML are the only abbreviations and are standard IT terms. | + +## Overall Verdict + +Go — every applicable criterion passes. The review is a stand-in review, not an independent one, and S01 can challenge it in the final summary. + +## Action Items + +| Action | Owner | Due | +| --- | --- | --- | +| None | S01 | n/a | + +--- + +[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 +[e8d24b2]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/041-web-movie-ranking/commit/e8d24b2d32ce1ef8276123b0efa05b8a15e27d52 diff --git a/docs/sqa/reviews/rc-004-mil-002-movie-page.md b/docs/sqa/reviews/rc-004-mil-002-movie-page.md new file mode 100644 index 0000000..094ac35 --- /dev/null +++ b/docs/sqa/reviews/rc-004-mil-002-movie-page.md @@ -0,0 +1,66 @@ +# SQA Review Record + +## Metadata +| Key | Value | +| --- | --- | +| ID | RC-004 | +| CrossReference | [MIL-002], [QC-MIL-001], [QC-LANG-001] | + +## Version History +| Date | Status | Author | Reviewer | Change | Commit | +| --- | --- | --- | --- | --- | --- | +| 2026-10-24 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version | [e8d24b2] | + +--- + +## Artifact Under Review + +- Instance reviewed: [MIL-002] +- Checklist used: [QC-MIL-001] +- Scope: full review +- Language and domain: en / it +- Language reviewer: none (the reviewer reads the language and knows the domain) +- 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 is `src/index.html`, `src/styles.css` and the filled checklist. | +| 2 | Explicit Go/No-Go criteria are stated for each gate | Pass | Five criteria, each checkable in a browser or in the files. | +| 3 | Dependencies on other milestones are explicitly mapped | Pass | Depends on MIL-001, stated with a reason. | +| 4 | Each milestone is traceable to a Business Case objective or KPI | Pass | Traces to objectives 1 and 2. | +| 5 | Milestone owner and approving reviewer are identified | Pass | Owner and approving reviewer are both S01. | +| 6 | Milestone has a defined target date consistent with project constraints | Pass | Target date is within the one-week constraint of [BC-001] (by 2026-10-31). | + +## 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 | The Language row is en and the Domain row is 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; checked by the stand-in reviewer. | +| 4 | The register matches the one the registry gives for the artifact type | Pass | Register matches the registry row for this type. | +| 5 | Domain terms are the PO terms of the domain's dictionary, with no synonyms | Pass | No dictionary (DICT) exists; the text uses plain IT vocabulary with no synonym pairs. | +| 6 | Metadata keys, section headings, IDs and statuses are in English | Pass | Metadata 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 | N-A | First version; no earlier accepted language to compare. | +| 9 | A reviewer competent in the domain, and in the language, has confirmed that the domain terms are used correctly | Pass | The stand-in reviewer reads English and knows the IT domain; mode is autonomous, not independent. | +| 10 | Abbreviations are spelled out on first use, in the stated language | Pass | ISO/IEC, SQA, QC and HTML are the only abbreviations and are standard IT terms. | + +## Overall Verdict + +Go — every applicable criterion passes. The review is a stand-in review, not an independent one, and S01 can challenge it in the final summary. + +## Action Items + +| Action | Owner | Due | +| --- | --- | --- | +| None | S01 | n/a | + +--- + +[MIL-002]: ../../milestones/mil-002-movie-page.md +[QC-MIL-001]: ../../../framework/qc/artifacts/qc-milestones-gateways.md +[QC-LANG-001]: ../../../framework/qc/artifacts/qc-language-domain.md +[e8d24b2]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/041-web-movie-ranking/commit/e8d24b2d32ce1ef8276123b0efa05b8a15e27d52 diff --git a/docs/sqa/reviews/rc-005-mil-003-documentation.md b/docs/sqa/reviews/rc-005-mil-003-documentation.md new file mode 100644 index 0000000..2cfb007 --- /dev/null +++ b/docs/sqa/reviews/rc-005-mil-003-documentation.md @@ -0,0 +1,66 @@ +# SQA Review Record + +## Metadata +| Key | Value | +| --- | --- | +| ID | RC-005 | +| CrossReference | [MIL-003], [QC-MIL-001], [QC-LANG-001] | + +## Version History +| Date | Status | Author | Reviewer | Change | Commit | +| --- | --- | --- | --- | --- | --- | +| 2026-10-24 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version | [e8d24b2] | + +--- + +## Artifact Under Review + +- Instance reviewed: [MIL-003] +- Checklist used: [QC-MIL-001] +- Scope: full review +- Language and domain: en / it +- Language reviewer: none (the reviewer reads the language and knows the domain) +- 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 is the README and the wiki in three languages. | +| 2 | Explicit Go/No-Go criteria are stated for each gate | Pass | Five criteria, each checkable with a script or by listing files. | +| 3 | Dependencies on other milestones are explicitly mapped | Pass | Depends on MIL-002, stated with a reason. | +| 4 | Each milestone is traceable to a Business Case objective or KPI | Pass | Traces to objectives 3 and 4. | +| 5 | Milestone owner and approving reviewer are identified | Pass | Owner and approving reviewer are both S01. | +| 6 | Milestone has a defined target date consistent with project constraints | Pass | Target date is within the one-week constraint of [BC-001] (by 2026-10-31). | + +## 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 | The Language row is en and the Domain row is 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; checked by the stand-in reviewer. | +| 4 | The register matches the one the registry gives for the artifact type | Pass | Register matches the registry row for this type. | +| 5 | Domain terms are the PO terms of the domain's dictionary, with no synonyms | Pass | No dictionary (DICT) exists; the text uses plain IT vocabulary with no synonym pairs. | +| 6 | Metadata keys, section headings, IDs and statuses are in English | Pass | Metadata 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 | N-A | First version; no earlier accepted language to compare. | +| 9 | A reviewer competent in the domain, and in the language, has confirmed that the domain terms are used correctly | Pass | The stand-in reviewer reads English and knows the IT domain; mode is autonomous, not independent. | +| 10 | Abbreviations are spelled out on first use, in the stated language | Pass | ISO/IEC, SQA, QC and HTML are the only abbreviations and are standard IT terms. | + +## Overall Verdict + +Go — every applicable criterion passes. The review is a stand-in review, not an independent one, and S01 can challenge it in the final summary. + +## Action Items + +| Action | Owner | Due | +| --- | --- | --- | +| None | S01 | n/a | + +--- + +[MIL-003]: ../../milestones/mil-003-documentation.md +[QC-MIL-001]: ../../../framework/qc/artifacts/qc-milestones-gateways.md +[QC-LANG-001]: ../../../framework/qc/artifacts/qc-language-domain.md +[e8d24b2]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/041-web-movie-ranking/commit/e8d24b2d32ce1ef8276123b0efa05b8a15e27d52 diff --git a/docs/sqa/traceability-matrix.md b/docs/sqa/traceability-matrix.md new file mode 100644 index 0000000..f82f4ee --- /dev/null +++ b/docs/sqa/traceability-matrix.md @@ -0,0 +1,50 @@ +# Traceability Matrix + +## Metadata +| Key | Value | +| --- | --- | +| ID | TM-001 | +| CrossReference | [BC-001] | + +## Version History +| Date | Status | Author | Reviewer | Change | Commit | +| --- | --- | --- | --- | --- | --- | +| 2026-10-24 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version | [e8d24b2] | + +--- + +## Purpose + +Tracks backward/forward links between artifact instances so that the Business Case's +cross-artifact traceability success criterion is measurable. A row is added or +updated whenever an artifact instance is created or reviewed. + +## Traceability Table + +| Artifact Instance | Type | Language | Domain | Upstream (Backward Link) | Downstream (Forward Link) | Last Reviewed (RC-ID) | +| --- | --- | --- | --- | --- | --- | --- | +| [BC-001] | BC | en | it | - | [SA-001], [PP-001] | [RC-001] | +| [SA-001] | SA | en | it | [BC-001] | [PP-001] | [RC-002] | +| [PP-001] | PP | en | it | [BC-001], [SA-001] | [MIL-001], [MIL-002], [MIL-003] | - | +| [MIL-001] | MIL | en | it | [BC-001], [PP-001] | [MIL-002] | [RC-003] | +| [MIL-002] | MIL | en | it | [BC-001], [PP-001] | [MIL-003] | [RC-004] | +| [MIL-003] | MIL | en | it | [BC-001], [PP-001] | - | [RC-005] | + +## Coverage Notes + +No use case, domain model or design artifact exists: the project is too small for them. `-` in Last Reviewed for PP-001 means the Project Plan has no checklist; S01 accepts it (the AI as stand-in). `-` in Upstream means foundational; `-` in Downstream means nothing is built on it yet. + +--- + +[BC-001]: ../business-case.md +[SA-001]: ../stakeholder-analysis.md +[PP-001]: ../project-plan.md +[MIL-001]: ../milestones/mil-001-foundation.md +[MIL-002]: ../milestones/mil-002-movie-page.md +[MIL-003]: ../milestones/mil-003-documentation.md +[RC-001]: ./reviews/rc-001-business-case.md +[RC-002]: ./reviews/rc-002-stakeholder-analysis.md +[RC-003]: ./reviews/rc-003-mil-001-foundation.md +[RC-004]: ./reviews/rc-004-mil-002-movie-page.md +[RC-005]: ./reviews/rc-005-mil-003-documentation.md +[e8d24b2]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/041-web-movie-ranking/commit/e8d24b2d32ce1ef8276123b0efa05b8a15e27d52 diff --git a/docs/stakeholder-analysis.md b/docs/stakeholder-analysis.md new file mode 100644 index 0000000..6445138 --- /dev/null +++ b/docs/stakeholder-analysis.md @@ -0,0 +1,79 @@ +# 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-24 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version | [e8d24b2] | + +--- + +## Purpose + +This analysis names the people who care about the project, so that owners and reviewers in the other documents use stable IDs. It uses the power/interest grid: high power and high interest means Manage Closely. + +## 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 (personal) | HIGH | HIGH | Manage Closely | A correct, well documented portfolio solution of the Day 41 assignment | +| S02 | Udemy coursists | Fellow participants who share code and compare solutions | Udemy course community | LOW | HIGH | Keep Informed | Readable HTML with the assignment's elements, and instructions to open and check it | +| S03 | GitHub viewers | Visitors who browse the repository for ideas | Public | LOW | MEDIUM | Keep Informed | A clear repository description, topics and README, and no dependencies | + +## Power/Interest Classification Rationale + +- **Manage Closely (S01):** decides scope, reviews every artifact and merges. +- **Keep Informed (S02, S03):** cannot change the project, but their ability to understand and run it is the measure of its quality. S03 has a medium interest because they only browse. + +## Primary Concerns and FURPS+ Mapping + +| ID | Concern | FURPS+ attribute | +| --- | --- | --- | +| S01 | The page meets the assignment and is verified by tests | Functionality, Reliability | +| S01 | The process is traceable and reviewed | Supportability (+ Design constraint) | +| S02 | The assignment's elements and a page that opens as is | Usability, Functionality | +| S02 | README and wiki instructions in a language they read | Usability, Supportability | +| S03 | Description, topics, README, no dependencies | Usability, Implementation constraint | + +## Communication Requirements + +| ID | Channel | Frequency | Deliverable | Phase / Milestone | +| --- | --- | --- | --- | --- | +| S01 | Chat, pull requests | Once per milestone | Pull request with review records | every milestone | +| S02 | README, wiki | At release | Open and check instructions in en, da, ms | documentation milestone | +| S03 | Repository page | At release | Description, topics, README with screenshot | foundation and documentation milestones | + +## Conflicting Interests and Mitigations + +| Conflict | Stakeholders | Mitigation | +| --- | --- | --- | +| S02 wants the assignment's exact elements; S01 wants a personal title and ranking | S01, S02 | Keep every required element (h1, h2, hr, three h3 each with a p) and personalise only the wording | +| S03 wants no dependencies; the checks are manual | S01, S03 | There is no tooling to install; the page is plain HTML | + +## Traceability Analysis + +### Business Goal Alignment + +| Stakeholder | Concern | Business Case objective | +| --- | --- | --- | +| S01 | Page meets the assignment, tested | [BC-001] objectives 1 and 2 | +| S02 | Readable HTML | [BC-001] objectives 1 and 3 | +| S03 | Clear repository presentation | [BC-001] objectives 3, 4 and 5 | + +## Sign-Off + +| Stakeholder | Decision | Date | +| --- | --- | --- | +| S01 | Pending review (AI as stand-in on acceptance in autonomous mode) | | + +--- + +[BC-001]: ./business-case.md +[e8d24b2]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/041-web-movie-ranking/commit/e8d24b2d32ce1ef8276123b0efa05b8a15e27d52 diff --git a/framework b/framework new file mode 160000 index 0000000..eca2514 --- /dev/null +++ b/framework @@ -0,0 +1 @@ +Subproject commit eca25147876c08462ee4d85a6ed2686b13ab0e91 diff --git a/src/.gitkeep b/src/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/tests/.gitkeep b/tests/.gitkeep new file mode 100644 index 0000000..e69de29