I3796 — Every command and its output is one shell block, on every surface
Make terminal-run.html's contract the one shell block: the prompt is drawn and never copied, the copy control copies the command alone, an exit status is a word, and long output folds into a disclosure. Render the kit's terminal components and the /ui and Cockpit reproduce commands through it, so a command looks and copies the same wherever it is shown.
BLOCKED wave 1 · p1 · implementation profile · parallel safe
Blocked. This issue cannot start until I3793 is done. The status is derived from that, not declared.
Objective
Make terminal-run.html's contract the one shell block: the prompt is drawn and never copied, the copy control copies the command alone, an exit status is a word, and long output folds into a disclosure. Render the kit's terminal components and the /ui and Cockpit reproduce commands through it, so a command looks and copies the same wherever it is shown.
Why
On 2026-10-20 commands were shown three ways on the site (recorded runs, the kit's term_* components, sh/bash fences) and as bare code.mj-ui-mono on /ui (claim.rs, idd.rs), with no prompt and no copy control; a reader copying a reproduce command from /ui got nothing to click.
Current state
terminal-run.html: prompt not copied, status word, folded output. Kit term_*: a different look. /ui: bare monospace reproduce lines.
Desired state
One shell block component, server-rendered on /ui and the Cockpit with the same markup and classes as the site's, using I3793's copy control; the kit's term_* components are that block.
Scope
- site/templates/partials/terminal-run.html
- site/templates/kit/code.html
- share/design/kit.css
- apps/majordomus-cli/src/ui/claim.rs
- apps/majordomus-cli/src/ui/idd.rs
- apps/majordomus-cli/src/ui/view.rs
Dependencies
What waits on this
Acceptance criteria
- The site, /ui and the Cockpit render a command with the same markup and classes, the prompt outside the copied text
- Copying a /ui reproduce command yields the command alone
Validation
- bin/majordomus plan validate
- cargo test --lib ui::
Evidence required
- one_shell_block_case
Evidence
None recorded. Every token above needs a command or an artifact behind it before this issue can be completed; narrative is refused.
Timeline
- started
- —
- verified
- —
- completed
- —
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/I3796.yaml. Read it back with majordomus plan show I3796.