Time-box: 60–75 minutes
Milestone: turn a validated list of task dictionaries into useful topic, tag,
duration, and fitted-session views without changing the original plan.
Companion learning path: Python From First Principles. If Python or Git is not ready yet, use the free installation guide.
On GitHub, select Use this template → Create a new repository, then clone your new repository and work in that copy. The starting red checks are intentional; your goal is to turn them green and complete the two human-review gates in MASTERY.md.
Every task has four fields:
{
"topic": "Functions",
"minutes": 30,
"done": False,
"tags": ["core", "practice"],
}The plan is a list because task order matters. A task is a dictionary because its fields have names. Unique tags are a set because duplicates do not matter.
python3 -B -I tests/run_tests.pyThe untouched starter has exactly four intentional test_todo_... failures. Its
data validation tests should already pass. Complete these functions in
study_planner.py:
unfinished_topics(tasks);unique_tags(tasks);total_minutes(tasks, include_done=False);fit_session(tasks, available_minutes).
fit_session visits unfinished tasks in their existing order. It includes a task if
it fits the minutes still available, and skips one that does not. Return copied task
records so editing a result cannot edit the source plan by accident.
- Unfinished topic names stay in plan order.
- Tags are stripped, case-folded, and unique.
- The default total excludes completed tasks;
include_done=Trueincludes them. - A zero-minute session returns an empty list.
- Fitting a session never mutates or aliases the original task records or tag lists.
- Invalid records and time limits fail with messages naming the bad field.
python3 -B -I tests/run_tests.pyexits successfully.
Then finish MASTERY.md.
-
Create your own copy from this template.
-
Read MASTERY.md, then create an attempt branch:
git switch -c attempt/my-project
-
Build the project and run the same check GitHub uses:
python3 -B -I tests/run_tests.py
-
Commit and push the attempt branch:
git add . git commit -m "Complete project attempt" git push -u origin attempt/my-project
GitHub Actions grades every pushed attempt automatically. PASS — NAILED IT means every required check passed. REVISE — KEEP BUILDING means the run shows what to fix before you push again. You do not need the KODE Ń VIBE owner to review or start anything; the template's main branch stays quiet on purpose.
The free grading guide explains the result and its limits.