intent-intake — A received brief is a campaign revision whose requirements are reconciled into the one plan
A campaign revision's requirements get content-derived identities, are classified against the existing intents and issues into a draft, a later revision reports only the criteria whose source changed, and every intent shows the segments it was derived from.
BLOCKED 0 of 4 issues done
- ready
- 0
- blocked
- 4
- active
- 0
- verify
- 0
- done
- 0
- cancelled
- 0
Problem
Briefs (prompt packs, ZIPs, Markdown documents) are kept as received under campaigns/, but an agent reads each once and its requirements are reconciled into the plan by hand; nothing says which requirement became which criterion or which a later revision changed. ADR 0124 asks for the noun first, and proposed ADR 0180 names it campaign. 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:c245#11, chatgpt-majordomus:c174#19, chatgpt-majordomus:c210#4, chatgpt-majordomus:c297#9, chatgpt-majordomus:c210#2, chatgpt-majordomus:c239#0, chatgpt-majordomus:c245#9.
Outcome
A campaign revision's requirements get content-derived identities, are classified against the existing intents and issues into a draft, a later revision reports only the criteria whose source changed, and every intent shows the segments it was derived from.
Current state
campaigns/ on master keeps packs as received under MANIFEST.sha256 (scripts/ci/campaigns-check, rule project.a-brief-is-kept-as-received); ADR 0124 is proposed, and ADRs 0180 (campaign) and 0194 (reconciliation) are proposed on this branch; `majordomus pack` is the text-shard tool; I3167 and I3169 make a campaign a kind with one add command.
Desired state
The owner has accepted ADR 0180's noun and the four issues land on the drafting path of an-outcome-becomes-a-reviewed-plan, held to a committed synthetic fixture.
Scope
- apps/majordomus-cli/src
- share/schemas/majordomus/intent
- test/fixtures
- apps/majordomus-cli/src/ui
- apps/majordomus-cli/src/cockpit/intents.rs
- docs/PLANNING.md
Out of scope
- Executing on upload
- The `pack` command name, and the noun intake in any kind, command, schema or capability
- A store beside campaigns/, or conversation bytes in any tracked file
Acceptance criteria
- A committed synthetic brief under test/fixtures, with two revisions and an expected class per requirement, is classified to exactly those classes, and its renamed revision reports nothing
- Every criterion of a-brief-is-reconciled-into-the-plan is served by an issue here and named by its test
Validation
- majordomus plan validate
Risks
- Untrusted content: no instruction-following from a brief's text; ZIP limits are I3169's
Issues
Each one is an execution contract with its own acceptance criteria, validation command and required evidence. The wave column is the layer of the dependency graph it sits in.
| issue | status | wave | depends on | title |
|---|---|---|---|---|
| I3272 | BLOCKED | 2 | I3167, I3169 | A received brief is a campaign revision pinned by its manifest digest, and the same bytes again are the same revision |
| I3273 | BLOCKED | 6 | I3272, I3252, I3251, I3254, I3280, I3281, I3278 | Each requirement of a campaign revision has a content-derived identity and is reconciled into the existing intents and issues |
| I3274 | BLOCKED | 7 | I3273 | A new campaign revision reports only the criteria whose source requirement changed |
| I3275 | BLOCKED | 7 | I3273, I3280, I3283, I3168 | An intent's inspector shows the campaign segments it was derived from |
The graph
flowchart LR
I3272["I3272<br/>A received brief is a campaign revision pinned by its manifest digest, and the same bytes again are the same revision"]:::blocked
I3273["I3273<br/>Each requirement of a campaign revision has a content-derived identity and is reconciled into the existing intents and issues"]:::blocked
I3274["I3274<br/>A new campaign revision reports only the criteria whose source requirement changed"]:::blocked
I3275["I3275<br/>An intent's inspector shows the campaign segments it was derived from"]:::blocked
I3272 --> I3273
I3273 --> I3274
I3273 --> I3275
classDef done stroke:#16a34a,fill:#dcfce7,color:#14532d,stroke-width:2px
classDef active stroke:#2563eb,fill:#eff6ff,color:#1e3a8a,stroke-width:2px
classDef verify stroke:#7c3aed,fill:#f5f3ff,color:#4c1d95,stroke-width:2px
classDef ready stroke:#0891b2,fill:#ecfeff,color:#164e63,stroke-width:2px
classDef planned stroke:#0891b2,fill:#ecfeff,color:#164e63,stroke-width:2px
classDef blocked stroke:#b45309,fill:#fffbeb,color:#78350f,stroke-width:2px
classDef cancelled stroke:#6b7280,fill:#f9fafb,color:#374151,stroke-width:2px
classDef superseded stroke:#6b7280,fill:#f9fafb,color:#374151,stroke-width:2pxLinked from this diagram (4)
- I3272 A received brief is a campaign revision pinned by its manifest digest, and the same bytes again are the same revision
- I3273 Each requirement of a campaign revision has a content-derived identity and is reconciled into the existing intents and issues
- I3274 A new campaign revision reports only the criteria whose source requirement changed
- I3275 An intent's inspector shows the campaign segments it was derived from
Canonical record: .ai/repo/project/milestones/intent-intake.yaml. Read it back with majordomus plan show intent-intake.