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

> Driver isolation step 0: the clean-lap panel Ω and the field-centred isolated time.

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

Driver isolation step 0: the clean-lap panel Ω and the field-centred isolated time. One row per Ω lap: correction\_weight 1, anomaly\_class normal/clean\_cliff, dry, not rain, not an out- or in-lap, a known tyre (compound\_component\_s and laps\_past\_cliff non-NULL, never COALESCEd), not in var('isolation\_exclude\_races'), on a (race, lap) with >= var('isolation\_min\_field\_n') such laps. y\_s = x\_s minus the lap's field median, so every per-(race, lap) term (field base, fuel, rubber, ambient) cancels: the ratings do not depend on the FD1 base (T41). Also the stint phase (tyre phase from the seed's onset, recovery overlay from the air state). The input of the car-term fit (fit\_constructor\_car\_fe.py --panel isolation). 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_lap_air_state --> int_driver_isolation_lap_panel
  int_lap_anomaly_flags --> int_driver_isolation_lap_panel
  int_lap_residual_decomposed --> int_driver_isolation_lap_panel
  int_stint_geometry --> int_driver_isolation_lap_panel
  int_driver_isolation_lap_panel --> int_driver_isolation_lap_pace
  style int_driver_isolation_lap_panel fill:#e40404,stroke:#e40404,color:#fff
```

## Overview

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

**31 tests** [guard](/transform/ci/overview) this model  -  27 generic, 4 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 | [`not_null`](/transform/ci/structural) | Ordinal among the stint's valid laps; early vs mid phase splits at 5/6. |
| `laps_past_cliff` | | Yes | [`not_null`](/transform/ci/structural) | 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 | [`not_null`](/transform/ci/structural) | Regulation era: pre\<era\_boundary> or post\<era\_boundary> (var era\_boundary, 2022). |
| `driver_era` | | Yes | [`not_null`](/transform/ci/structural) | driver\_id + '\_' + era: the driver key of the era-split car-term fit. |
| `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 | [`not_null`](/transform/ci/structural) | TRUE when air\_state\_dominant = 'dirty\_air'. |
| `field_n` | | Yes | [`not_null`](/transform/ci/structural) | Ω laps on this (race, lap); >= var('isolation\_min\_field\_n') by construction (T40). |
| `lap_time_s` | | Yes | [`not_null`](/transform/ci/structural) | Raw lap time, s. |
| `compound_component_s` | | Yes | [`not_null`](/transform/ci/structural) | 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 | [`not_null`](/transform/ci/structural) | D: dirty-air tax, s, positive = slower (int\_lap\_residual\_decomposed). |
| `x_s` | | Yes | [`not_null`](/transform/ci/structural) | lap\_time\_s - compound\_component\_s - dirty\_air\_tax\_s, s. |
| `field_median_x_s` | | Yes | | Median of x\_s over the Ω laps on this (race, lap), s. |
| `y_s` | | Yes | [`not_null`](/transform/ci/structural) | 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 | [`not_null`](/transform/ci/structural) | 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. |
| `tyre_phase` | | Yes | [`not_null`](/transform/ci/structural), [`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 | [`not_null`](/transform/ci/structural) | 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 | [`not_null`](/transform/ci/structural), [`accepted_values`](/transform/ci/range-and-domain) | 'recovery' when is\_recovery, else tyre\_phase (T45). |


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