Compare commits
7
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d3d2d03cd5 | ||
|
|
d85cfe5c4b | ||
|
|
1b217785c6 | ||
|
|
d2f36bfde3 | ||
|
|
c4e88c6da6 | ||
|
|
632fa61b89 | ||
|
|
d825bef0f1 |
@@ -1,141 +1,142 @@
|
|||||||
# Squirrel Census
|
# Squirrel Census
|
||||||
|
|
||||||
Day 25 of Udemy's *100 Days of Code: The Complete Python Pro Bootcamp*: count the
|
Day 25 of Udemy's *100 Days of Code: The Complete Python Pro Bootcamp*: count the
|
||||||
squirrels of the 2018 Central Park Squirrel Census by primary fur colour (gray,
|
squirrels of the 2018 Central Park Squirrel Census by primary fur colour (gray,
|
||||||
cinnamon, black) and export the counts to `squirrel_count.csv`. Python 3.13 or
|
cinnamon, black) and export the counts to `squirrel_count.csv`. Python 3.13 or
|
||||||
later, no runtime dependencies, with tests and source documentation.
|
later, no runtime dependencies, with tests and source documentation.
|
||||||
|
|
||||||
![Program run][img-run]
|
![Program run][img-run]
|
||||||
|
|
||||||
## Requirements
|
## Requirements
|
||||||
|
|
||||||
- Python 3.13 or later (`python --version` on Windows, `python3 --version` on Linux and macOS).
|
- Python 3.13 or later (`python --version` on Windows, `python3 --version` on Linux and macOS).
|
||||||
- `venv`, which ships with Python (on Debian: the `python3-venv` package).
|
- `venv`, which ships with Python (on Debian: the `python3-venv` package).
|
||||||
- The 2018 census file. It is already in the repository under `data/`.
|
- The 2018 census file. It is already in the repository under `data/`.
|
||||||
- Optional: [Doxygen][doxygen] 1.9 or later, only to build the source documentation.
|
- Optional: [Doxygen][doxygen] 1.9 or later, only to build the source documentation.
|
||||||
|
|
||||||
There are no runtime dependencies: the program uses only the Python standard library
|
There are no runtime dependencies: the program uses only the Python standard library
|
||||||
([ADR-0001][adr-0001]). `pytest` is needed only to run the tests.
|
([ADR-0001][adr-0001]). `pytest` is needed only to run the tests.
|
||||||
|
|
||||||
## Set up
|
## Set up
|
||||||
|
|
||||||
Create a local virtual environment named `.venv` in the project folder, upgrade `pip`
|
Create a local virtual environment named `.venv` in the project folder, upgrade `pip`
|
||||||
and install the project with its development tools (pytest, ruff, mypy).
|
and install the project with its development tools (pytest, ruff, mypy).
|
||||||
|
|
||||||
### Windows powershell
|
### Windows powershell
|
||||||
|
|
||||||
```powershell
|
```powershell
|
||||||
python -m venv .venv
|
python -m venv .venv
|
||||||
.\.venv\Scripts\Activate.ps1
|
.\.venv\Scripts\Activate.ps1
|
||||||
python -m pip install --upgrade pip
|
python -m pip install --upgrade pip
|
||||||
python -m pip install -e ".[dev]"
|
python -m pip install -e ".[dev]"
|
||||||
```
|
```
|
||||||
|
|
||||||
If PowerShell refuses to run the activation script, allow it for the current session:
|
If PowerShell refuses to run the activation script, allow it for the current session:
|
||||||
`Set-ExecutionPolicy -Scope Process -ExecutionPolicy RemoteSigned`.
|
`Set-ExecutionPolicy -Scope Process -ExecutionPolicy RemoteSigned`.
|
||||||
|
|
||||||
### Linux debian
|
### Linux debian
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
sudo apt install python3 python3-venv
|
sudo apt install python3 python3-venv
|
||||||
python3 -m venv .venv
|
python3 -m venv .venv
|
||||||
source .venv/bin/activate
|
source .venv/bin/activate
|
||||||
python -m pip install --upgrade pip
|
python -m pip install --upgrade pip
|
||||||
python -m pip install -e ".[dev]"
|
python -m pip install -e ".[dev]"
|
||||||
```
|
```
|
||||||
|
|
||||||
### MacOS
|
### MacOS
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
python3 -m venv .venv
|
python3 -m venv .venv
|
||||||
source .venv/bin/activate
|
source .venv/bin/activate
|
||||||
python -m pip install --upgrade pip
|
python -m pip install --upgrade pip
|
||||||
python -m pip install -e ".[dev]"
|
python -m pip install -e ".[dev]"
|
||||||
```
|
```
|
||||||
|
|
||||||
On macOS, Python 3.13 can be installed with `brew install python@3.13`.
|
On macOS, Python 3.13 can be installed with `brew install python@3.13`.
|
||||||
|
|
||||||
## Run
|
## Run
|
||||||
|
|
||||||
With the virtual environment active, run from the project folder:
|
With the virtual environment active, run from the project folder:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
python -m squirrel
|
python -m squirrel
|
||||||
```
|
```
|
||||||
|
|
||||||
The program reads `data/2018_Central_Park_Squirrel_Census_-_Squirrel_Data.csv`, prints
|
The program reads `data/2018_Central_Park_Squirrel_Census_-_Squirrel_Data.csv`, prints
|
||||||
the colour counts and writes `squirrel_count.csv`:
|
the colour counts and writes `squirrel_count.csv`:
|
||||||
|
|
||||||
```text
|
```text
|
||||||
Gray: 2473
|
Gray: 2473
|
||||||
Cinnamon: 392
|
Cinnamon: 392
|
||||||
Black: 103
|
Black: 103
|
||||||
```
|
```
|
||||||
|
|
||||||
Use other files by passing them as arguments, `python -m squirrel <census file> <summary file>`.
|
Use other files by passing them as arguments, `python -m squirrel <census file> <summary file>`.
|
||||||
If the census file does not exist the program prints a message and exits with status 2.
|
If the census file does not exist the program prints a message and exits with status 2.
|
||||||
|
|
||||||
## Run the tests
|
## Run the tests
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
python -m pytest
|
python -m pytest
|
||||||
```
|
```
|
||||||
|
|
||||||
![Test run][img-tests]
|
![Test run][img-tests]
|
||||||
|
|
||||||
The tests use small fixture rows; one test also checks the real 2018 census file when
|
The tests use small fixture rows; one test also checks the real 2018 census file when
|
||||||
it is present.
|
it is present.
|
||||||
|
|
||||||
## Continuous integration
|
## Continuous integration
|
||||||
|
|
||||||
The workflow [`.gitea/workflows/ci.yml`][ci] runs for every push to `main` and for every
|
The workflow [`.gitea/workflows/ci.yml`][ci] runs for every push to `main` and for every
|
||||||
pull request. It sets up Python 3.13, creates a `.venv`, upgrades `pip`, installs the
|
pull request. It sets up Python 3.13, creates a `.venv`, upgrades `pip`, installs the
|
||||||
project with `.[dev]` and runs `python -m pytest`. It uses `github.*` contexts only, so
|
project with `.[dev]` and runs `python -m pytest`. It uses `github.*` contexts only, so
|
||||||
it also runs on GitHub Actions.
|
it also runs on GitHub Actions.
|
||||||
|
|
||||||
## Build the source documentation
|
## Build the source documentation
|
||||||
|
|
||||||
The source is documented with Doxygen comments and configured by [`Doxyfile`][doxyfile].
|
The source is documented with Doxygen comments and configured by [`Doxyfile`][doxyfile].
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
doxygen Doxyfile
|
doxygen Doxyfile
|
||||||
```
|
```
|
||||||
|
|
||||||
Open `docs/doxygen/html/index.html` in a browser. The output folder is ignored by git.
|
Open `docs/doxygen/html/index.html` in a browser. The output folder is ignored by git.
|
||||||
|
|
||||||
## Project layout
|
## Project layout
|
||||||
|
|
||||||
```text
|
```text
|
||||||
.gitea/workflows/ci.yml continuous integration workflow
|
.gitea/workflows/ci.yml continuous integration workflow
|
||||||
data/ the 2018 census file
|
data/ the 2018 census file
|
||||||
docs/ business case, plan, milestones, models, reviews, ADRs
|
docs/ business case, plan, milestones, models, reviews, ADRs
|
||||||
docs/images/ screenshots used by this README and the wiki
|
docs/images/ screenshots used by this README and the wiki
|
||||||
src/squirrel/ the package: census.py, cli.py, constants.py
|
src/squirrel/ the package: census.py, cli.py, constants.py
|
||||||
tests/ pytest tests
|
tests/ pytest tests
|
||||||
Doxyfile Doxygen configuration
|
wiki/ wiki pages in English, Danish (.da) and Bahasa Malaysia (.ms)
|
||||||
pyproject.toml project configuration (Python >=3.13, no runtime dependencies)
|
Doxyfile Doxygen configuration
|
||||||
squirrel_count.csv the result of the assignment
|
pyproject.toml project configuration (Python >=3.13, no runtime dependencies)
|
||||||
```
|
squirrel_count.csv the result of the assignment
|
||||||
|
```
|
||||||
The project documents, in reading order: [Business Case][bc], [Stakeholder
|
|
||||||
Analysis][sa], [Project Plan][pp], [Use Case][uc], [Domain Model][dm], [ADR-0001][adr-0001].
|
The project documents, in reading order: [Business Case][bc], [Stakeholder
|
||||||
The repository also has a wiki in English, Danish and Bahasa Malaysia.
|
Analysis][sa], [Project Plan][pp], [Use Case][uc], [Domain Model][dm], [ADR-0001][adr-0001].
|
||||||
|
The repository also has a wiki in English, Danish and Bahasa Malaysia.
|
||||||
## License
|
|
||||||
|
## License
|
||||||
GNU Affero General Public License v3.0 or later. See [LICENSE][license].
|
|
||||||
|
GNU Affero General Public License v3.0 or later. See [LICENSE][license].
|
||||||
---
|
|
||||||
|
---
|
||||||
[img-run]: docs/images/run.png
|
|
||||||
[img-tests]: docs/images/tests.png
|
[img-run]: docs/images/run.png
|
||||||
[doxygen]: https://www.doxygen.nl/
|
[img-tests]: docs/images/tests.png
|
||||||
[adr-0001]: docs/adr/adr-0001-standard-library-instead-of-pandas.md
|
[doxygen]: https://www.doxygen.nl/
|
||||||
[ci]: .gitea/workflows/ci.yml
|
[adr-0001]: docs/adr/adr-0001-standard-library-instead-of-pandas.md
|
||||||
[doxyfile]: Doxyfile
|
[ci]: .gitea/workflows/ci.yml
|
||||||
[bc]: docs/business-case.md
|
[doxyfile]: Doxyfile
|
||||||
[sa]: docs/stakeholder-analysis.md
|
[bc]: docs/business-case.md
|
||||||
[pp]: docs/project-plan.md
|
[sa]: docs/stakeholder-analysis.md
|
||||||
[uc]: docs/uc-001/uc.md
|
[pp]: docs/project-plan.md
|
||||||
[dm]: docs/domain-model.md
|
[uc]: docs/uc-001/uc.md
|
||||||
[license]: LICENSE
|
[dm]: docs/domain-model.md
|
||||||
|
[license]: LICENSE
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ document of a type. `Primary File` may contain a glob (e.g.
|
|||||||
| PP | Project Plan | docs/project-plan.md | 002 |
|
| PP | Project Plan | docs/project-plan.md | 002 |
|
||||||
| MIL | Milestone / Gateway | docs/milestones/*.md | 005 |
|
| MIL | Milestone / Gateway | docs/milestones/*.md | 005 |
|
||||||
| ADR | Architecture Decision Record | docs/adr/adr-NNNN-*.md | 0002 |
|
| ADR | Architecture Decision Record | docs/adr/adr-NNNN-*.md | 0002 |
|
||||||
| RC | SQA Review Record | docs/sqa/reviews/rc-*.md | 025 |
|
| RC | SQA Review Record | docs/sqa/reviews/rc-*.md | 028 |
|
||||||
| DICT | Domain Dictionary | docs/dictionary.md | 002 |
|
| DICT | Domain Dictionary | docs/dictionary.md | 002 |
|
||||||
| TM | Traceability Matrix | docs/sqa/traceability-matrix.md | 002 |
|
| TM | Traceability Matrix | docs/sqa/traceability-matrix.md | 002 |
|
||||||
| UCD | Use Case Diagram | docs/use-case-diagram.md | 002 |
|
| UCD | Use Case Diagram | docs/use-case-diagram.md | 002 |
|
||||||
|
|||||||
@@ -11,8 +11,8 @@
|
|||||||
## Version History
|
## Version History
|
||||||
| Date | Status | Author | Reviewer | Change | Commit |
|
| Date | Status | Author | Reviewer | Change | Commit |
|
||||||
| --- | --- | --- | --- | --- | --- |
|
| --- | --- | --- | --- | --- | --- |
|
||||||
| 2026-10-13 | Deprecated | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version | [f1b3c03] |
|
| 2026-10-13 | Deprecated | Jens Tirsvad Nielsen | AI as stand-in for S01 | CrossReference: added [UCD-001] | [259d017] |
|
||||||
| 2026-10-13 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | CrossReference: added [UCD-001] | [259d017] |
|
| 2026-10-13 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Corrected the wiki folder `docs/wiki/` to `wiki/` | [d85cfe5] |
|
||||||
---
|
---
|
||||||
|
|
||||||
## Executive Summary
|
## Executive Summary
|
||||||
@@ -91,7 +91,7 @@ The project supports the participant's goal of finishing the 100 Days of Code bo
|
|||||||
| The lecture uses Pandas but the repository must have no runtime dependencies | The solution differs from the lecture code | Use the standard library `csv` module; record the decision in an architecture decision record (ADR) and keep the lecture's step names as function names |
|
| The lecture uses Pandas but the repository must have no runtime dependencies | The solution differs from the lecture code | Use the standard library `csv` module; record the decision in an architecture decision record (ADR) and keep the lecture's step names as function names |
|
||||||
| The census file is large and not part of the repository | Others cannot run the program | Keep the census file under `data/` and let the program accept a path argument |
|
| The census file is large and not part of the repository | Others cannot run the program | Keep the census file under `data/` and let the program accept a path argument |
|
||||||
| Tokens in `.env` leak into the repository | Credential exposure | `.env` is git-ignored, never read by the project and never printed |
|
| Tokens in `.env` leak into the repository | Credential exposure | `.env` is git-ignored, never read by the project and never printed |
|
||||||
| Wiki push is not available on the host | Wiki pages are not published | Keep the pages in the repository under `docs/wiki/` and report the failure |
|
| Wiki push is not available on the host | Wiki pages are not published | Keep the pages in the repository under `wiki/` and report the failure |
|
||||||
| Fur colour spelling differs in the data | Wrong counts | Count exact values `Gray`, `Cinnamon`, `Black` and test with fixture rows |
|
| Fur colour spelling differs in the data | Wrong counts | Count exact values `Gray`, `Cinnamon`, `Black` and test with fixture rows |
|
||||||
|
|
||||||
## Assumptions
|
## Assumptions
|
||||||
@@ -133,6 +133,6 @@ Proceed — the scope is small, the risks are mitigated and the result is direct
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
[f1b3c03]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/025-squirrel/commit/f1b3c034dc3880b7884646b4a4ed28e5f98fbcd3
|
|
||||||
[UCD-001]: ./use-case-diagram.md
|
[UCD-001]: ./use-case-diagram.md
|
||||||
[259d017]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/025-squirrel/commit/259d017ad257059330eb9a8bdbf940c9d082664e
|
[259d017]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/025-squirrel/commit/259d017ad257059330eb9a8bdbf940c9d082664e
|
||||||
|
[d85cfe5]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/025-squirrel/commit/d85cfe5c4b62b2e1759f1c47b25bdb787ba6fd68
|
||||||
|
|||||||
+1
-1
@@ -11,7 +11,7 @@
|
|||||||
## Version History
|
## Version History
|
||||||
| Date | Status | Author | Reviewer | Change | Commit |
|
| Date | Status | Author | Reviewer | Change | Commit |
|
||||||
| --- | --- | --- | --- | --- | --- |
|
| --- | --- | --- | --- | --- | --- |
|
||||||
| 2026-10-13 | Proposed | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version | [f1b3c03] |
|
| 2026-10-13 | Deprecated | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version | [f1b3c03] |
|
||||||
| 2026-10-13 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | CrossReference: added [DM-002] | [259d017] |
|
| 2026-10-13 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | CrossReference: added [DM-002] | [259d017] |
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
@@ -11,8 +11,8 @@
|
|||||||
## Version History
|
## Version History
|
||||||
| Date | Status | Author | Reviewer | Change | Commit |
|
| Date | Status | Author | Reviewer | Change | Commit |
|
||||||
| --- | --- | --- | --- | --- | --- |
|
| --- | --- | --- | --- | --- | --- |
|
||||||
| 2026-10-13 | Deprecated | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version | [f1b3c03] |
|
| 2026-10-13 | Deprecated | Jens Tirsvad Nielsen | AI as stand-in for S01 | CrossReference: added [US-001] | [259d017] |
|
||||||
| 2026-10-13 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | CrossReference: added [US-001] | [259d017] |
|
| 2026-10-13 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Corrected the wiki folder `docs/wiki/` to `wiki/` | [d85cfe5] |
|
||||||
---
|
---
|
||||||
|
|
||||||
## Purpose
|
## Purpose
|
||||||
@@ -29,7 +29,7 @@ Wiki pages `Home`, `Install`, `Usage` and `Description` in English plus `-da` an
|
|||||||
| --- | --- | --- | --- |
|
| --- | --- | --- | --- |
|
||||||
| 1 | Each wiki page exists in English, Danish (`-da`) and Bahasa Malaysia (`-ms`) | All present | Any missing |
|
| 1 | Each wiki page exists in English, Danish (`-da`) and Bahasa Malaysia (`-ms`) | All present | Any missing |
|
||||||
| 2 | The sidebar links every page in all three languages | All linked | Missing link |
|
| 2 | The sidebar links every page in all three languages | All linked | Missing link |
|
||||||
| 3 | Wiki pages are on the git host wiki, or kept under `docs/wiki/` with the failure reported | Published or reported | Neither |
|
| 3 | Wiki pages are on the git host wiki, or kept under `wiki/` with the failure reported | Published or reported | Neither |
|
||||||
| 4 | Screenshots appear on the wiki pages | Present | Missing |
|
| 4 | Screenshots appear on the wiki pages | Present | Missing |
|
||||||
|
|
||||||
## Dependencies
|
## Dependencies
|
||||||
@@ -69,6 +69,6 @@ Wiki pages `Home`, `Install`, `Usage` and `Description` in English plus `-da` an
|
|||||||
---
|
---
|
||||||
|
|
||||||
[BC-001]: ../business-case.md
|
[BC-001]: ../business-case.md
|
||||||
[f1b3c03]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/025-squirrel/commit/f1b3c034dc3880b7884646b4a4ed28e5f98fbcd3
|
|
||||||
[US-001]: ../user-stories.md
|
[US-001]: ../user-stories.md
|
||||||
[259d017]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/025-squirrel/commit/259d017ad257059330eb9a8bdbf940c9d082664e
|
[259d017]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/025-squirrel/commit/259d017ad257059330eb9a8bdbf940c9d082664e
|
||||||
|
[d85cfe5]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/025-squirrel/commit/d85cfe5c4b62b2e1759f1c47b25bdb787ba6fd68
|
||||||
|
|||||||
@@ -11,8 +11,8 @@
|
|||||||
## Version History
|
## Version History
|
||||||
| Date | Status | Author | Reviewer | Change | Commit |
|
| Date | Status | Author | Reviewer | Change | Commit |
|
||||||
| --- | --- | --- | --- | --- | --- |
|
| --- | --- | --- | --- | --- | --- |
|
||||||
| 2026-10-13 | Accepted | Jens Tirsvad Nielsen | S01 | Initial version | [f1b3c03] |
|
| 2026-10-13 | Deprecated | Jens Tirsvad Nielsen | AI as stand-in for S01 | CrossReference: added [US-001] | [259d017] |
|
||||||
| 2026-10-13 | Proposed | Jens Tirsvad Nielsen | AI as stand-in for S01 | CrossReference: added [US-001] | [259d017] |
|
| 2026-10-13 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Corrected the wiki folder `docs/wiki/` to `wiki/` | [d85cfe5] |
|
||||||
---
|
---
|
||||||
|
|
||||||
## Purpose
|
## Purpose
|
||||||
@@ -75,7 +75,7 @@ A No-Go at a gateway stops the later gateways; their dates move by the days the
|
|||||||
| Risk | Impact | Mitigation |
|
| Risk | Impact | Mitigation |
|
||||||
| --- | --- | --- |
|
| --- | --- | --- |
|
||||||
| CI runner is not available on the git host | The CI workflow cannot be shown green | Run the same commands locally and report the missing runner |
|
| CI runner is not available on the git host | The CI workflow cannot be shown green | Run the same commands locally and report the missing runner |
|
||||||
| Wiki repository cannot be pushed | G4 deliverable is not published | Keep the pages under `docs/wiki/` and report it |
|
| Wiki repository cannot be pushed | G4 deliverable is not published | Keep the pages under `wiki/` and report it |
|
||||||
| Doxygen is not installed locally | The documentation build cannot be verified | Report as not verified; document the command |
|
| Doxygen is not installed locally | The documentation build cannot be verified | Report as not verified; document the command |
|
||||||
|
|
||||||
## Open Issues
|
## Open Issues
|
||||||
@@ -92,10 +92,10 @@ A No-Go at a gateway stops the later gateways; their dates move by the days the
|
|||||||
[MIL-002]: ./milestones/mil-002-census-analysis.md
|
[MIL-002]: ./milestones/mil-002-census-analysis.md
|
||||||
[MIL-003]: ./milestones/mil-003-documentation.md
|
[MIL-003]: ./milestones/mil-003-documentation.md
|
||||||
[MIL-004]: ./milestones/mil-004-wiki-publication.md
|
[MIL-004]: ./milestones/mil-004-wiki-publication.md
|
||||||
[f1b3c03]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/025-squirrel/commit/f1b3c034dc3880b7884646b4a4ed28e5f98fbcd3
|
|
||||||
[MS-124]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/025-squirrel/milestone/124
|
[MS-124]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/025-squirrel/milestone/124
|
||||||
[MS-125]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/025-squirrel/milestone/125
|
[MS-125]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/025-squirrel/milestone/125
|
||||||
[MS-126]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/025-squirrel/milestone/126
|
[MS-126]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/025-squirrel/milestone/126
|
||||||
[MS-127]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/025-squirrel/milestone/127
|
[MS-127]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/025-squirrel/milestone/127
|
||||||
[US-001]: ./user-stories.md
|
[US-001]: ./user-stories.md
|
||||||
[259d017]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/025-squirrel/commit/259d017ad257059330eb9a8bdbf940c9d082664e
|
[259d017]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/025-squirrel/commit/259d017ad257059330eb9a8bdbf940c9d082664e
|
||||||
|
[d85cfe5]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/025-squirrel/commit/d85cfe5c4b62b2e1759f1c47b25bdb787ba6fd68
|
||||||
|
|||||||
@@ -0,0 +1,44 @@
|
|||||||
|
# RC Review of ci.yml, delta re-review of criterion 22
|
||||||
|
|
||||||
|
## Metadata
|
||||||
|
| Key | Value |
|
||||||
|
| --- | --- |
|
||||||
|
| ID | RC-025 |
|
||||||
|
| CrossReference | [WF-MIL-001], [QC-WF-001] |
|
||||||
|
|
||||||
|
## Version History
|
||||||
|
| Date | Status | Author | Reviewer | Change | Commit |
|
||||||
|
| --- | --- | --- | --- | --- | --- |
|
||||||
|
| 2026-10-13 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version | pending |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Artifact Under Review
|
||||||
|
|
||||||
|
- Instance reviewed: [WF-MIL-001]
|
||||||
|
- Checklist used: [QC-WF-001]
|
||||||
|
- Scope: delta re-review of criterion 22 of QC-WF-001; reason: the condition of RC-010 (run 1012 queued); earlier record RC-010
|
||||||
|
- Language and domain: n/a
|
||||||
|
- Language reviewer: none (the stand-in reviewer reads English and the `it` domain)
|
||||||
|
- Mode: autonomous, not independent (reviewer: AI as stand-in for S01)
|
||||||
|
|
||||||
|
## Checklist Results
|
||||||
|
|
||||||
|
| # | Criterion | Status | Evidence/Notes |
|
||||||
|
| --- | --- | --- | --- |
|
||||||
|
| 22 | Every workflow feature used is verified on the instance that runs it, and the host and version are recorded; a feature the target hosts differ on is noted in the header (Mandatory) | Pass | Gitea 1.27.3, runner labels ubuntu-latest. `ci.yml` completed with success on the instance: pull_request runs 1037, 1040 and 1043, and the push run 1044 on main (commit c4e88c6). Header states the host and that only github.* contexts are used. |
|
||||||
|
|
||||||
|
## Overall Verdict
|
||||||
|
|
||||||
|
Go — criterion 22, the only open Mandatory criterion of RC-010, now passes; the other rows of RC-010 still hold, so the workflow is Go. Closes the condition of RC-010.
|
||||||
|
|
||||||
|
## Action Items
|
||||||
|
|
||||||
|
| Action | Owner | Due |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| None | S01 | - |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
[WF-MIL-001]: ../../../.gitea/workflows/ci.yml
|
||||||
|
[QC-WF-001]: ../../../framework/qc/code/qc-workflow.md
|
||||||
@@ -0,0 +1,56 @@
|
|||||||
|
# RC-026 Review of BC-001
|
||||||
|
|
||||||
|
## Metadata
|
||||||
|
| Key | Value |
|
||||||
|
| --- | --- |
|
||||||
|
| ID | RC-026 |
|
||||||
|
| CrossReference | [BC-001], [QC-BC-001], [QC-LANG-001] |
|
||||||
|
|
||||||
|
## Version History
|
||||||
|
| Date | Status | Author | Reviewer | Change | Commit |
|
||||||
|
| --- | --- | --- | --- | --- | --- |
|
||||||
|
| 2026-10-13 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version | [d85cfe5] |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Artifact Under Review
|
||||||
|
|
||||||
|
- Instance reviewed: [BC-001]
|
||||||
|
- Checklist used: [QC-BC-001] and [QC-LANG-001]
|
||||||
|
- Scope: delta re-review of the criterion that covers the changed text and criteria 1, 2, 6, 7, 8 of QC-LANG-001: the path `docs/wiki/` was corrected to `wiki/`
|
||||||
|
- Language and domain: en / it
|
||||||
|
- Language reviewer: none (the stand-in reviewer reads English and the `it` domain)
|
||||||
|
- Mode: autonomous, not independent (reviewer: AI as stand-in for S01)
|
||||||
|
|
||||||
|
## Checklist Results
|
||||||
|
|
||||||
|
| # | Criterion | Status | Evidence/Notes |
|
||||||
|
| --- | --- | --- | --- |
|
||||||
|
| 2 | Risks are identified with documented impact and mitigation (Mandatory) | Pass | The changed text is a folder path in a risk mitigation or a Go criterion; it is still objectively checkable and has a mitigation. |
|
||||||
|
|
||||||
|
## 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 (Mandatory) | Pass | Language and Domain rows unchanged. |
|
||||||
|
| 2 | `Language` is a BCP 47 code and `Domain` is a value from the registry's domain list (Mandatory) | Pass | Unchanged. |
|
||||||
|
| 6 | Metadata keys, section headings, IDs and statuses are in English (Mandatory) | Pass | Keys, headings and statuses are English. |
|
||||||
|
| 7 | No translated twin (`<name>.<language>.md`) exists beside the document (Mandatory) | Pass | No translated twin. |
|
||||||
|
| 8 | A change of language or domain since the previous accepted version has a Version History row and was reviewed again (Mandatory) | Pass | Language unchanged. |
|
||||||
|
|
||||||
|
## Overall Verdict
|
||||||
|
|
||||||
|
Go — only a folder path was corrected; the earlier review of the content still holds.
|
||||||
|
|
||||||
|
## Action Items
|
||||||
|
|
||||||
|
| Action | Owner | Due |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| None | 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
|
||||||
|
[d85cfe5]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/025-squirrel/commit/d85cfe5c4b62b2e1759f1c47b25bdb787ba6fd68
|
||||||
@@ -0,0 +1,56 @@
|
|||||||
|
# RC-027 Review of MIL-004
|
||||||
|
|
||||||
|
## Metadata
|
||||||
|
| Key | Value |
|
||||||
|
| --- | --- |
|
||||||
|
| ID | RC-027 |
|
||||||
|
| CrossReference | [MIL-004], [QC-MIL-001], [QC-LANG-001] |
|
||||||
|
|
||||||
|
## Version History
|
||||||
|
| Date | Status | Author | Reviewer | Change | Commit |
|
||||||
|
| --- | --- | --- | --- | --- | --- |
|
||||||
|
| 2026-10-13 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version | [d85cfe5] |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Artifact Under Review
|
||||||
|
|
||||||
|
- Instance reviewed: [MIL-004]
|
||||||
|
- Checklist used: [QC-MIL-001] and [QC-LANG-001]
|
||||||
|
- Scope: delta re-review of the criterion that covers the changed text and criteria 1, 2, 6, 7, 8 of QC-LANG-001: the path `docs/wiki/` was corrected to `wiki/`
|
||||||
|
- Language and domain: en / it
|
||||||
|
- Language reviewer: none (the stand-in reviewer reads English and the `it` domain)
|
||||||
|
- Mode: autonomous, not independent (reviewer: AI as stand-in for S01)
|
||||||
|
|
||||||
|
## Checklist Results
|
||||||
|
|
||||||
|
| # | Criterion | Status | Evidence/Notes |
|
||||||
|
| --- | --- | --- | --- |
|
||||||
|
| 2 | Explicit Go/No-Go criteria are stated for each gate (Mandatory) | Pass | The changed text is a folder path in a risk mitigation or a Go criterion; it is still objectively checkable and has a mitigation. |
|
||||||
|
|
||||||
|
## 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 (Mandatory) | Pass | Language and Domain rows unchanged. |
|
||||||
|
| 2 | `Language` is a BCP 47 code and `Domain` is a value from the registry's domain list (Mandatory) | Pass | Unchanged. |
|
||||||
|
| 6 | Metadata keys, section headings, IDs and statuses are in English (Mandatory) | Pass | Keys, headings and statuses are English. |
|
||||||
|
| 7 | No translated twin (`<name>.<language>.md`) exists beside the document (Mandatory) | Pass | No translated twin. |
|
||||||
|
| 8 | A change of language or domain since the previous accepted version has a Version History row and was reviewed again (Mandatory) | Pass | Language unchanged. |
|
||||||
|
|
||||||
|
## Overall Verdict
|
||||||
|
|
||||||
|
Go — only a folder path was corrected; the earlier review of the content still holds.
|
||||||
|
|
||||||
|
## Action Items
|
||||||
|
|
||||||
|
| Action | Owner | Due |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| None | S01 | - |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
[MIL-004]: ../../milestones/mil-004-wiki-publication.md
|
||||||
|
[QC-MIL-001]: ../../../framework/qc/artifacts/qc-milestones-gateways.md
|
||||||
|
[QC-LANG-001]: ../../../framework/qc/artifacts/qc-language-domain.md
|
||||||
|
[d85cfe5]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/025-squirrel/commit/d85cfe5c4b62b2e1759f1c47b25bdb787ba6fd68
|
||||||
@@ -23,13 +23,13 @@ updated whenever an artifact instance is created or reviewed.
|
|||||||
|
|
||||||
| Artifact Instance | Type | Language | Domain | Upstream (Backward Link) | Downstream (Forward Link) | Last Reviewed (RC-ID) |
|
| Artifact Instance | Type | Language | Domain | Upstream (Backward Link) | Downstream (Forward Link) | Last Reviewed (RC-ID) |
|
||||||
| --- | --- | --- | --- | --- | --- | --- |
|
| --- | --- | --- | --- | --- | --- | --- |
|
||||||
| [BC-001] | Business Case | en | it | - | [SA-001], [PP-001], [MIL-001], [MIL-002], [MIL-003], [MIL-004] | [RC-001], [RC-019] |
|
| [BC-001] | Business Case | en | it | - | [SA-001], [PP-001], [MIL-001], [MIL-002], [MIL-003], [MIL-004] | [RC-001], [RC-019], [RC-026] |
|
||||||
| [SA-001] | Stakeholder Analysis | en | it | [BC-001] | [PP-001] | [RC-002] |
|
| [SA-001] | Stakeholder Analysis | en | it | [BC-001] | [PP-001] | [RC-002] |
|
||||||
| [PP-001] | Project Plan | en | it | [BC-001], [SA-001] | [MIL-001], [MIL-002], [MIL-003], [MIL-004] | - (no checklist; accepted by S01 in chat) |
|
| [PP-001] | Project Plan | en | it | [BC-001], [SA-001] | [MIL-001], [MIL-002], [MIL-003], [MIL-004] | - (no checklist; accepted by S01 in chat) |
|
||||||
| [MIL-001] | Milestone | en | it | [BC-001], [PP-001] | - | [RC-003], [RC-020] |
|
| [MIL-001] | Milestone | en | it | [BC-001], [PP-001] | - | [RC-003], [RC-020] |
|
||||||
| [MIL-002] | Milestone | en | it | [BC-001], [PP-001], [MIL-001] | - | [RC-004], [RC-021] |
|
| [MIL-002] | Milestone | en | it | [BC-001], [PP-001], [MIL-001] | - | [RC-004], [RC-021] |
|
||||||
| [MIL-003] | Milestone | en | it | [BC-001], [PP-001], [MIL-002] | - | [RC-005], [RC-022] |
|
| [MIL-003] | Milestone | en | it | [BC-001], [PP-001], [MIL-002] | - | [RC-005], [RC-022] |
|
||||||
| [MIL-004] | Milestone | en | it | [BC-001], [PP-001], [MIL-003] | - | [RC-006], [RC-023] |
|
| [MIL-004] | Milestone | en | it | [BC-001], [PP-001], [MIL-003] | - | [RC-006], [RC-023], [RC-027] |
|
||||||
| [DICT-001] | Domain Dictionary | en | it | [BC-001], [SA-001] | - | [RC-007], [RC-018] |
|
| [DICT-001] | Domain Dictionary | en | it | [BC-001], [SA-001] | - | [RC-007], [RC-018] |
|
||||||
| [UCD-001] | Use Case Diagram | en | it | [SA-001], [BC-001] | [US-001], [UC-001] | [RC-011] |
|
| [UCD-001] | Use Case Diagram | en | it | [SA-001], [BC-001] | [US-001], [UC-001] | [RC-011] |
|
||||||
| [US-001] | User Story | en | it | [UCD-001], [BC-001], [MIL-002] | [UC-001] | [RC-012] |
|
| [US-001] | User Story | en | it | [UCD-001], [BC-001], [MIL-002] | [UC-001] | [RC-012] |
|
||||||
@@ -40,7 +40,7 @@ updated whenever an artifact instance is created or reviewed.
|
|||||||
| [ADR-0001] | Architecture Decision Record | - | - | [BC-001], [SA-001], [MIL-002] | `src/squirrel/census.py` | [RC-017] |
|
| [ADR-0001] | Architecture Decision Record | - | - | [BC-001], [SA-001], [MIL-002] | `src/squirrel/census.py` | [RC-017] |
|
||||||
| `src/squirrel/census.py`, `cli.py`, `__main__.py`, `tests/` | Python Source Code | - | - | [UC-001], [SSD-001], [ADR-0001] | - | [RC-024] |
|
| `src/squirrel/census.py`, `cli.py`, `__main__.py`, `tests/` | Python Source Code | - | - | [UC-001], [SSD-001], [ADR-0001] | - | [RC-024] |
|
||||||
| `src/squirrel/constants.py`, `tests/test_constants.py` | Python Source Code | - | - | [MIL-001] | - | [RC-008] |
|
| `src/squirrel/constants.py`, `tests/test_constants.py` | Python Source Code | - | - | [MIL-001] | - | [RC-008] |
|
||||||
| `.gitea/workflows/ci.yml` | CI Workflow | - | - | [MIL-001] | - | [RC-009], [RC-010] |
|
| `.gitea/workflows/ci.yml` | CI Workflow | - | - | [MIL-001] | - | [RC-009], [RC-010], [RC-025] |
|
||||||
|
|
||||||
## Coverage Notes
|
## Coverage Notes
|
||||||
|
|
||||||
@@ -89,3 +89,6 @@ updated whenever an artifact instance is created or reviewed.
|
|||||||
[RC-022]: ./reviews/rc-022-mil-003-delta.md
|
[RC-022]: ./reviews/rc-022-mil-003-delta.md
|
||||||
[RC-023]: ./reviews/rc-023-mil-004-delta.md
|
[RC-023]: ./reviews/rc-023-mil-004-delta.md
|
||||||
[RC-024]: ./reviews/rc-024-python-census.md
|
[RC-024]: ./reviews/rc-024-python-census.md
|
||||||
|
[RC-025]: ./reviews/rc-025-ci-workflow-delta.md
|
||||||
|
[RC-026]: ./reviews/rc-026-business-case-wiki-path.md
|
||||||
|
[RC-027]: ./reviews/rc-027-mil-004-wiki-path.md
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
<!-- Generated from docs/wiki; edit the source pages, not the published wiki. -->
|
<!-- Generated from wiki; edit the source pages, not the published wiki. -->
|
||||||
|
|
||||||
**Squirrel Census**
|
**Squirrel Census**
|
||||||
|
|
||||||
Reference in New Issue
Block a user