I3273 — Each requirement of a campaign revision has a content-derived identity and is reconciled into the existing intents and issues
Split a campaign revision into segments whose identity is the digest of their normalised text (document, heading path and position are only their location) and classify each against the existing intents and issues: existing from I3254's duplicates, satisfied or partial from the derived verdict, superseded from the matched record's stage or superseded_by, conflicting where it negates a matched invariant or non_goal (reported with both texts for a person), new otherwise. A conversation enters only as workspace references read from the local store. Output is a draft for I3252's check, never records.
BLOKOVÁNO wave 6 · p3 · implementation profile · parallel safe
Blocked. This issue cannot start until I3272, I3252, I3251, I3254, I3280, I3281, I3278, milestone:intent-intake are done. The status is derived from that, not declared.
Cíl
Split a campaign revision into segments whose identity is the digest of their normalised text (document, heading path and position are only their location) and classify each against the existing intents and issues: existing from I3254's duplicates, satisfied or partial from the derived verdict, superseded from the matched record's stage or superseded_by, conflicting where it negates a matched invariant or non_goal (reported with both texts for a person), new otherwise. A conversation enters only as workspace references read from the local store. Output is a draft for I3252's check, never records.
Proč
2026-09-12 accepted: requirements become outcome-shaped records after discovery classifies each, not one issue per bullet; 2026-10-18: one revision may update several intents. Proposed in ADR 0194 (An ingested brief is an intake revision, and its requirements are reconciled into the existing plan) (proposed; it carries no authority until the owner accepts it). Sources: chatgpt-majordomus:c174#19, chatgpt-majordomus:c210#4, chatgpt-majordomus:c297#9, chatgpt-majordomus:c033#3, chatgpt-majordomus:c054#8, chatgpt-majordomus:c088#3.
Aktuální stav
No segment identity; the promotion of 2026-10-18 reconciled conversations by hand with conv#msg sources; I3254 (duplicates) is planned, and the derived verdict is on master in intent.rs.
Cílový stav
Classification is reproducible from the revision and the plan at a commit and matches a committed fixture.
Rozsah
- apps/majordomus-cli/src/intent_realization.rs
- apps/majordomus-cli/src/intent.rs
- share/schemas/majordomus/intent
- apps/majordomus-cli/src/capability/builtin/intents.rs
- apps/majordomus-cli/src/commands/intent.rs
- apps/majordomus-cli/src/lib.rs
- share/allow/intent.txt
Závislosti
- I3272BLOCKED A received brief is a campaign revision pinned by its manifest digest, and the same bytes again are the same revision
- I3252BLOCKED A draft plan is judged as if it were written, and only a checked draft is written, through one capability
- I3251READY A desired outcome is briefed with what the repository already holds about it
- I3254BLOCKED A proposal names the existing intents and issues it duplicates or overlaps, and is merged into one rather than added beside it
- I3280READY An intent, a milestone and an issue carry provenance the way an ADR and a knowledge record do
- I3281BLOCKED A workspace message is a typed provenance reference that validates in every checkout without the store
- I3278BLOCKED The 2026-10-18 import is the workspace store's first sync, not a scratchpad
Co na tom čeká
- I3274BLOCKED A new campaign revision reports only the criteria whose source requirement changed
- I3275BLOCKED An intent's inspector shows the campaign segments it was derived from
Kritéria přijetí
- Each derived draft item names its source segment by digest and location
- 'existing' is the duplicate result of I3254. No second duplicate detector is built
- 'satisfied' and 'partial' are read from the derived intent verdict (intent.rs verdict, intent_realization.rs) and are never judged by the classifier
- 'superseded' is read from the matched record's stage or superseded_by. 'conflicting' is a requirement that negates the matched record's invariant or non_goal, and it is reported with both texts for a person and never resolved automatically
- A segment's identity is the digest of its normalised text. Document, heading path and item position are its location, not its identity
- Each derived draft criterion carries its source segment as a reference in the shared Provenance grammar (an optional derived_from on intent satisfaction items)
- A conversation enters as workspace: references read from .ai/local/workspaces, and no message text reaches a tracked file or the published snapshot
- A committed synthetic brief under test/fixtures, with two revisions and an expected class per requirement, is classified to exactly those classes by tests/intake.rs
- A test/cases case runs the built executable over the fixture
Validace
- majordomus plan validate
- majordomus intent validate
Požadované důkazy
- test_requirements_are_reconciled
Důkazy
Nic nezaznamenáno. Za každým tokenem výše musí stát příkaz nebo artefakt, než lze tento úkol dokončit; vyprávění se odmítá.
Časová osa
- zahájeno
- —
- ověřeno
- —
- dokončeno
- —
Tato tři pole, důkazy výše a stav závislostí jsou vše, z čeho se stav skládá. Neexistuje žádné pole stavu, které by s nimi mohlo být v rozporu.
Canonical record: .ai/repo/project/issues/I3273.yaml. Read it back with majordomus plan show I3273.