Skip to content

I1120 — A refusal says what to do about it

Make every refusal in this subsystem name the source of truth, what was observed, what was expected and the command that repairs it — through the diagnostics framework that already exists.

BLOCKED wave 4 · p1 · implementation profile · parallel safe

Part of two-folder-integration — A repository that adopts Majordomus gains two directories and two lines, and can give them back.

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

Objective

Make every refusal in this subsystem name the source of truth, what was observed, what was expected and the command that repairs it — through the diagnostics framework that already exists.

Why

The operations here refuse often by design: an edited bridge, a stale ledger, a non-conforming path, a plan that would touch something it does not own. A refusal that only says no turns a safety property into an obstacle.

Current state

Errors in the executable carry structured detail in places and a bare message in others. The new operations have no convention yet.

Desired state

Each refusal is actionable, and a person who has never read this code can act on it without reading this code.

Scope

  • apps/majordomus-cli/src/error.rs

Out of scope

  • A second diagnostics framework
  • A message that reports a condition without naming the repair

Dependencies

What waits on this

Acceptance criteria

  • A refusal names the file or path, what was found, what was expected and the command that repairs it
  • An edited bridge, a ledger mismatch, a non-conforming path and a plan touching something unowned each have their own message rather than a shared generic one
  • The messages are exercised by tests, so a change that degrades one is caught
  • Machine-readable output carries the same detail as the human-readable form

Validation

  • cargo test --workspace --all-features
  • bash test/run.sh

Evidence required

  • failures_actionable

Evidence

None recorded. Every token above needs a command or an artifact behind it before this issue can be completed; narrative is refused.

Risk

Message quality is the first thing to decay under time pressure and the last thing anybody tests. Testing the messages is what keeps them.

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