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

> Cumulative push load from tyre thermal management.

<Note>Part of the [Physics](/transform/families/physics) family.</Note>

Cumulative push load from tyre thermal management. One row per lap. push\_residual is the lap's pace against a POINT-IN-TIME stint baseline -- the expanding median of this stint's valid laps strictly before the scored lap (macro: trailing\_median) -- and the two EW loads are backward sums over it. Rebuilt by 08e: the baseline was a MEDIAN over laps 1..CEIL(stint\_length\*0.60) per stint, which both pooled laps the scored lap had not yet run (55.92% of mart rows, mean 4.65 laps) and took its window width from stint\_length\_actual, the stint-life target's own numerator. That contamination did not merely add noise -- it inverted push\_residual's sign against two of the three targets.

## Lineage

```mermaid theme={null}
flowchart LR
  int_stint_geometry --> int_lap_thermal_proxy
  stg_laps --> int_lap_thermal_proxy
  int_lap_thermal_proxy --> fct_cliff_prediction_features
  int_lap_thermal_proxy --> fct_stint_features
  int_lap_thermal_proxy --> int_tyre_surface_vs_bulk_decoupling
  style int_lap_thermal_proxy fill:#e40404,stroke:#e40404,color:#fff
```

## Overview

| Property          | Value                                                                       |
| ----------------- | --------------------------------------------------------------------------- |
| Layer             | `intermediate`                                                              |
| Family            | [Physics](/transform/families/physics)                                      |
| Contract enforced | No                                                                          |
| Upstream          | [`int_stint_geometry`](./int_stint_geometry), [`stg_laps`](../stg/stg_laps) |

**6 tests** [guard](/transform/ci/overview) this model  -  4 generic, 2 singular.

## Columns

| Column                         | Type | Nullable | Tests                                                                                                          | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| ------------------------------ | ---- | -------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `lap_id`                       |      | Yes      | [`not_null`](/transform/ci/structural), [`unique`](/transform/ci/structural)                                   | Foreign key to stg\_laps                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| `stint_baseline_pace`          |      | Yes      |                                                                                                                | Median lap\_time\_s over this stint's VALID laps strictly before this one. Expanding, not trailing-N: a stint is short enough that the window stays local, and capping it would let the baseline drift with the degradation it measures. NULL until one valid prior lap exists (min\_observations=1) -- usually laps 1-2, since lap 1 of a stint is an out-lap and not valid. Costs 1.41pp of training-eligible coverage against the old block median. The floor is 1 by measurement, not by default: a 2026-09-10 session silently raised it to 2, and 08i (RESULT 2026-09-18) gated all four priced floors \{1,2,3,5} on the v12/08m substrate and reverted to 1. Floors 3 and 5 are rejected -- dominated on coverage AND signal. On the v12 training-eligible panel floor 1 leaves 2,156/119,822 rows (1.80%) thermal-NaN, +2.15pp of coverage against floor 2, and cuts the blind rate on the hardest cliff class (0\_to\_2) from 12.13% to 10.48%. |
| `baseline_observations_n`      |      | Yes      | [`not_null`](/transform/ci/structural), [`expect_column_values_to_be_between`](/transform/ci/range-and-domain) | How many valid prior laps stint\_baseline\_pace was computed from. Ships as a feature-contract column precisely because the baseline's NULLs are deterministic on it and on nothing else the contract carries: unlike 02a's rebuild, whose NULLs were declarable from age\_in\_stint, this count rises with SC and pit disruption and is plausibly correlated with the outcome. A consumer conditions on it; it must not be imputed away.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| `push_residual`                |      | Yes      |                                                                                                                | stint\_baseline\_pace - lap\_time\_s. Positive = faster than the stint's own prior pace = pushing. NULL wherever the baseline is NULL: unknown, not zero.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| `cumulative_push_load_surface` |      | Yes      |                                                                                                                | EW sum of positive push\_residual, tau\~3 laps, 5-lap lookback. A NULL residual on a PRIOR lap contributes 0 (the same convention as laps before the stint began); a NULL residual on THIS lap makes the load NULL rather than 0, since GREATEST(NULL, 0) = 0 in DuckDB would fabricate "no thermal load" for a lap whose load is simply unknown.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| `cumulative_push_load_bulk`    |      | Yes      |                                                                                                                | EW sum of positive push\_residual, tau\~5 laps, 8-lap lookback. Same NULL rule as cumulative\_push\_load\_surface.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
