Guth
NewsDocs
Page actions
View as Markdown ↗
Explore MCP tools ↗

instrument / verified-clean

Target Heart Rate Zones

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

Status: VERIFIED_CLEANLifecycle: verified-clean

Inspectable records

Ledger state

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

Area
Biology, Medicine & Pharmacology (educational estimates only — every panel labeled not-medical-advice)
Tranche
tranche-4
Evidence ID
t4-206
Ledger rows
1

No ledger note is attached.

Review findings

The formulas themselves are standard, but the instrument cannot be fully verified as a zone-table generator until it specifies the zone scheme, intensity encoding, endpoint convention, and bpm rounding policy. The existing honest-label language is appropriate and should remain visible on every panel.

Formula and scope findings

  • Both HRmax formulas are standard population-average estimates: 220−age and Tanaka 208−0.7×age.
  • Karvonen THR=(HRmax−HRrest)×intensity+HRrest is correct when intensity is represented as a decimal fraction from 0 to 1.
  • The spec does not define the zone boundaries, number of zones, whether boundary endpoints are inclusive, or how fractional bpm values are rounded for the displayed zone table.
  • The input label "intensity %" is ambiguous: the formula requires either decimal fractions such as 0.70 or percentage points converted by dividing by 100, such as 70→0.70. The implementation must specify and enforce one representation.

Unit assumptions

  • Age is in years.
  • Heart rates and HRmax, HRrest, and THR are in beats per minute (bpm).
  • In the calculations below, intensity values are decimal fractions; for example, 0.50 means 50%.
  • The displayed ranges retain fractional bpm values unless a separate rounding policy is specified.
  • Karvonen zones use HRrest; direct percentage-of-HRmax zones would be a different calculation and are not defined here.

Boundary hardening

BREAK_CLAIMED · SELF_FLAGGED

The specification has no stated validation for non-physiological ages, intensity bounds, or numeric overflow. Extreme inputs can produce -Infinity, and an intensity-unit ambiguity can produce 8460 bpm instead of 144 bpm.

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": {
    "age": 30,
    "resting_hr_bpm": 60,
    "formula_choice": "220-age",
    "intensity_ranges": [
      [
        0.5,
        0.6
      ],
      [
        0.6,
        0.7
      ],
      [
        0.7,
        0.8
      ],
      [
        0.8,
        0.9
      ],
      [
        0.9,
        1
      ]
    ]
  },
  "expected_outputs": {
    "hrmax_bpm": 190,
    "zone_table_bpm": [
      {
        "intensity": "50%-60%",
        "range": [
          125,
          138
        ]
      },
      {
        "intensity": "60%-70%",
        "range": [
          138,
          151
        ]
      },
      {
        "intensity": "70%-80%",
        "range": [
          151,
          164
        ]
      },
      {
        "intensity": "80%-90%",
        "range": [
          164,
          177
        ]
      },
      {
        "intensity": "90%-100%",
        "range": [
          177,
          190
        ]
      }
    ]
  },
  "working": "HRmax = 220−30 = 190 bpm. HR reserve = 190−60 = 130 bpm. Zone 1: 130×0.50+60 = 65+60 = 125; 130×0.60+60 = 78+60 = 138. Zone 2: 130×0.60+60 = 138; 130×0.70+60 = 91+60 = 151. Zone 3: 130×0.70+60 = 151; 130×0.80+60 = 104+60 = 164. Zone 4: 130×0.80+60 = 164; 130×0.90+60 = 117+60 = 177. Zone 5: 130×0.90+60 = 177; 130×1.00+60 = 130+60 = 190."
}

Related workflows

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