Event stepper

Drive one session by hand. Every state value below is computed in ClickHouse by the same predicate the pipeline uses — not in this page — so what you see is the real derivation rather than a second implementation of it.

1 · pick content

load the catalogue first

picking a title mints a new session

2 · advance the clock

The lease is 120.0s, so +130s expires it. A virtual event-time clock rather than wall time means you never wait two minutes to watch an interval close.

3 · send events

lifecycle
playbackmoves `playing` only
visibilitymoves `foreground` only
signalsrenews the lease
classified as livenessneither is a pause

derived state

foreground
playing
active
clock
lease until
events sent
0
intervals
0
active total
0.0s
intervals

none yet

timeline · state after each event

event timeeventsignalfgplayinglease untilactive
no events yet

Try Start → Play → Background → Pause → Foreground. The session stays inactive after the foreground: it restores visibility but not playback. Then Resume and it flips on. Collapsing those two booleans into one was measured at 38,958 wrong event positions across 98.8% of sessions.