Page actions
instrument mechanism / verified-clean
Target Heart Rate Zones mechanism
The inspectable method record for Target Heart Rate Zones, kept separate from implementation and qualification.
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.jsonevidence-tranche4/tranche4-results.jsonBOUNDARY_HAZARD_CATALOG.json