Skip to content

I3283 — The UI opens the message a record cites, and the published snapshot shows only the reference

Draw every workspace: reference in a record's provenance as a link in /ui (through ui::prose) to a served, local-only message view, list on a conversation's view the records promoted from it, and render the reference as plain text in the published snapshot.

BLOCKED wave 5 · p2 · implementation profile · parallel safe

Part of a-promoted-record-opens-its-message — Every record promoted from a workspace cites the message it came from, and the UI opens it for the operator who holds it.

Blocked. This issue cannot start until I3282, I1309 are done. The status is derived from that, not declared.

Objective

Draw every workspace: reference in a record's provenance as a link in /ui (through ui::prose) to a served, local-only message view, list on a conversation's view the records promoted from it, and render the reference as plain text in the published snapshot.

Why

The owner's demand is that every promoted record drills back to conversation#message from the UI; ADR 0032 allows served, never published, so the asymmetry must be a tested property of the snapshot. Critique 2026-10-18: CI holds no store, so a leak check that never holds one proves nothing; and the owner asked for the drill-back across UI, cockpit, docs and a deployed release. Proposed in ADR 0211 (A record promoted from a workspace cites the message it came from by a typed reference that validates in every checkout and resolves only where the store is held) (proposed; it carries no authority until the owner accepts it). Sources: chatgpt-majordomus:c239#0.

Current state

apps/majordomus-cli/src/ui/prose.rs links known record ids; no workspace view exists.

Desired state

An intent, ADR or issue inspector shows its sources; one click opens the message; the snapshot build contains no message text.

Scope

  • docs/MAJORDOMUS_UI.md
  • apps/majordomus-cli/src/ui/prose.rs
  • apps/majordomus-cli/src/ui/mod.rs
  • apps/majordomus-cli/src/ui/intent.rs
  • apps/majordomus-cli/src/ui/issues.rs
  • apps/majordomus-cli/src/ui/source.rs
  • apps/majordomus-cli/src/cockpit/intents.rs
  • apps/majordomus-cli/src/cockpit/plan.rs
  • apps/majordomus-cli/tests/ui_links.rs
  • site/templates/issue.html

Out of scope

  • Showing message text on the published site

Dependencies

What waits on this

Acceptance criteria

  • A record's workspace source is a link on /ui that opens the message
  • A conversation view lists the records citing it, derived from the records alone
  • The published snapshot of the same record contains the reference and no message text
  • A test case builds the UI snapshot and the site inside a fixture checkout whose .ai/local/workspaces store holds a canary message and title, and fails when either canary appears in the output
  • After a deploy, majordomus.dev shows a promoted record's workspace reference as text with no message content
  • /cockpit draws a record's workspace reference the way /ui does
  • A site docs page explains workspace references and ships in a released version

Validation

  • cargo test --manifest-path apps/majordomus-cli/Cargo.toml --test ui_links
  • majordomus generate --check

Evidence required

  • test_ui_workspace_reference
  • case_nothing_synced_is_published

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/I3283.yaml. Read it back with majordomus plan show I3283.

Searches the titles and descriptions of every page this site publishes.