idd-reads-at-a-glance — The intent workspace reads at a glance and leads everywhere it names
The workspace reads in the order a person asks (what the intent is, what is missing, what to do next, the work, the evidence), every id on it is a link, its numbers are the intent's, its texts render through the UI's one prose renderer, it offers one primary action, and audit rules keep bare ids and raw markdown off every /ui page from now on.
ACTIVE 6 of 24 issues done
- ready
- 18
- blocked
- 0
- active
- 0
- verify
- 0
- done
- 6
- cancelled
- 0
Problem
On 2026-10-18 the owner read the published /ui/idd three times and called it unergonomic: one tall column of panels, a source footer under every one, ids that lead nowhere, headline numbers that count the whole plan rather than the intent on the screen, two badge styles, full panels for empty answers, raw markdown and internal names, no primary action, and a move on the snapshot that looks clickable and is not. Under the surface the screen restates rules the plan owns: the issue id grammar, which status admits which move, the stage names.
Outcome
The workspace reads in the order a person asks (what the intent is, what is missing, what to do next, the work, the evidence), every id on it is a link, its numbers are the intent's, its texts render through the UI's one prose renderer, it offers one primary action, and audit rules keep bare ids and raw markdown off every /ui page from now on.
Current state
/ui/idd composes the plan's capabilities correctly (milestone idd-workspace) but presents them as a stacked list of panels in capability order, with the gaps the owner named.
Desired state
Each gap is closed by its own issue (I2901-I2919, I3000-I3005), each held by case 3220, the ui audit of /ui/idd at every width, or a rule that holds every /ui page.
Scope
- apps/majordomus-cli/src/ui
- share/ui
- scripts/lib
- test/cases/3220_the_idd_loop_is_walked_in_a_browser.sh
- .ai/repo/project
Out of scope
- A second plan engine, status vocabulary or markdown implementation
- Mutation from the published site
Acceptance criteria
- scripts/ui audit --only /ui/idd finds nothing at any width, with the bare-issue-id and raw-markdown rules on
- Case 3220 walks the loop through the new labels, order and primary action
Validation
- majordomus plan validate
- majordomus intent validate
- scripts/ui audit --only /ui/idd
Risks
- Every issue edits apps/majordomus-cli/src/ui/idd.rs; they land one at a time in the order recorded, each rebased on the last.
Issues
Each one is an execution contract with its own acceptance criteria, validation command and required evidence. The wave column is the layer of the dependency graph it sits in.
| issue | status | wave | depends on | title |
|---|---|---|---|---|
| I2901 | READY | 0 | — | One grammar names an issue id, and every surface reads it |
| I2902 | READY | 0 | — | A status names the moves it admits, and every surface reads that |
| I2903 | READY | 0 | — | The workspace prefers stages by IntentStage, not by strings |
| I2904 | READY | 0 | — | An intent whose criteria are met while its milestones hold open issues says so |
| I2906 | READY | 5 | I2812 | Every id and chip on the workspace leads to its record |
| I2907 | DONE | 5 | I2812 | The workspace's headline numbers are the chosen intent's |
| I2908 | READY | 0 | — | Stage and verdict wear the kit's one badge |
| I2909 | READY | 0 | — | A panel with nothing to show is one sentence |
| I2910 | READY | 0 | — | A move on the published workspace reads \"live only\" |
| I2911 | READY | 0 | — | The workspace is a list and its chosen intent side by side |
| I2912 | READY | 0 | — | A screen's sources are one disclosure, not a footer per panel |
| I2913 | READY | 0 | — | Each intent in the list shows its progress |
| I2914 | READY | 0 | — | No /ui page shows an issue id that leads nowhere |
| I2915 | DONE | 0 | — | The workspace speaks in plain words |
| I2916 | DONE | 0 | — | The workspace reads in the order a person asks |
| I2917 | DONE | 0 | — | Each intent has one primary action |
| I2918 | READY | 0 | — | The issue list filters by status |
| I2919 | READY | 0 | — | The graph and the intent list respond to a hand and a keyboard |
| I3000 | DONE | 0 | — | The workspace's record texts are drawn as prose |
| I3001 | DONE | 0 | — | The intent is the page's title, and panels ask questions |
| I3002 | READY | 0 | — | A command to reproduce is a code block a reader can copy |
| I3003 | READY | 0 | — | The workspace's prose is set for reading |
| I3004 | READY | 0 | — | No raw markdown reaches a /ui page |
| I3005 | READY | 0 | — | Code on the UI has one highlighter |
The graph
flowchart LR
I2901["I2901<br/>One grammar names an issue id, and every surface reads it"]:::ready
I2902["I2902<br/>A status names the moves it admits, and every surface reads that"]:::ready
I2903["I2903<br/>The workspace prefers stages by IntentStage, not by strings"]:::ready
I2904["I2904<br/>An intent whose criteria are met while its milestones hold open issues says so"]:::ready
I2906["I2906<br/>Every id and chip on the workspace leads to its record"]:::ready
I2907["I2907<br/>The workspace's headline numbers are the chosen intent's"]:::done
I2908["I2908<br/>Stage and verdict wear the kit's one badge"]:::ready
I2909["I2909<br/>A panel with nothing to show is one sentence"]:::ready
I2910["I2910<br/>A move on the published workspace reads \"live only\""]:::ready
I2911["I2911<br/>The workspace is a list and its chosen intent side by side"]:::ready
I2912["I2912<br/>A screen's sources are one disclosure, not a footer per panel"]:::ready
I2913["I2913<br/>Each intent in the list shows its progress"]:::ready
I2914["I2914<br/>No /ui page shows an issue id that leads nowhere"]:::ready
I2915["I2915<br/>The workspace speaks in plain words"]:::done
I2916["I2916<br/>The workspace reads in the order a person asks"]:::done
I2917["I2917<br/>Each intent has one primary action"]:::done
I2918["I2918<br/>The issue list filters by status"]:::ready
I2919["I2919<br/>The graph and the intent list respond to a hand and a keyboard"]:::ready
I3000["I3000<br/>The workspace's record texts are drawn as prose"]:::done
I3001["I3001<br/>The intent is the page's title, and panels ask questions"]:::done
I3002["I3002<br/>A command to reproduce is a code block a reader can copy"]:::ready
I3003["I3003<br/>The workspace's prose is set for reading"]:::ready
I3004["I3004<br/>No raw markdown reaches a /ui page"]:::ready
I3005["I3005<br/>Code on the UI has one highlighter"]:::ready
classDef done stroke:#16a34a,fill:#dcfce7,color:#14532d,stroke-width:2px
classDef active stroke:#2563eb,fill:#eff6ff,color:#1e3a8a,stroke-width:2px
classDef verify stroke:#7c3aed,fill:#f5f3ff,color:#4c1d95,stroke-width:2px
classDef ready stroke:#0891b2,fill:#ecfeff,color:#164e63,stroke-width:2px
classDef planned stroke:#0891b2,fill:#ecfeff,color:#164e63,stroke-width:2px
classDef blocked stroke:#b45309,fill:#fffbeb,color:#78350f,stroke-width:2px
classDef cancelled stroke:#6b7280,fill:#f9fafb,color:#374151,stroke-width:2px
classDef superseded stroke:#6b7280,fill:#f9fafb,color:#374151,stroke-width:2pxLinked from this diagram (24)
- I2901 One grammar names an issue id, and every surface reads it
- I2902 A status names the moves it admits, and every surface reads that
- I2903 The workspace prefers stages by IntentStage, not by strings
- I2904 An intent whose criteria are met while its milestones hold open issues says so
- I2906 Every id and chip on the workspace leads to its record
- I2907 The workspace's headline numbers are the chosen intent's
- I2908 Stage and verdict wear the kit's one badge
- I2909 A panel with nothing to show is one sentence
- I2910 A move on the published workspace reads \"live only\"
- I2911 The workspace is a list and its chosen intent side by side
- I2912 A screen's sources are one disclosure, not a footer per panel
- I2913 Each intent in the list shows its progress
- I2914 No /ui page shows an issue id that leads nowhere
- I2915 The workspace speaks in plain words
- I2916 The workspace reads in the order a person asks
- I2917 Each intent has one primary action
- I2918 The issue list filters by status
- I2919 The graph and the intent list respond to a hand and a keyboard
- I3000 The workspace's record texts are drawn as prose
- I3001 The intent is the page's title, and panels ask questions
- I3002 A command to reproduce is a code block a reader can copy
- I3003 The workspace's prose is set for reading
- I3004 No raw markdown reaches a /ui page
- I3005 Code on the UI has one highlighter
Canonical record: .ai/repo/project/milestones/idd-reads-at-a-glance.yaml. Read it back with majordomus plan show idd-reads-at-a-glance.