Public: anyone can read this; the crew can change it.

Milestones: the plan as limbs with weights, and one milestone's progress read from its dependency tree #731

shipped production is serving it opened this
opened this

Pillar: P0 Trust (umbrella #586), with the alignment set (#610, #611). Builds on #610 (pull #708) and #612 (pull #706).

The owner, 2026-10-05: "is there a milestone I can watch? this is where the issue dependency view is interesting. are milestones implemented? that would be a great way to see a high level." And: "that might also help me arbor the tree. There is a lot ... it's harder to make impactful decisions. I want to trim at a limb, not each leaf."

Outcome (what a person sees). The whole plan on one phone screen as a handful of limbs, each one line with its weight. He opens a limb and sees how far it is, who is building, what is stuck, and when it will land at this week's pace.

Today. Milestones are not a feature. Umbrella issues with dependency trees are: the pillar umbrellas #586 to #593, and trees inside them such as #603 with its twelve blockers. The map draws every leaf; nothing says "this limb is 7 of 12 done".

What a milestone is. Any issue that waits for other issues. Its tree is everything it waits for, directly or through others. Nothing is stored: it is read from the dependency edges. The top-level limbs are the pillar umbrellas and Later (src/core/pillars.ts); in a repository with no pillars they are the issues that wait for others and that nothing waits for.

Acceptance.

  • [ ] /:owner/:name/milestones shows the top-level limbs, collapsed: each one line with its name, done / total, open issues beneath it, how many are building, spend so far (only for a person who may see owner facts), and its last movement. The whole list fits one phone screen for a plan of about ten limbs.
  • [ ] /:owner/:name/milestones/:number is one milestone: done / total; what is building now and by whom; what is blocked and on what; what merged in the last 7 days; and a plain estimate from recent throughput ("about N days at this week's pace"), or a sentence that says there is no pace to estimate from. Its own limbs are collapsed lines with the same weights; leaves appear only when a limb is opened.
  • [ ] A limb with open work and nothing merged for 7 days, or with many open leaves and nobody building, is flagged as a candidate to trim, and says which of the two.
  • [ ] One tap from the map (each pillar in "By pillar"), from the board (each pillar in the 7-day line), and from the issue page of any issue that waits for others.
  • [ ] An MCP tool and GET /api/v1/repos/:owner/:name/milestones (and /:number) return the same numbers as the page.
  • [ ] Read-only. No watch button and no limb actions in this pull: they are the next two issues.
  • [ ] Every read is bounded: one pass over the repository's graph, no query per issue.

Contract (the owner's rule, docs/VISION.md).

  • [ ] One interface per job. If this screen or control does a job another one already does, keep the better and delete the other in this same pull.
  • [ ] Minimal, not bare: every element earns its place; white space at every width; nothing shown that the person does not need now.
  • [ ] One primary next action on the screen, and the pull's looks show the path below at phone and desktop widths.
  • [ ] The pull says what it removes for every screen or control it adds.

The path: the owner on the map, the board or an issue asks "how far is this?"; the one action is open the milestone; he sees its limbs and opens one.

Done means reachable (all four, or the pull says which one does not apply and why):

  • Page: /:owner/:name/milestones and /:owner/:name/milestones/:number
  • MCP: a milestones read with the same numbers
  • Test: done / total, building, blocked-on, merged and the estimate on a fixture tree; the trim flag; a reader does not see spend
  • Look: the limbs list and one milestone, phone and desktop, on the pull

Start from: src/core/dependencies.ts (repoGraph, readyNow, blockedOn), src/core/pillars.ts, src/web/pages/map.ts (marksFor, wordFor, pillarRows), src/web/pages/board.ts, src/web/pages/thread.ts (the "Depends on" card), src/core/usage.ts, src/http/mcp.ts.

Must not touch: the release workflow, the chart (charts/), other repositories.

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs