> ## 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.

# Stints Table

> Every stint across every driver as sortable, filterable rows, and the drag source that loads stints onto the Stint Lap Times viewer.

## Overview

The Stints Table lists one row per (driver, stint) for the whole field: which compound was fitted, how long the stint ran, its best lap, and how old the tyre already was when it went on. Reach for it to compare stint lengths and compounds as a table rather than as blocks, and to pick which stints to plot: a row is a **drag source** for the [Stint Lap Times](/software/internal/watchparty/widgets/stint-lap-times) viewer.

> [!NOTE]
>
> This table and the [Tyre Deg Table](/software/internal/watchparty/widgets/tyre-deg-table) are different tools on purpose. This one is raw evidence with no analytics: no fit, no gradient, no correction. The Tyre Deg Table is the fitted view, and it feeds a different pair of plots.

***

## What It Shows

![The Stints table mid-race, two stints plotted and pinned to the top (Madrid 2026)](https://mintcdn.com/smedley_group/zwm6wmhxgH8zyABx/images/watchparty/stints-table.png?fit=max\&auto=format\&n=zwm6wmhxgH8zyABx\&q=85\&s=293af7c40ec45738f79ec6d522b8817a)

| Column | Meaning |
| - | - |
| Driver | Three-letter code, in the driver's team colour |
| Stint | The stint number as the timing feed numbers it |
| Compound | Tyre badge for that stint's own compound, marked when a manual override is in force |
| Laps | Timed laps inside the stint as of the playhead |
| Best | The fastest raw lap inside that stint only; a dash when no lap in range has a finite time yet |
| From | First lap of the stint |
| To | Last lap of the stint as of the playhead |
| Tyre age | How many laps the tyre had already run when the stint began |

Rows arrive in a fixed default order, ascending by driver number then stint number. Click any column header to sort by it, and click again to reverse; the glyph beside the label shows the active sort.

**Filtering.** The cog opens the same driver and compound filter popover the [Laps](/software/internal/watchparty/widgets/laps-table) table uses. Selecting nothing means no filter. A selection for a driver or compound that is not in the current as-of rows is ignored rather than emptying the table, and Clear covers hidden selections too.

**Plotted stints pin to the top.** A stint you have dragged onto the Stint Lap Times viewer is tinted in its team colour with a left accent bar, and is pinned above the rest while keeping whatever sort you chose. A small ✕ on those rows removes the stint from the plot again; it is the same action the plot's own legend chip offers, so the two never disagree.

***

## Data Behind It

The Stints Table is entirely client-derived. `screens/derive.ts`'s `buildStintTableRows` is a pure function of the hydrated session state, the driver roster, the playhead cutoff and any manual compound overrides.

* **REST hydration**: `GET /v1/sessions/{session_key}/laps` and `GET /v1/sessions/{session_key}/stints`, both offset-paged row endpoints, read on session enter and re-read on a WebSocket reconnect or a `seek`.
* **Live updates**: the `laps` channel, plus stint rows synthesised through the same `timing`-channel envelope reducer as pit rows.
* **As-of clamping**: each driver's rows are clamped to their own latest as-of lap. An open stint (no recorded end) is truncated before its successor's first lap. A stint with no usable start lap, or one whose first lap sits beyond the driver's latest as-of lap, is skipped outright rather than rendered as a fabricated row.
* **Compound**: read off the stint row's own compound, with a manual override for that stint number winning. It is deliberately not resolved "by lap", which could otherwise pick an earlier, still-open stint's compound for a later stint's row.
* Live and replay envelopes are wire-identical; the widget never branches on envelope `source`.

***

## States

| State | Behaviour |
| - | - |
| No stints yet | "No stints yet" empty state |
| Filter hides every row | "No stints match the selected filters", never mistaken for having no data; the table also holds its measured width so the window does not jump |
| Session-type gating | None: the table renders in every session type |
| Compound missing at source | The badge is simply absent for that row, never a guessed compound |
| Stint with no timed lap yet | The row renders with a dash in Best and a lap count of zero |
| Live vs replay | Identical rendering |

***

## FAQ

> **Why does a stint's To lap stop short of where I know it ended?**
>
> Every row is clamped to the playhead. An open stint is shown only as far as the driver's latest as-of lap, so scrubbing forward extends it.

> **Why did my sort get rearranged?**
>
> It did not. Plotted stints pin above the rest, and each block keeps the sort you chose. Remove a stint from the plot and it falls back into the sorted body.

> **Is Best fuel-corrected?**
>
> No. This table is deliberately raw. Fuel-corrected lap times live on the Stint Lap Times viewer's own Raw / Fuel corr toggle, on [Lap Times](/software/internal/watchparty/widgets/lap-times), on [Laps](/software/internal/watchparty/widgets/laps-table) and in the Stint viewer.

***

## Next Steps

> **[Stint Lap Times](/software/internal/watchparty/widgets/stint-lap-times)**
>
> Plot the stints you drag out of this table, lap by lap.

> **[Stints](/software/internal/watchparty/widgets/stints)**
>
> The same stints as per-driver lap blocks on a shared axis.

> **[Tyre Deg Table](/software/internal/watchparty/widgets/tyre-deg-table)**
>
> The fitted degradation view of the same stints.

> **[Tyre Strategy](/software/internal/watchparty/widgets/tyre-strategy)**
>
> The whole field's stint sequence on one lap axis.


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