01 / CURRENT STATE
Your database
says 26.
How did it get here?
YOUR TURN
Move time.
Watch access change.
The same customer. Four coverage windows. Choose a day to see which facts count.
3 active facts
20 + 10 − 4 = 26 seats
Purchase +20, temporary +10, correction −4 count on day 25.
Windows include both end days. Presets restore the example ledger. These are illustrative counts and dates.
History and current state
This is a story about rebuilding subscription tracking in a SaaS product. A seat is one staff member the customer can manage.
Before. The old table kept one record per subscription and updated it in place, so a seat count had no record of the changes behind it.
After. Aster Studio has 26 seats on day 25. Its ledger explains why: a purchase of 20 seats for days 1 to 45, a temporary grant of 10 for days 15 to 30, and an applied correction of minus 4 for days 20 to 45.
On day 31, the temporary grant no longer contributes. The total is 16. All three facts remain. The materialized projection stores the current answer for the app to read. Writers refresh it in their transaction; date transitions use a reactive daily refresh.
Keep the facts. Store the answer. This customer and the counts are fictional.

