ChangelogArticleOperator-judged

Optional lifetime cap is no longer one day

A missing lifetime budget is no longer coalesced to the daily budget. That bug silently stopped campaigns after one day, three times.

Published 2026-09-09 · Search job: campaign stopped spending after one day

Shipped as a product correction after the same failure landed three times (June 18 2026 learning campaigns, the June 2026 relaunch, and a September 3 2026 continuous daily portfolio).

total_budget_cents is optional. When omitted, the campaign is supposed to spend until paused or the prepaid wallet is empty. All three Beeswax write paths used to coalesce a null lifetime to the daily budget, so the exchange stored a one-day lifetime cap. Day one exhausted it. The line item never served again. Our database still said running.

The coalesce now lives in one helper. An explicit small cap is honored exactly. A null or zero cap gets a multi-day envelope (30 times the daily budget). We do not turn a $20 lifetime test into $600, and we do not turn an uncapped $20/day campaign into a $20 lifetime campaign.

If you omitted a lifetime cap and the campaign died after one day, that was this bug. Story: a lifetime cap that silently became one day.