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

# int_driver_isolation_lap_values

> Driver isolation tier 1 per Ω lap: pure_skill_gain_s = p (pace_isolated_gain_s) plus the declared season offset pure_season_offset_gain_s (W33; var isolation_pure_season_offset_gain_s, 2018 +0.37 s).

<Note>Part of the [Skill](/transform/families/skill) family.</Note>

Driver isolation tier 1 per Ω lap: pure\_skill\_gain\_s = p (pace\_isolated\_gain\_s) plus the declared season offset pure\_season\_offset\_gain\_s (W33; var isolation\_pure\_season\_offset\_gain\_s, 2018 +0.37 s). The tactical tier was cancelled on 2026-09-28. NULLs are declared, never zeros: no car term -> p and pure NULL. Positive = faster. Leakage: a function of the residual trajectory; no ML-contract mart may depend on it (T48, ml/tests/test\_manifest\_contract.py). WI-16a, \_roadmap/\_fixes/wi/WI-16-cumulative-driver-isolation.md.

## Lineage

```mermaid theme={null}
flowchart LR
  int_driver_isolation_lap_pace --> int_driver_isolation_lap_values
  int_driver_isolation_stint_tyre --> int_driver_isolation_lap_values
  int_driver_isolation_lap_values --> fct_driver_isolation_lap
  int_driver_isolation_lap_values --> fct_driver_isolation_pair_lap
  style int_driver_isolation_lap_values fill:#e40404,stroke:#e40404,color:#fff
```

## Overview

| Property | Value |
| - | - |
| Layer | `intermediate` |
| Family | [Skill](/transform/families/skill) |
| Contract enforced | No |
| Tags | `driver_isolation` |
| Upstream | [`int_driver_isolation_lap_pace`](./int_driver_isolation_lap_pace), [`int_driver_isolation_stint_tyre`](./int_driver_isolation_stint_tyre) |

**15 tests** [guard](/transform/ci/overview) this model  -  15 generic, 0 singular.

## Columns

| Column | Type | Nullable | Tests | Description |
| - | - | - | - | - |
| `lap_id` | | Yes | [`not_null`](/transform/ci/structural), [`unique`](/transform/ci/structural) | Lap identifier (int\_lap\_residual\_decomposed.lap\_id). |
| `stint_id` | | Yes | [`not_null`](/transform/ci/structural) | Stint identifier (int\_stint\_geometry.stint\_id). |
| `race_year` | | Yes | [`not_null`](/transform/ci/structural) | Season. |
| `race_id` | | Yes | [`not_null`](/transform/ci/structural) | FastF1 event id, e.g. 2021\_8. |
| `driver_id` | | Yes | [`not_null`](/transform/ci/structural) | Driver (three-letter code). In the pair mart, the focal driver whose gains the row reports. |
| `constructor_id` | | Yes | [`not_null`](/transform/ci/structural) | Constructor (stg\_laps.constructor\_id). |
| `stint_number` | | Yes | | Stint ordinal within the driver's race (int\_stint\_geometry). |
| `lap_number` | | Yes | [`not_null`](/transform/ci/structural) | Race lap number. Tiers 1 and 3 match cars on it, which is why 2020\_1 is excluded (W18). |
| `compound` | | Yes | [`not_null`](/transform/ci/structural) | Dry compound of the stint (INTERMEDIATE and WET laps are not in Ω). |
| `age_in_stint` | | Yes | [`not_null`](/transform/ci/structural) | Tyre age in laps (int\_stint\_geometry). |
| `lap_in_stint` | | Yes | | Lap ordinal within the stint, counting every lap. |
| `valid_lap_in_stint` | | Yes | | Ordinal among the stint's valid laps; early vs mid phase splits at 5/6. |
| `laps_past_cliff` | | Yes | | Laps beyond the compound seed's cliff onset (0 before it); drives tyre\_phase = cliff. Never NULL in Ω. |
| `fuel_mass_kg` | | Yes | | Scheduled-distance fuel load, kg. The same for every car on a lap, so it cancels from every rating (carried for WI-16b's V4 physics check). |
| `era` | | Yes | | Regulation era: pre\<era\_boundary> or post\<era\_boundary> (var era\_boundary, 2022). |
| `anomaly_class` | | Yes | | int\_lap\_anomaly\_flags.anomaly\_class; normal or clean\_cliff in Ω. |
| `air_state_dominant` | | Yes | | int\_lap\_air\_state.air\_state\_dominant (context; dirty\_air drives the recovery overlay). |
| `is_dirty_air_lap` | | Yes | | TRUE when air\_state\_dominant = 'dirty\_air'. |
| `field_n` | | Yes | | Ω laps on this (race, lap); >= var('isolation\_min\_field\_n') by construction (T40). |
| `tyre_phase` | | Yes | [`accepted_values`](/transform/ci/range-and-domain) | early (laps\_past\_cliff = 0, valid\_lap\_in\_stint \<= 5), mid (laps\_past\_cliff = 0, >= 6) or cliff (laps\_past\_cliff > 0), from the seed's onset, so never selected on the residual. |
| `is_recovery` | | Yes | | TRUE on the first var('isolation\_recovery\_laps') valid laps of a non-dirty-air run directly after >= var('isolation\_recovery\_min\_dirty\_run') consecutive dirty-air valid laps in the stint. Backward-looking only. |
| `stint_phase` | | Yes | [`accepted_values`](/transform/ci/range-and-domain) | 'recovery' when is\_recovery, else tyre\_phase (T45). |
| `lap_time_s` | | Yes | | Raw lap time, s. |
| `compound_component_s` | | Yes | | C: the compound seed's expected cost of this tyre state, s, positive = slower (int\_lap\_residual\_decomposed). Never COALESCEd: an unknown tyre is not in Ω. |
| `dirty_air_tax_s` | | Yes | | D: dirty-air tax, s, positive = slower (int\_lap\_residual\_decomposed). |
| `x_s` | | Yes | | lap\_time\_s - compound\_component\_s - dirty\_air\_tax\_s, s. |
| `y_s` | | Yes | | x\_s minus the lap's Ω field median of x\_s, s. POSITIVE = SLOWER than the field- typical car and driver on the lap. Invariant to the field base, fuel, rubber and ambient terms, which depend on (race, lap) only (T41). |
| `tyre_offset_vs_field_s` | | Yes | | compound\_component\_s minus the lap's Ω field median of it, s; positive = this tyre state costs more than the field's. The strategy position on the lap: team-dominated context, not a rating. |
| `car_iso_s` | | Yes | | Isolation car term, s, NEGATIVE = FASTER than the race's lap-weighted car (int\_constructor\_car\_fe\_isolation). NULL when not identified. |
| `car_term_source` | | Yes | [`accepted_values`](/transform/ci/range-and-domain) | Where car\_iso\_s came from: driver\_id (fitted per-era), unidentified (multiple components in race), not\_estimated (pyfixest singleton), or no\_fit\_row (no row in the fit). |
| `pace_isolated_gain_s` | | Yes | | p = -(y\_s - car\_iso\_s), s/lap. POSITIVE = FASTER than the field on an equal car, tyre state, traffic and fuel: the driver plus noise, everything modelled removed. NULL without a car term (never a car term of 0). |
| `pure_skill_gain_s` | | Yes | | Tier 1, s/lap, POSITIVE = FASTER: pace\_isolated\_gain\_s + pure\_season\_offset\_gain\_s. The offset is a per-season constant, so within a season pure ranks and differences equal p's. NULL without a car term. On cliff laps it is not a driver measurement (pure\_is\_extrapolated) and pure aggregates skip it. |
| `pure_season_offset_gain_s` | | Yes | [`not_null`](/transform/ci/structural) | The declared season-level offset inside pure\_skill\_gain\_s, s/lap (positive = the season's pure is raised; 0 for seasons not in var isolation\_pure\_season\_offset\_gain\_s). W33 Option A, 2026-09-30: 2018 +0.37 s, the measured gap between 2018's mean race pure and the 2019-2024 seasons', caused by 2018's 42% share of fast-reading cliff laps in the field median. A stopgap until WI-02b's cliff-cost refit; see the var's comment in dbt\_project.yml. |
| `pure_is_extrapolated` | | Yes | [`not_null`](/transform/ci/structural) | TRUE on cliff-tyre laps (tyre\_phase = 'cliff'): the lap time there is dominated by the tyre, so pure\_skill\_gain\_s is not a driver measurement; aggregates exclude these laps. |
| `n_line_laps` | | Yes | | Line laps the stint's slope was fitted on (early/mid, not recovery, with p). Below var('isolation\_min\_stint\_laps') the slope and every tactical value are NULL. |
| `line_ref_age_laps` | | Yes | | age\_ref: the tyre age of the stint's first line lap, laps. Tactical accumulates from here (a declared attribution rule). |
| `season_sigma_w_s` | | Yes | | Pooled within-stint SD of p around its stint line for the season, s. |
| `season_neff_factor` | | Yes | | f = (1 - rho+)/(1 + rho+), rho+ = GREATEST(season\_rho1, 0): the effective-sample factor every SE uses. NULL if rho cannot be measured. |


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