Implement reading the wave's issues from GitHub and ordering them by dependency (Spec §4.2 steps 1, 3–4). A wave = all GitHub milestones sharing a name across the project's repos (Spec §16.1); this issue reads those issues and produces the algorithmic work order the loop consumes.
Spec §4.2 (steps 1, 3, 4 — sync, plan-check, order), §16.1 (GitHub authoritative for waves), §16.3 (waves derivation), §8 (GitHub is source of truth for what is done).
Acceptance criteria
Notes
This complements #13 (push/PR-only hand-off client) by adding the read side the wave loop needs. Notion mirroring of this state is Phase 5 — not in scope here.
Depends on: #13, #4
Implement reading the wave's issues from GitHub and ordering them by dependency (Spec §4.2 steps 1, 3–4). A wave = all GitHub milestones sharing a name across the project's repos (Spec §16.1); this issue reads those issues and produces the algorithmic work order the loop consumes.
Spec §4.2 (steps 1, 3, 4 — sync, plan-check, order), §16.1 (GitHub authoritative for waves), §16.3 (
wavesderivation), §8 (GitHub is source of truth for what is done).Acceptance criteria
project.yamlwaves.source: milestone-namedefault, project.yaml Pydantic schema and fail-fast loader #4).Depends on: #Ndeclarations and produces a dependency-ordered work list (algorithmic, no AI — Spec Principle 1).waves).Notes
This complements #13 (push/PR-only hand-off client) by adding the read side the wave loop needs. Notion mirroring of this state is Phase 5 — not in scope here.
Depends on: #13, #4