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

> 02c (Tier 2).

<Note>Part of the [Residual](/transform/families/residual) family.</Note>

02c (Tier 2). int\_corner\_skill\_residuals aggregated from (lap × corner) grain to lap grain, so the corner channel can join a lap-grain feature matrix. One row per race lap that has at least one measured corner (134,948 laps).
WHY IT EXISTS. The degradation target's variance is 99.06% within stint (between\_stint\_share = 0.0094). Every other candidate channel in item 02 -- qualifying (02b), safety-car hazard (02d) -- is constant inside a stint and can only address the other 0.94%. This is the only lap-varying candidate, so it is the only one that can reach the degradation trio at all.
MECHANISM. Braking, rotation and throttle application are the direct physical inputs of energy into a tyre. The incumbent `thermal` group (push\_residual, cumulative\_push\_load\_\*) INFERS push load from lap-time residuals; this MEASURES the inputs. That is a different construct even though it shares the telemetry sensor with `proximity`. Phase 9 dropped `powertrain` and `telemetry_cliff` -- the mart's whole consumption of int\_lap\_telemetry\_aggregates -- and Phase 10a then cleared at 1.54x/2.17x re-reading the same ingestion through a different aggregation. The evidence says the aggregation failed, not the sensor, which is why this model's risk is concentrated in the aggregation design and stated there.
AGGREGATION. mean / sd / max per phase. Mean is the lap's overall input level, max the single hardest corner, sd the one with a tyre-management story: a driver even across the lap loads the tyre differently from one spiking in two corners and coasting the rest, at equal mean. Each phase is aggregated over the corners where THAT phase is measurable, not over the intersection of all three -- corner-grain availability, re-measured on the shipped table 2026-09-11, is braking 69.94%, mid-corner 81.12%, exit 47.00% (18.88% of corner rows are unmapped outright at field\_corner\_sample\_n \< 5; among mapped rows the three run 86.21% / 100% / 57.94%), and corner\_residual\_total\_s (exactly that intersection) is non-null on only 38.59% of corner rows. An earlier draft quoted mid-corner 97.6% and exit 60.9%; those do not reproduce and are corrected here.
CORNER-TYPE SPLIT: CONSIDERED AND DECLINED, recorded so it is not re-derived. §3 of the leaf doc suggests splitting by corner type since a slow hairpin and a high-speed sweep load a tyre differently. Declined for the primary arm on two grounds. (1) The only within-warehouse classifier of corner speed is apex speed, and a per-(race, corner) speed class pooled over the race reaches forward into the label window -- the exact defect 02a ruled on in this same model. A point-in-time classifier would have to be trailing, which makes the corner's TYPE vary lap to lap, which is not what a corner-type split means. (2) dim\_corners carries only geometry (apex distance, neighbour spacing), which is a weak proxy for how a corner loads a tyre. It stays available as a declared follow-on arm if the primary clears; it is not in the primary arm.
POINT-IN-TIME. Every input is a residual against a backward-only trailing-5 field median (02g). The GROUP BY is keyed on lap\_id, which pins one lap, so this model contributes no aggregation scope of its own -- the whole argument rests on int\_corner\_skill\_residuals above.
COVERAGE IS NOT NEUTRAL, and is emitted as a column rather than left as a NaN pattern. Measured on the mart's training-eligible rows, corner\_braking\_loss\_mean\_s is NULL on 4.15%, and those rows average +1.393 s of 5-lap jump against -2.330 s for covered rows (sd 10.196 vs 5.938). The missingness carries label signal. It is not forward leakage -- a lap is uncovered because its own telemetry is absent, or because the trailing baseline over t-5..t-1 held fewer than five valid observations, both settled strictly before t+1 -- but a model handed bare NaNs could split on "corner inputs missing" and score a win that has nothing to do with driver inputs. corner\_input\_coverage is therefore admitted to the contract beside the residuals so the ablation can separate the two (arm C).

## Lineage

```mermaid theme={null}
flowchart LR
  int_corner_skill_residuals --> int_lap_corner_inputs
  int_lap_corner_inputs --> fct_cliff_prediction_features
  style int_lap_corner_inputs fill:#e40404,stroke:#e40404,color:#fff
```

## Overview

| Property          | Value                                                        |
| ----------------- | ------------------------------------------------------------ |
| Layer             | `intermediate`                                               |
| Family            | [Residual](/transform/families/residual)                     |
| Contract enforced | No                                                           |
| Tags              | `feature_engineering`                                        |
| Upstream          | [`int_corner_skill_residuals`](./int_corner_skill_residuals) |

**9 tests** [guard](/transform/ci/overview) this model  -  8 generic, 1 singular.

## Columns

| Column                        | Type | Nullable | Tests                                                                        | Description                                                                                                                                                                                                                                                                                                                                                                                                                         |
| ----------------------------- | ---- | -------- | ---------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `lap_id`                      |      | Yes      | [`not_null`](/transform/ci/structural), [`unique`](/transform/ci/structural) | PK, FK to stg\_laps. One row per lap with at least one measured corner.                                                                                                                                                                                                                                                                                                                                                             |
| `corners_total_n`             |      | Yes      | [`not_null`](/transform/ci/structural)                                       | Corners the telemetry placed on this lap (mean 16.35).                                                                                                                                                                                                                                                                                                                                                                              |
| `corners_mapped_n`            |      | Yes      | [`not_null`](/transform/ci/structural)                                       | Corners that cleared int\_corner\_skill\_residuals' field\_corner\_sample\_n >= 5 gate and so carry a residual (mean 13.27).                                                                                                                                                                                                                                                                                                        |
| `corner_input_coverage`       |      | Yes      | [`not_null`](/transform/ci/structural)                                       | corners\_mapped\_n / corners\_total\_n (mean 0.813). The contract column: the raw count conflates coverage with circuit corner count (Monaco 19 vs Monza 11), and circuit identity already enters the feature set three times over.                                                                                                                                                                                                 |
| `corner_braking_n`            |      | Yes      | [`not_null`](/transform/ci/structural)                                       | Corners on this lap with a measured braking point. Companion column, not a feature.                                                                                                                                                                                                                                                                                                                                                 |
| `corner_mid_n`                |      | Yes      | [`not_null`](/transform/ci/structural)                                       | Corners on this lap with a measured apex speed. Companion column, not a feature.                                                                                                                                                                                                                                                                                                                                                    |
| `corner_exit_n`               |      | Yes      | [`not_null`](/transform/ci/structural)                                       | Corners on this lap with a measured full-throttle point. Companion column, not a feature.                                                                                                                                                                                                                                                                                                                                           |
| `corner_braking_loss_mean_s`  |      | Yes      |                                                                              | Mean braking\_loss\_s across the lap's braking corners; positive = braked earlier than the field = time lost (mean +0.0065 s since 00d fixed the sign; it read -0.0065 s before). NULL, never 0.0, when unmeasured.                                                                                                                                                                                                                 |
| `corner_braking_loss_sd_s`    |      | Yes      |                                                                              | Sample sd of braking\_loss\_s across the lap's corners (mean 0.3289 s, unchanged by 00d's sign fix: a sample sd is invariant to negation). NULL on 2.57% of rows here -- laps with fewer than two measured braking corners, where a sample sd is undefined rather than zero.                                                                                                                                                        |
| `corner_braking_loss_max_s`   |      | Yes      |                                                                              | Largest braking\_loss\_s on the lap: the corner where the driver lost the most time on entry (mean +0.6475 s). NOT a sign flip of its pre-00d self -- MAX does not commute with negation, so this column changed from "the corner braked latest" to "the corner braked earliest relative to the field", which is what a column named max loss should mean. Pre-00d mean was +0.5459 s and corr(old, new) = 0.080 over 131,482 laps. |
| `corner_mid_residual_mean_s`  |      | Yes      |                                                                              | Mean mid\_corner\_residual\_s across the lap's corners (mean -0.0102 s). Highest-coverage phase.                                                                                                                                                                                                                                                                                                                                    |
| `corner_mid_residual_sd_s`    |      | Yes      |                                                                              | Sample sd of mid\_corner\_residual\_s across the lap's corners (mean 0.1439 s; NULL on 2.39%).                                                                                                                                                                                                                                                                                                                                      |
| `corner_mid_residual_max_s`   |      | Yes      |                                                                              | Largest mid\_corner\_residual\_s on the lap (mean 0.2543 s).                                                                                                                                                                                                                                                                                                                                                                        |
| `corner_exit_residual_mean_s` |      | Yes      |                                                                              | Mean exit\_residual\_s across the lap's corners that reach full throttle (mean 0.0589 s). Sparsest phase.                                                                                                                                                                                                                                                                                                                           |
| `corner_exit_residual_sd_s`   |      | Yes      |                                                                              | Sample sd of exit\_residual\_s across the lap's corners (mean 0.2115 s; NULL on 9.78%).                                                                                                                                                                                                                                                                                                                                             |
| `corner_exit_residual_max_s`  |      | Yes      |                                                                              | Largest exit\_residual\_s on the lap (mean 0.4367 s).                                                                                                                                                                                                                                                                                                                                                                               |
