Skip to content

campaigns-are-read-as-provenance — A prompt pack is a campaign the index serves and the plan cites

campaign is a kind; records cite campaigns through provenance and campaigns list what cites them; one command adds a pack safely; an execution of a record that cites a campaign pins the revision it ran.

PLANNED 0 of 4 issues done

ready
1
blocked
3
active
0
verify
0
done
0
cancelled
0

Problem

campaigns/ keeps 52 packs verbatim (ls -d campaigns/*/ | wc -l at 707a04c) with campaigns/MANIFEST.sha256, held by scripts/ci/campaigns-check and case 340, but its README says nothing loads them, share/kinds.yaml has no campaign kind, no intent, milestone or issue cites the pack that drove it, a new pack is copied in by hand, and ADR 0124 (proposed) leaves the ingestion noun open. Proposed in ADR 0180 (A prompt pack is a campaign: kept as received, indexed as a kind, and cited by the records it drove) (proposed; it carries no authority until the owner accepts it). Sources: chatgpt-majordomus:c245#11.

Outcome

campaign is a kind; records cite campaigns through provenance and campaigns list what cites them; one command adds a pack safely; an execution of a record that cites a campaign pins the revision it ran.

Current state

Verified on master 707a04c: rule project.a-brief-is-kept-as-received is blocking; ADR 0124 status proposed; no ingestion command exists; majordomus pack is the text-shard tool (reserved by ADR 0124).

Desired state

I3167-I3170 landed under the campaign ADR.

Scope

  • campaigns
  • share/kinds.yaml
  • share/schemas/majordomus
  • share/schemas/majordomus/issue
  • share/schemas/majordomus/intent
  • apps/majordomus-cli/src/capability/builtin
  • scripts/ci/campaigns-check
  • docs/PLANNING.md

Out of scope

  • Publishing pack bodies on the site
  • Executing anything a pack contains
  • The /ui drag-and-drop pack view (ui-surfaces domain)

Acceptance criteria

  • Every pack resolves as majordomus://campaign/<id>
  • A dangling campaign citation is refused
  • An unsafe archive is refused before any write

Validation

  • majordomus plan validate

Risks

  • The campaign ADR must be accepted before code lands (ADR 0124 point 3)
  • ADR 0194 decides the same noun as 'intake'; the owner chooses one before I3167 starts

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.

issuestatuswavedepends ontitle
I3167 READY 0 — A campaign is a kind of the index: every pack under campaigns/ is an object with its manifest digest, served read-only
I3168 BLOCKED 1 I3167 An intent, milestone or issue cites the campaign that drove it, and a campaign answers which records cite it
I3169 BLOCKED 1 I3167 A new pack enters campaigns/ through one command that checks the archive before writing a byte
I3170 BLOCKED 2 I3168 An execution of a record that cites a campaign pins the revision it ran, and a later revision changes nothing about it

The graph

campaigns-are-read-as-provenance dependency graphfrom .ai/repo/project
flowchart LR
    I3167["I3167<br/>A campaign is a kind of the index: every pack under campaigns/ is an object with its manifest digest, served read-only"]:::ready
    I3168["I3168<br/>An intent, milestone or issue cites the campaign that drove it, and a campaign answers which records cite it"]:::blocked
    I3169["I3169<br/>A new pack enters campaigns/ through one command that checks the archive before writing a byte"]:::blocked
    I3170["I3170<br/>An execution of a record that cites a campaign pins the revision it ran, and a later revision changes nothing about it"]:::blocked
    I3167 --> I3168
    I3167 --> I3169
    I3168 --> I3170
    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:2px

Canonical record: .ai/repo/project/milestones/campaigns-are-read-as-provenance.yaml. Read it back with majordomus plan show campaigns-are-read-as-provenance.

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