Why did this campaign promote or roll back?

Use nfltr orch campaign story when you want a short operator narrative — Intent, Path, and Outcome — for a coordinator-owned ImprovementCampaign. The command is read-only: it never promotes, rolls back, or invents decisions.


Commands

$ nfltr orch task checkpoint create --task TASK_ID --checkpoint-id ckpt-example-1 --scope docs-public-html
$ nfltr orch campaign create --task TASK_ID --contract-file ./campaign.json
$ nfltr orch campaign status --task TASK_ID --campaign-id CAMP_ID
$ nfltr orch campaign story --task TASK_ID --campaign-id CAMP_ID
$ nfltr orch campaign story --task TASK_ID --campaign-id CAMP_ID --json

How to read the story

BandMeaning
IntentObjective, allowed scopes, and rollback checkpoint from the immutable contract
PathCurrent stage, candidate slots, and budget counters
OutcomeRecorded promote / roll back / pause reason, or an honest in-progress line

Headings adapt: What happened (promoted), What failed (rolled back), What stopped (paused), What's running (mid-stage).

Sample story

Fixture-shaped example (not a live fleet task id):

What happened
Campaign: relay-p95
Intent:   reduce relay reconnect p95 · scopes=relay · checkpoint=ckpt-1
Path:     stage=promoted · failures=0/2 proposals=1/2 evidence=2
Outcome:  promoted: all benchmark metrics passed

Controllers vs campaigns

A campaign is one bounded improvement contract. A controller may create campaigns from signals inside immutable scopes and a finite max_campaigns_total; it does not dispatch workers or promote candidates. After a campaign exists, campaign story works the same either way.

$ nfltr orch controller start --policy-file ./controller.json
$ nfltr orch controller status
$ nfltr orch controller stop --controller-id CONTROLLER_ID

Related