Skip to content

I3220 — An intent proposed or an issue moved by any client reaches an open intent workspace without a reload

Advance the change generation (crate::change, from I2981) on every repository_mutation capability of the plan and intents (intent propose, plan transition, evidence attach), and have /ui/idd read itself again on that frame, whichever client made the change: the CLI, MCP from a Claude Code session, or another tab.

READY wave 3 · p1 · implementation profile · parallel safe

Part of every-surface-follows-what-changed — Every surface follows what changed in the repository by push, and a surface that does not says so.

Ready. Every dependency is done, so majordomus plan start I3220 will be accepted.

Objective

Advance the change generation (crate::change, from I2981) on every repository_mutation capability of the plan and intents (intent propose, plan transition, evidence attach), and have /ui/idd read itself again on that frame, whichever client made the change: the CLI, MCP from a Claude Code session, or another tab.

Why

Owner, 2026-10-12: typing /intent in Claude Code must show in /ui at once over the WebSocket. I2783 (2b) re-reads the workspace when a move ends on its own server; a write by another client is not covered. It waits on in-flight work not yet on master: I2981. Proposed in ADR 0216 (Every live surface follows one channel with named follow streams, and nothing polls where a stream exists) (proposed; it carries no authority until the owner accepts it). Sources: chatgpt-majordomus:c232#6, chatgpt-majordomus:c288#8, chatgpt-majordomus:c208#73.

Current state

On master /ui/idd refreshes every 60 s (share/ui/ui.js); I2783 and I2981 are branch-only.

Desired state

One frame per plan or intent write, carrying the record ids it touched; the workspace re-reads the panels those ids feed.

Scope

  • apps/majordomus-cli/src/capability/builtin/plan.rs
  • apps/majordomus-cli/src/capability/builtin/intents.rs
  • apps/majordomus-cli/src/http/events.rs
  • share/ui/ui.js
  • .ai/repo/project/intents

Out of scope

  • Writes from the published site
  • Merging of concurrent edits

Dependencies

What waits on this

Acceptance criteria

  • majordomus intent propose from a terminal makes an open /ui/idd list the new intent within a second on this machine, measured
  • A plan transition made over MCP updates the issue's row in another tab without a reload
  • Work starts only once I2981's crate::change and I2783 are on master; their ids join depends_on in the change that records them there
  • The criterion every-surface-follows-what-changed#a-write-reaches-the-workspace is switched to evidence: test, ref case_the_workspace_follows_every_client, in the change that adds the case

Validation

  • cargo test --manifest-path apps/majordomus-cli/Cargo.toml --test ui_idd
  • cargo test --manifest-path apps/majordomus-cli/Cargo.toml --lib http::events

Evidence required

  • case_the_workspace_follows_every_client

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

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