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
I2484
majordomus ui ensures the shared server and opens the UI's dashboard
Where it stands
devtask.issue- Readiness
- ready no dependency and no gate holds it; nobody has started it
- Status
- READY
- Can start
- startable
- Milestone
- Milestone status
- ACTIVE
- Wave
1- Waiting on
- none
- Holds back
- none
- Behind it in all
0- Evidence
0of2
Moves
plan.transitionWhat it is
- Objective
- Give the primary surface its command: `majordomus ui` ensures this checkout's shared server, the way `serve ensure` does, prints the address of /ui and opens it in a browser, so that a person reaches the UI in one step and never needs the lease, a port or the Cockpit to find it.
- Why
- ADR 0135, accepted by the owner on 2026-10-12, names `majordomus ui` the primary surface, and its first consequence says the command opens the UI's dashboard. The issue that was meant to carry it, I2231, lived only on PR #863, which was closed, so master has no command, docs/MAJORDOMUS_UI.md says to read the address off `serve status`, and `just open ui` is a recipe rather than a command of the executable.
- Now
- `majordomus ui` is an unknown command. A person opens /ui on the address `majordomus serve status` prints, or with `just open ui`.
- Wanted
- `majordomus ui` is one entry of the canonical command graph, a projection of `server.status` and `serve ensure` with no server of its own (ADR 0135: no second server, no mode): it ensures this checkout's shared server, waits until it is ready, prints the URL of /ui (or of /ui/<screen> when one is named and SCREENS holds it), and opens it unless --no-open is given or no browser can be launched, in which case it says so and still prints the URL. `ui status` and `ui stop` are not added: `serve status` and `serve stop` already answer them. The help text, the generated command reference and the just bridge derive from the declaration, and docs/MAJORDOMUS_UI.md drops its workaround.
- Done when
- unknown: the record declares no `completion`
- Risk
- unknown: the record declares no `risk`
Acceptance
- `majordomus ui --no-open` on a checkout with no running server starts one, prints a URL ending in /ui, and that URL answers 200
- `majordomus ui --no-open` with a server already running prints that server's /ui URL and starts no second server
- `majordomus ui --no-open <screen>` prints /ui/<screen> for a screen SCREENS holds and refuses an unknown screen by name, listing the known ones
- The command appears in the generated command reference and the just bridge without a hand-written entry
- Validation
bin/majordomus plan validatecargo test --lib commands::majordomus generate --check- Evidence required
ui_command_caseui_command_unit_tests- Evidence present
- unknown: the record carries no `evidence` entries
Scope
- Touches
apps/majordomus-cli/src/commandsapps/majordomus-cli/src/cli.rsapps/majordomus-cli/src/uidocs/MAJORDOMUS_UI.mdtest/cases.ai/repo/project/issues/I2484.yaml- Not
A second server or a UI-only mode of the serverAny change to the screens themselves- Depends on
- Priority
- p1
- Profile
- implementation
- Parallel safe
- true
- Owner
- unknown: the record declares no `owner`
The work so far
- Branches
- none
- Merged
- none
- Commits
0- Trunk
- master
- Sessions
- none
- Created
- 2026-10-12
- Updated
- 2026-10-12
- Started
- unknown: the record declares no `started_at`
- Verified
- unknown: the record declares no `verified_at`
- Completed
- unknown: the record declares no `completed_at`
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
| Level | Code | Message | Reproduce |
|---|---|---|---|
| WARN | scope_conflict | shares test/cases with I2700; they may not run concurrently | majordomus plan validate |
| WARN | scope_conflict | shares apps/majordomus-cli/src/commands with I2701; they may not run concurrently | majordomus plan validate |
| WARN | scope_conflict | shares apps/majordomus-cli/src/commands with I2702; they may not run concurrently | majordomus plan validate |
| WARN | scope_conflict | shares test/cases with I2706; they may not run concurrently | majordomus plan validate |
| WARN | scope_conflict | shares test/cases with I2708; they may not run concurrently | majordomus plan validate |
| WARN | scope_conflict | shares test/cases with I2709; they may not run concurrently | majordomus plan validate |