> ## Documentation Index
> Fetch the complete documentation index at: https://playbook.smedleygroup.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Tyre Strategy

> A Pirelli-style, whole-race view of every driver's stint sequence and tyre wear, one row per driver.

## Overview

Tyre Strategy shows the whole field's stint sequence on one lap-number axis: every driver's row is their stints laid out as compound-coloured blocks, so you can read undercut and overcut patterns, compound splits, and stop timing across the field at a glance. Reach for it whenever you need the race's strategic shape rather than one driver's detail.

> [!NOTE]
>
> This is a race-only widget: outside a race session it shows "Session is not a race." and computes nothing.

***

## What It Shows

![Tyre Strategy mid-race: hatched used sets and unfinished open stints (Madrid 2026, lap 43)](https://mintcdn.com/smedley_group/Tjan_fF50tdTQI7z/images/watchparty/tyre-strategy.png?fit=max\&auto=format\&n=Tjan_fF50tdTQI7z\&q=85\&s=68c0b5aeba641547b36af348a93797b1)

One row per driver, each stint drawn as a block on a lap axis that spans the whole race, lap 1 at the left.

**Two orderings, your choice.** A toggle switches the rows between **car number**, a stable reference grid that never re-sorts, and **running order**, which takes the timing tower's own as-of order so the rows read top to bottom as the race currently stands.

| Element | Meaning |
| - | - |
| Driver code | Car number's three-letter code, coloured in the driver's team colour |
| Segment fill | Full compound colour for a fresh set; the same colour with a diagonal hatch layered over it for a used set (never a paler shade, so the compound still reads at a glance); a neutral grey fill when the compound is unreported |
| Segment width/position | The stint's lap range as a fraction of the race's total laps |
| Hover tooltip | Stint number, compound, wear state, lap range and lap count, and tyre life as "start→live" laps on that set - the only detail surface, since segments carry no in-bar text |
| Flag overlay | SC / VSC / RED / YELLOW bands drawn across every row at the same lap positions, 15% opacity, painted in ascending severity order (yellow under, then safety car, virtual safety car, red flag on top) |
| Lap axis | Ticks at a step chosen to keep roughly 12 or fewer labels (1, 2, 5, 10 or 20 laps per tick) |

Hovering a segment is the only way to see its detail. **Right-click a segment** to open the compound picker and correct that stint's tyre by hand: the same menu the timing tower's badge and the Stints viewer open, offered here because the whole stint is already on screen.

***

## Data Behind It

This widget has no dedicated insight and carries no `model_id`/`model_version`: it is a pure client-side derivation over the same stint rows the [Stints](/software/internal/watchparty/widgets/stints) widget reads, built by `buildTyreStrategyColumns` in `src/screens/derive.ts`.

* **Rows**: `GET /v1/sessions/{session_key}/stints`, hydrated on session enter and re-hydrated on seek or reconnect. Stint rows carry no channel of their own on the wire; live updates arrive wrapped as `timing`-channel envelopes and route to the stint reducer by the presence of a `stint_number` field.
* **Row membership and order**: the builder returns rows in fixed car-number order; the running-order option re-orders them using the timing tower's own entries, which is the one place in the app allowed to decide a running order.
* **Compound**: the stint row's own compound, with a manual override for that stint winning and marked as edited.
* **Flag bands**: `buildStintFlags` (safety car, virtual safety car, red flag periods, plus track-level sector-yellow spans) mapped onto the lap axis via `buildStintAxisLaps`'s per-lap timing ticks - the identical overlay data the Stints widget's own flag bands use.
* **Axis span**: `transport.totalLaps` fixes the axis to the full race; if that is not yet known, the axis falls back to the furthest lap any segment currently reaches.

***

## States

> **Empty / no stints yet**
>
> Shows "No stints yet." whenever no driver has a usable stint segment, or the axis span cannot be determined - typically the first laps of a race before any stint row has arrived.

> **Live vs replay**
>
> Wire-identical: the widget reads the same stint rows and channel envelopes regardless of source, and never branches on it.

> **Session-type gating**
>
> Race-only. Outside a race, the widget shows "Session is not a race." - the app never computes the tyre-strategy data bundle for a non-race session.

> **Unknown compound or tyre age**
>
> An unreported compound renders a neutral grey block rather than a guessed colour. An unreported starting tyre age (`tyre_age_at_start`) is never assumed to be a fresh set: the tooltip's tyre-life reads "?" instead of "new".

> **No flag overlay**
>
> If flag data or lap-time ticks are not yet available, the overlay simply does not draw - not an error state, just nothing to show yet.

> **Open (current) stint**
>
> A driver's latest stint grows lap by lap with the playhead and shrinks correctly on scrub-back. It is truncated so it never overlaps a successor stint that has already reported in, which can otherwise happen during a brief live coalescing window.

***

## FAQ

> **Why is a segment hatched instead of a paler colour?**
>
> A hatch marks a used set on the same base compound colour, so the compound stays legible at a glance regardless of wear. A paler "used" shade was tried and dropped because it made the compound itself harder to read.

> **Why does a segment's tyre life show a question mark?**
>
> The stint row did not report a starting tyre age. Rather than assume the set was fresh, the widget renders the honest "unknown" state.

***

## Next Steps

> **[Stints](/software/internal/watchparty/widgets/stints)**
>
> The same stint data at per-lap detail, on a time-of-day axis.

> **[Tyre Deg Table](/software/internal/watchparty/widgets/tyre-deg-table)**
>
> Per-stint degradation fits for every driver.

> **[Tyre Deg Ranking](/software/internal/watchparty/widgets/tyre-deg-ranking)**
>
> Compound-by-compound degradation ranking across the field.

> **[Race Control](/software/internal/watchparty/widgets/race-control)**
>
> The flag periods this widget's overlay bands are drawn from.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.