Issue & Milestone Management
This document defines how GitHub Issues and Milestones are used to plan and track work in this project.
1. Core Principles
-
Flat issues only — No Epic hierarchy. Every issue is a directly actionable work unit.
-
Milestones carry due dates — Issues do not have individual due dates. Milestones define "what ships when."
-
Milestone = scheduled, No milestone = backlog — If an issue has a milestone, it is committed to a time frame. If not, it is in the backlog with no scheduled delivery.
-
Define milestones just-in-time — Only the next 1–2 milestones should be concretely defined. Do not create milestones for the distant future.
2. Milestones
2.1. Naming
Milestones use semantic versioning: v0.3.0, v1.0.0, etc. Each milestone corresponds to a release or a meaningful deliverable.
2.2. Lifecycle
| State | Meaning |
|---|---|
Open (with due date) |
Active or upcoming. Issues are being worked on or planned. |
Closed |
All issues completed and the release is shipped. |
-
When all issues in a milestone are done, close the milestone.
-
Update due dates when schedules change rather than leaving stale dates.
-
Delete milestones that are no longer relevant (e.g., plans changed significantly).
3. Issues
3.1. Granularity
One issue = one actionable piece of work. This can range from a small bug fix to a large feature, as long as it is a coherent unit.
For large features, use a single issue with a checklist in the body to track sub-tasks:
## Sub-tasks
- [ ] Database schema changes
- [ ] Backend API
- [ ] Flutter UI
- [ ] Tests
Split into multiple issues only when sub-tasks need independent tracking (e.g., assigned to different people or different milestones).
3.2. Labels
| Label | Usage |
|---|---|
|
A user-facing feature or significant capability. |
|
Internal task: refactoring, infrastructure, tooling. |
|
Something is broken. |
|
Improvement to an existing feature. |
|
Technology area: |
|
Urgency level (P0 = critical, P3 = low). |
4. Workflow
4.1. Planning a milestone
-
Review backlog issues and recent feedback.
-
Create a milestone with a version number and realistic due date.
-
Assign issues to the milestone.
-
Begin work, updating issue status as you go.