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

> WI-17: the one lap set every power-law fit, the Step-0 identification check (ml/src/powerlaw_ceiling.py) and the held-out grading in ml/src/powerlaw.py read.

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

WI-17: the one lap set every power-law fit, the Step-0 identification check (ml/src/powerlaw\_ceiling.py) and the held-out grading in ml/src/powerlaw\.py read. Slick laps with mart\_degradation\_history\_envelope's filters (correction\_weight = 1, no SC / VSC / red flag, not a major outlier), tyre age 1-50. y\_s is weight\_corrected\_lap\_time: the WI's pre-flight probe also subtracted rubber\_component\_s, which Step 0 dropped because int\_field\_pace\_curve (its source) is priced from the compound seed and the P3 truth is not net of it (see the model header and the WI's As built). Compound identity is a hardness rank from compound\_hardness\_scale: 2018 from the lap's own name, 2019+ from compound\_code, NULL for 2025 (tyre\_allocations stops at 2024, W50). T52 pins the 2018 rule; T51 the column guard.

## Lineage

```mermaid theme={null}
flowchart LR
  dim_circuits --> int_power_law_lap
  int_lap_residual_decomposed --> int_power_law_lap
  int_stint_geometry --> int_power_law_lap
  int_power_law_lap --> fct_power_law_training
  int_power_law_lap --> int_cell_power_law_fit
  int_power_law_lap --> int_stint_power_law_fit
  style int_power_law_lap fill:#e40404,stroke:#e40404,color:#fff
```

## Overview

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

**14 tests** [guard](/transform/ci/overview) this model  -  11 generic, 3 singular.

## Columns

| Column | Type | Nullable | Tests | Description |
| - | - | - | - | - |
| `lap_id` | | Yes | [`not_null`](/transform/ci/structural), [`unique`](/transform/ci/structural) | |
| `stint_id` | | Yes | [`not_null`](/transform/ci/structural) | |
| `race_id` | | Yes | [`not_null`](/transform/ci/structural) | |
| `age_in_stint` | | Yes | [`not_null`](/transform/ci/structural), [`expect_column_values_to_be_between`](/transform/ci/range-and-domain) | Tyre age (tyre life, so a used set starts above 1), 1-50. |
| `compound_label` | | Yes | [`not_null`](/transform/ci/structural), [`accepted_values`](/transform/ci/range-and-domain) | The lap's own compound name (absolute in 2018, relative HARD/MEDIUM/SOFT from 2019). Slicks only. |
| `hardness_era` | | Yes | [`not_null`](/transform/ci/structural), [`accepted_values`](/transform/ci/range-and-domain) | |
| `hardness_identity` | | Yes | | What the rank is looked up on -- compound\_label in 2018, compound\_code from 2019. |
| `compound_hardness_rank` | | Yes | | compound\_hardness\_scale.hardness\_rank (1 = hardest). NULL only where the identity is (2025). |
| `y_s` | | Yes | [`not_null`](/transform/ci/structural) | The fitted quantity, weight\_corrected\_lap\_time (s). |
| `track_temp_c` | | Yes | | Track temperature on the lap (stg\_weather via int\_track\_evolution, a pass-through of the reading). |
| `constructor_pace_s` | | Yes | | int\_constructor\_structural\_pace's per-(race, constructor) coefficient on the lap (s). |


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