Skip to content

I3254 — A proposal names the existing intents and issues it duplicates or overlaps, and is merged into one rather than added beside it

intents.propose and draft_check compare a new statement and its drafted issues with existing intents and issues (the brief of I3251) and return each likely duplicate with the shared terms; the proposal is refused as a duplicate unless the caller names the existing intent to amend or confirms novelty.

BLOCKED wave 1 · p2 · implementation profile · parallel safe

Part of an-outcome-becomes-a-reviewed-plan — A desired outcome becomes a draft plan that is checked before a record is written.

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

Objective

intents.propose and draft_check compare a new statement and its drafted issues with existing intents and issues (the brief of I3251) and return each likely duplicate with the shared terms; the proposal is refused as a duplicate unless the caller names the existing intent to amend or confirms novelty.

Why

The owner repeated the same demands for weeks: the conversations promoted on 2026-10-18 restated single themes in many conversations; 2026-10-12 asked that a conversation not turn one sentence into one issue. Proposed in ADR 0191 (A plan drafted from an intent is a proposal, checked by the plan's own validators before any record is written) (proposed; it carries no authority until the owner accepts it). Sources: chatgpt-majordomus:c122#1, chatgpt-majordomus:c239#7, chatgpt-majordomus:c270#4, chatgpt-majordomus:c294#2.

Current state

ProposeError has Invalid, Exists (same id) and Write; a different id with the same meaning is accepted.

Desired state

Duplicate detection reuses the object search and the brief; no similarity model is required.

Scope

  • apps/majordomus-cli/src/intent.rs
  • apps/majordomus-cli/src/capability/builtin/intents.rs
  • apps/majordomus-cli/src/capability/builtin/objects.rs
  • apps/majordomus-cli/src/intent_plan.rs
  • apps/majordomus-cli/src/commands/intent.rs
  • apps/majordomus-cli/tests/intent.rs

Dependencies

What waits on this

Acceptance criteria

  • A proposal restating an existing intent's statement with a new id is refused naming it
  • Confirming novelty records the reason in the proposal

Validation

  • majordomus plan validate
  • majordomus intent validate

Evidence required

  • test_a_proposal_names_its_duplicates

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

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