I2471 — The roadmap opens a milestone: what it holds, what can start, its critical path, and what it waits for
Let a reader of majordomus ui open any milestone of the plan (/ui/roadmap?milestone=M004) into an inspector that shows its issues and where each stands, the issues that can start now, the longest chain of open work through it, the intents its issues serve, and the milestones it waits for, is blocked by and unblocks, every one of them a link.
DONE wave 3 · p1 · implementation profile · runs alone
Part of development-runtime — The runtime has a development surface.
Objective
Let a reader of majordomus ui open any milestone of the plan (/ui/roadmap?milestone=M004) into an inspector that shows its issues and where each stands, the issues that can start now, the longest chain of open work through it, the intents its issues serve, and the milestones it waits for, is blocked by and unblocks, every one of them a link.
Why
The owner asked on 2026-10-11 to implement every view of the UI screenshots, maximally interactive and clickable (reference campaigns/majordomus-ui-unified-real-data-v2-20261011/reference/10-roadmap-detail.png; pack v3 M06-02 and M06-03, assigned to f9 by d3). I2462 draws the milestones as a sequence and a dependency graph whose nodes lead to an anchor of the same page and no further. plan.roadmap already answers each milestone's status, order, priority, depends_on, blocked_by, dependents, counts by status and its issues, and plan.issues answers every issue with its dependencies and the intents it serves.
Current state
A milestone is a row and a graph node; neither opens anything.
Desired state
?milestone=ID opens the inspector above the roadmap, asked from plan.roadmap and plan.issues in the same first paint (plan.issues only when a milestone is picked). It shows the milestone's order, priority and status, how many of its issues are done as a meter, the issues ready now, how many are blocked, the milestones it waits for, is blocked by and unblocks, the intents its issues serve, its critical path (the longest chain of open issues by depends_on within it; a cycle ends a chain), and its issues with status, priority, wave and what blocks each. Every issue leads to its inspector on the PR Drain and every milestone to its own. The roadmap's graph nodes and the milestone rows of the Roadmap and the Dashboard lead to the inspector. An id the plan does not hold is said to be unknown; a value that is not a milestone id is dropped.
Scope
- apps/majordomus-cli/src/ui/milestone.rs
- apps/majordomus-cli/src/ui/roadmap.rs
- apps/majordomus-cli/src/ui/dashboard.rs
- apps/majordomus-cli/src/ui/mod.rs
- .ai/repo/project/issues/I2471.yaml
- docs/MAJORDOMUS_UI.md
- test/cases/1076_the_roadmap_opens_a_milestone.sh
Dependencies
What waits on this
- I2472DONE How long CI takes is measured, from when each run started to when it completed, and the CI/CD screen draws it
- I2475DONE The issues are browsed: every issue of the plan by status, milestone, priority or text, each a link onward
- I2476DONE An intent opens what serves it: its statement, its criteria and their evidence, and the milestones and issues that serve it
Acceptance criteria
- /ui/roadmap?milestone=<id> answers 200 with the milestone's inspector, its issues each a link to /ui/prs?issue=<id>, and its neighbouring milestones each a link to their own inspector
- the critical path is the longest chain of open issues within the milestone, in dependency order
- an id the plan does not hold says so, and a value that is not a milestone id opens nothing
- the roadmap's graph nodes and milestone rows lead to the inspector
Validation
- cargo test --lib ui::
- test/run.sh 1076_the_roadmap_opens_a_milestone
Evidence required
- ui_milestone_unit_tests
- ui_milestone_case_1076
Evidence
| covers | type | command | result | at commit |
|---|---|---|---|---|
| ui_milestone_unit_tests | ci | cargo test --lib ui::milestone (validate run 38223440282 on 722228ef3c, the v0.21.0 top) | 5 ui::milestone tests ok | 722228e |
| ui_milestone_case_1076 | ci | test/run.sh 1076_the_roadmap_opens_a_milestone (validate run 38223440282 on 722228ef3c, the v0.21.0 top) | case 1076_the_roadmap_opens_a_milestone ok | 722228e |
Timeline
- started
- 2026-10-12T11:01:59Z
- verified
- 2026-10-12T11:02:03Z
- completed
- 2026-10-12T11:02:16Z
Those three fields, the evidence above and the state of the dependencies are all the status is made of. There is no status field to disagree with them.
Canonical record: .ai/repo/project/issues/I2471.yaml. Read it back with majordomus plan show I2471.