CI / checks (pull_request) Successful in 59s
Replace pending in the Version History of the project plan with the link to the commit that accepted the new version.
8.6 KiB
8.6 KiB
Project Plan: Turtle Challenges
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-10-08 | Deprecated | Jens Tirsvad Nielsen | S01 | Accepted by S01, the Product Owner Reviews open issue updated |
16183cc |
| 2026-10-08 | Accepted | Jens Tirsvad Nielsen | S01 | Reviews open issue updated after the code reviews (RC-014 to RC-017)Accepted by S01, the Product Owner |
c893fc1 |
Purpose
This plan schedules the four milestones that deliver the Turtle Challenges repository, one milestone per pull request, so that the work is complete by 2026-10-21, the end date in the constraints of BC-001. Each milestone is one MIL-* document with its own tasks; the tasks become issues on the git host.
Planning Assumptions
- Week 1 starts 2026-10-07; the plan ends by 2026-10-21, per the Business Case constraint.
- Milestone length: three to four days, the length of one small pull request.
- S01 is the owner and the approving reviewer of every milestone (see SA-001); communication with S01 follows the cadence of the Stakeholder Analysis: at every milestone.
- The milestone dates are proposals; S01 confirms or moves them when reviewing this plan.
- One branch per milestone, named after it (
mil-001-project-foundationand so on), opened as one pull request that closes its issues.
Gateway Schedule
| Gateway | Document | Window | Decision date | Owner | Stories | Main deliverable | Milestone |
|---|---|---|---|---|---|---|---|
| Project Foundation | MIL-001 | 2026-10-07 to 2026-10-10 | 2026-10-10 | S01 | none | pyproject.toml, .gitignore, package and test skeleton, Doxyfile, continuous integration, README, repository description and topics |
MIL-001 milestone |
| Square and Dashed Line | MIL-002 | 2026-10-11 to 2026-10-14 | 2026-10-14 | S01 | none | Pen protocol, draw_square, draw_dashed_line, fake turtle, tests, command line entry |
MIL-002 milestone |
| Shapes and Random Color | MIL-003 | 2026-10-15 to 2026-10-17 | 2026-10-17 | S01 | none | random_color, color palette, draw_shape, draw_shapes, tests |
MIL-003 milestone |
| Random Walk and Spirograph | MIL-004 | 2026-10-18 to 2026-10-21 | 2026-10-21 | S01 | none | random_walk, draw_spirograph, tests, final README |
MIL-004 milestone |
@startgantt
Project starts 2026-10-07
[Project Foundation] starts 2026-10-07 and ends 2026-10-10
[Square and Dashed Line] starts 2026-10-11 and ends 2026-10-14
[Shapes and Random Color] starts 2026-10-15 and ends 2026-10-17
[Random Walk and Spirograph] starts 2026-10-18 and ends 2026-10-21
[Project Foundation Go/No-Go] happens 2026-10-10
[Square and Dashed Line Go/No-Go] happens 2026-10-14
[Shapes and Random Color Go/No-Go] happens 2026-10-17
[Random Walk and Spirograph Go/No-Go] happens 2026-10-21
@endgantt
Scope Coverage
| Business Case scope item | Gateway |
|---|---|
src/, tests/, docs/ structure, constants.py, pyproject.toml |
MIL-001 |
Python .gitignore |
MIL-001 |
| pytest, ruff and mypy set-up | MIL-001; each later milestone adds its tests |
| Continuous integration workflow | MIL-001 |
Doxyfile and the command to build the documentation |
MIL-001; each later milestone keeps 0 warnings |
| README with set-up for Windows PowerShell, Linux Debian and macOS | MIL-001 (first version), MIL-004 (final) |
| Description and topics on the Gitea host and on GitHub | MIL-001 |
| Challenge 1, draw a square | MIL-002 |
| Challenge 2, draw a dashed line | MIL-002 |
Challenge 3, draw different shapes, and the random_color helper |
MIL-003 |
| Challenge 4, generate a random walk | MIL-004 |
| Challenge 5, draw a spirograph | MIL-004 |
Dependencies
MIL-001 → MIL-002 → MIL-003 → MIL-004
Each milestone needs the previous one Accepted with a Go review. A No-Go returns the milestone for rework and every later window moves by the rework time; the end date 2026-10-21 has no slack beyond the windows, so a No-Go on any milestone means S01 re-plans the remaining dates instead of letting them slide unrecorded.
Plan Risks
| Risk | Impact | Mitigation |
|---|---|---|
| A milestone slips and the end date 2026-10-21 is missed | The deadline in BC-001 is missed | Milestones are small; a No-Go triggers a re-plan with S01 and a new row in this document's Version History |
The Pen protocol of MIL-002 is wrong, and MIL-003 and MIL-004 build on it |
Rework spreads over three milestones | Criteria 1, 2 and 5 of MIL-002 test the protocol with the fake turtle before anything depends on it |
| The Gitea host has no Actions runner | Continuous integration cannot confirm the checks | Every milestone records the local results of pytest, ruff, mypy and Doxygen in its review; see the open issue below |
A token in .env expires or lacks a scope |
Issues or repository metadata cannot be created | S01 renews the token; the dry run of sync-project.sh shows the plan without a token |
Open Issues
- Python bound: "Python greater than 3.13" is read as
>=3.13(3.13.14 is installed on S01's machine). If a version newer than 3.13 is meant,requires-pythonand the continuous integration version change to 3.14 or later, which is not installed. - Dashed line length: Turtle Challenge 2 says "a total of 50 segments", while the lecture's loop runs 15 times. The plan uses 50 dashes as a constant (
DASH_COUNT) inconstants.py; S01 confirms or sets 15. - README template: the agreed README template (Requirements, Set up, Run, Run the tests, Continuous integration, Build the source documentation, Project layout, License) differs from
framework/templates/README-template.md.framework/scripts/check-readme.shwould flag the difference if its opt-in check were enabled; the agreed template is followed. S01 decides whether the framework check stays off. - Use cases and user stories: every task is a plain technical task. The program has one actor and one action (run a challenge), so no
UCorUSis written. S01 confirms. - Development tools: ruff and mypy are added as development dependencies, beyond the pytest the brief names, because
QC-PY-001requires a formatter, a linter and (optionally) a strict type check. They are not runtime dependencies. - Continuous integration host: the workflow lives in
.github/workflows/ci.yml, which GitHub Actions and Gitea Actions both read. Whether the Gitea host has a runner is not known. - Diagram: the PlantUML Gantt chart is not rendered yet because no PlantUML server is configured (
render-diagrams.sh --server <url>). - Reviews: BC-001, SA-001,
DICT-001and the four milestones were reviewed and ended inGoon 2026-10-07 (RC-007toRC-013, which re-reviewRC-001toRC-006); their Version History rows areAccepted. The code of the four milestones was reviewed againstQC-PY-001and ended inGoon 2026-10-08 (RC-014toRC-017). S01 accepted, in chat, that the author is also the reviewer, because the project has one person and no governance document exists. This plan has no checklist; S01 accepted it directly on 2026-10-08. S01 waived the plan-first gate in chat on 2026-10-07 for the first build, so the code of all four milestones was written before any document was reviewed; the waiver does not carry over to the next request. - GitHub: issues are synced to the
originremote (the Gitea host) only; the GitHub mirror gets the description and topics but no milestones or issues.