Record what the Live window actually withholds (#73) - #76
Open
jerome-queck wants to merge 1 commit into
Open
Conversation
ADR-0002 named four Gated streams and ended on an outstanding measurement. Both came from Formula 1's 2025 announcement, because nothing better existed. The first Live window this system ever recorded — Zandvoort 2026 Practice 1, captured unauthenticated and then backfilled, the same Session with the gating and without it — disagrees with three of the four. Telemetry and locations are Gated as whole streams, which is the branch the record hoped against: the per-second tier is empty during a Live window and per-Driver telemetry is a Replay-only feature. Pit stop durations arrive live after all, 75 of 97 records carrying one, the other 22 lap-one pit exits with no stop to time. DRS cannot be Gated because the 2026 regulations abolished it. Standings stay on the list on the 2025 announcement's authority alone, because a practice Session has none either way and cannot tell gating from absence. The decision is untouched and still right — this project holds no credential. What is rewritten is the account of what it costs, and the strip now advertises three Gated streams rather than four. Nothing was invented to replace the DRS label: what replaced DRS on the car is announced as an ordinary race control message, on a stream that is not Gated and that the strip already draws. The list is written in three places, so a drift check now holds the two design-system specimens to the strip that renders them. Assisted-by: Claude Opus 5 (reasoning: high) Co-authored-by: Claude <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #73
ADR-0002's list of Gated streams was Formula 1's 2025 announcement, taken on trust because nothing
else existed, and the record ended by saying so — one measurement outstanding. Zandvoort 2026
Practice 1 took it: captured live on an unauthenticated connection and then backfilled, the same
Session with the Live window's gating and without it. Three of the four named streams are wrong.
The decision is untouched. This project still holds no credential, and the argument for that is
the one it always was. What this rewrites is the account of what the decision costs — including the
part that got worse.
What changed, and why
docs/measurements/what-survives-a-live-session-unauthenticated.mdis filled in. Both tablesare re-readable from the kept capture at
.archive/live-captures/2026-08-21_Zandvoort_Practice_1/(outside the repository, so not committed): 22,233 SignalR messages over the hour with zero
CarData.zand zeroPosition.zframes while subscribed to both, and 7,238 records live against819,984 in the Backfill of the same hour.
docs/adr/0002is revised in place, with a dated note at the top saying so and why — thedecision holds, so this is not a supersede, and the note is what keeps the original reasoning
legible. It now carries what is measured gated (telemetry, locations, both whole streams), what
is presumed gated (standings, on the 2025 announcement's authority alone), what is measurably
free (pit stop durations, 75 of 97 records live; the other 22 are lap-one pit exits with no stop
to time), and the honest admission that the cost is larger than the record assumed and still the
smaller of the two.
The strip lists three Gated streams, not four —
Positions,Telemetry,Standings.Stop timescame off because they arrive.DRScame off because the 2026 regulations abolished DRS andcar_data.drsisnullin every 2026 reading, so the label named nothing. Nothing was inventedto replace it: the capture shows
OVERTAKE ENABLED/OVERTAKE DISABLEDarriving as ordinaryRaceControlMessages, on a stream that is not Gated and that the strip already draws two blocksup. A fourth chip would be a label for a stream that is neither missing nor a stream.
The list is written in three places, so
test/design-system.test.shnow holds bothdesign-system specimens to the
GATEDconstant the running strip renders, the way it alreadyholds the two copies of the Driver-row header to each other.
test/session-strip.test.shnamesthe three rather than only asserting the container exists.
Smaller corrections that were left false by the above:
CONTEXT.md's Gated stream entry,README.md, thedrscomment inserver/openf1/records.ts, and the "still unanswered" sentencein
docs/measurements/a-race-session-on-disk.md— whose own 2025 table stands, because itmeasured a season that still had DRS.
docs/adr/0012gets the footnote the issue allowed it: upstream'sstarting_gridis empty for2026, so the scrape kept on the table as a fallback would currently return nothing to parse.
Left open
Standings are still untested, deliberately. Both championship collections are empty live and
empty in the Backfill, because a practice Session has no standings either way — that is a Session
type with nothing to say, not a measurement, and no conclusion is recorded from it. They stay on the
strip and in the ADR on Formula 1's word, and ADR-0002's Revisit when now names the race-day
capture that settles it.
The Session countdown is in the same position for a smaller reason: no
ExtrapolatedClockframe isin the capture, and the subscription list is not recoverable from the file, so "not sent" and "not
subscribed" cannot be told apart. The flag condition is answered — ten
TrackStatustransitionsarrived inside
SessionData.Drift
#73 — ADR-0002 is out of date: the live window was measured and it withholds a different set: 0 of
0 criteria delivered, because a Decision issue carries no acceptance boxes. All five scope items are
done, and two things go beyond the brief.
➕ Beyond the brief —
test/design-system.test.shnow holds both design-system specimens to theGATEDconstant the running strip renders. The list is written in three files and has just movedonce; this repository already tests exactly this kind of drift for the Driver-row header, and the
alternative is a convention. Say the word and I'll take it out.
➕ Beyond the brief —
README.md, thedrsandcar_datacomments inserver/openf1/records.ts, and the closing sentence ofdocs/measurements/a-race-session-on-disk.mdare corrected too. The issue did not name them, buteach was left stating something false by the corrections it did name. Say the word and I'll take
them out.
Nothing was left undelivered. Standings staying untested is the issue's own instruction, not a
shortfall.
Checks
test/run,npm ci && npm run typecheckandshellcheck -xall green. Nobin/command was run:this was written from a worktree, where the wrappers compute container paths from their own location
(ADR-0004) and would resolve wrongly.
Assisted-by: Claude Opus 5 (reasoning: high)
Co-authored-by: Claude noreply@anthropic.com