--demo renders every quota surface empty, so the screenshots taken from it show blank cards.
DemoUsageDataSource inherits the protocol's default quotaCurve / quotaCurveSync, which answer nil, and its synthetic payload carries no publicationGeneration. Every curve lookup therefore settles as "no history", and the window usage card, the past-windows strip, the weekday heatmap and the equivalence line all render their empty states.
That matters beyond demo mode: the release screenshots are produced from this path, so the quota lens cannot be shown at all in them, and the demo contract is also what a UI check runs against when the live path is unavailable.
What it needs:
- deterministic quota curves per client and window, with enough recorded cycles that the strip shows a run and the equivalence clears its three-cycle threshold
- a synthetic
publicationGeneration on the demo payload so the curve lookups resolve
windowUsage messages inside those cycles, attributed such that the equivalence produces a ratio rather than unaccounted
- values chosen so the heatmap shows a recognisable weekday rhythm rather than noise
Deliberately not done in #227: the fixtures are a design question of their own (what should the demo say), and inventing them alongside a review round would have meant choosing those numbers under time pressure. Raised from that review.
--demorenders every quota surface empty, so the screenshots taken from it show blank cards.DemoUsageDataSourceinherits the protocol's defaultquotaCurve/quotaCurveSync, which answernil, and its synthetic payload carries nopublicationGeneration. Every curve lookup therefore settles as "no history", and the window usage card, the past-windows strip, the weekday heatmap and the equivalence line all render their empty states.That matters beyond demo mode: the release screenshots are produced from this path, so the quota lens cannot be shown at all in them, and the demo contract is also what a UI check runs against when the live path is unavailable.
What it needs:
publicationGenerationon the demo payload so the curve lookups resolvewindowUsagemessages inside those cycles, attributed such that the equivalence produces a ratio rather thanunaccountedDeliberately not done in #227: the fixtures are a design question of their own (what should the demo say), and inventing them alongside a review round would have meant choosing those numbers under time pressure. Raised from that review.