018. Roadmap format: GitHub Milestones plus Project Horizon field
- Date: 2026-07-18
- Status: Accepted
Decision
Section titled “Decision”In the context ofneeding an operator-facing roadmap that shows what we are driving at now versus next versus later, groups open Features/Stories into deliverable milestones, and is backed by explicit inter-issue dependencies (story #222, Sprint 4 retro action A8),facinga choice between GitHub-native mechanisms and a generated or hand-maintained document on the Starlight site or in the LikeC4 model, where cheap-to-maintain and close-to-the-backlog are the deciding criteria,we decided forGitHub as the system of record, in three native pieces with no build artifact:- Named Milestones as durable deliverable units (e.g. “Query API GA”, “QA env live”); open milestones are the roadmap.
- A Project single-select field
Horizon= Now / Next / Later on Project #1 (rag-sample planning) that buckets issues into the three-state view. The default board groups byHorizon(the now/next/later glance); a second saved view groups byMilestone(the deliverable breakdown). - Native issue dependencies (
blocked-by/blocking) as the first-class edges, surfaced as a “Blocked by” badge on each card so a horizon ordering that violates a dependency is visible.
and neglected- Three Milestones literally named Now/Next/Later (horizons are the milestones) — cheapest, but collapses “what” and “when” onto one axis and loses the named deliverable milestones the dashboard row promises
- Mermaid Gantt/timeline page on the Starlight site — implies start/end dates the backlog does not carry (invented dates rot), and drifts unless generated, where generation adds a build+refresh cost that duplicates issue data
- A LikeC4 roadmap view — an architecture-modeling tool used off-label; dependencies would be modeled separately from the issues, guaranteeing drift
- A hand-maintained roadmap doc — highest drift of all
to achievea roadmap whose data lives on the issues themselves: no sync step, no generated file to regenerate, and dependencies captured once as GitHub relationships that feed both the tooling and any future visual,acceptingthat the view depends on GitHub Projects v2 (already the ticketing system per org ADR 005) and that theHorizonfield is set per issue by hand, and that there is no dated timeline layout until the backlog carries dates.
Consequences
Section titled “Consequences”- A generated Mermaid dependency DAG committed to the Starlight site (via a
make roadmaptarget queryinggh) is deferred; revisit only if the native Project view proves insufficient after the edges are populated. - No change to the app repo; this is a planning-repo tooling decision that builds on org ADR 005 (GitHub Issues and Projects).
© 2026 Benjamin Arunski