From 4cd695e8db91dd3f01f69e097cdf02098de2c144 Mon Sep 17 00:00:00 2001 From: Jens Tirsvad Nielsen Date: Wed, 4 Nov 2026 12:04:27 +0800 Subject: [PATCH 1/2] Set up project baseline, reviews and tooling (MIL-001) Adds Business Case, Stakeholder Analysis, Project Plan, milestones, dictionary, traceability matrix and review records RC-001 to RC-008, plus pyproject, gitignore, Doxyfile and README. --- .gitignore | 26 ++++ .gitmodules | 3 + Doxyfile | 14 ++ README.md | 115 ++++++++++++++- docs/artifact-registry.md | 61 ++++++++ docs/business-case.md | 131 ++++++++++++++++++ docs/dictionary.md | 45 ++++++ docs/milestones/mil-001-project-setup.md | 70 ++++++++++ docs/milestones/mil-002-follower-bot.md | 71 ++++++++++ .../mil-003-readme-and-screenshots.md | 68 +++++++++ docs/milestones/mil-004-wiki.md | 69 +++++++++ docs/project-plan.md | 90 ++++++++++++ docs/sqa/reviews/rc-001-bc.md | 67 +++++++++ docs/sqa/reviews/rc-002-sa.md | 68 +++++++++ docs/sqa/reviews/rc-003-pp.md | 74 ++++++++++ docs/sqa/reviews/rc-004-dict.md | 67 +++++++++ docs/sqa/reviews/rc-005-mil-001.md | 65 +++++++++ docs/sqa/reviews/rc-006-mil-002.md | 65 +++++++++ docs/sqa/reviews/rc-007-mil-003.md | 65 +++++++++ docs/sqa/reviews/rc-008-mil-004.md | 65 +++++++++ docs/sqa/traceability-matrix.md | 74 ++++++++++ docs/stakeholder-analysis.md | 85 ++++++++++++ framework | 1 + pyproject.toml | 25 ++++ 24 files changed, 1483 insertions(+), 1 deletion(-) create mode 100644 .gitignore create mode 100644 .gitmodules create mode 100644 Doxyfile create mode 100644 docs/artifact-registry.md create mode 100644 docs/business-case.md create mode 100644 docs/dictionary.md create mode 100644 docs/milestones/mil-001-project-setup.md create mode 100644 docs/milestones/mil-002-follower-bot.md create mode 100644 docs/milestones/mil-003-readme-and-screenshots.md create mode 100644 docs/milestones/mil-004-wiki.md create mode 100644 docs/project-plan.md create mode 100644 docs/sqa/reviews/rc-001-bc.md create mode 100644 docs/sqa/reviews/rc-002-sa.md create mode 100644 docs/sqa/reviews/rc-003-pp.md create mode 100644 docs/sqa/reviews/rc-004-dict.md create mode 100644 docs/sqa/reviews/rc-005-mil-001.md create mode 100644 docs/sqa/reviews/rc-006-mil-002.md create mode 100644 docs/sqa/reviews/rc-007-mil-003.md create mode 100644 docs/sqa/reviews/rc-008-mil-004.md create mode 100644 docs/sqa/traceability-matrix.md create mode 100644 docs/stakeholder-analysis.md create mode 160000 framework create mode 100644 pyproject.toml diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1f3d221 --- /dev/null +++ b/.gitignore @@ -0,0 +1,26 @@ +# Secrets: personal tokens and credentials, never committed +.env +.env.* + +# Python +__pycache__/ +*.py[cod] +*.egg-info/ +build/ +dist/ +.pytest_cache/ +.coverage +htmlcov/ + +# Virtual environments +.venv/ +venv/ + +# Doxygen output +docs/doxygen/ + +# Editors and OS +.idea/ +.vscode/ +.DS_Store +Thumbs.db diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..a759dc9 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "framework"] + path = framework + url = ssh://git@git.tirsystem.com:10022/TirSystem/SQA-QC-Framework.git diff --git a/Doxyfile b/Doxyfile new file mode 100644 index 0000000..9d2a251 --- /dev/null +++ b/Doxyfile @@ -0,0 +1,14 @@ +# Minimal Doxygen configuration. Generate the API docs with: doxygen Doxyfile +PROJECT_NAME = "Instagram Followers" +PROJECT_BRIEF = "Day 52: Selenium bot that follows the followers of a target account" +OUTPUT_DIRECTORY = docs/doxygen +INPUT = src +FILE_PATTERNS = *.py +RECURSIVE = YES +OPTIMIZE_OUTPUT_JAVA = YES +EXTRACT_ALL = YES +EXTRACT_PRIVATE = NO +GENERATE_HTML = YES +GENERATE_LATEX = NO +QUIET = YES +WARN_IF_UNDOCUMENTED = YES diff --git a/README.md b/README.md index 4650bf4..2ce74fb 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,115 @@ -# 052-instagram-followers +# πŸš€ Instagram Followers +A Python Selenium bot from Day 52 of Udemy's "100 Days of Code: The Complete Python Pro Bootcamp": it logs in to the Share-a-Naan mock service, opens a target account and follows each of its followers. It is for course participants who want readable, runnable code and for visitors looking for ideas. + +## πŸ“š Table of Contents + +- [Overview](#-overview) +- [Requirements](#-requirements) +- [Setup](#-setup) +- [Run](#-run) +- [Tests](#-tests) +- [License](#-license) +- [Links](#-links) +- [Appendix: Project documents](#-appendix-project-documents) + +## 🧭 Overview + +The assignment has five steps: get credentials, create the `InstaFollower` class, log in, find the followers of the target account and follow them. The code keeps the assignment's names (`InstaFollower`, `login`, `find_followers`, `follow`). + +- `src/instagram_followers/` holds the bot and `constants.py`. +- `tests/` holds the pytest tests, which use a fake driver and need no browser or network. +- `docs/` holds the project documents and the wiki (English, Danish and Bahasa Malaysia). + +The bot targets the mock service Share-a-Naan. Running bots against the real Instagram can get an account banned and is not supported. + +## πŸ“‹ Requirements + +- Python 3.13 or newer. +- Google Chrome (Selenium 4 downloads a matching driver by itself). +- A Share-a-Naan account from the mock dashboard (`https://app.100daysofpython.dev/`). + +## πŸ› οΈ Setup + +Create and use a local virtual environment named `.venv`, then upgrade pip and install the project with its test tools. + +```bash +python -m venv .venv +``` + +Activate it (Windows PowerShell: `.venv\Scripts\Activate.ps1`; Git Bash, Linux, macOS: `source .venv/bin/activate` or `source .venv/Scripts/activate`). + +```bash +python -m pip install --upgrade pip +``` + +```bash +python -m pip install -e ".[dev]" +``` + +Credentials are read from environment variables, never from the code. Do not commit a `.env` file; it is ignored by git. + +```bash +export INSTA_USERNAME="your_email" +export INSTA_PASSWORD="your_password" +``` + +## ▢️ Run + +```bash +python -m instagram_followers.main +``` + +Run it sparingly and log out between test runs by hand. + +## πŸ§ͺ Tests + +```bash +python -m pytest +``` + +API documentation can be generated with `doxygen Doxyfile` (output in `docs/doxygen/`). + +## πŸ“„ License + +AGPL-3.0, see [LICENSE][license]. + +## πŸ”— Links + +- [Repository][repository] +- [Documentation][documentation] +- [Issue tracker][issues] + +## πŸ“Ž Appendix: Project documents + +The documents a newcomer needs, in reading order. + +| Document | What it tells you | +| --- | --- | +| [AGENTS.md][agents] | The rules AI agents follow in this repository | +| [Business Case][BC-001] | Why the project exists, its scope and success criteria | +| [Stakeholder Analysis][SA-001] | Who is involved; the stakeholder IDs used for owners and reviewers | +| [Project Plan][PP-001] | The gateways and their schedule | +| [Milestones][milestones] | One document per gateway: Go/No-Go criteria and tasks | +| [Artifact registry][registry] | Where each artifact type lives, the next version, the PO language and domain | +| [Domain dictionary][DICT-001] | The PO terms and the IT terms | +| [Traceability matrix][TM-001] | How the artifacts link and when each was last reviewed | +| [Framework README][framework-readme] | The framework this project uses | +| [Framework changelog][framework-changelog] | What changed in each framework release | + +--- + +[license]: ./LICENSE +[repository]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/052-instagram-followers +[documentation]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/052-instagram-followers/wiki +[issues]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/052-instagram-followers/issues +[agents]: ./AGENTS.md +[BC-001]: ./docs/business-case.md +[SA-001]: ./docs/stakeholder-analysis.md +[PP-001]: ./docs/project-plan.md +[milestones]: ./docs/milestones/ +[registry]: ./docs/artifact-registry.md +[DICT-001]: ./docs/dictionary.md +[TM-001]: ./docs/sqa/traceability-matrix.md +[framework-readme]: ./framework/README.md +[framework-changelog]: ./framework/CHANGELOG.md diff --git a/docs/artifact-registry.md b/docs/artifact-registry.md new file mode 100644 index 0000000..2614c76 --- /dev/null +++ b/docs/artifact-registry.md @@ -0,0 +1,61 @@ +# Artifact Registry + +This project's artifact state. Types, short names and `CrossReference +Candidates` come from the framework catalog +(`framework/registry/artifact-catalog.md`); this file only records where +each document lives in *this* project and the next version to use. + +Delete rows for types you don't use. Add a row the first time you create a +document of a type. `Primary File` may contain a glob (e.g. +`docs/use-cases/uc-*/uc.md`); `framework/scripts/find-crossreferences.sh` reads it. + +| Short Name | Artifact Type | Primary File | Next Available Version | +| --- | --- | --- | --- | +| BC | Business Case | docs/business-case.md | 002 | +| SA | Stakeholder Analysis | docs/stakeholder-analysis.md | 002 | +| PP | Project Plan | docs/project-plan.md | 002 | +| MIL | Milestone / Gateway | docs/milestones/*.md | 005 | +| RC | SQA Review Record | docs/sqa/reviews/rc-*.md | 009 | +| DICT | Domain Dictionary | docs/dictionary.md | 002 | +| 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 | + +Every artifact of a type marked "Yes" below states its language and domain in +its `Language` and `Domain` Metadata rows; `new-artifact.sh` fills them from +`PO language` and `PO domain`. `Language` is a BCP 47 code (`da`, `en`). +`Domain` is a value from this list; add a row to introduce a domain, so a +reviewer can see at once which professional vocabulary a document uses. + +| Domain | Meaning | +| --- | --- | +| it | Software and IT | +| medical | Healthcare and medical devices | +| construction | Construction and civil engineering | + +| Artifact types | Register | Written in the PO language | +| --- | --- | --- | +| BC, KPI, PP, MIL | IT Executive English | Yes | +| SA, BMC, BPMN, UCD, US, UC, SSD, DM, RA, GOV, DICT | IT Professional English | Yes | +| OC, SD, DCD, ERD, TP, AD, ADR, TM, RC, QC, source code | IT Professional English | No | + +## Notes + +- "Next Available Version" is the zero-padded (3-digit) version to use the + *next* time a new document of that type is created. Increment it only when + a brand-new document is created, not when an existing document's + `## Version History` gets a row. +- `ADR` uses 4 digits (`0001`); `RC` is sequential across all artifact types. diff --git a/docs/business-case.md b/docs/business-case.md new file mode 100644 index 0000000..0401d82 --- /dev/null +++ b/docs/business-case.md @@ -0,0 +1,131 @@ +# Business Case + +## Metadata +| Key | Value | +| --- | --- | +| ID | BC-001 | +| CrossReference | [SA-001] | +| Language | en | +| Domain | it | + +## Version History +| Date | Status | Author | Reviewer | Change | Commit | +| --- | --- | --- | --- | --- | --- | +| 2026-11-04 | Deprecated | Jens Tirsvad Nielsen | S01 (AI as stand-in) | Initial version | pending | +| 2026-11-04 | Accepted | Jens Tirsvad Nielsen | S01 (AI as stand-in) | Accepted on RC-001 (Go)
Mode: autonomous, not independent | pending | + +--- + +## Executive Summary + +Day 52 of Udemy's "100 Days of Code: The Complete Python Pro Bootcamp" asks the course participant to build an Instagram follower bot with Selenium. The bot logs in, opens a target account, scrolls its followers list and follows each follower. This project delivers that assignment as a readable, runnable, tested Python repository against the Share-a-Naan mock service, with a README and a three-language wiki (English, Danish, Bahasa Malaysia) that explain what each lecture step teaches. + +## Methodological and Standards Foundation + +The project follows the software quality assurance (SQA) and quality control (QC) framework mounted at `framework/`: artifacts are reviewed against their QC checklists, and quality criteria are tagged with ISO/IEC 25010:2023 characteristics. Code is structured by Clean Architecture and reviewed against `QC-PY-001` (Python). + +## Problem Statement + +- The assignment is described only as lecture prose; there is no tested, documented reference solution to compare against. +- Following accounts by hand does not scale, and automating it against the real Instagram risks an account ban and breaks when XPaths change. +- Course solutions shared online often lack tests, setup instructions and an explanation of what was learned. + +## Business Opportunity + +A small, well-documented repository helps the participant prove the skill, helps other course participants compare solutions, and gives GitHub visitors an example of a Selenium bot that is testable and safe to run against a mock service. + +## Objectives + +1. Deliver the `InstaFollower` class with `login()`, `find_followers()` and `follow()` as the assignment names them. +2. Run safely against the Share-a-Naan mock; the real Instagram is out of the default path. +3. Keep all constants in `constants.py` and all secrets out of the repository. +4. Test the logic with pytest without a live browser or network. +5. Document run and test instructions, including a local `.venv`, in the README. +6. Publish a wiki in English, Danish and Bahasa Malaysia, with a screenshot per lecture step and a note on what each step teaches. +7. Set a repository description and topics on the git host. + +## Scope + +### In Scope + +- Python 3.13 or newer, `venv`, `pyproject.toml`, Python `.gitignore`. +- Selenium bot for the Share-a-Naan mock (login, cookie/pop-up dismissal, follower modal scroll, follow with ElementClickIntercepted handling). +- pytest unit tests with a fake driver; Doxygen comments and a `Doxyfile`. +- README from the framework template; wiki in `en`, `da`, `ms`; screenshots per lecture step. +- Git host metadata (description, topics) and one pull request per milestone. + +### Out of Scope + +- Running the bot against the real Instagram, or any evasion of bot detection. +- Committing, printing or testing the contents of `.env` (tokens are for the maintainer's own use). +- Packaging for PyPI; any runtime dependency other than Selenium. + +## Expected Benefits + +### Tangible Benefits + +- A runnable solution with passing tests and documented set-up. +- A wiki in three languages with one screenshot per lecture step. + +### Intangible Benefits + +- Practice with Selenium, XPath, exceptions and a class-based design. +- A reusable pattern for later bootcamp days. + +## Strategic Alignment + +The repository belongs to the Tirsvad-Udemy-100-days-of-code collection and shows consistent use of the SQA and QC framework on a small project. + +## Success Criteria + +| # | Criterion | Target | Measure | +| --- | --- | --- | --- | +| 1 | Unit tests pass | 100 % of tests green | `pytest` exit code 0 | +| 2 | Wiki completeness | 3 languages with the same page set | file listing in `docs/wiki/` | +| 3 | Lecture-step screenshots | one per step 1 to 5 in README and wiki | image files referenced | +| 4 | Secrets in repository | 0 | scan for token values | +| 5 | Runtime dependencies | only `selenium` | `pyproject.toml` | + +## Risks + +| Risk | Impact | Mitigation | +| --- | --- | --- | +| Share-a-Naan page layout differs from the lecture | Locators fail | Keep locators in `constants.py`; use `contains()` and `text()` | +| Login to the mock needs credentials the AI does not have | Screenshots cannot be captured | Credentials come from environment variables; capture screenshots of the public pages and mark what needs the owner's login | +| Token leaks into history | Security incident | `.env` in `.gitignore`; never read into code; stop on any exposure | +| GUI test takes the host desktop | Disturbs the user | Run the browser headless or in a container, as `gui-testing.md` says | + +## Assumptions + +- The Product Owner (S01) is also developer and reviewer, and reaches the other stakeholders. +- The git host accepts the token in `.env` for the repository and its wiki. +- Python 3.13 or newer is installed locally. + +## Constraints + +- Python 3.13 or newer; `venv`; `pytest`; constants in `constants.py`; `pyproject.toml`. +- Layout `src/`, `tests/`, `docs/`. +- Product Owner language English, domain IT. +- One branch and pull request per milestone. + +## Cost–Benefit Assessment + +| Costs | Benefits | +| --- | --- | +| Qualitative: a few hours of the participant's time and AI assistance; no licence cost. | Qualitative: a documented, tested learning artifact that other participants and visitors can reuse. | + +## Stakeholders + +| Stakeholder ID (SA) | Interest in this project | +| --- | --- | +| S01 | Owns the product, builds it and reviews it | +| S02 | Wants readable, runnable code and run instructions | +| S03 | Wants a clear description, topics and README, with no runtime dependencies | + +## Recommendation + +Proceed β€” the scope is small, the risk is contained by the mock service, and the deliverable is verifiable. + +--- + +[SA-001]: ./stakeholder-analysis.md diff --git a/docs/dictionary.md b/docs/dictionary.md new file mode 100644 index 0000000..7546621 --- /dev/null +++ b/docs/dictionary.md @@ -0,0 +1,45 @@ +# Domain Dictionary (PO and IT terms) + +## Metadata +| Key | Value | +| --- | --- | +| ID | DICT-001 | +| CrossReference | [BC-001], [SA-001] | +| Language | en | +| Domain | it | + +## Version History +| Date | Status | Author | Reviewer | Change | Commit | +| --- | --- | --- | --- | --- | --- | +| 2026-11-04 | Deprecated | Jens Tirsvad Nielsen | S01 (AI as stand-in) | Initial version | pending | +| 2026-11-04 | Accepted | Jens Tirsvad Nielsen | S01 (AI as stand-in) | Accepted on RC-004 (Go)
Mode: autonomous, not independent | pending | + +--- + +## Purpose and Scope + +Maps each Product Owner (PO) term to its professional IT term. PO language: English (`en`), domain `it`. It covers the words of the Day 52 assignment and the IT terms used in code. + +## Dictionary + +| PO term | Language | IT term | Definition | Used as PO term in | Used as IT term in | +| --- | --- | --- | --- | --- | --- | +| follow | en | Follow action | Click the Follow button of an account so that it is followed. | BC, PP, MIL | PY | +| follower | en | Follower | An account that follows the target account. | BC, PP, MIL | PY | +| log in | en | Authenticate | Sign in to the service with a username and a password. | BC, PP, MIL | PY | +| mock service | en | Test double service | A practice copy of the real service that behaves like it but cannot harm a real account. | BC, PP, MIL | PY | +| pop-up | en | Modal dialog | A window that opens over the page and asks for an answer. | BC, PP, MIL | PY | +| target account | en | Source account | The account whose followers the bot goes through. | BC, PP, MIL | PY | + +## Rules + +- The Domain Model, use cases and user stories use the PO term; the Operation + Contract, Sequence Diagram, Design Class Diagram and ERD use the IT term. +- One IT term per PO term and one PO term per IT term; no synonyms. +- Rows are in ascending order of the PO term (case-insensitive, by the + alphabet of the PO language), so a term is found without searching. + +--- + +[BC-001]: ./business-case.md +[SA-001]: ./stakeholder-analysis.md diff --git a/docs/milestones/mil-001-project-setup.md b/docs/milestones/mil-001-project-setup.md new file mode 100644 index 0000000..72183e4 --- /dev/null +++ b/docs/milestones/mil-001-project-setup.md @@ -0,0 +1,70 @@ +# MIL-001 Project setup + +## Metadata +| Key | Value | +| --- | --- | +| ID | MIL-001 | +| CrossReference | [BC-001] | +| Language | en | +| Domain | it | + +## Version History +| Date | Status | Author | Reviewer | Change | Commit | +| --- | --- | --- | --- | --- | --- | +| 2026-11-04 | Deprecated | Jens Tirsvad Nielsen | S01 (AI as stand-in) | Initial version | pending | +| 2026-11-04 | Accepted | Jens Tirsvad Nielsen | S01 (AI as stand-in) | Accepted on RC-005 (Go)
Mode: autonomous, not independent | pending | + +--- + +## Purpose + +Decide whether the repository foundation is ready for code: configuration, tooling, documentation skeleton and git host metadata. + +## Deliverable + +Repository with `pyproject.toml` (Python 3.13 or newer, selenium runtime dependency, pytest dev extra), a Python `.gitignore` that excludes `.env` and `.venv`, a `Doxyfile`, a README skeleton from the framework template with `.venv` instructions, the baseline documents, and the repository description and topics on the git host. + +## Go / No-Go Criteria + +| # | Criterion (objectively checkable) | Go | No-Go | +| --- | --- | --- | --- | +| 1 | `pyproject.toml` declares `requires-python >=3.13` and only `selenium` as runtime dependency | `pip install -e .[dev]` succeeds | Missing or extra runtime dependency | +| 2 | `.gitignore` excludes `.env`, `.venv` and caches | `git check-ignore .env` prints the path | `.env` is trackable | +| 3 | Baseline documents are `Accepted` with `Go` reviews | RC records exist | Any baseline row is `Proposed` | +| 4 | Repository description and topics are set on the git host | API read-back shows both | Description or topics missing | + +## Dependencies + +| Depends on | Reason | +| --- | --- | +| none | First phase | + +## Traceability + +| Business Case objective / KPI / user story | Reference | +| --- | --- | +| Objective 3, 5, 7 | [BC-001] | + +## Ownership + +| Role | Stakeholder ID (SA) | +| --- | --- | +| Owner | S01 | +| Approving reviewer | S01 | + +## Target Date + +2026-11-04 β€” within the one-week plan. + +## Tasks + +| # | Task | Summary | Needs its own Use Case/User Story? | Reference | +| --- | --- | --- | --- | --- | +| 1 | Add pyproject, gitignore and Doxyfile | Create `pyproject.toml` (Python 3.13 or newer, `selenium` runtime, `pytest` dev extra, `src` layout), a Python `.gitignore` that ignores `.env` and `.venv`, and a `Doxyfile` for `src/`. These satisfy the project constraints without touching `src/` or `tests/`. | No | | +| 2 | Write README skeleton with venv instructions | Fill the framework README template with the project purpose and how to create and use `.venv`, run `python -m pip install --upgrade pip`, install, run and test. Screenshots are added in MIL-003. | No | | +| 3 | Set repository description and topics | Set a description and topics (python, selenium, udemy, 100-days-of-code, instagram-bot, share-a-naan) on the Gitea repository through the API, using the token from `.env`. The token is read from the environment only and never written to the repository. | No | | +| 4 | Review baseline documents | Review Business Case, Stakeholder Analysis, Project Plan and milestones against their QC checklists and record the `RC-*` records. | No | | + +--- + +[BC-001]: ../business-case.md diff --git a/docs/milestones/mil-002-follower-bot.md b/docs/milestones/mil-002-follower-bot.md new file mode 100644 index 0000000..73cc380 --- /dev/null +++ b/docs/milestones/mil-002-follower-bot.md @@ -0,0 +1,71 @@ +# MIL-002 Follower bot + +## Metadata +| Key | Value | +| --- | --- | +| ID | MIL-002 | +| CrossReference | [BC-001] | +| Language | en | +| Domain | it | + +## Version History +| Date | Status | Author | Reviewer | Change | Commit | +| --- | --- | --- | --- | --- | --- | +| 2026-11-04 | Deprecated | Jens Tirsvad Nielsen | S01 (AI as stand-in) | Initial version | pending | +| 2026-11-04 | Accepted | Jens Tirsvad Nielsen | S01 (AI as stand-in) | Accepted on RC-006 (Go)
Mode: autonomous, not independent | pending | + +--- + +## Purpose + +Decide whether the InstaFollower bot is implemented, tested and reviewed against the Python checklist. + +## Deliverable + +A `src/` package with `constants.py` and `InstaFollower` (`login`, `find_followers`, `follow`) and an entry point, pytest tests using a fake driver, and Doxygen comments; reviewed against `QC-PY-001`. + +## Go / No-Go Criteria + +| # | Criterion (objectively checkable) | Go | No-Go | +| --- | --- | --- | --- | +| 1 | `pytest` passes with no browser and no network | Exit code 0 | Any failing test | +| 2 | Constants (URLs, locators, delays) live only in `constants.py` | No literals elsewhere | Locator or URL literal in the class | +| 3 | Credentials come from environment variables, not from code | No secret in source | Hard-coded credential | +| 4 | The Python code review record is `Go` | RC verdict is Go | Verdict is No-Go | + +## Dependencies + +| Depends on | Reason | +| --- | --- | +| MIL-001 | Tooling and configuration must exist | + +## Traceability + +| Business Case objective / KPI / user story | Reference | +| --- | --- | +| Objective 1, 2, 3, 4 | [BC-001] | + +## Ownership + +| Role | Stakeholder ID (SA) | +| --- | --- | +| Owner | S01 | +| Approving reviewer | S01 | + +## Target Date + +2026-11-05 β€” within the one-week plan. + +## Tasks + +| # | Task | Summary | Needs its own Use Case/User Story? | Reference | +| --- | --- | --- | --- | --- | +| 1 | Create constants module | Add `constants.py` with `SIMILAR_ACCOUNT`, `BASE_URL`, `LOGIN_URL`, locator XPaths using `contains()` and `text()`, delays and scroll settings. Credentials are read from the environment variables `INSTA_USERNAME` and `INSTA_PASSWORD`. | No | | +| 2 | Implement InstaFollower login | Create the class with a Selenium driver in `__init__` and a `login()` that dismisses the cookie banner, fills the Share-a-Naan form and dismisses follow-up pop-ups. | No | | +| 3 | Implement find_followers and follow | `find_followers()` opens the target account and scrolls the followers modal; `follow()` clicks each Follow button with a 1 second delay and handles `ElementClickInterceptedException` by clicking Cancel. | No | | +| 4 | Add entry point and pytest tests | Add `main.py` that runs the three methods in order, and unit tests with a fake driver for login, scrolling, follow and the intercepted-click path. | No | | +| 5 | Add Doxygen comments and review code | Document the public API with Doxygen comments, review against `QC-PY-001` and record the `RC-*`. | No | | + +--- + +[BC-001]: ../business-case.md diff --git a/docs/milestones/mil-003-readme-and-screenshots.md b/docs/milestones/mil-003-readme-and-screenshots.md new file mode 100644 index 0000000..7de94e4 --- /dev/null +++ b/docs/milestones/mil-003-readme-and-screenshots.md @@ -0,0 +1,68 @@ +# MIL-003 README and screenshots + +## Metadata +| Key | Value | +| --- | --- | +| ID | MIL-003 | +| CrossReference | [BC-001] | +| Language | en | +| Domain | it | + +## Version History +| Date | Status | Author | Reviewer | Change | Commit | +| --- | --- | --- | --- | --- | --- | +| 2026-11-04 | Deprecated | Jens Tirsvad Nielsen | S01 (AI as stand-in) | Initial version | pending | +| 2026-11-04 | Accepted | Jens Tirsvad Nielsen | S01 (AI as stand-in) | Accepted on RC-007 (Go)
Mode: autonomous, not independent | pending | + +--- + +## Purpose + +Decide whether the README lets a reader install, run and test the project and see each lecture step. + +## Deliverable + +A completed `README.md` with run and test instructions and one screenshot per lecture step (1 to 5) stored under `docs/images/`. + +## Go / No-Go Criteria + +| # | Criterion (objectively checkable) | Go | No-Go | +| --- | --- | --- | --- | +| 1 | README follows the framework template and passes `check-readme.sh` | Script exits 0 | Script fails | +| 2 | One screenshot per lecture step 1 to 5 is referenced | 5 images exist | A step lacks an image | +| 3 | Instructions work from a fresh clone | Commands in README succeed | A command fails | + +## Dependencies + +| Depends on | Reason | +| --- | --- | +| MIL-002 | The bot must exist to be described | + +## Traceability + +| Business Case objective / KPI / user story | Reference | +| --- | --- | +| Objective 5, 6 | [BC-001] | + +## Ownership + +| Role | Stakeholder ID (SA) | +| --- | --- | +| Owner | S01 | +| Approving reviewer | S01 | + +## Target Date + +2026-11-06 β€” within the one-week plan. + +## Tasks + +| # | Task | Summary | Needs its own Use Case/User Story? | Reference | +| --- | --- | --- | --- | --- | +| 1 | Capture screenshots per lecture step | Capture one screenshot per assignment step (credentials, class, login, followers modal, follow) from the Share-a-Naan mock using the built-in browser or a headless driver, never the desktop of the user. If the mock needs the owner login, stop and report. | No | | +| 2 | Complete README with steps and screenshots | Finish the README with install, run and test instructions and embed the screenshots with a short explanation per step. | No | | +| 3 | Validate README against framework check | Run `framework/scripts/check-readme.sh` and fix its findings. | No | | + +--- + +[BC-001]: ../business-case.md diff --git a/docs/milestones/mil-004-wiki.md b/docs/milestones/mil-004-wiki.md new file mode 100644 index 0000000..b20d5f1 --- /dev/null +++ b/docs/milestones/mil-004-wiki.md @@ -0,0 +1,69 @@ +# MIL-004 Wiki + +## Metadata +| Key | Value | +| --- | --- | +| ID | MIL-004 | +| CrossReference | [BC-001] | +| Language | en | +| Domain | it | + +## Version History +| Date | Status | Author | Reviewer | Change | Commit | +| --- | --- | --- | --- | --- | --- | +| 2026-11-04 | Deprecated | Jens Tirsvad Nielsen | S01 (AI as stand-in) | Initial version | pending | +| 2026-11-04 | Accepted | Jens Tirsvad Nielsen | S01 (AI as stand-in) | Accepted on RC-008 (Go)
Mode: autonomous, not independent | pending | + +--- + +## Purpose + +Decide whether the wiki is complete in English, Danish and Bahasa Malaysia and says what each lecture step teaches. + +## Deliverable + +`docs/wiki/` with Home, one page per lecture step and `_Sidebar.md`, in English (no suffix), Danish (`-da`) and Bahasa Malaysia (`-ms`), with the screenshots, reviewed against `QC-WIKI-001`. + +## Go / No-Go Criteria + +| # | Criterion (objectively checkable) | Go | No-Go | +| --- | --- | --- | --- | +| 1 | Same page set in en, da and ms | File listing matches | A page is missing in a language | +| 2 | Every step page has a screenshot and a "what we gained" section | Present on each page | Missing section | +| 3 | Sidebar follows the framework shape | `QC-WIKI-001` item passes | Sidebar defect | + +## Dependencies + +| Depends on | Reason | +| --- | --- | +| MIL-003 | Screenshots and README text are reused | + +## Traceability + +| Business Case objective / KPI / user story | Reference | +| --- | --- | +| Objective 6 | [BC-001] | + +## Ownership + +| Role | Stakeholder ID (SA) | +| --- | --- | +| Owner | S01 | +| Approving reviewer | S01 | + +## Target Date + +2026-11-07 β€” within the one-week plan. + +## Tasks + +| # | Task | Summary | Needs its own Use Case/User Story? | Reference | +| --- | --- | --- | --- | --- | +| 1 | Write English wiki pages | Write Home and one page per lecture step 1 to 5 with the screenshot and a section on what was gained (Selenium locators, waits, scrolling a modal, exception handling), plus `_Sidebar.md`. | No | | +| 2 | Translate wiki to Danish | Create the same page set with the `-da` suffix; code, commands and file names stay in English. | No | | +| 3 | Translate wiki to Bahasa Malaysia | Create the same page set with the `-ms` suffix; code, commands and file names stay in English. | No | | +| 4 | Review wiki against QC-WIKI-001 | Check page sets, language lines, sidebar and links and record the `RC-*`. | No | | + +--- + +[BC-001]: ../business-case.md diff --git a/docs/project-plan.md b/docs/project-plan.md new file mode 100644 index 0000000..70b9ed5 --- /dev/null +++ b/docs/project-plan.md @@ -0,0 +1,90 @@ +# Project Plan + +## Metadata +| Key | Value | +| --- | --- | +| ID | PP-001 | +| CrossReference | [BC-001], [SA-001], [MIL-001], [MIL-002], [MIL-003], [MIL-004] | +| Language | en | +| Domain | it | + +## Version History +| Date | Status | Author | Reviewer | Change | Commit | +| --- | --- | --- | --- | --- | --- | +| 2026-11-04 | Deprecated | Jens Tirsvad Nielsen | S01 (AI as stand-in) | Initial version | pending | +| 2026-11-04 | Accepted | Jens Tirsvad Nielsen | S01 (AI as stand-in) | Accepted on RC-003 (Go)
Mode: autonomous, not independent | pending | + +--- + +## Purpose + +Schedule the four phases that deliver the Instagram follower bot within the Business Case constraints (Python 3.13 or newer, one branch and pull request per milestone). + +## Planning Assumptions + +- Week 1 starts 2026-11-04 and the plan ends by 2026-11-07 (source: the user prompt asks for milestones with a branch each; the dates are the AI proposal accepted by S01 in chat). +- One phase per day; each phase is one branch and one pull request (source: [BC-001] Constraints). +- Tasks are plain technical tasks (`No` in the use-case column): the assignment is a single goal whose steps the lecture gives, so no separate use case or user story is modelled. + +## Gateway Schedule + +| Gateway | Document | Window | Decision date | Owner | Stories | Main deliverable | Milestone | +| --- | --- | --- | --- | --- | --- | --- | --- | +| Project setup | [MIL-001] | 2026-11-04 | 2026-11-04 | S01 | none (technical tasks) | Config, tooling, README skeleton, repo metadata | not yet synced | +| Follower bot | [MIL-002] | 2026-11-05 | 2026-11-05 | S01 | none (technical tasks) | InstaFollower bot, tests, Doxygen comments | not yet synced | +| README and screenshots | [MIL-003] | 2026-11-06 | 2026-11-06 | S01 | none (technical tasks) | README with run/test steps and 5 screenshots | not yet synced | +| Wiki | [MIL-004] | 2026-11-07 | 2026-11-07 | S01 | none (technical tasks) | Wiki in en, da, ms with screenshots | not yet synced | + +```plantuml +@startgantt +Project starts 2026-11-04 +[Project setup] starts 2026-11-04 and ends 2026-11-04 +[Follower bot] starts 2026-11-05 and ends 2026-11-05 +[README and screenshots] starts 2026-11-06 and ends 2026-11-06 +[Wiki] starts 2026-11-07 and ends 2026-11-07 +[MIL-001 Go/No-Go] happens 2026-11-04 +[MIL-002 Go/No-Go] happens 2026-11-05 +[MIL-003 Go/No-Go] happens 2026-11-06 +[MIL-004 Go/No-Go] happens 2026-11-07 +@endgantt +``` + +## Scope Coverage + +| Business Case scope item | Gateway | +| --- | --- | +| Python 3.13, venv, pyproject, .gitignore, Doxyfile | [MIL-001] | +| Git host description and topics | [MIL-001] | +| Selenium bot, pytest tests, Doxygen comments | [MIL-002] | +| README and screenshots | [MIL-003] | +| Wiki in en, da, ms | [MIL-004] | + +## Dependencies + +``` +MIL-001 β†’ MIL-002 β†’ MIL-003 β†’ MIL-004 +``` + +A No-Go on a phase stops the later phases until it is fixed and re-reviewed, and each later date moves by the days lost. S01 decides any move of the end date 2026-11-07. + +## Plan Risks + +| Risk | Impact | Mitigation | +| --- | --- | --- | +| Share-a-Naan needs the owner login for screenshots (Business Case risk: layout or login differs from the lecture) | MIL-003 and MIL-004 blocked | Stop and report; resume when credentials are provided in the environment | +| The wiki is not enabled on the host | Wiki not visible | Check at MIL-004 and report | +| The git host token lacks a scope (Business Case risk: token handling) | Metadata or issues fail | Report which call failed; never print the token | + +## Open Issues + +- The `origin` path is `Tirsvad-Udemy-100-days-of-code/052-instagram-followers`; the prompt names `Tirsvad-Udemy-100_days_of_code`. The existing `origin` is used unless the user says otherwise. +- Share-a-Naan selectors are unknown until the page is inspected; locators are verified in MIL-002 and MIL-003. + +--- + +[BC-001]: ./business-case.md +[SA-001]: ./stakeholder-analysis.md +[MIL-001]: ./milestones/mil-001-project-setup.md +[MIL-002]: ./milestones/mil-002-follower-bot.md +[MIL-003]: ./milestones/mil-003-readme-and-screenshots.md +[MIL-004]: ./milestones/mil-004-wiki.md diff --git a/docs/sqa/reviews/rc-001-bc.md b/docs/sqa/reviews/rc-001-bc.md new file mode 100644 index 0000000..94e8476 --- /dev/null +++ b/docs/sqa/reviews/rc-001-bc.md @@ -0,0 +1,67 @@ +# 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-11-04 | Proposed | Jens Tirsvad Nielsen | S01 (AI as stand-in) | Initial version | pending | + +--- + +## Artifact Under Review + +- Instance reviewed: [BC-001] +- Checklist used: [QC-BC-001] +- Scope: full review +- Language and domain: en / it +- Language reviewer: none (the stand-in for S01 reads English and the IT domain) +- Mode: autonomous, not independent (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 is qualitative and the table says why it is enough for a no-licence 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 | Five criteria with targets and measures. | +| 4 | Scope explicitly separates In Scope vs Out of Scope | Pass | `### In Scope` and `### Out of Scope` present. | +| 5 | Stakeholders are cross-referenced to Stakeholder Analysis IDs rather than re-described inline | Pass | Stakeholders table cites S01, S02, S03. | +| 6 | Methodology and quality-standard foundation are stated explicitly (e.g. ISO/IEC 25010, Larman) | Pass | SQA/QC framework and ISO/IEC 25010 stated. | +| 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: Proceed, with 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 | `Language` is `en` and `Domain` is `it` in Metadata. | +| 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 domain list. | +| 3 | The content (prose and table cells) is written in the stated language | Pass | Prose and table cells are English. | +| 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 | PO terms follow [DICT-001] (follower, follow, log in, mock service, pop-up, target account). | +| 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 translated twin exists in `docs/`. | +| 8 | A change of language or domain since the previous accepted version has a Version History row and was reviewed again | Pass | No change of language since the first version. | +| 9 | A reviewer competent in the domain, and in the language, has confirmed that the domain terms are used correctly | Pass | The stand-in for S01 reads English and knows the IT domain; open to challenge by S01 in the run summary. | +| 10 | Abbreviations are spelled out on first use, in the stated language | Pass | Abbreviations are spelled out on first use. | + +## Overall Verdict + +Go β€” Every Mandatory criterion passes. + +## Action Items + +| Action | Owner | Due | +| --- | --- | --- | +| None; no Fail and no condition. | S01 | - | + +--- + +[BC-001]: ../../business-case.md +[QC-BC-001]: ../../../framework/qc/artifacts/qc-business-case.md +[QC-LANG-001]: ../../../framework/qc/artifacts/qc-language-domain.md diff --git a/docs/sqa/reviews/rc-002-sa.md b/docs/sqa/reviews/rc-002-sa.md new file mode 100644 index 0000000..867166e --- /dev/null +++ b/docs/sqa/reviews/rc-002-sa.md @@ -0,0 +1,68 @@ +# 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-11-04 | Proposed | Jens Tirsvad Nielsen | S01 (AI as stand-in) | Initial version | pending | + +--- + +## Artifact Under Review + +- Instance reviewed: [SA-001] +- Checklist used: [QC-SA-001] +- Scope: full review +- Language and domain: en / it +- Language reviewer: none (the stand-in for S01 reads English and the IT domain) +- Mode: autonomous, not independent (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 | Meets the criterion; see the sections of [SA-001]. | +| 2 | Each stakeholder is assigned a unique, stable ID (e.g. S01-S11 style) reusable for RACI assignments in other artifacts | Pass | Meets the criterion; see the sections of [SA-001]. | +| 3 | Roles and organizational context are defined with explicit Power and Interest levels, not just narrative description | Pass | Meets the criterion; see the sections of [SA-001]. | +| 4 | Communication needs (channel, frequency, deliverable type) are mapped to project phases or milestones | Pass | Meets the criterion; see the sections of [SA-001]. | +| 5 | Conflicting stakeholder interests are identified with documented mitigation or resolution strategies | Pass | Meets the criterion; see the sections of [SA-001]. | +| 6 | Stakeholder concerns are explicitly traced to Business Case objectives | Pass | Meets the criterion; see the sections of [SA-001]. | +| 7 | Primary concerns are expressed in both business language and a recognized quality-attribute mapping (e.g. FURPS+) | Pass | Meets the criterion; see the sections of [SA-001]. | +| 8 | Document is understandable and navigable by non-technical stakeholders reviewing their own entry | Pass | Meets the criterion; see the sections of [SA-001]. | +| 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 | Meets the criterion; see the sections of [SA-001]. | + +## Language and Domain Results + +| # | Criterion | Status | Evidence/Notes | +| --- | --- | --- | --- | +| 1 | The Metadata table has a `Language` row and a `Domain` row, and neither is a placeholder | Pass | `Language` is `en` and `Domain` is `it` in Metadata. | +| 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 domain list. | +| 3 | The content (prose and table cells) is written in the stated language | Pass | Prose and table cells are English. | +| 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 | PO terms follow [DICT-001] (follower, follow, log in, mock service, pop-up, target account). | +| 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 translated twin exists in `docs/`. | +| 8 | A change of language or domain since the previous accepted version has a Version History row and was reviewed again | Pass | No change of language since the first version. | +| 9 | A reviewer competent in the domain, and in the language, has confirmed that the domain terms are used correctly | Pass | The stand-in for S01 reads English and knows the IT domain; open to challenge by S01 in the run summary. | +| 10 | Abbreviations are spelled out on first use, in the stated language | Pass | Abbreviations are spelled out on first use. | + +## Overall Verdict + +Go β€” Every Mandatory criterion passes; S01 to S03 classified, CN-001 to CN-008 traced to Business Case objectives. + +## Action Items + +| Action | Owner | Due | +| --- | --- | --- | +| None; no Fail and no condition. | S01 | - | + +--- + +[SA-001]: ../../stakeholder-analysis.md +[QC-SA-001]: ../../../framework/qc/artifacts/qc-stakeholder-analysis.md +[QC-LANG-001]: ../../../framework/qc/artifacts/qc-language-domain.md diff --git a/docs/sqa/reviews/rc-003-pp.md b/docs/sqa/reviews/rc-003-pp.md new file mode 100644 index 0000000..989a8a2 --- /dev/null +++ b/docs/sqa/reviews/rc-003-pp.md @@ -0,0 +1,74 @@ +# 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-11-04 | Proposed | Jens Tirsvad Nielsen | S01 (AI as stand-in) | Initial version | pending | + +--- + +## Artifact Under Review + +- Instance reviewed: [PP-001] +- Checklist used: [QC-PP-001] +- Scope: full review +- Language and domain: en / it +- Language reviewer: none (the stand-in for S01 reads English and the IT domain) +- Mode: autonomous, not independent (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 | Meets the criterion; see the sections of [PP-001]. | +| 2 | Every milestone or gateway is listed once with its document, decision date and owner | Pass | Meets the criterion; see the sections of [PP-001]. | +| 3 | Every decision date lies inside the plan's window and is consistent with the dates in the linked `MIL-*` document | Pass | Meets the criterion; see the sections of [PP-001]. | +| 4 | Every in-scope item of the Business Case is delivered at a named gateway (scope coverage) | Pass | Meets the criterion; see the sections of [PP-001]. | +| 5 | Dependencies between gateways are stated, acyclic and consistent with the schedule order | Pass | Meets the criterion; see the sections of [PP-001]. | +| 6 | The plan states what happens to later gateways and to the end date when a gateway is No-Go | Pass | No-Go stops later phases; S01 decides any move of the end date. | +| 7 | Owners, reviewers and escalation roles use Stakeholder Analysis IDs and match the governance RACI | N-A | The project has no governance document; every owner is S01, a Stakeholder Analysis ID. No RACI to match. | +| 8 | Planning assumptions are listed with their source, and a changed baseline is recorded with its reason | Pass | Meets the criterion; see the sections of [PP-001]. | +| 9 | Plan risks are listed with impact and a mitigation, and trace to Business Case risks where they come from there | Pass | Meets the criterion; see the sections of [PP-001]. | +| 10 | Open issues are listed, and none contradicts a statement elsewhere in the plan | Pass | Meets the criterion; see the sections of [PP-001]. | +| 11 | Each gateway's main deliverable is stated and matches the deliverable of its `MIL-*` document | Pass | Meets the criterion; see the sections of [PP-001]. | +| 12 | Gateways that deliver user stories name them, and those that do not say why | Pass | Meets the criterion; see the sections of [PP-001]. | +| 13 | The schedule view (table, Gantt) and the dependency view agree with each other | Pass | Meets the criterion; see the sections of [PP-001]. | +| 14 | Each gateway is linked to its issue-tracker milestone, or marked as not yet synced | Pass | Meets the criterion; see the sections of [PP-001]. | +| 15 | The plan is a singleton: one Project Plan per project, changes recorded in Version History | Pass | Meets the criterion; see the sections of [PP-001]. | + +## Language and Domain Results + +| # | Criterion | Status | Evidence/Notes | +| --- | --- | --- | --- | +| 1 | The Metadata table has a `Language` row and a `Domain` row, and neither is a placeholder | Pass | `Language` is `en` and `Domain` is `it` in Metadata. | +| 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 domain list. | +| 3 | The content (prose and table cells) is written in the stated language | Pass | Prose and table cells are English. | +| 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 | PO terms follow [DICT-001] (follower, follow, log in, mock service, pop-up, target account). | +| 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 translated twin exists in `docs/`. | +| 8 | A change of language or domain since the previous accepted version has a Version History row and was reviewed again | Pass | No change of language since the first version. | +| 9 | A reviewer competent in the domain, and in the language, has confirmed that the domain terms are used correctly | Pass | The stand-in for S01 reads English and knows the IT domain; open to challenge by S01 in the run summary. | +| 10 | Abbreviations are spelled out on first use, in the stated language | Pass | Abbreviations are spelled out on first use. | + +## Overall Verdict + +Go β€” Every Mandatory criterion passes or is N-A with a stated reason. + +## Action Items + +| Action | Owner | Due | +| --- | --- | --- | +| None; no Fail and no condition. | S01 | - | + +--- + +[PP-001]: ../../project-plan.md +[QC-PP-001]: ../../../framework/qc/artifacts/qc-project-plan.md +[QC-LANG-001]: ../../../framework/qc/artifacts/qc-language-domain.md diff --git a/docs/sqa/reviews/rc-004-dict.md b/docs/sqa/reviews/rc-004-dict.md new file mode 100644 index 0000000..f99899a --- /dev/null +++ b/docs/sqa/reviews/rc-004-dict.md @@ -0,0 +1,67 @@ +# Review of DICT-001 + +## Metadata +| Key | Value | +| --- | --- | +| ID | RC-004 | +| CrossReference | [DICT-001], [QC-DICT-001], [QC-LANG-001] | + +## Version History +| Date | Status | Author | Reviewer | Change | Commit | +| --- | --- | --- | --- | --- | --- | +| 2026-11-04 | Proposed | Jens Tirsvad Nielsen | S01 (AI as stand-in) | Initial version | pending | + +--- + +## Artifact Under Review + +- Instance reviewed: [DICT-001] +- Checklist used: [QC-DICT-001] +- Scope: full review +- Language and domain: en / it +- Language reviewer: none (the stand-in for S01 reads English and the IT domain) +- Mode: autonomous, not independent (reviewer is AI as stand-in for S01) + +## Checklist Results + +| # | Criterion | Status | Evidence/Notes | +| --- | --- | --- | --- | +| 1 | Every row has a PO term, its language, an IT term and a definition | Pass | Meets the criterion; six rows, each complete. | +| 2 | Each PO term maps to exactly one IT term and the reverse (no synonyms) | Pass | Meets the criterion; six rows, each complete. | +| 3 | Every Domain Model concept has a row, and the Domain Model uses its PO term | N-A | The project has no Domain Model; it models no use cases ([PP-001]). | +| 4 | The Operation Contracts, Sequence Diagrams, Design Class Diagrams and ERD use the IT term, not the PO term | N-A | No OC, SD, DCD or ERD exists in this project. | +| 5 | Definitions are written in the PO language and are one sentence | Pass | Meets the criterion; six rows, each complete. | +| 6 | "Used as PO term in" and "Used as IT term in" name artifact types that exist in the project | Pass | Meets the criterion; six rows, each complete. | +| 7 | The dictionary's `Language` and `Domain` rows, and the language of every row, match the PO language and domain in the project registry | Pass | Meets the criterion; six rows, each complete. | +| 8 | The dictionary rows are in ascending order of the PO term (case-insensitive, by the alphabet of the PO language) | Pass | follow, follower, log in, mock service, pop-up, target account: ascending. | + +## 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 | `Language` is `en` and `Domain` is `it` in Metadata. | +| 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 domain list. | +| 3 | The content (prose and table cells) is written in the stated language | Pass | Prose and table cells are English. | +| 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 | PO terms follow [DICT-001] (follower, follow, log in, mock service, pop-up, target account). | +| 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 translated twin exists in `docs/`. | +| 8 | A change of language or domain since the previous accepted version has a Version History row and was reviewed again | Pass | No change of language since the first version. | +| 9 | A reviewer competent in the domain, and in the language, has confirmed that the domain terms are used correctly | Pass | The stand-in for S01 reads English and knows the IT domain; open to challenge by S01 in the run summary. | +| 10 | Abbreviations are spelled out on first use, in the stated language | Pass | Abbreviations are spelled out on first use. | + +## Overall Verdict + +Go β€” Mandatory criteria pass; 3 and 4 are N-A because the artifacts they check do not exist. + +## Action Items + +| Action | Owner | Due | +| --- | --- | --- | +| None; no Fail and no condition. | S01 | - | + +--- + +[DICT-001]: ../../dictionary.md +[QC-DICT-001]: ../../../framework/qc/artifacts/qc-dictionary.md +[QC-LANG-001]: ../../../framework/qc/artifacts/qc-language-domain.md diff --git a/docs/sqa/reviews/rc-005-mil-001.md b/docs/sqa/reviews/rc-005-mil-001.md new file mode 100644 index 0000000..c2a6efa --- /dev/null +++ b/docs/sqa/reviews/rc-005-mil-001.md @@ -0,0 +1,65 @@ +# Review of MIL-001 + +## Metadata +| Key | Value | +| --- | --- | +| ID | RC-005 | +| CrossReference | [MIL-001], [QC-MIL-001], [QC-LANG-001] | + +## Version History +| Date | Status | Author | Reviewer | Change | Commit | +| --- | --- | --- | --- | --- | --- | +| 2026-11-04 | Proposed | Jens Tirsvad Nielsen | S01 (AI as stand-in) | Initial version | pending | + +--- + +## Artifact Under Review + +- Instance reviewed: [MIL-001] +- Checklist used: [QC-MIL-001] +- Scope: full review +- Language and domain: en / it +- Language reviewer: none (the stand-in for S01 reads English and the IT domain) +- Mode: autonomous, not independent (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, checkable Go/No-Go rows, dependency, objective trace, S01 owner and reviewer, and a date inside the plan window are present. | +| 2 | Explicit Go/No-Go criteria are stated for each gate | Pass | Deliverable, checkable Go/No-Go rows, dependency, objective trace, S01 owner and reviewer, and a date inside the plan window are present. | +| 3 | Dependencies on other milestones are explicitly mapped | Pass | Deliverable, checkable Go/No-Go rows, dependency, objective trace, S01 owner and reviewer, and a date inside the plan window are present. | +| 4 | Each milestone is traceable to a Business Case objective or KPI | Pass | Deliverable, checkable Go/No-Go rows, dependency, objective trace, S01 owner and reviewer, and a date inside the plan window are present. | +| 5 | Milestone owner and approving reviewer are identified | Pass | Deliverable, checkable Go/No-Go rows, dependency, objective trace, S01 owner and reviewer, and a date inside the plan window are present. | +| 6 | Milestone has a defined target date consistent with project constraints | Pass | Deliverable, checkable Go/No-Go rows, dependency, objective trace, S01 owner and reviewer, and a date inside the plan window are 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 | `Language` is `en` and `Domain` is `it` in Metadata. | +| 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 domain list. | +| 3 | The content (prose and table cells) is written in the stated language | Pass | Prose and table cells are English. | +| 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 | PO terms follow [DICT-001] (follower, follow, log in, mock service, pop-up, target account). | +| 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 translated twin exists in `docs/`. | +| 8 | A change of language or domain since the previous accepted version has a Version History row and was reviewed again | Pass | No change of language since the first version. | +| 9 | A reviewer competent in the domain, and in the language, has confirmed that the domain terms are used correctly | Pass | The stand-in for S01 reads English and knows the IT domain; open to challenge by S01 in the run summary. | +| 10 | Abbreviations are spelled out on first use, in the stated language | Pass | Abbreviations are spelled out on first use. | + +## Overall Verdict + +Go β€” Every Mandatory criterion passes. + +## Action Items + +| Action | Owner | Due | +| --- | --- | --- | +| None; no Fail and no condition. | S01 | - | + +--- + +[MIL-001]: ../../milestones/mil-001-project-setup.md +[QC-MIL-001]: ../../../framework/qc/artifacts/qc-milestones-gateways.md +[QC-LANG-001]: ../../../framework/qc/artifacts/qc-language-domain.md diff --git a/docs/sqa/reviews/rc-006-mil-002.md b/docs/sqa/reviews/rc-006-mil-002.md new file mode 100644 index 0000000..d63fda0 --- /dev/null +++ b/docs/sqa/reviews/rc-006-mil-002.md @@ -0,0 +1,65 @@ +# Review of MIL-002 + +## Metadata +| Key | Value | +| --- | --- | +| ID | RC-006 | +| CrossReference | [MIL-002], [QC-MIL-001], [QC-LANG-001] | + +## Version History +| Date | Status | Author | Reviewer | Change | Commit | +| --- | --- | --- | --- | --- | --- | +| 2026-11-04 | Proposed | Jens Tirsvad Nielsen | S01 (AI as stand-in) | Initial version | pending | + +--- + +## Artifact Under Review + +- Instance reviewed: [MIL-002] +- Checklist used: [QC-MIL-001] +- Scope: full review +- Language and domain: en / it +- Language reviewer: none (the stand-in for S01 reads English and the IT domain) +- Mode: autonomous, not independent (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, checkable Go/No-Go rows, dependency, objective trace, S01 owner and reviewer, and a date inside the plan window are present. | +| 2 | Explicit Go/No-Go criteria are stated for each gate | Pass | Deliverable, checkable Go/No-Go rows, dependency, objective trace, S01 owner and reviewer, and a date inside the plan window are present. | +| 3 | Dependencies on other milestones are explicitly mapped | Pass | Deliverable, checkable Go/No-Go rows, dependency, objective trace, S01 owner and reviewer, and a date inside the plan window are present. | +| 4 | Each milestone is traceable to a Business Case objective or KPI | Pass | Deliverable, checkable Go/No-Go rows, dependency, objective trace, S01 owner and reviewer, and a date inside the plan window are present. | +| 5 | Milestone owner and approving reviewer are identified | Pass | Deliverable, checkable Go/No-Go rows, dependency, objective trace, S01 owner and reviewer, and a date inside the plan window are present. | +| 6 | Milestone has a defined target date consistent with project constraints | Pass | Deliverable, checkable Go/No-Go rows, dependency, objective trace, S01 owner and reviewer, and a date inside the plan window are 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 | `Language` is `en` and `Domain` is `it` in Metadata. | +| 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 domain list. | +| 3 | The content (prose and table cells) is written in the stated language | Pass | Prose and table cells are English. | +| 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 | PO terms follow [DICT-001] (follower, follow, log in, mock service, pop-up, target account). | +| 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 translated twin exists in `docs/`. | +| 8 | A change of language or domain since the previous accepted version has a Version History row and was reviewed again | Pass | No change of language since the first version. | +| 9 | A reviewer competent in the domain, and in the language, has confirmed that the domain terms are used correctly | Pass | The stand-in for S01 reads English and knows the IT domain; open to challenge by S01 in the run summary. | +| 10 | Abbreviations are spelled out on first use, in the stated language | Pass | Abbreviations are spelled out on first use. | + +## Overall Verdict + +Go β€” Every Mandatory criterion passes. + +## Action Items + +| Action | Owner | Due | +| --- | --- | --- | +| None; no Fail and no condition. | S01 | - | + +--- + +[MIL-002]: ../../milestones/mil-002-follower-bot.md +[QC-MIL-001]: ../../../framework/qc/artifacts/qc-milestones-gateways.md +[QC-LANG-001]: ../../../framework/qc/artifacts/qc-language-domain.md diff --git a/docs/sqa/reviews/rc-007-mil-003.md b/docs/sqa/reviews/rc-007-mil-003.md new file mode 100644 index 0000000..192f34c --- /dev/null +++ b/docs/sqa/reviews/rc-007-mil-003.md @@ -0,0 +1,65 @@ +# Review of MIL-003 + +## Metadata +| Key | Value | +| --- | --- | +| ID | RC-007 | +| CrossReference | [MIL-003], [QC-MIL-001], [QC-LANG-001] | + +## Version History +| Date | Status | Author | Reviewer | Change | Commit | +| --- | --- | --- | --- | --- | --- | +| 2026-11-04 | Proposed | Jens Tirsvad Nielsen | S01 (AI as stand-in) | Initial version | pending | + +--- + +## Artifact Under Review + +- Instance reviewed: [MIL-003] +- Checklist used: [QC-MIL-001] +- Scope: full review +- Language and domain: en / it +- Language reviewer: none (the stand-in for S01 reads English and the IT domain) +- Mode: autonomous, not independent (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, checkable Go/No-Go rows, dependency, objective trace, S01 owner and reviewer, and a date inside the plan window are present. | +| 2 | Explicit Go/No-Go criteria are stated for each gate | Pass | Deliverable, checkable Go/No-Go rows, dependency, objective trace, S01 owner and reviewer, and a date inside the plan window are present. | +| 3 | Dependencies on other milestones are explicitly mapped | Pass | Deliverable, checkable Go/No-Go rows, dependency, objective trace, S01 owner and reviewer, and a date inside the plan window are present. | +| 4 | Each milestone is traceable to a Business Case objective or KPI | Pass | Deliverable, checkable Go/No-Go rows, dependency, objective trace, S01 owner and reviewer, and a date inside the plan window are present. | +| 5 | Milestone owner and approving reviewer are identified | Pass | Deliverable, checkable Go/No-Go rows, dependency, objective trace, S01 owner and reviewer, and a date inside the plan window are present. | +| 6 | Milestone has a defined target date consistent with project constraints | Pass | Deliverable, checkable Go/No-Go rows, dependency, objective trace, S01 owner and reviewer, and a date inside the plan window are 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 | `Language` is `en` and `Domain` is `it` in Metadata. | +| 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 domain list. | +| 3 | The content (prose and table cells) is written in the stated language | Pass | Prose and table cells are English. | +| 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 | PO terms follow [DICT-001] (follower, follow, log in, mock service, pop-up, target account). | +| 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 translated twin exists in `docs/`. | +| 8 | A change of language or domain since the previous accepted version has a Version History row and was reviewed again | Pass | No change of language since the first version. | +| 9 | A reviewer competent in the domain, and in the language, has confirmed that the domain terms are used correctly | Pass | The stand-in for S01 reads English and knows the IT domain; open to challenge by S01 in the run summary. | +| 10 | Abbreviations are spelled out on first use, in the stated language | Pass | Abbreviations are spelled out on first use. | + +## Overall Verdict + +Go β€” Every Mandatory criterion passes. + +## Action Items + +| Action | Owner | Due | +| --- | --- | --- | +| None; no Fail and no condition. | S01 | - | + +--- + +[MIL-003]: ../../milestones/mil-003-readme-and-screenshots.md +[QC-MIL-001]: ../../../framework/qc/artifacts/qc-milestones-gateways.md +[QC-LANG-001]: ../../../framework/qc/artifacts/qc-language-domain.md diff --git a/docs/sqa/reviews/rc-008-mil-004.md b/docs/sqa/reviews/rc-008-mil-004.md new file mode 100644 index 0000000..0ac39b6 --- /dev/null +++ b/docs/sqa/reviews/rc-008-mil-004.md @@ -0,0 +1,65 @@ +# Review of MIL-004 + +## Metadata +| Key | Value | +| --- | --- | +| ID | RC-008 | +| CrossReference | [MIL-004], [QC-MIL-001], [QC-LANG-001] | + +## Version History +| Date | Status | Author | Reviewer | Change | Commit | +| --- | --- | --- | --- | --- | --- | +| 2026-11-04 | Proposed | Jens Tirsvad Nielsen | S01 (AI as stand-in) | Initial version | pending | + +--- + +## Artifact Under Review + +- Instance reviewed: [MIL-004] +- Checklist used: [QC-MIL-001] +- Scope: full review +- Language and domain: en / it +- Language reviewer: none (the stand-in for S01 reads English and the IT domain) +- Mode: autonomous, not independent (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, checkable Go/No-Go rows, dependency, objective trace, S01 owner and reviewer, and a date inside the plan window are present. | +| 2 | Explicit Go/No-Go criteria are stated for each gate | Pass | Deliverable, checkable Go/No-Go rows, dependency, objective trace, S01 owner and reviewer, and a date inside the plan window are present. | +| 3 | Dependencies on other milestones are explicitly mapped | Pass | Deliverable, checkable Go/No-Go rows, dependency, objective trace, S01 owner and reviewer, and a date inside the plan window are present. | +| 4 | Each milestone is traceable to a Business Case objective or KPI | Pass | Deliverable, checkable Go/No-Go rows, dependency, objective trace, S01 owner and reviewer, and a date inside the plan window are present. | +| 5 | Milestone owner and approving reviewer are identified | Pass | Deliverable, checkable Go/No-Go rows, dependency, objective trace, S01 owner and reviewer, and a date inside the plan window are present. | +| 6 | Milestone has a defined target date consistent with project constraints | Pass | Deliverable, checkable Go/No-Go rows, dependency, objective trace, S01 owner and reviewer, and a date inside the plan window are 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 | `Language` is `en` and `Domain` is `it` in Metadata. | +| 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 domain list. | +| 3 | The content (prose and table cells) is written in the stated language | Pass | Prose and table cells are English. | +| 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 | PO terms follow [DICT-001] (follower, follow, log in, mock service, pop-up, target account). | +| 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 translated twin exists in `docs/`. | +| 8 | A change of language or domain since the previous accepted version has a Version History row and was reviewed again | Pass | No change of language since the first version. | +| 9 | A reviewer competent in the domain, and in the language, has confirmed that the domain terms are used correctly | Pass | The stand-in for S01 reads English and knows the IT domain; open to challenge by S01 in the run summary. | +| 10 | Abbreviations are spelled out on first use, in the stated language | Pass | Abbreviations are spelled out on first use. | + +## Overall Verdict + +Go β€” Every Mandatory criterion passes. + +## Action Items + +| Action | Owner | Due | +| --- | --- | --- | +| None; no Fail and no condition. | S01 | - | + +--- + +[MIL-004]: ../../milestones/mil-004-wiki.md +[QC-MIL-001]: ../../../framework/qc/artifacts/qc-milestones-gateways.md +[QC-LANG-001]: ../../../framework/qc/artifacts/qc-language-domain.md diff --git a/docs/sqa/traceability-matrix.md b/docs/sqa/traceability-matrix.md new file mode 100644 index 0000000..512feeb --- /dev/null +++ b/docs/sqa/traceability-matrix.md @@ -0,0 +1,74 @@ +# Traceability Matrix + +## Metadata +| Key | Value | +| --- | --- | +| ID | TM-001 | +| CrossReference | [BC-001], [SA-001], [PP-001], [MIL-001], [MIL-002], [MIL-003], [MIL-004], [DICT-001], [RC-001], [RC-002], [RC-003], [RC-004], [RC-005], [RC-006], [RC-007], [RC-008] | + +## Version History +| Date | Status | Author | Reviewer | Change | Commit | +| --- | --- | --- | --- | --- | --- | +| 2026-11-04 | Proposed | Jens Tirsvad Nielsen | S01 (AI as stand-in) | Initial version | pending | + +--- + +## Purpose + +Tracks backward/forward links between artifact instances so that the Business Case's +cross-artifact traceability success criterion is measurable. A row is added or +updated whenever an artifact instance is created or reviewed. + +## Traceability Table + +| Artifact Instance | Type | Language | Domain | Upstream (Backward Link) | Downstream (Forward Link) | Last Reviewed (RC-ID) | +| --- | --- | --- | --- | --- | --- | --- | +| [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-004] | [RC-003] | +| [DICT-001] | DICT | en | it | [BC-001] | - | [RC-004] | +| [MIL-001] | MIL | en | it | [PP-001] | - | [RC-005] | +| [MIL-002] | MIL | en | it | [PP-001], [MIL-001] | - | [RC-006] | +| [MIL-003] | MIL | en | it | [PP-001], [MIL-002] | - | [RC-007] | +| [MIL-004] | MIL | en | it | [PP-001], [MIL-003] | - | [RC-008] | + +## Concern Coverage + +| Concern (CN-ID) | Views that answer it | Decisions (ADR) | Quality check (TP) | Status | +| --- | --- | --- | --- | --- | +| CN-001 | [MIL-002] | - | - | Gap | +| CN-002 | [MIL-001], [MIL-002] | - | - | Gap | +| CN-003 | [MIL-002] | - | - | Gap | +| CN-004 | [MIL-001], [MIL-003] | - | - | Gap | +| CN-005 | [MIL-001] | - | - | Gap | +| CN-006 | [MIL-001] | - | - | Gap | +| CN-007 | [MIL-002] | - | - | Gap | +| CN-008 | [MIL-004] | - | - | Gap | + +## Open Inconsistencies + +| # | Views | Inconsistency | Found in (RC-ID) | Status | Resolved in | +| --- | --- | --- | --- | --- | --- | + +## Coverage Notes + +No design views (use case, domain model, design class diagram) exist: the project models none, as [PP-001] states. A concern is `Gap` until the milestone that answers it is done. `-` in Upstream means foundational, in Downstream that nothing is built on it yet, and in Last Reviewed that no review record exists yet. + +--- + +[BC-001]: ../business-case.md +[SA-001]: ../stakeholder-analysis.md +[PP-001]: ../project-plan.md +[DICT-001]: ../dictionary.md +[MIL-001]: ../milestones/mil-001-project-setup.md +[MIL-002]: ../milestones/mil-002-follower-bot.md +[MIL-003]: ../milestones/mil-003-readme-and-screenshots.md +[MIL-004]: ../milestones/mil-004-wiki.md +[RC-001]: ./reviews/rc-001-bc.md +[RC-002]: ./reviews/rc-002-sa.md +[RC-003]: ./reviews/rc-003-pp.md +[RC-004]: ./reviews/rc-004-dict.md +[RC-005]: ./reviews/rc-005-mil-001.md +[RC-006]: ./reviews/rc-006-mil-002.md +[RC-007]: ./reviews/rc-007-mil-003.md +[RC-008]: ./reviews/rc-008-mil-004.md diff --git a/docs/stakeholder-analysis.md b/docs/stakeholder-analysis.md new file mode 100644 index 0000000..30c5b51 --- /dev/null +++ b/docs/stakeholder-analysis.md @@ -0,0 +1,85 @@ +# Stakeholder Analysis + +## Metadata +| Key | Value | +| --- | --- | +| ID | SA-001 | +| CrossReference | [BC-001] | +| Language | en | +| Domain | it | + +## Version History +| Date | Status | Author | Reviewer | Change | Commit | +| --- | --- | --- | --- | --- | --- | +| 2026-11-04 | Deprecated | Jens Tirsvad Nielsen | S01 (AI as stand-in) | Initial version | pending | +| 2026-11-04 | Accepted | Jens Tirsvad Nielsen | S01 (AI as stand-in) | Accepted on RC-002 (Go)
Mode: autonomous, not independent | pending | + +--- + +## Purpose + +Identify who is affected by the Instagram follower bot repository and what each needs, so the plan, the README and the wiki serve them. The method is a power/interest grid; each concern is mapped to a FURPS+ attribute. + +## 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 working, tested solution to the Day 52 assignment that proves the skill | +| S02 | Udemy coursists | Fellow course participants | Udemy course community | LOW | HIGH | Keep Informed | Readable, runnable code with the assignment's function names, and README instructions to run it | +| S03 | GitHub viewers | Repository browsers looking for ideas | Public | LOW | LOW | Monitor | A clear repository description, topics and README, and no runtime dependencies beyond need | + +## Power/Interest Classification Rationale + +- **Manage Closely (S01):** decides scope, builds and reviews everything. +- **Keep Informed (S02):** cannot change the project but depends on its readability and run instructions. +- **Monitor (S03):** browse occasionally; their needs are met by a good README, description and topics. + +## Primary Concerns and FURPS+ Mapping + +| Concern ID | Stakeholder | Concern | FURPS+ attribute | +| --- | --- | --- | --- | +| CN-001 | S01 | The bot follows the followers of a target account on the mock service | Functionality | +| CN-002 | S01 | Tokens and credentials never enter the repository | Functionality (security) | +| CN-003 | S02 | Code is readable and uses the assignment's names `InstaFollower`, `login`, `find_followers`, `follow` | Usability | +| CN-004 | S02 | Run and test instructions work from a fresh clone | Usability | +| CN-005 | S03 | Repository has a description, topics and a README | Usability | +| CN-006 | S03 | No runtime dependencies beyond Selenium | Supportability | +| CN-007 | S01 | Tests run without a browser or network | Reliability | +| CN-008 | S02 | The wiki explains what each lecture step teaches, in English, Danish and Bahasa Malaysia | Usability | + +## Communication Requirements + +| ID | Channel | Frequency | Deliverable | Phase / Milestone | +| --- | --- | --- | --- | --- | +| CM-001 | Chat summary | Per run | Merged pull requests, review verdicts, stand-in decisions | All milestones | +| CM-002 | README | Per release | Run and test instructions | MIL-003 | +| CM-003 | Wiki (en, da, ms) | Per release | Lecture steps and learning notes | MIL-004 | +| CM-004 | Repository page | Once | Description and topics | MIL-001 | + +## Conflicting Interests and Mitigations + +| Conflict | Stakeholders | Mitigation | +| --- | --- | --- | +| S02 wants the code to run against Instagram; the safe path is the mock | S01, S02 | Default to the Share-a-Naan mock; document that the real site risks a ban and is not supported | +| S03 wants no dependencies; Selenium is required | S03, S01 | Selenium is the only runtime dependency; dev tools are optional extras | + +## Traceability Analysis + +### Business Goal Alignment + +| Stakeholder | Concern | Business Case objective | +| --- | --- | --- | +| S01 | CN-001 | Objective 1, 2 ([BC-001]) | +| S01 | CN-002 | Objective 3 ([BC-001]) | +| S01 | CN-007 | Objective 4 ([BC-001]) | +| S02 | CN-003, CN-004 | Objective 1, 5 ([BC-001]) | +| S02 | CN-008 | Objective 6 ([BC-001]) | +| S03 | CN-005, CN-006 | Objective 7 ([BC-001]) | + +## Sign-Off + +Pending review by S01 (AI as stand-in in autonomous mode). + +--- + +[BC-001]: ./business-case.md diff --git a/framework b/framework new file mode 160000 index 0000000..1bb460c --- /dev/null +++ b/framework @@ -0,0 +1 @@ +Subproject commit 1bb460c27d7e512ca876854373c443056dc30af9 diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..78caa68 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,25 @@ +[build-system] +requires = ["setuptools>=68"] +build-backend = "setuptools.build_meta" + +[project] +name = "instagram-followers" +version = "0.1.0" +description = "Day 52 of 100 Days of Code: a Selenium bot that follows the followers of a target account on the Share-a-Naan mock service." +readme = "README.md" +requires-python = ">=3.13" +license = { file = "LICENSE" } +dependencies = ["selenium>=4.20"] + +[project.optional-dependencies] +dev = ["pytest>=8"] + +[project.scripts] +instagram-followers = "instagram_followers.main:main" + +[tool.setuptools.packages.find] +where = ["src"] + +[tool.pytest.ini_options] +testpaths = ["tests"] +pythonpath = ["src"] -- 2.54.0 From 023b107e70398ebf07fa906d03b43cde9e5e9775 Mon Sep 17 00:00:00 2001 From: Jens Tirsvad Nielsen Date: Wed, 4 Nov 2026 12:04:38 +0800 Subject: [PATCH 2/2] Resolve pending commit links (MIL-001) --- docs/business-case.md | 5 +++-- docs/dictionary.md | 5 +++-- docs/milestones/mil-001-project-setup.md | 5 +++-- docs/milestones/mil-002-follower-bot.md | 5 +++-- docs/milestones/mil-003-readme-and-screenshots.md | 5 +++-- docs/milestones/mil-004-wiki.md | 5 +++-- docs/project-plan.md | 5 +++-- docs/sqa/reviews/rc-001-bc.md | 3 ++- docs/sqa/reviews/rc-002-sa.md | 3 ++- docs/sqa/reviews/rc-003-pp.md | 3 ++- docs/sqa/reviews/rc-004-dict.md | 3 ++- docs/sqa/reviews/rc-005-mil-001.md | 3 ++- docs/sqa/reviews/rc-006-mil-002.md | 3 ++- docs/sqa/reviews/rc-007-mil-003.md | 3 ++- docs/sqa/reviews/rc-008-mil-004.md | 3 ++- docs/sqa/traceability-matrix.md | 3 ++- docs/stakeholder-analysis.md | 5 +++-- 17 files changed, 42 insertions(+), 25 deletions(-) diff --git a/docs/business-case.md b/docs/business-case.md index 0401d82..da418ad 100644 --- a/docs/business-case.md +++ b/docs/business-case.md @@ -11,8 +11,8 @@ ## Version History | Date | Status | Author | Reviewer | Change | Commit | | --- | --- | --- | --- | --- | --- | -| 2026-11-04 | Deprecated | Jens Tirsvad Nielsen | S01 (AI as stand-in) | Initial version | pending | -| 2026-11-04 | Accepted | Jens Tirsvad Nielsen | S01 (AI as stand-in) | Accepted on RC-001 (Go)
Mode: autonomous, not independent | pending | +| 2026-11-04 | Deprecated | Jens Tirsvad Nielsen | S01 (AI as stand-in) | Initial version | [4cd695e] | +| 2026-11-04 | Accepted | Jens Tirsvad Nielsen | S01 (AI as stand-in) | Accepted on RC-001 (Go)
Mode: autonomous, not independent | [4cd695e] | --- @@ -129,3 +129,4 @@ Proceed β€” the scope is small, the risk is contained by the mock service, and t --- [SA-001]: ./stakeholder-analysis.md +[4cd695e]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/052-instagram-followers/commit/4cd695e8db91dd3f01f69e097cdf02098de2c144 diff --git a/docs/dictionary.md b/docs/dictionary.md index 7546621..d3141bf 100644 --- a/docs/dictionary.md +++ b/docs/dictionary.md @@ -11,8 +11,8 @@ ## Version History | Date | Status | Author | Reviewer | Change | Commit | | --- | --- | --- | --- | --- | --- | -| 2026-11-04 | Deprecated | Jens Tirsvad Nielsen | S01 (AI as stand-in) | Initial version | pending | -| 2026-11-04 | Accepted | Jens Tirsvad Nielsen | S01 (AI as stand-in) | Accepted on RC-004 (Go)
Mode: autonomous, not independent | pending | +| 2026-11-04 | Deprecated | Jens Tirsvad Nielsen | S01 (AI as stand-in) | Initial version | [4cd695e] | +| 2026-11-04 | Accepted | Jens Tirsvad Nielsen | S01 (AI as stand-in) | Accepted on RC-004 (Go)
Mode: autonomous, not independent | [4cd695e] | --- @@ -43,3 +43,4 @@ Maps each Product Owner (PO) term to its professional IT term. PO language: Engl [BC-001]: ./business-case.md [SA-001]: ./stakeholder-analysis.md +[4cd695e]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/052-instagram-followers/commit/4cd695e8db91dd3f01f69e097cdf02098de2c144 diff --git a/docs/milestones/mil-001-project-setup.md b/docs/milestones/mil-001-project-setup.md index 72183e4..a2c6518 100644 --- a/docs/milestones/mil-001-project-setup.md +++ b/docs/milestones/mil-001-project-setup.md @@ -11,8 +11,8 @@ ## Version History | Date | Status | Author | Reviewer | Change | Commit | | --- | --- | --- | --- | --- | --- | -| 2026-11-04 | Deprecated | Jens Tirsvad Nielsen | S01 (AI as stand-in) | Initial version | pending | -| 2026-11-04 | Accepted | Jens Tirsvad Nielsen | S01 (AI as stand-in) | Accepted on RC-005 (Go)
Mode: autonomous, not independent | pending | +| 2026-11-04 | Deprecated | Jens Tirsvad Nielsen | S01 (AI as stand-in) | Initial version | [4cd695e] | +| 2026-11-04 | Accepted | Jens Tirsvad Nielsen | S01 (AI as stand-in) | Accepted on RC-005 (Go)
Mode: autonomous, not independent | [4cd695e] | --- @@ -68,3 +68,4 @@ Repository with `pyproject.toml` (Python 3.13 or newer, selenium runtime depende --- [BC-001]: ../business-case.md +[4cd695e]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/052-instagram-followers/commit/4cd695e8db91dd3f01f69e097cdf02098de2c144 diff --git a/docs/milestones/mil-002-follower-bot.md b/docs/milestones/mil-002-follower-bot.md index 73cc380..1a3de40 100644 --- a/docs/milestones/mil-002-follower-bot.md +++ b/docs/milestones/mil-002-follower-bot.md @@ -11,8 +11,8 @@ ## Version History | Date | Status | Author | Reviewer | Change | Commit | | --- | --- | --- | --- | --- | --- | -| 2026-11-04 | Deprecated | Jens Tirsvad Nielsen | S01 (AI as stand-in) | Initial version | pending | -| 2026-11-04 | Accepted | Jens Tirsvad Nielsen | S01 (AI as stand-in) | Accepted on RC-006 (Go)
Mode: autonomous, not independent | pending | +| 2026-11-04 | Deprecated | Jens Tirsvad Nielsen | S01 (AI as stand-in) | Initial version | [4cd695e] | +| 2026-11-04 | Accepted | Jens Tirsvad Nielsen | S01 (AI as stand-in) | Accepted on RC-006 (Go)
Mode: autonomous, not independent | [4cd695e] | --- @@ -69,3 +69,4 @@ A `src/` package with `constants.py` and `InstaFollower` (`login`, `find_followe --- [BC-001]: ../business-case.md +[4cd695e]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/052-instagram-followers/commit/4cd695e8db91dd3f01f69e097cdf02098de2c144 diff --git a/docs/milestones/mil-003-readme-and-screenshots.md b/docs/milestones/mil-003-readme-and-screenshots.md index 7de94e4..d9b1f5e 100644 --- a/docs/milestones/mil-003-readme-and-screenshots.md +++ b/docs/milestones/mil-003-readme-and-screenshots.md @@ -11,8 +11,8 @@ ## Version History | Date | Status | Author | Reviewer | Change | Commit | | --- | --- | --- | --- | --- | --- | -| 2026-11-04 | Deprecated | Jens Tirsvad Nielsen | S01 (AI as stand-in) | Initial version | pending | -| 2026-11-04 | Accepted | Jens Tirsvad Nielsen | S01 (AI as stand-in) | Accepted on RC-007 (Go)
Mode: autonomous, not independent | pending | +| 2026-11-04 | Deprecated | Jens Tirsvad Nielsen | S01 (AI as stand-in) | Initial version | [4cd695e] | +| 2026-11-04 | Accepted | Jens Tirsvad Nielsen | S01 (AI as stand-in) | Accepted on RC-007 (Go)
Mode: autonomous, not independent | [4cd695e] | --- @@ -66,3 +66,4 @@ A completed `README.md` with run and test instructions and one screenshot per le --- [BC-001]: ../business-case.md +[4cd695e]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/052-instagram-followers/commit/4cd695e8db91dd3f01f69e097cdf02098de2c144 diff --git a/docs/milestones/mil-004-wiki.md b/docs/milestones/mil-004-wiki.md index b20d5f1..c5b2d0b 100644 --- a/docs/milestones/mil-004-wiki.md +++ b/docs/milestones/mil-004-wiki.md @@ -11,8 +11,8 @@ ## Version History | Date | Status | Author | Reviewer | Change | Commit | | --- | --- | --- | --- | --- | --- | -| 2026-11-04 | Deprecated | Jens Tirsvad Nielsen | S01 (AI as stand-in) | Initial version | pending | -| 2026-11-04 | Accepted | Jens Tirsvad Nielsen | S01 (AI as stand-in) | Accepted on RC-008 (Go)
Mode: autonomous, not independent | pending | +| 2026-11-04 | Deprecated | Jens Tirsvad Nielsen | S01 (AI as stand-in) | Initial version | [4cd695e] | +| 2026-11-04 | Accepted | Jens Tirsvad Nielsen | S01 (AI as stand-in) | Accepted on RC-008 (Go)
Mode: autonomous, not independent | [4cd695e] | --- @@ -67,3 +67,4 @@ Decide whether the wiki is complete in English, Danish and Bahasa Malaysia and s --- [BC-001]: ../business-case.md +[4cd695e]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/052-instagram-followers/commit/4cd695e8db91dd3f01f69e097cdf02098de2c144 diff --git a/docs/project-plan.md b/docs/project-plan.md index 70b9ed5..3d04275 100644 --- a/docs/project-plan.md +++ b/docs/project-plan.md @@ -11,8 +11,8 @@ ## Version History | Date | Status | Author | Reviewer | Change | Commit | | --- | --- | --- | --- | --- | --- | -| 2026-11-04 | Deprecated | Jens Tirsvad Nielsen | S01 (AI as stand-in) | Initial version | pending | -| 2026-11-04 | Accepted | Jens Tirsvad Nielsen | S01 (AI as stand-in) | Accepted on RC-003 (Go)
Mode: autonomous, not independent | pending | +| 2026-11-04 | Deprecated | Jens Tirsvad Nielsen | S01 (AI as stand-in) | Initial version | [4cd695e] | +| 2026-11-04 | Accepted | Jens Tirsvad Nielsen | S01 (AI as stand-in) | Accepted on RC-003 (Go)
Mode: autonomous, not independent | [4cd695e] | --- @@ -88,3 +88,4 @@ A No-Go on a phase stops the later phases until it is fixed and re-reviewed, and [MIL-002]: ./milestones/mil-002-follower-bot.md [MIL-003]: ./milestones/mil-003-readme-and-screenshots.md [MIL-004]: ./milestones/mil-004-wiki.md +[4cd695e]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/052-instagram-followers/commit/4cd695e8db91dd3f01f69e097cdf02098de2c144 diff --git a/docs/sqa/reviews/rc-001-bc.md b/docs/sqa/reviews/rc-001-bc.md index 94e8476..109c791 100644 --- a/docs/sqa/reviews/rc-001-bc.md +++ b/docs/sqa/reviews/rc-001-bc.md @@ -9,7 +9,7 @@ ## Version History | Date | Status | Author | Reviewer | Change | Commit | | --- | --- | --- | --- | --- | --- | -| 2026-11-04 | Proposed | Jens Tirsvad Nielsen | S01 (AI as stand-in) | Initial version | pending | +| 2026-11-04 | Proposed | Jens Tirsvad Nielsen | S01 (AI as stand-in) | Initial version | [4cd695e] | --- @@ -65,3 +65,4 @@ Go β€” Every Mandatory criterion passes. [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 +[4cd695e]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/052-instagram-followers/commit/4cd695e8db91dd3f01f69e097cdf02098de2c144 diff --git a/docs/sqa/reviews/rc-002-sa.md b/docs/sqa/reviews/rc-002-sa.md index 867166e..cd50d73 100644 --- a/docs/sqa/reviews/rc-002-sa.md +++ b/docs/sqa/reviews/rc-002-sa.md @@ -9,7 +9,7 @@ ## Version History | Date | Status | Author | Reviewer | Change | Commit | | --- | --- | --- | --- | --- | --- | -| 2026-11-04 | Proposed | Jens Tirsvad Nielsen | S01 (AI as stand-in) | Initial version | pending | +| 2026-11-04 | Proposed | Jens Tirsvad Nielsen | S01 (AI as stand-in) | Initial version | [4cd695e] | --- @@ -66,3 +66,4 @@ Go β€” Every Mandatory criterion passes; S01 to S03 classified, CN-001 to CN-008 [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 +[4cd695e]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/052-instagram-followers/commit/4cd695e8db91dd3f01f69e097cdf02098de2c144 diff --git a/docs/sqa/reviews/rc-003-pp.md b/docs/sqa/reviews/rc-003-pp.md index 989a8a2..2233d24 100644 --- a/docs/sqa/reviews/rc-003-pp.md +++ b/docs/sqa/reviews/rc-003-pp.md @@ -9,7 +9,7 @@ ## Version History | Date | Status | Author | Reviewer | Change | Commit | | --- | --- | --- | --- | --- | --- | -| 2026-11-04 | Proposed | Jens Tirsvad Nielsen | S01 (AI as stand-in) | Initial version | pending | +| 2026-11-04 | Proposed | Jens Tirsvad Nielsen | S01 (AI as stand-in) | Initial version | [4cd695e] | --- @@ -72,3 +72,4 @@ Go β€” Every Mandatory criterion passes or is N-A with a stated reason. [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 +[4cd695e]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/052-instagram-followers/commit/4cd695e8db91dd3f01f69e097cdf02098de2c144 diff --git a/docs/sqa/reviews/rc-004-dict.md b/docs/sqa/reviews/rc-004-dict.md index f99899a..b512e58 100644 --- a/docs/sqa/reviews/rc-004-dict.md +++ b/docs/sqa/reviews/rc-004-dict.md @@ -9,7 +9,7 @@ ## Version History | Date | Status | Author | Reviewer | Change | Commit | | --- | --- | --- | --- | --- | --- | -| 2026-11-04 | Proposed | Jens Tirsvad Nielsen | S01 (AI as stand-in) | Initial version | pending | +| 2026-11-04 | Proposed | Jens Tirsvad Nielsen | S01 (AI as stand-in) | Initial version | [4cd695e] | --- @@ -65,3 +65,4 @@ Go β€” Mandatory criteria pass; 3 and 4 are N-A because the artifacts they check [DICT-001]: ../../dictionary.md [QC-DICT-001]: ../../../framework/qc/artifacts/qc-dictionary.md [QC-LANG-001]: ../../../framework/qc/artifacts/qc-language-domain.md +[4cd695e]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/052-instagram-followers/commit/4cd695e8db91dd3f01f69e097cdf02098de2c144 diff --git a/docs/sqa/reviews/rc-005-mil-001.md b/docs/sqa/reviews/rc-005-mil-001.md index c2a6efa..23fd1f9 100644 --- a/docs/sqa/reviews/rc-005-mil-001.md +++ b/docs/sqa/reviews/rc-005-mil-001.md @@ -9,7 +9,7 @@ ## Version History | Date | Status | Author | Reviewer | Change | Commit | | --- | --- | --- | --- | --- | --- | -| 2026-11-04 | Proposed | Jens Tirsvad Nielsen | S01 (AI as stand-in) | Initial version | pending | +| 2026-11-04 | Proposed | Jens Tirsvad Nielsen | S01 (AI as stand-in) | Initial version | [4cd695e] | --- @@ -63,3 +63,4 @@ Go β€” Every Mandatory criterion passes. [MIL-001]: ../../milestones/mil-001-project-setup.md [QC-MIL-001]: ../../../framework/qc/artifacts/qc-milestones-gateways.md [QC-LANG-001]: ../../../framework/qc/artifacts/qc-language-domain.md +[4cd695e]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/052-instagram-followers/commit/4cd695e8db91dd3f01f69e097cdf02098de2c144 diff --git a/docs/sqa/reviews/rc-006-mil-002.md b/docs/sqa/reviews/rc-006-mil-002.md index d63fda0..1cb66c1 100644 --- a/docs/sqa/reviews/rc-006-mil-002.md +++ b/docs/sqa/reviews/rc-006-mil-002.md @@ -9,7 +9,7 @@ ## Version History | Date | Status | Author | Reviewer | Change | Commit | | --- | --- | --- | --- | --- | --- | -| 2026-11-04 | Proposed | Jens Tirsvad Nielsen | S01 (AI as stand-in) | Initial version | pending | +| 2026-11-04 | Proposed | Jens Tirsvad Nielsen | S01 (AI as stand-in) | Initial version | [4cd695e] | --- @@ -63,3 +63,4 @@ Go β€” Every Mandatory criterion passes. [MIL-002]: ../../milestones/mil-002-follower-bot.md [QC-MIL-001]: ../../../framework/qc/artifacts/qc-milestones-gateways.md [QC-LANG-001]: ../../../framework/qc/artifacts/qc-language-domain.md +[4cd695e]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/052-instagram-followers/commit/4cd695e8db91dd3f01f69e097cdf02098de2c144 diff --git a/docs/sqa/reviews/rc-007-mil-003.md b/docs/sqa/reviews/rc-007-mil-003.md index 192f34c..07655d1 100644 --- a/docs/sqa/reviews/rc-007-mil-003.md +++ b/docs/sqa/reviews/rc-007-mil-003.md @@ -9,7 +9,7 @@ ## Version History | Date | Status | Author | Reviewer | Change | Commit | | --- | --- | --- | --- | --- | --- | -| 2026-11-04 | Proposed | Jens Tirsvad Nielsen | S01 (AI as stand-in) | Initial version | pending | +| 2026-11-04 | Proposed | Jens Tirsvad Nielsen | S01 (AI as stand-in) | Initial version | [4cd695e] | --- @@ -63,3 +63,4 @@ Go β€” Every Mandatory criterion passes. [MIL-003]: ../../milestones/mil-003-readme-and-screenshots.md [QC-MIL-001]: ../../../framework/qc/artifacts/qc-milestones-gateways.md [QC-LANG-001]: ../../../framework/qc/artifacts/qc-language-domain.md +[4cd695e]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/052-instagram-followers/commit/4cd695e8db91dd3f01f69e097cdf02098de2c144 diff --git a/docs/sqa/reviews/rc-008-mil-004.md b/docs/sqa/reviews/rc-008-mil-004.md index 0ac39b6..309ddfe 100644 --- a/docs/sqa/reviews/rc-008-mil-004.md +++ b/docs/sqa/reviews/rc-008-mil-004.md @@ -9,7 +9,7 @@ ## Version History | Date | Status | Author | Reviewer | Change | Commit | | --- | --- | --- | --- | --- | --- | -| 2026-11-04 | Proposed | Jens Tirsvad Nielsen | S01 (AI as stand-in) | Initial version | pending | +| 2026-11-04 | Proposed | Jens Tirsvad Nielsen | S01 (AI as stand-in) | Initial version | [4cd695e] | --- @@ -63,3 +63,4 @@ Go β€” Every Mandatory criterion passes. [MIL-004]: ../../milestones/mil-004-wiki.md [QC-MIL-001]: ../../../framework/qc/artifacts/qc-milestones-gateways.md [QC-LANG-001]: ../../../framework/qc/artifacts/qc-language-domain.md +[4cd695e]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/052-instagram-followers/commit/4cd695e8db91dd3f01f69e097cdf02098de2c144 diff --git a/docs/sqa/traceability-matrix.md b/docs/sqa/traceability-matrix.md index 512feeb..b8e44ce 100644 --- a/docs/sqa/traceability-matrix.md +++ b/docs/sqa/traceability-matrix.md @@ -9,7 +9,7 @@ ## Version History | Date | Status | Author | Reviewer | Change | Commit | | --- | --- | --- | --- | --- | --- | -| 2026-11-04 | Proposed | Jens Tirsvad Nielsen | S01 (AI as stand-in) | Initial version | pending | +| 2026-11-04 | Proposed | Jens Tirsvad Nielsen | S01 (AI as stand-in) | Initial version | [4cd695e] | --- @@ -72,3 +72,4 @@ No design views (use case, domain model, design class diagram) exist: the projec [RC-006]: ./reviews/rc-006-mil-002.md [RC-007]: ./reviews/rc-007-mil-003.md [RC-008]: ./reviews/rc-008-mil-004.md +[4cd695e]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/052-instagram-followers/commit/4cd695e8db91dd3f01f69e097cdf02098de2c144 diff --git a/docs/stakeholder-analysis.md b/docs/stakeholder-analysis.md index 30c5b51..be9d0d8 100644 --- a/docs/stakeholder-analysis.md +++ b/docs/stakeholder-analysis.md @@ -11,8 +11,8 @@ ## Version History | Date | Status | Author | Reviewer | Change | Commit | | --- | --- | --- | --- | --- | --- | -| 2026-11-04 | Deprecated | Jens Tirsvad Nielsen | S01 (AI as stand-in) | Initial version | pending | -| 2026-11-04 | Accepted | Jens Tirsvad Nielsen | S01 (AI as stand-in) | Accepted on RC-002 (Go)
Mode: autonomous, not independent | pending | +| 2026-11-04 | Deprecated | Jens Tirsvad Nielsen | S01 (AI as stand-in) | Initial version | [4cd695e] | +| 2026-11-04 | Accepted | Jens Tirsvad Nielsen | S01 (AI as stand-in) | Accepted on RC-002 (Go)
Mode: autonomous, not independent | [4cd695e] | --- @@ -83,3 +83,4 @@ Pending review by S01 (AI as stand-in in autonomous mode). --- [BC-001]: ./business-case.md +[4cd695e]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/052-instagram-followers/commit/4cd695e8db91dd3f01f69e097cdf02098de2c144 -- 2.54.0