Tab · Product

Roadmap

The single source of truth for what's shipped vs. what's queued. Phases, progress bars, and a track filter — generated from docs/roadmap.md and reflected into TODO.md on every PR.

See it in motion

Where to find it

  • Localhost: http://localhost:4000/roadmap.html?repo=<id>
  • Source: Generated from docs/roadmap.md. TODO.md is the regenerated view that AI agents read.
  • Keyboard: K then roadmap, or g r jumps direct.
  • Sidebar: Product → Roadmap (first item).

What it does for you

You'll know what's shipped vs. queued.Phase-by-phase progress bars with shipped (✅) vs. in-flight (🚧) vs. queued (⏳). No drift between the website and the brain — they read the same source.
You'll see the receipts.Each row links to the PR that shipped it, the feature doc that describes it, and the plan doc that scoped it. You can trace any checkbox back to the conversation it came from.
Your AI reads the same plan.TODO.md regenerates from this file on every PR. Hand your agent the roadmap and it knows exactly which phase to extend.

Configure

Nothing — the roadmap is a flat .md. Edits flow through the standard PR process.

  • Edit docs/roadmap.md in a state-doc PR — these auto-merge in minutes.
  • Run npm run sync-todo to regenerate TODO.md. The generated-view CI gate enforces this.
  • Status drift is a defect — flip a row to ✅ in the same PR that ships the code.

Use it well

  1. Edit the roadmap in a dedicated state-doc PR.

    Don't bundle a roadmap change into a feature PR — feature branches are long-lived and silently roll back sibling roadmap updates on main.
  2. Flip the checkbox in the same PR that ships the code.

    Every shipped feature moves its row to ✅ atomically. A row showing 🚧/⏳ for done work is a defect, not a cosmetic lag.
  3. Link every row to receipts.

    Each entry should link the PR, the feature doc, and the plan doc. Tracing a checkbox back to the conversation it came from is what makes this a brain, not a TODO list.
  4. Run sync-todo on every roadmap edit.

    CI's generated-view gate enforces it. The regenerated TODO.md is what your AI reads next time it walks in cold.

Examples

Adding a new phase
New phase = new ## ⏳ Phase N — <Name> heading + sub-checklist. Link to a plan doc at docs/plans/phase-N-<slug>.md. Run npm run sync-todo. State-doc PR. Auto-merges.
When the roadmap and the live tabs disagree
That's a status-drift defect. Open the offending feature's row, check the actual surface, and fix the row in the same PR. CI's surface-drift gate catches the worst of it; the rest is process.

Read more