Overview
Track Evolution estimates how much lap time the track surface itself is giving back as the race goes on (rubber going down, the surface cleaning up), separated out from tyre degradation and fuel load. Two widgets share this one insight: the Track Evolution panel plots the running estimate as a chart, and the Evolution Comparisons table lists every individual stint-pair comparison the estimate is built from. Reach for the panel to read the trend, and the table when you need to check a specific pair of stints behind it.Both widgets run on race and practice sessions, and both read the same as-of snapshot: the table is the working behind the panel’s curve.
What It Shows


Track Evolution panel
A header line above the chart reads the comparison count and IQR range, for example “14 comparisons · IQR 0.012 to 0.031”. The chart itself:
The panel zooms like the other charts: right-drag across the plot to draw a box and zoom both axes to it (the drag carries on past the plot edge and zooms at the last point inside the plot on release), and right-click without moving to open a small menu with Reset zoom. There are no zoom sliders.
Evolution Comparisons table
One row per same-compound stint-pair comparison, each pair of values rendered as “first → later” so both stints under comparison stay readable side by side.
Neither widget has clickable rows or hover detail beyond the table’s own values; the table’s precision is the drill-down surface for the chart.
Data Behind It
Both widgets read one insight:track_evolution, model_id: "track_evolution", model_version: "2.3.0", triggered on every new_lap. It emits for race and practice sessions; in qualifying it produces nothing.
Method: each driver’s eligible dry-compound stints (those with a fit over enough valid laps, excluding wet/intermediate/unknown compounds) are chained against the immediately preceding same-compound stint - stint 1 vs 2, then 2 vs 3, never 1 vs 3. Each side’s reference is that stint’s first flying lap to pass a strict validity standard (free of dirty air, traffic, overtakes, blocked-then-cleared laps, safety-car/VSC/red-flag interruption, and out/in-lap status). Each reference is then deg-projected back to effective tyre life 1 using its own stint’s fuel-only fit slope, so a worn-tyre reference and a fresh-tyre reference land on a common basis before they are subtracted; because the fit’s evolution term is pinned to zero, the degradation component cancels between the pair and the remaining delta is attributed to track evolution.
Aggregation: the panel’s line and IQR band are an expanding robust median with Tukey-hinge quartiles over every comparison whose later reference lap is at or before that point on the axis, deterministic and traceable straight back to the comparison table’s own rows.
Wire and hydration: delivered live on vpw:v1:{session_key}:insight:track_evolution, and REST-hydrated via GET /v1/sessions/{session_key}/metrics?metric_id=track_evolution&limit=5000 on session enter, seek and reconnect - both paths route through the same reducer, so a REST-hydrated snapshot is wire-identical to a streamed one. Neither widget has a client-side fallback derivation of its own; “no snapshot yet” is an honest wait state, not a placeholder for missing maths.
States
No snapshot yet
No snapshot yet
Both widgets show “No track evolution insight yet.” until the first snapshot arrives - there is no equivalent client-side maths to fall back to.
Thin data / no comparisons yet
Thin data / no comparisons yet
Once a snapshot exists but has no usable comparisons, series or estimate, both widgets show “No same-compound stint comparisons yet.” A driver needs at least two qualifying same-compound stints, each with a valid reference lap, before their first comparison exists - so this is the expected state through most of a one-stop race’s opening stint, and for any driver who never runs a same-compound pair.
Degraded: missing fuel parameters
Degraded: missing fuel parameters
If the circuit has no fuel parameters configured, the insight emits an explicit degraded status rather than guessing at corrections; both widgets show “No fuel parameters for this circuit.”
Session gating: race and practice, never qualifying
Session gating: race and practice, never qualifying
Both widgets run on race and practice sessions. In qualifying they show a not-applicable notice, and the insight itself emits nothing there: a qualifying session has no same-compound stint pairs to compare.
Live vs replay
Live vs replay
Wire-identical: both widgets read the same snapshot shape regardless of source and never branch on it.
FAQ
Why is there no estimate yet, even well into the race?
Why is there no estimate yet, even well into the race?
Each driver needs two same-compound stints, each with a valid reference lap, before a single comparison can be built. A driver who has only run one compound so far, or whose reference laps keep landing on a disqualifying condition (traffic, an interruption, an out/in lap), contributes nothing until that changes.
Why do the panel and the table show different precision for the same numbers?
Why do the panel and the table show different precision for the same numbers?
The table shows every individual comparison’s own values, to their native precision (down to 4dp for the per-comparison s/lap). The panel’s line and band are the aggregated median and quartiles across all comparisons at a given lap, not any single comparison’s figure.
Next Steps
Stints
The raw stint data track evolution’s comparisons are built from.
Tyre Strategy
The whole field’s stint sequence on one lap axis.
Tyre Deg Table
Per-stint degradation fits, the same fits track evolution’s references are drawn from.
Insights and Versioning
How model IDs, versions and degradation rules work across Watchparty.
