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

instrument mechanism / verified-clean

Target Heart Rate Zones mechanism

The inspectable method record for Target Heart Rate Zones, kept separate from implementation and qualification.

Status: VERIFIED_CLEANLifecycle: verified-clean

Model scope

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.

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

Units and conventions

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

Inspectable vector

One of 4 source-bound review vectors:

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

Failure boundary

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.

Other records

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