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

# normalize_compound

> Maps Pirelli's 2018-era legacy compound names onto the modern SOFT/MEDIUM/HARD taxonomy so that compound-parameter joins (dim_compounds_season) land for 2018.

Maps Pirelli's 2018-era legacy compound names onto the modern SOFT/MEDIUM/HARD taxonomy so that compound-parameter joins (dim\_compounds\_season) land for 2018. Pirelli ran a 7-compound range in 2018 (HYPERSOFT/ULTRASOFT/SUPERSOFT/SOFT/ MEDIUM/HARD/SUPERHARD); the cliff-parameter seed only fits the modern 5-name set (\{SOFT, MEDIUM, HARD, INTERMEDIATE, WET}). Without normalisation the three legacy soft variants (8,836 laps, all 2018) get a 100%-NULL compound-param join. Scope: use this ONLY on ML-facing feature joins (e.g. fct\_cliff\_prediction\_features' compound\_params join). DO NOT normalise inside int\_compound\_cliff\_predicted-its expected\_compound\_pace\_s feeds int\_lap\_residual\_decomposed.compound\_component\_s and therefore driver\_skill\_residual\_s (the project's core metric). Normalising there would silently re-attribute compound vs. driver skill for 2018 legacy laps. Residual nulls (legacy laps at circuits with no slug-keyed 2018 SOFT fit) are intentional and carried by XGBoost's native missing-value handling.

## Signature

```sql theme={null}
{{ normalize_compound(compound_col) }}
```
