10 KiB
10 KiB
Project Plan: Weather Data (Day 25)
Metadata
| Key | Value |
|---|---|
| ID | PP-001 |
| CrossReference | BC-001, SA-001, DICT-001, MIL-001, MIL-002, MIL-003, MIL-004, MIL-005 |
| Language | en |
| Domain | it |
Version History
| Date | Status | Author | Reviewer | Change | Commit |
|---|---|---|---|---|---|
| 2026-10-13 | Accepted | Jens Tirsvad Nielsen | S01 | Initial version; accepted by S01 (Product Owner) in chat on 2026-10-13 | pending |
Purpose
This plan schedules the five milestones that deliver the Weather Data (Day 25) repository of BC-001. The milestones set up the repository, read the weather file with the csv library, read and analyse it with pandas, create and export a DataFrame with a main flow that prints the results, and finish the repository with a screenshot, a wiki in three languages and an end-to-end check. Each milestone is one gateway document, one branch and one pull request, so that every step is kept track of and reviewed before the next one starts.
Planning Assumptions
- The phase starts 2026-10-14 and ends by 2026-10-23. All dates are proposed and need the Product Owner's confirmation (see Open Issues).
- Phase length: two days per milestone, sized for the spare time of S01, who owns every phase (SA-001).
- One branch per milestone, named after it (
mil-001-project-foundationand so on), and one pull request that closes the issues of that milestone with oneCloses #Nline each. The planning documents themselves are delivered on the branchplan-baseline. - S01 switched on autonomous mode in chat on 2026-10-13 (see
AGENTS.md, Modes): S01's acceptance of this plan is the request, and the commit, the push, the pull request and its merge follow without further asking. The reviews are done by the assistant as stand-in for S01 and are not independent; each record saysMode: autonomous, not independent. - The plan gate is enabled for commits in this clone: a commit that changes
src/ortests/needs aTask: MIL-NNN#Ntrailer for an accepted, reviewed milestone. - The tokens in
.envare used only by commands that the assistant runs (repository description and topics, sync of issues); the project never imports, tests or tracks the file. - The lecture summaries in the request (reading CSV data, then
DataFrameandSeries) are the specification; the two lectures are planned together because the second continues the first.
Gateway Schedule
| Gateway | Document | Window | Decision date | Owner | Stories | Main deliverable | Milestone |
|---|---|---|---|---|---|---|---|
| Project foundation | MIL-001 | 2026-10-14 to 2026-10-15 | 2026-10-15 | S01 | None (see Open Issues) | pyproject.toml, .gitignore, constants.py, README, Doxyfile, CI workflow, repository description and topics |
|
| Read with the csv library | MIL-002 | 2026-10-16 to 2026-10-17 | 2026-10-17 | S01 | None (see Open Issues) | weather_data.csv, read_rows and read_temperatures, with tests |
|
| Read and analyse with pandas | MIL-003 | 2026-10-18 to 2026-10-19 | 2026-10-19 | S01 | None (see Open Issues) | read_data, conversions, average, maximum, row selection, Fahrenheit, with tests |
|
| Create and export a DataFrame | MIL-004 | 2026-10-20 to 2026-10-21 | 2026-10-21 | S01 | None (see Open Issues) | create_scores_frame, export_frame, python -m weather, with tests |
|
| Screenshot, wiki and finish | MIL-005 | 2026-10-22 to 2026-10-23 | 2026-10-23 | S01 | None (see Open Issues) | Screenshot in README and wiki; wiki in English, Danish and Bahasa Melayu; end-to-end verification |
@startgantt
Project starts 2026-10-14
[MIL-001 Project foundation] starts 2026-10-14 and ends 2026-10-15
[MIL-002 Read with the csv library] starts 2026-10-16 and ends 2026-10-17
[MIL-003 Read and analyse with pandas] starts 2026-10-18 and ends 2026-10-19
[MIL-004 Create and export a DataFrame] starts 2026-10-20 and ends 2026-10-21
[MIL-005 Screenshot, wiki and finish] starts 2026-10-22 and ends 2026-10-23
[MIL-001 Go/No-Go] happens 2026-10-15
[MIL-002 Go/No-Go] happens 2026-10-17
[MIL-003 Go/No-Go] happens 2026-10-19
[MIL-004 Go/No-Go] happens 2026-10-21
[MIL-005 Go/No-Go] happens 2026-10-23
@endgantt
Scope Coverage
| Business Case scope item | Gateway |
|---|---|
Constants in constants.py; src/, tests/, docs/ layout |
MIL-001, extended in MIL-002 to MIL-004 |
pyproject.toml, Python .gitignore, Doxyfile, README, continuous integration workflow |
MIL-001, README finished in MIL-005 |
| Repository description and topics | MIL-001 (task 7), checked again in MIL-005 |
The data file weather_data.csv |
MIL-002 |
Lecture "Reading CSV data": reading with the csv library, temperatures as integers |
MIL-002 |
Lecture "Reading CSV data": reading with pandas in one line |
MIL-003 |
Lecture "DataFrame and Series": types, to_dict, to_list, average, maximum, row selection, Fahrenheit |
MIL-003 |
Lecture "DataFrame and Series": creating a DataFrame from a dictionary and exporting it with to_csv |
MIL-004 |
| A main flow that prints the results | MIL-004 |
| Screenshot in the README and on the wiki | MIL-005 |
| Wiki in English, Danish and Bahasa Melayu | MIL-005 |
Dependencies
MIL-001 → MIL-002 → MIL-003 → MIL-004 → MIL-005
A No-Go on a gateway returns it to S01 for rework and moves every later date by the same number of days; no buffer day is planned.
Plan Risks
| Risk | Impact | Mitigation |
|---|---|---|
| The planning documents take longer to review than the work left on the code | The first gateway slips | Review BC-001, SA-001 and this plan together in one sitting; keep the milestones small |
| Author and reviewer are the same person (S01) | A review can miss a defect | Use the QC checklists and the pull request as the second look; recorded in BC-001 |
| The git host has no Actions runner | The CI workflow is never executed | Run the same commands locally before each pull request |
| Lecture details are only available as the summaries in the request | The code differs from the video | S01 compares the finished program with the video at the MIL-003 and MIL-004 Go/No-Go |
| The sync matches issues by title, so a title used twice overwrites an issue | A task disappears from the board | Every task title is unique across all milestones; check before each --apply |
pandas does not install on Python 3.13 on a platform |
The pandas milestones cannot be tested there |
pandas is an extra, the csv part stays testable; reported, not worked around |
| The screenshot is a capture of a real terminal window, which needs a display | It cannot be repeated in CI | Taken once on S01's machine with a one-off script outside the repository and committed as a file |
| The wiki publish workflow needs a secret of the organization | The wiki stays empty | Reported to S01, never worked around; the pages are files in wiki/ and are not lost |
Open Issues
- Dates: the start date, milestone lengths and the end date 2026-10-23 are proposed and not given by the Product Owner; confirm or replace them.
- Product Owner (PO) language: English, recorded as
enindocs/artifact-registry.md(the request and the other repositories of the course are in English); confirm. - Stakeholder levels: the Power and Interest levels of S02 and S03 in SA-001 are proposals.
- Repository: the request names the organization page
https://git.tirsystem.com/Tirsvad-Udemy-100_days_of_code(underscores). The repository oforiginisTirsvad-Udemy-100-days-of-code/025-weather, already created and empty; the description and topics are set there. - Working folder: the session started in
024-snake(a finished project); the work is done in the025-weatherclone, which S01 selected in chat. pandasand "no runtime dependencies": the lectures needpandas. The plan keeps[project].dependenciesempty and makespandasan optional extra (also indev), so S03 gets acsvpart with nothing to install. The alternative ispandasas a normal dependency. Confirm.- Place of the data file:
weather_data.csvis kept next to the code insrc/weather/, so the default path works from any folder and the layout stayssrc/,tests/,docs/. Confirm, or ask for adata/folder. - Names: the lectures use script variables, not functions. The functions of the plan (
read_rows,read_temperatures,read_data,to_data_dict,to_temp_list,average_temp,average_temp_mean,max_temp,row_for_day,hottest_row,day_in_fahrenheit,create_scores_frame,export_frame) are proposals that wrap the lectures' expressions; the lectures' variable names are used inside them. Confirm. - "Python greater than 3.13": read as Python 3.13 or newer (
requires-python = ">=3.13"). Confirm. - README template: the Product Owner's README template is used. It differs from
framework/templates/README-template.md, soframework/scripts/check-readme.shstays off. - Screenshot: the program is a command-line program, so the screenshot is of a terminal window running
python -m weather, not of a graphical window. Confirm. - No user story or use case: the tasks are written as build and check steps, so they are plain technical tasks.
- Governance and traceability matrix:
GOVandTMdo not exist in this project; the plan proceeds without them and records each review as anRC-*. - Diagram check: the Gantt chart above was not rendered because no PlantUML server is configured (
PLANTUML_URL); render it before the review. - Sync:
sync-project.sh --applyis run withGITEA_TOKENfrom the personal.envafter the plan is accepted; the sync matches issues by title.