Source: https://guthlabs.ai/docs/instruments/heat-index-apparent-temperature/mechanism/

instrument mechanism / verified-clean

# Heat Index (Apparent Temperature) mechanism

The inspectable method record for Heat Index (Apparent Temperature), kept separate from implementation and qualification.

Status: **VERIFIED_CLEAN**Lifecycle: **verified-clean**

## Model scope

The spec is not sufficiently explicit to verify an implementation as PASS. Implementers should document the exact Rothfusz coefficients, whether NWS adjustment branches are included, Fahrenheit-versus-Celsius input behavior, Celsius conversion, category thresholds, rounding policy, and out-of-range behavior.

- The spec names the NWS Rothfusz regression but does not provide the actual coefficients or state whether NWS low-humidity/high-humidity adjustment formulas are also implemented.

- The risk-category thresholds and boundary conventions are not specified.

- The output claims both °F and °C, but the Celsius conversion formula and the input/output unit contract are not specified.

- The stated validity range is approximate; the implementation needs an explicit policy for inputs outside 80–110°F and 40–100% relative humidity.

## Units and conventions

- Test vectors use air temperature in °F and relative humidity as a percentage from 0 to 100, not a fraction from 0 to 1.

- Canonical Rothfusz regression used: HI_F = -42.379 + 2.04901523T + 10.14333127R - 0.22475541TR - 0.00683783T² - 0.05481717R² + 0.00122874T²R + 0.00085282TR² - 0.00000199T²R².

- Celsius output is calculated as HI_C = (HI_F - 32) × 5/9.

- Risk categories assumed to follow NWS bands: below 80°F no heat-index category, 80–89°F Caution, 90–102°F Extreme Caution, 103–124°F Danger, and at least 125°F Extreme Danger.

## Inspectable vector

One of 4 source-bound review vectors:

````
{
  "inputs": {
    "air_temperature_F": 90,
    "relative_humidity_percent": 60
  },
  "expected_outputs": {
    "heat_index_F": 99.6778,
    "heat_index_C": 37.5988,
    "risk_category": "Extreme Caution"
  },
  "working": "T=90, R=60, T²=8100, R²=3600, TR=5400, T²R=486000, TR²=324000, T²R²=29160000. HI_F = -42.379 + (2.04901523×90) + (10.14333127×60) - (0.22475541×5400) - (0.00683783×8100) - (0.05481717×3600) + (0.00122874×486000) + (0.00085282×324000) - (0.00000199×29160000) = -42.379 + 184.4113707 + 608.5998762 - 1213.679214 - 55.386423 - 197.341812 + 597.16764 + 276.31368 - 58.0284 = 99.6778179°F. HI_C=(99.6778179-32)×5/9=37.5987877°C. 99.6778°F is in the 90–102°F Extreme Caution band."
}
````

## Failure boundary

**BREAK_CLAIMED** · SELF_FLAGGED

An unchecked extreme input causes JavaScript floating-point overflow and a NaN heat index, so the instrument must reject out-of-domain magnitudes before evaluating the polynomial. The unit ambiguity also demonstrates that an omitted temperature unit can materially change the result.

## Other records

[01**Overview**](<https://guthlabs.ai/docs/instruments/heat-index-apparent-temperature/>)[03**Implementation**](<https://guthlabs.ai/docs/instruments/heat-index-apparent-temperature/implementation/>)[04**Qualification**](<https://guthlabs.ai/docs/instruments/heat-index-apparent-temperature/qualification/>)

## Sources and evidence

These pointers bind the page to evidence. They do not grant authority or collapse verification into deployment.

- `VERIFIED_LEDGER.json`

- `evidence-tranche4/tranche4-results.json`

- `BOUNDARY_HAZARD_CATALOG.json`
