| 1 |
Challenges are runnable. Target: 5 of 5 challenges start from the command line and draw to completion. Measure: S01 runs each on Windows PowerShell and records the result in the review of the milestone. |
Pass |
On the Windows machine, in PowerShell, from the fresh clone described under criterion 5: (a) the real command turtle-challenges <name> was started five times and each time a window titled "Turtle Challenges" opened (square, dashed-line, shapes, random-walk, spirograph). (b) Each challenge was run through the command line code (cli.main) with real Tk, closing the window where the command would wait for a click, and each reached that point and returned 0: square 1.4 s, dashed-line 3.2 s, shapes 14.0 s, random-walk 9.8 s, spirograph 4.2 s (1.9 s with --gap 10). Not covered: the click that closes the window, and S01's own run, which the measure names. |
| 2 |
Automated tests pass. Target: 0 failures; at least one test for every public function. Measure: python -m pytest exits 0 locally and in continuous integration. |
Pass |
Fresh clone, README steps: python -m pytest printed 95 passed, exit 0. Every public function and class in src/ is referenced by at least one test (scan of 16 names: none missing); create_window and create_pen are tested only for the missing-Tk path. Continuous integration: the workflow CI ran on the host for each pull request head (runs 217, 218, 219, 220, 227 and 228, all success); the latest, run 228 on 575df4d, passed all nine steps (checkout, Python 3.13, Doxygen, install, lint, formatting, types, tests, documentation). |
| 3 |
Runtime dependencies. Target: 0. Measure: dependencies = [] in pyproject.toml. |
Pass |
dependencies = [] in pyproject.toml (read with tomllib), and python -m pip show turtle-challenges in the fresh clone prints an empty Requires:. |
| 4 |
Source documentation builds. Target: 0 Doxygen warnings. Measure: doxygen Doxyfile output. |
Pass |
doxygen Doxyfile (Doxygen 1.15.0) in the fresh clone: exit 0, no output, build/html/index.html generated. The same build passed on the host in run 228 (step "Build the source documentation"), where warnings fail the build. |
| 5 |
Set-up is reproducible. Target: A fresh clone runs the challenges and the tests following only the README on Windows PowerShell. Measure: S01 follows the README from an empty folder. |
Fail |
Not met as written yet. The README tells a reader to clone https://github.com/Tirsvad-Udemy-100-days-of-code/018-turtle.git, which holds only the initial commit because the code is still in the four open pull requests, so that clone has no project. With the Gitea branch URL substituted for that one line, every other README step worked in an empty folder under PowerShell: py -3.13 -m venv .venv (Python 3.13.14), Activate.ps1, python -m pip install --upgrade pip (26.2.1), python -m pip install -e ".[dev]" (exit 0), python -m pytest (95 passed), ruff check ., ruff format --check . and mypy (all exit 0), turtle-challenges --help (exit 0) and doxygen Doxyfile (0 warnings). The framework/ submodule was not fetched and nothing needed it. The measure names S01 following the README, which has not happened. |
| 6 |
Repository is presented. Target: Non-empty description and at least 5 topics on each host. Measure: Repository settings page of each host. |
Pass |
Description and topics read from the host APIs: Gitea has a description ("Turtle graphics exercises from Udemy's 100 Days of Code Python bootcamp (day 18) ...") and 11 topics; GitHub has the same description and 11 topics; the target is a non-empty description and at least 5 topics. |
| 7 |
Work is traceable. Target: 100 % of pull requests carry one Closes #N line per completed issue. Measure: Pull request descriptions. |
Pass |
Pull requests #30, #31, #32 and #33: each description has its Closes #N lines one per line and no comma form (#30: 1 to 6; #31: 9 to 14; #32: 16 to 21; #33: 23 to 26 and 8, 15, 22, 29). Every issue those lines name is a task completed by the pull request. Issue #7 was completed on the host without a commit, so #30 only references it and it was closed by hand; #27 is only partly done, so #33 only references it. |