77 lines
3.7 KiB
Markdown
77 lines
3.7 KiB
Markdown
# MIL-002 Project scaffold and tooling
|
|
|
|
## Metadata
|
|
| Key | Value |
|
|
| --- | --- |
|
|
| ID | MIL-002 |
|
|
| CrossReference | [BC-001] |
|
|
| Language | en |
|
|
| Domain | it |
|
|
|
|
## Version History
|
|
| Date | Status | Author | Reviewer | Change | Commit |
|
|
| --- | --- | --- | --- | --- | --- |
|
|
| 2026-10-28 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S02 | Initial version | [cadc5ef] |
|
|
|
|
---
|
|
|
|
## Purpose
|
|
|
|
Decide whether the Python project skeleton, tooling and container set-up are ready for feature work. The gate checks that a clean clone can install, test and run a smoke test.
|
|
|
|
## Deliverable
|
|
|
|
`pyproject.toml`, `src/` and `tests/` layout, `constants.py`, Python `.gitignore`, Doxyfile, README from the framework template with `.venv` instructions, a Dockerfile for headless browser runs, and a passing smoke test.
|
|
|
|
## Go / No-Go Criteria
|
|
|
|
| # | Criterion (objectively checkable) | Go | No-Go |
|
|
| --- | --- | --- | --- |
|
|
| 1 | `python -m venv .venv`, `python -m pip install --upgrade pip` and `python -m pip install -e .[dev]` succeed on a clean clone | All commands exit 0 | Any command fails |
|
|
| 2 | `python -m pytest` passes | 0 failures | A test fails |
|
|
| 3 | `pyproject.toml` requires Python 3.13 or newer and lists Selenium as the only runtime dependency | Both true | Either false |
|
|
| 4 | `bash framework/scripts/check-readme.sh` reports no finding | Exit code 0 | Exit code 1 |
|
|
| 5 | The `qc-programming-python.md` review of the new code is `Go` | `RC-*` is `Go` | `No-Go` |
|
|
|
|
## Dependencies
|
|
|
|
| Depends on | Reason |
|
|
| --- | --- |
|
|
| MIL-001 | Baseline must be accepted before code |
|
|
|
|
## Traceability
|
|
|
|
| Business Case objective / KPI / user story | Reference |
|
|
| --- | --- |
|
|
| O5, success criteria 4, 5 and 8 | [BC-001] |
|
|
| CN-004, CN-005, CN-008 | [SA-001] |
|
|
|
|
## Ownership
|
|
|
|
| Role | Stakeholder ID (SA) |
|
|
| --- | --- |
|
|
| Owner | S01 |
|
|
| Approving reviewer | S02 (AI as stand-in, autonomous mode, not independent) |
|
|
|
|
## Target Date
|
|
|
|
2026-10-29 — inside the planned window 2026-10-28 to 2026-11-04 of [PP-001]; the Business Case sets no deadline.
|
|
|
|
## Tasks
|
|
|
|
| # | Task | Summary | Needs its own Use Case/User Story? | Reference |
|
|
| --- | --- | --- | --- | --- |
|
|
| 1 | Create pyproject.toml | Configure the project for Python 3.13 or newer with the `src` layout, Selenium as the only runtime dependency, and pytest (with coverage) as a development extra. This keeps S03's wish for no extra runtime dependencies. | No | O5 |
|
|
| 2 | Create src and tests layout with constants.py | Create the package under `src/`, a `constants.py` for the URL, selectors, timings and messages, and `tests/` with a first smoke test. Constants live only in `constants.py`. | No | O5 |
|
|
| 3 | Add Python .gitignore | Add a standard Python `.gitignore` that also ignores `.venv`, `.env`, caches, coverage output, Doxygen output and browser run artefacts. | No | |
|
|
| 4 | Add Doxyfile and Doxygen comment style | Add a `Doxyfile` for `src/` and write all source comments in Doxygen style (`@brief`, `@param`, `@return`). | No | |
|
|
| 5 | Create README from the framework template | Create `README.md` from `framework/templates/README-template.md` with overview, requirements, `.venv` creation, `python -m pip install --upgrade pip`, install, run and test commands. | No | O5 |
|
|
| 6 | Add Docker image for headless browser runs | Add a Dockerfile and a helper that run the bot and take screenshots in a Linux container with headless Chromium, so no GUI test uses the host desktop (`framework/process/gui-testing.md`). | No | ADR-0003 |
|
|
|
|
---
|
|
|
|
[BC-001]: ../business-case.md
|
|
[PP-001]: ../project-plan.md
|
|
[SA-001]: ../stakeholder-analysis.md
|
|
[cadc5ef]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/048-the-coockie-factory-new/commit/cadc5eff21d9afc09799d4bc2e3f6ac17ab2612a
|