I3170 — An execution of a record that cites a campaign pins the revision it ran, and a later revision changes nothing about it
Record the campaign id and revision digest on an execution whose input names an issue, milestone or intent citing that campaign, resolved at start and never changed afterwards, with no change to StartInput or the executions.start contract.
BLOCKED wave 2 · p3 · implementation profile · parallel safe
Part of campaigns-are-read-as-provenance — A prompt pack is a campaign the index serves and the plan cites.
Blocked. This issue cannot start until I3168 is done. The status is derived from that, not declared.
Objective
Record the campaign id and revision digest on an execution whose input names an issue, milestone or intent citing that campaign, resolved at start and never changed afterwards, with no change to StartInput or the executions.start contract.
Why
ADR 0124 point 1: an artifact revision is not an execution run; 2026-10-10: a revision must not silently mutate an in-flight worker's contract. 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:c210#4.
Current state
Executions (ADR 0033) carry no campaign.
Desired state
Pinned revision on the execution record.
Scope
- apps/majordomus-cli/src/execution
- apps/majordomus-cli/src/capability/builtin/executions.rs
Dependencies
Acceptance criteria
- An execution names its campaign digest
- A newer revision does not alter it
Validation
- cargo test --manifest-path apps/majordomus-cli/Cargo.toml --lib execution::
- cargo test --manifest-path apps/majordomus-cli/Cargo.toml --test executions
Evidence required
- test_execution_pins_campaign
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/I3170.yaml. Read it back with majordomus plan show I3170.