Skip to main content

Campaigns

Campaign is an operational orchestration object for grant rollout, not a grant value object.

What campaign controls

  • rollout window (window_start, window_end)
  • operational status (scheduled, active, paused, ended)
  • targeting contract (target_filter)
  • grant binding list (metadata.grants)

Campaign does not directly store grant balances; balances live in grants and allocations.

Campaign metadata contract

grant_campaigns.metadata supports:

  • grants[]: campaign-level grant bindings used by issuance orchestration.

Keep campaign metadata focused on rollout/binding context. Do not use it as a replacement for grant program policy definition.

Lifecycle semantics

  • Create: establishes rollout intent and window.
  • Update: adjusts operating envelope and control flags.
  • Delete: resolves to hard-delete only when safe; otherwise transitions to ended state (soft delete semantics).

Practical governance rules

  • Treat target_filter as contract with issuance workers; version changes carefully.
  • Do not rely on delete for historical cleanup.
  • Ended campaign is a valid terminal business record, not failure state.
  1. Create campaign with explicit owner and trace metadata.
  2. Dry-run target evaluation outside production issuance.
  3. Activate in batches with monitoring on downstream grants/allocations.
  4. End campaign explicitly and confirm no lingering active assignment logic.

Next