Notes / 12 March 2026
Session windows that lie
The first number most teams paste into a benchmark deck is average session length. The second is how they defined a session, except they usually skip that line. A 30-minute timeout copied from a web analytics default will manufacture extra sessions on a banking app every time someone glances at a balance, and it will glue a two-hour podcast listen into a single heroic session that looks like “engagement” to a director who has never opened the player.
In Session Window Lab we ask for three windows, not one. A house default that matches the product’s physics, a shorter window that catches fidgeting, and a longer window used only as a sensitivity check. The atlas then reports P50 minutes on the house default and a footnote on what the other two would have done to the delta versus peers.
Peers must share a window, or the comparison is theatre. If a competitor’s public blog uses a 5-minute timeout and you use 30, you are not looking at usage trends. You are looking at two different machines for chopping time.
Backgrounding is the usual argument. A parking app that keeps GPS warm is not “in session” in the same way a news app is when the screen is on. Write that sentence in the RFC. Softmatrixhub will not ingest your events to settle it for you; you have to query both definitions and bring the table.
If your SDK cannot emit background timestamps, say so in the coverage footnote and stop pretending the session length is comparable to a peer who can. That is less exciting than a trend line. It is also how a ledger stays honest.