A snapshot: read at commit 707a04c7ce8 on 2026-10-18T00:06:01Z by majordomus 0.29.0. Nothing on this page is read again. See it live
I2470
The pull requests drain in the UI: a queue a reader narrows, inspects and follows to what each depends on
Where it stands
devtask.issue- Readiness
- complete completion is recorded and every required evidence token is present
- Status
- DONE
- Can start
- not now
- Milestone
- Milestone status
- ACTIVE
- Wave
2- Waiting on
- none
- Holds back
- Behind it in all
6- Evidence
2of2
Moves
plan.transitionWhat it is
- Objective
- Give majordomus ui a PR Drain screen (/ui/prs) that shows every open pull request as the integration lane assessed it, lets the reader narrow it by disposition, lane and text, inspect one pull request and the plan issue it names, and follow each dependency and overlap to the pull request it leads to; every control is a link or a GET form, so every view has an address and the screen is complete without JavaScript.
- Why
- The owner asked on 2026-10-11 to implement every component and view of the UI screenshots, maximally interactive and clickable (references campaigns/majordomus-ui-unified-real-data-v2-20261011/reference/03-pr-drain.png and 05-issues-and-prs.png; pack v3 milestone M05). I2462 (PR #948) shows the queue as a table on /ui/work with one pull request's detail; nothing in it narrows, searches or leads anywhere but back to it. The data for the rest exists in integration.queue: tallies by disposition and lane, next_merge, next_refresh, starving, last_merge, and per pull request its dependencies (certainty, state, satisfied), overlaps (with the shared paths), risk factors, required checks, review and how long it has been actionable; plan.issues holds every issue with its dependencies, dependents, the intents it serves and its evidence counts.
- Now
- The queue is a table of rows that each open one detail on /ui/work; there are no tabs, no search, no dependency or overlap navigation, no blockers view and no issue view.
- Wanted
- /ui/prs paints at once (plan.status, plan.issues) and fills the drain from /ui/panels/drain after the paint, because integration.queue asks the forge. The drain shows the lane's tallies (each a link to the lane it counts), what the lane does next (next merge, next refresh, starving, last merge, each pull request a link), the queue's own dispositions as tabs with their counts, a search over title, branch, author and number, the admitted pull requests in rank order, the blockers (conflicting or needing a repair, with what would move each), and a graph of which open pull request depends on which (a merged dependency is not drawn; one the queue does not hold is drawn small and leads to the forge). ?pr=N opens the inspector: badges, next action, reasons and since when it is actionable, the plan issues its title or branch names (each a link to that issue), gates, dependencies and overlaps (each a link to that pull request, or to the forge when it is not open), risk factors, evidence and authored paths, and a link to the pull request on the forge. ?issue=ID opens the issue: its objective, status, milestone, what it depends on, is blocked by and unblocks (each a link), the intents it serves, its scope, its evidence as a meter and its dates, and a link to the pull requests that name it. The Dashboard's queue rows lead here. A forge nobody observed says so and shows no number; a value a link carries that is not the queue's word or an issue id is dropped.
- Done when
- unknown: the record declares no `completion`
- Risk
- unknown: the record declares no `risk`
Acceptance
- /ui/prs answers 200 with a hero and a drain panel deferred to /ui/panels/drain, carrying the reader's choices in its query
- the drain's tabs are the queue's own dispositions with their counts, and each narrows the rows; the search finds a title, a branch, an author or a number
- /ui/prs?pr=N opens the inspector, with dependencies and overlaps leading to their pull requests, the forge link, and the issues the title names; a number the queue did not observe says so
- /ui/prs?issue=ID opens the issue with its dependencies and dependents as links; an id the plan does not hold says so
- the graph draws only open dependencies, and a forge that was not observed shows no tab and no number
- Validation
cargo test --lib ui::test/run.sh 1075_the_pull_requests_drain_in_the_ui- Evidence required
ui_prs_unit_testsui_prs_case_1075- Evidence present
ui_prs_unit_testsui_prs_case_1075
Scope
- Touches
apps/majordomus-cli/src/ui/prs.rsapps/majordomus-cli/src/ui/mod.rsapps/majordomus-cli/src/ui/dashboard.rs.ai/repo/project/issues/I2470.yamldocs/MAJORDOMUS_UI.mdtest/cases/1075_the_pull_requests_drain_in_the_ui.sh- Not
- unknown: the record declares no `non_scope`
- Depends on
- Priority
- p1
- Profile
- implementation
- Parallel safe
- false
- Owner
- unknown: the record declares no `owner`
The work so far
- Branches
- none
- Merged
- none
- Commits
0- Trunk
- master
- Sessions
- none
- Created
- 2026-10-11
- Updated
- 2026-10-12T11:00:58Z
- Started
- 2026-10-12T11:00:46Z
- Verified
- 2026-10-12T11:00:51Z
- Completed
- 2026-10-12T11:00:58Z
Synchronisation
- Adapter
scripts/github-sync- Repository
- unknown: the derived plan's header carries no repository
- External issue
- unknown: a live GitHub state; this executable makes no network call, so only `scripts/github-sync --check` can answer it
- State there
- unknown: a live GitHub state; this executable makes no network call, so only `scripts/github-sync --check` can answer it
Findings
Nothing is wrong with these records.