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
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.