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_filteras 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.
Recommended runbook
- Create campaign with explicit owner and trace metadata.
- Dry-run target evaluation outside production issuance.
- Activate in batches with monitoring on downstream grants/allocations.
- End campaign explicitly and confirm no lingering active assignment logic.
Next
- Grants: Grants
- Grants operations: Grants operations