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

# Strategy Status

> The gate, reasons, and whole-race health strip that explains why every other strategy widget is showing what it is showing.

## Overview

Strategy Status is the diagnostic surface for the whole Race Strategy Tool. Reach for it whenever one of the other five strategy widgets looks blank or stale and you need to know why: it reports the exact playhead lap's solve outcome, any degradations or missing drivers, and a whole-race strip of every evaluated lap's gate.

> [!NOTE]
>
> Unlike the six data widgets, Strategy Status never uses the as-of-lap rule. It reads the exact playhead lap, so a degraded or skipped lap is reported honestly instead of silently showing a neighbouring lap's data.

***

## What It Shows

![Strategy Status on a solved lap (Madrid 2026)](https://mintcdn.com/smedley_group/zwm6wmhxgH8zyABx/images/watchparty/strategy-status.png?fit=max\&auto=format\&n=zwm6wmhxgH8zyABx\&q=85\&s=5d6a260bef78da78b6f055dcb0385d89)

| Element | Meaning |
| - | - |
| Gate badge | The playhead lap's outcome: `solved`, `degraded`, `skipped`, or `suspended` |
| Reasons | Short strings explaining the gate (for example, a whole-field suppression) |
| Degradations | `#driver / parameter / reason` rows for any input that fell back to a default |
| Missing drivers | Drivers the engine had no usable data for on this lap |
| Solve time | Wall-clock seconds the engine took to solve this lap |
| Single-flight abandoned | Driver numbers whose solve was abandoned mid-flight, folded into the next lap that did finalise |
| Residuals | Field-mean and per-driver absolute error against actual outcomes, with a bold "RESIDUALS BLOWN" flag when the error is too large to trust |
| Version line | `model`, `engine`, `contract`, and `mapping` version strings, each omitted individually when not known |
| Solver config | The `number_repeats` / `cycles` / `plus_stoplap` / `minus_stoplap` values this solve actually ran with |
| Suppressed / Retired | Drivers excluded from the solve, or marked retired, for this lap |
| Gate strip | One cell per evaluated lap, coloured by that lap's own gate |

The gate strip runs the whole race: green for `solved`, amber for `degraded`, muted grey for `skipped`, red for `suspended`, and a faint neutral for anything unrecognised. **Click a cell** to scrub the transport to that lap's earliest known position; a cell with no known position is not clickable (shown at reduced opacity) rather than jumping to an invented time.

When the six data widgets are showing a stale snapshot, a banner at the top of the panel says so: "data widgets showing lap N (as of)".

***

## Data Behind It

Strategy Status reads the `strategy_status` insight at the **exact** playhead lap, plus the `strategy_snapshot` payload at that same exact lap for the fields that only a snapshot carries (`engine_version`, `contract_version`, `mapping_version`, `solver_config`, `suppressed`, `retired`). Both metrics stream over WebSocket channels `vpw:v1:{session_key}:insight:strategy_status` and `vpw:v1:{session_key}:insight:strategy_snapshot`, `model_id` `strategy_status` / `strategy_snapshot`, `model_version` the composite `engine_version+WRAPPER_VERSION`. The webapp hydrates both via a REST snapshot on session enter and rehydrate, then the same channels live.

Snapshots exist only for **solved** laps (the publisher is complete-or-nothing); a degraded, skipped, or suspended lap has a status row and no snapshot, which is why the version/solver-config/suppressed/retired fields on this panel are absent for those laps rather than borrowed from a neighbouring one.

Since the template stage, a status payload also carries `input_mode` (`template` or `fitted`), the loaded `race_data_version`, and `package_dir`, the solve archive folder for that lap. Rows written before that stage carry none of them, and their absence reads as unknown rather than as a default. The lap-0 pre-race row is an ordinary status row of this kind; see [Pre-Race and What-If Studies](/software/internal/watchparty/strategy/pre-race-and-study-mode).

The gate vocabulary comes from the engine's own status mapping: a solved solve reports `solved`; a gate `skip` verdict reports `skipped`; a `suspend` verdict (for example, a red flag) reports `suspended`; a rejected or errored lap outcome reports `degraded`. An abandoned single-flight solve is not published on its own; it is folded into the `single_flight_abandoned` list of the next lap that does finalise.

***

## States

> **No status row at the playhead**
>
> Renders the generic "No strategy data at lap N." state, distinct from a reported gate, so a genuine data hole is never mistaken for a solve outcome.

> **Race-only**
>
> Outside a race, this widget renders "Session is not a race" instead of the panel; the app never computes a strategy bundle for a non-race session.

> **Live vs replay**
>
> Wire-identical: both sources publish the same `insight:strategy_status` / `insight:strategy_snapshot` envelope shapes, and the panel never branches on `source`.

> **Degraded or suspended lap**
>
> Reasons, degradations, and missing drivers render exactly as reported; there is no snapshot-only detail (versions, solver config, suppressed, retired) for these laps.

> **Mixed model\_version**
>
> A partial re-precompute that leaves rows at more than one `model_version` blanks both `strategy_status` and `strategy_snapshot` together, so this panel and all six data widgets fall back to the no-data state at once.

***

## FAQ

> **Why is a gate strip cell not clickable?**
>
> A cell only scrubs to a position when at least one driver's lap-start time is known for that lap. No known position means the widget does not invent one.

> **Why are the solver config, suppressed, and retired lines missing?**
>
> Those fields live only on a `strategy_snapshot`, which exists only for solved laps. A degraded, skipped, or suspended playhead lap has a status row but no snapshot, so those lines are omitted rather than shown from a different lap.

***

## Next Steps

> **[Race Strategy Tool](/software/internal/watchparty/strategy/index)**
>
> The shared engine, derivation layer, and sentinel rule behind all six strategy widgets.

> **[Strategy Table](/software/internal/watchparty/strategy/table)**
>
> Ranked stop-lap strategies per driver.

> **[Predicted Pit Window and SC](/software/internal/watchparty/strategy/predicted-pit-window)**
>
> Each driver's next predicted stop, plus safety-car guidance.

> **[Insights and Versioning](/software/internal/watchparty/concepts/insights-and-versioning)**
>
> How model IDs, versions, and degradation rules work across Watchparty.


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