Checked before, not reconciled after
A project's cap is a hard limit read before a run starts, not a number compared against an invoice at the end of the month. A run that would start past the cap does not start, and a run that crosses it while executing is paused rather than allowed to finish.
End-of-month reconciliation is a reporting feature. It cannot stop a recursive loop at three in the morning, because by the time the report exists the money is spent.
Span-level accounting is what makes the check cheap
Cost is attributed per span as a run proceeds, so the balance a cap is checked against is already current. There is no aggregation pass to wait for, which is what makes a pre-flight check viable on a hot path.