MEASUREMENT NOTES / OCTOBER 1, 2026
What a little
play tells us.
The pilot helps us separate a visit, a game start, an eligible finish, and a return. These definitions apply only to people who explicitly join. The local Passport is a separate feature and is never uploaded or mined for old history.
Off until you choose.
Loading the club or a game does not enroll you. Before joining, no pilot events are sent. Joining requires an unchecked consent choice and a deliberate button press. If browser storage or Global Privacy Control prevents participation, the games remain available.
The browser creates a random participant identifier and private capability, stores them before enrollment, and sends the capability only in an authorization header. Enrollment retries reuse the same identifier. No email or public account is created. The key is excluded from your export and never placed in a URL.
The small event vocabulary.
| Event | What it means | Allowed play fields |
|---|---|---|
visit | A participating browser joins or resumes, or visits an instrumented club or game page. One stored visit per Los Angeles day. | A random event ID only. |
game_start | A new game run starts after joining. | Random event and run IDs, one of six game IDs, and whether it is today’s challenge. |
game_complete | The engine finishes a previously recorded run. Bloom reaches twelve notes. | The same run and game, daily flag, random event ID, and whether a gameplay control was used. |
The server supplies receipt times. It rejects unsupported fields, invalid event/run IDs, unmatched completions, and conflicting retries. It stores neither individual input events nor raw challenge seeds. Source is fixed at enrollment to one of direct, pointcast, industry-next, campaign, creator, editorial, partner, or other.
For example, this is a play-completion event shape. Identifiers here are illustrative; there is no score, name, seed, message, address, or keypress:
{
"eventId": "random UUID",
"type": "game_complete",
"runId": "the started run's random UUID",
"gameId": "bloom",
"daily": false,
"engaged": true
}
How the report is counted.
- Visited / enrolled
- Participants with at least one visit divided by retained, non-QA participants in the selected enrollment month.
- Started / enrolled
- Participants who start a game divided by retained, non-QA participants. A missing visit event does not erase a reported start. The report states the exact denominator beside each count.
- Qualified completion / started
- A completion matching a recorded start with at least one gameplay action beyond merely starting. It is still a browser-reported claim, not server-validated skill or identity.
- Daily circuit
- Participants with qualified completions of all three distinct V2 games on the same Los Angeles date, divided by participants with at least one daily V2 start. Each matching start must arrive on its finish date. This is derived from accepted run pairs rather than accepted as a separate client achievement.
- Return in days 7–13
- A qualified completion on a Los Angeles date seven to thirteen calendar days after the first qualified completion. Only retained participants whose first qualified completion is at least fourteen Los Angeles calendar days old enter the denominator. A young cohort is shown as not ready, never as zero retention.
Use these voluntary-cohort results to make a small product decision, not to estimate all visitors, unique people, hardware owners, market demand, or revenue. Changes in who joins, expired records, withdrawn contributions, blocked requests, event caps, or incomplete visits can change the denominator. No behavioral baseline was established at launch.
Small samples stay small.
The public report excludes every QA contribution. Fewer than five regular participants hides the counts. Metric cells also stay hidden when their denominator or a nonzero side of a split is too small. There are no public individual histories, source breakdowns, game breakdowns, or rankings. Suppression reduces disclosure; it does not make the pilot anonymous.
QA uses the clearly marked QA entry and an immutable test designation. Production verification must use this path and delete its contribution afterward. Test runs are evidence that the system works, not product traction.
Bounded, inspectable, removable.
Each monthly research cohort is limited to 100 regular and 20 QA contributions. Each contribution is limited to 200 events and expires 30 days after joining. Short-lived retries are bounded; network errors never block play. Reloading, clearing storage, or reaching a limit can leave the server with incomplete event pairs.
“Download my shared data” retrieves only your own server record with its private capability. “Pause sharing” stops new collection in this browser and its open tabs. “Stop and delete” also removes active events from the server and recomputed report. If deletion cannot reach the server, sharing stays off and the capability is retained for an explicit retry.
A hashed revocation marker can remain for up to 30 days to reject delayed enrollment retries. It contains no play events. Cloudflare recovery copies can persist for up to 30 days after active records are removed. Losing your browser key can prevent immediate self-service deletion; the original expiry still applies. We do not retain deleted play contributions in aggregate reports. Content-free admission counters remain to enforce each month’s enrollment cap.
IP-derived rate-limit records and normal hosting security processing are separate from pilot event records. Signal Rooms are not instrumented. Their messages, invitations, and tokens never enter this system.