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

instrument / verified-clean

# Heat Index (Apparent Temperature)

The current ledger marks this instrument verified clean within the source-bound verification corpus.

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

## Inspectable records

[01**Overview**Purpose and lifecycle](<https://guthlabs.ai/docs/instruments/heat-index-apparent-temperature/>)[02**Mechanism**Method and assumptions](<https://guthlabs.ai/docs/instruments/heat-index-apparent-temperature/mechanism/>)[03**Implementation**Binding and validation](<https://guthlabs.ai/docs/instruments/heat-index-apparent-temperature/implementation/>)[04**Qualification**Evidence and errata](<https://guthlabs.ai/docs/instruments/heat-index-apparent-temperature/qualification/>)

## Ledger state

The current ledger marks this instrument verified clean within the source-bound verification corpus.

**Area**: Earth & Space (astronomy, orbital mechanics, meteorology, geology, geodesy, oceanography)

**Tranche**: tranche-4

**Evidence ID**: t4-267

**Ledger rows**: 1

No ledger note is attached.

## Review findings

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.

### Formula and scope findings

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

### Unit assumptions

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

## Boundary hardening

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

## Errata and corrections

No applied erratum is attached to this unique-name record.

## Inspectable example

4 review vectors are recorded. One source-bound sample is shown below.

````
{
  "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."
}
````

## Related workflows

[Weather Stationfeels-like hot](<https://guthlabs.ai/docs/instrument-workflows/weather-station/>)

## Sources and evidence

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

- `VERIFIED_LEDGER.json · VERIFIED_CLEAN`

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

- `BOUNDARY_HAZARD_CATALOG.json`
