@sports-alliance/sports-lib
Version:
A Library to for importing / exporting and processing GPX, TCX, FIT and JSON files from services such as Strava, Movescount, Garmin, Polar etc
1,642 lines • 207 kB
JSON
{
"summary": {
"scannedFitFiles": 62,
"parseErrors": 4,
"entriesWithReportedTss": 65,
"computed": 65,
"missingComputed": 0,
"within1_0": 59,
"above1_0": 6
},
"parseErrors": [
{
"file": "src/specs/fixtures/others/27-days-activity.fit",
"error": "Activity duration exceeds 14 days. That is not supported"
},
{
"file": "src/specs/fixtures/others/31-days-activity.fit",
"error": "Activity duration exceeds 14 days. That is not supported"
},
{
"file": "src/specs/fixtures/others/empty-activities.fit",
"error": "No activities found"
},
{
"file": "src/specs/fixtures/others/empty-sessions.fit",
"error": "No activities found"
}
],
"rows": [
{
"file": "src/specs/fixtures/rides/fit/6783622686.fit",
"activityIndex": 0,
"activityType": "Cycling",
"reportedTss": 1.8,
"reportedMethod": "IMPORTED",
"computedTss": 349,
"delta": 347.2,
"absDelta": 347.2,
"method": "HR",
"diagnostics": {
"selectedMethod": "HR",
"selectedTss": 349,
"durationSeconds": 18501.79,
"enableHeuristicFallbacks": true,
"attempts": [
{
"method": "POWER",
"attempted": true,
"eligible": true,
"success": false,
"reason": "missing_power_samples",
"inputs": {
"ftpOverride": null,
"ftpStatBefore": 228,
"ftpResolved": 228,
"ftpSource": "DataFTP",
"powerSampleCount": 0
}
},
{
"method": "HR",
"attempted": true,
"eligible": true,
"success": true,
"inputs": {
"maxHrOverride": null,
"maxHrSetting": null,
"maxHrStat": 179,
"maxHeartRate": 179,
"maxHrSource": "DataHeartRateMax",
"restingHrOverride": null,
"restingHeartRate": null,
"restingHrSource": "missing",
"lthrOverride": null,
"lthrZone5": 176,
"lactateThresholdHR": 176,
"lthrSource": "HR_zone5_lower",
"hrSampleCount": 18514,
"hrAverage": 141.483,
"gender": "male",
"hrAlgorithm": "EDWARDS"
},
"result": {
"tss": 349
}
},
{
"method": "PACE",
"attempted": false,
"eligible": false,
"success": false,
"reason": "sport_not_pace_enabled",
"inputs": {
"thresholdOverride": null,
"speedZone5": null,
"thresholdPace": null,
"thresholdSource": "missing",
"speedSampleCount": 18514,
"enableHeuristicFallbacks": true,
"gradeSourceCounts": {
"gradeSmooth": 18514,
"grade": 0,
"verticalSpeedOverSpeed": 0,
"heuristicZero": 0,
"unresolved": 0
}
}
},
{
"method": "MET",
"attempted": true,
"eligible": true,
"success": true,
"inputs": {
"durationSeconds": 18501.79,
"metOverride": null,
"energy": 2379,
"weight": 48.7,
"metResolved": 9.505046247409373,
"metSource": "estimated_from_energy_weight_duration",
"thresholdOverride": null,
"thresholdMet": 10,
"thresholdSource": "default_thresholdMet_10"
},
"result": {
"tss": 464.322,
"intensityFactor": 0.9505046247409373
}
}
]
}
},
{
"file": "samples/battery/batt.fit",
"activityIndex": 0,
"activityType": "Cycling",
"reportedTss": 121.2,
"reportedMethod": "IMPORTED",
"computedTss": 261.4,
"delta": 140.2,
"absDelta": 140.2,
"method": "HR",
"diagnostics": {
"selectedMethod": "HR",
"selectedTss": 261.4,
"durationSeconds": 9303.43,
"enableHeuristicFallbacks": true,
"attempts": [
{
"method": "POWER",
"attempted": true,
"eligible": true,
"success": false,
"reason": "missing_functionalThresholdPower",
"inputs": {
"ftpOverride": null,
"ftpStatBefore": null,
"ftpResolved": null,
"ftpSource": "missing",
"powerSampleCount": 0
}
},
{
"method": "HR",
"attempted": true,
"eligible": true,
"success": true,
"inputs": {
"maxHrOverride": null,
"maxHrSetting": null,
"maxHrStat": 160,
"maxHeartRate": 160,
"maxHrSource": "DataHeartRateMax",
"restingHrOverride": null,
"restingHeartRate": null,
"restingHrSource": "missing",
"lthrOverride": null,
"lthrZone5": null,
"lactateThresholdHR": null,
"lthrSource": "missing",
"hrSampleCount": 9305,
"hrAverage": 133.792,
"hrAlgorithm": "EDWARDS"
},
"result": {
"tss": 261.354
}
},
{
"method": "PACE",
"attempted": false,
"eligible": false,
"success": false,
"reason": "sport_not_pace_enabled",
"inputs": {
"thresholdOverride": null,
"speedZone5": null,
"thresholdPace": null,
"thresholdSource": "missing",
"speedSampleCount": 9292,
"enableHeuristicFallbacks": true,
"gradeSourceCounts": {
"gradeSmooth": 9292,
"grade": 0,
"verticalSpeedOverSpeed": 0,
"heuristicZero": 0,
"unresolved": 0
}
}
},
{
"method": "MET",
"attempted": true,
"eligible": true,
"success": false,
"reason": "missing_met_score",
"inputs": {
"durationSeconds": 9303.43,
"metOverride": null,
"energy": 1434,
"weight": null,
"metResolved": null,
"metSource": "missing",
"thresholdOverride": null,
"thresholdMet": 10,
"thresholdSource": "default_thresholdMet_10"
}
}
]
}
},
{
"file": "src/specs/fixtures/others/broken-start-latlng.fit",
"activityIndex": 0,
"activityType": "Cycling",
"reportedTss": 82.4,
"reportedMethod": "IMPORTED",
"computedTss": 197.6,
"delta": 115.2,
"absDelta": 115.2,
"method": "POWER",
"diagnostics": {
"selectedMethod": "POWER",
"selectedTss": 197.6,
"durationSeconds": 6864,
"enableHeuristicFallbacks": true,
"attempts": [
{
"method": "POWER",
"attempted": true,
"eligible": true,
"success": true,
"inputs": {
"ftpOverride": null,
"ftpStatBefore": 148,
"ftpResolved": 148,
"ftpSource": "DataFTP",
"powerSampleCount": 6864
},
"result": {
"tss": 197.636,
"intensityFactor": 1.0202702702702702,
"normalizedPower": 151
}
},
{
"method": "HR",
"attempted": true,
"eligible": true,
"success": true,
"inputs": {
"maxHrOverride": null,
"maxHrSetting": null,
"maxHrStat": 158,
"maxHeartRate": 158,
"maxHrSource": "DataHeartRateMax",
"restingHrOverride": null,
"restingHeartRate": null,
"restingHrSource": "missing",
"lthrOverride": null,
"lthrZone5": null,
"lactateThresholdHR": null,
"lthrSource": "missing",
"hrSampleCount": 6864,
"hrAverage": 119.678,
"gender": "male",
"hrAlgorithm": "EDWARDS"
},
"result": {
"tss": 147.826
}
},
{
"method": "PACE",
"attempted": false,
"eligible": false,
"success": false,
"reason": "sport_not_pace_enabled",
"inputs": {
"thresholdOverride": null,
"speedZone5": null,
"thresholdPace": null,
"thresholdSource": "missing",
"speedSampleCount": 6864,
"enableHeuristicFallbacks": true,
"gradeSourceCounts": {
"gradeSmooth": 6864,
"grade": 0,
"verticalSpeedOverSpeed": 0,
"heuristicZero": 0,
"unresolved": 0
}
}
},
{
"method": "MET",
"attempted": true,
"eligible": true,
"success": false,
"reason": "missing_met_score",
"inputs": {
"durationSeconds": 6864,
"metOverride": null,
"energy": null,
"weight": 48.5,
"metResolved": null,
"metSource": "missing",
"thresholdOverride": null,
"thresholdMet": 10,
"thresholdSource": "default_thresholdMet_10"
}
}
]
}
},
{
"file": "samples/fit/suunto-bat.fit",
"activityIndex": 0,
"activityType": "Trail Running",
"reportedTss": 74.2,
"reportedMethod": "IMPORTED",
"computedTss": 154,
"delta": 79.8,
"absDelta": 79.8,
"method": "POWER",
"diagnostics": {
"selectedMethod": "POWER",
"selectedTss": 154,
"durationSeconds": 4788.75,
"enableHeuristicFallbacks": true,
"attempts": [
{
"method": "POWER",
"attempted": true,
"eligible": true,
"success": true,
"inputs": {
"ftpOverride": null,
"ftpStatBefore": 164,
"ftpResolved": 164,
"ftpSource": "DataFTP",
"powerSampleCount": 4961
},
"result": {
"tss": 154.007,
"intensityFactor": 1.079268292682927,
"normalizedPower": 177
}
},
{
"method": "HR",
"attempted": true,
"eligible": true,
"success": true,
"inputs": {
"maxHrOverride": null,
"maxHrSetting": null,
"maxHrStat": 169,
"maxHeartRate": 169,
"maxHrSource": "DataHeartRateMax",
"restingHrOverride": null,
"restingHeartRate": null,
"restingHrSource": "missing",
"lthrOverride": null,
"lthrZone5": null,
"lactateThresholdHR": null,
"lthrSource": "missing",
"hrSampleCount": 4961,
"hrAverage": 138.087,
"hrAlgorithm": "EDWARDS"
},
"result": {
"tss": 125.701
}
},
{
"method": "PACE",
"attempted": true,
"eligible": true,
"success": false,
"reason": "missing_functionalThresholdPace",
"inputs": {
"thresholdOverride": null,
"speedZone5": null,
"thresholdPace": null,
"thresholdSource": "missing",
"speedSampleCount": 4776,
"enableHeuristicFallbacks": true,
"gradeSourceCounts": {
"gradeSmooth": 4776,
"grade": 0,
"verticalSpeedOverSpeed": 0,
"heuristicZero": 0,
"unresolved": 0
}
}
},
{
"method": "MET",
"attempted": true,
"eligible": true,
"success": false,
"reason": "missing_met_score",
"inputs": {
"durationSeconds": 4788.75,
"metOverride": null,
"energy": 732,
"weight": null,
"metResolved": null,
"metSource": "missing",
"thresholdOverride": null,
"thresholdMet": 10,
"thresholdSource": "default_thresholdMet_10"
}
}
]
}
},
{
"file": "samples/fit/2026-01-31_10-51_1.fit",
"activityIndex": 0,
"activityType": "Trail Running",
"reportedTss": 58.6,
"reportedMethod": "IMPORTED",
"computedTss": 120.4,
"delta": 61.8,
"absDelta": 61.8,
"method": "POWER",
"diagnostics": {
"selectedMethod": "POWER",
"selectedTss": 120.4,
"durationSeconds": 3884.52,
"enableHeuristicFallbacks": true,
"attempts": [
{
"method": "POWER",
"attempted": true,
"eligible": true,
"success": true,
"inputs": {
"ftpOverride": null,
"ftpStatBefore": 233,
"ftpResolved": 233,
"ftpSource": "DataFTP",
"powerSampleCount": 3885
},
"result": {
"tss": 120.355,
"intensityFactor": 1.0600858369098713,
"normalizedPower": 247
}
},
{
"method": "HR",
"attempted": true,
"eligible": true,
"success": true,
"inputs": {
"maxHrOverride": null,
"maxHrSetting": null,
"maxHrStat": 154,
"maxHeartRate": 154,
"maxHrSource": "DataHeartRateMax",
"restingHrOverride": null,
"restingHeartRate": null,
"restingHrSource": "missing",
"lthrOverride": null,
"lthrZone5": null,
"lactateThresholdHR": null,
"lthrSource": "missing",
"hrSampleCount": 3885,
"hrAverage": 136.94,
"hrAlgorithm": "EDWARDS"
},
"result": {
"tss": 119.285
}
},
{
"method": "PACE",
"attempted": true,
"eligible": true,
"success": false,
"reason": "missing_functionalThresholdPace",
"inputs": {
"thresholdOverride": null,
"speedZone5": null,
"thresholdPace": null,
"thresholdSource": "missing",
"speedSampleCount": 3874,
"enableHeuristicFallbacks": true,
"gradeSourceCounts": {
"gradeSmooth": 3874,
"grade": 0,
"verticalSpeedOverSpeed": 0,
"heuristicZero": 0,
"unresolved": 0
}
}
},
{
"method": "MET",
"attempted": true,
"eligible": true,
"success": false,
"reason": "missing_met_score",
"inputs": {
"durationSeconds": 3884.52,
"metOverride": null,
"energy": 736,
"weight": null,
"metResolved": null,
"metSource": "missing",
"thresholdOverride": null,
"thresholdMet": 10,
"thresholdSource": "default_thresholdMet_10"
}
}
]
}
},
{
"file": "samples/fit/2025-08-27_10-52.fit",
"activityIndex": 0,
"activityType": "Snorkeling",
"reportedTss": 19.6,
"reportedMethod": "IMPORTED",
"computedTss": 52.7,
"delta": 33.1,
"absDelta": 33.1,
"method": "HR",
"diagnostics": {
"selectedMethod": "HR",
"selectedTss": 52.7,
"durationSeconds": 2111.01,
"enableHeuristicFallbacks": true,
"attempts": [
{
"method": "POWER",
"attempted": true,
"eligible": true,
"success": false,
"reason": "missing_functionalThresholdPower",
"inputs": {
"ftpOverride": null,
"ftpStatBefore": null,
"ftpResolved": null,
"ftpSource": "missing",
"powerSampleCount": 0
}
},
{
"method": "HR",
"attempted": true,
"eligible": true,
"success": true,
"inputs": {
"maxHrOverride": null,
"maxHrSetting": null,
"maxHrStat": 105,
"maxHeartRate": 105,
"maxHrSource": "DataHeartRateMax",
"restingHrOverride": null,
"restingHeartRate": null,
"restingHrSource": "missing",
"lthrOverride": null,
"lthrZone5": null,
"lactateThresholdHR": null,
"lthrSource": "missing",
"hrSampleCount": 2112,
"hrAverage": 84.978,
"hrAlgorithm": "EDWARDS"
},
"result": {
"tss": 52.736
}
},
{
"method": "PACE",
"attempted": false,
"eligible": false,
"success": false,
"reason": "sport_not_pace_enabled",
"inputs": {
"thresholdOverride": null,
"speedZone5": null,
"thresholdPace": null,
"thresholdSource": "missing",
"speedSampleCount": 2103,
"enableHeuristicFallbacks": true,
"gradeSourceCounts": {
"gradeSmooth": 2103,
"grade": 0,
"verticalSpeedOverSpeed": 0,
"heuristicZero": 0,
"unresolved": 0
}
}
},
{
"method": "MET",
"attempted": true,
"eligible": true,
"success": false,
"reason": "missing_met_score",
"inputs": {
"durationSeconds": 2111.01,
"metOverride": null,
"energy": 133,
"weight": null,
"metResolved": null,
"metSource": "missing",
"thresholdOverride": null,
"thresholdMet": 10,
"thresholdSource": "default_thresholdMet_10"
}
}
]
}
},
{
"file": "src/specs/fixtures/triathlons/fit/4623204522.fit",
"activityIndex": 2,
"activityType": "Cycling",
"reportedTss": 310.4,
"reportedMethod": "IMPORTED",
"computedTss": 311.4,
"delta": 1,
"absDelta": 1,
"method": "POWER",
"diagnostics": {
"selectedMethod": "POWER",
"selectedTss": 311.4,
"durationSeconds": 17248.55,
"enableHeuristicFallbacks": true,
"attempts": [
{
"method": "POWER",
"attempted": true,
"eligible": true,
"success": true,
"inputs": {
"ftpOverride": null,
"ftpStatBefore": 290,
"ftpResolved": 290,
"ftpSource": "DataFTP",
"powerSampleCount": 17249
},
"result": {
"tss": 311.426,
"intensityFactor": 0.8068965517241379,
"normalizedPower": 234
}
},
{
"method": "HR",
"attempted": true,
"eligible": true,
"success": true,
"inputs": {
"maxHrOverride": null,
"maxHrSetting": null,
"maxHrStat": 153,
"maxHeartRate": 153,
"maxHrSource": "DataHeartRateMax",
"restingHrOverride": null,
"restingHeartRate": null,
"restingHrSource": "missing",
"lthrOverride": null,
"lthrZone5": 144,
"lactateThresholdHR": 144,
"lthrSource": "HR_zone5_lower",
"hrSampleCount": 17249,
"hrAverage": 139.734,
"gender": "male",
"hrAlgorithm": "EDWARDS"
},
"result": {
"tss": 454.472
}
},
{
"method": "PACE",
"attempted": false,
"eligible": false,
"success": false,
"reason": "sport_not_pace_enabled",
"inputs": {
"thresholdOverride": null,
"speedZone5": null,
"thresholdPace": null,
"thresholdSource": "missing",
"speedSampleCount": 17243,
"enableHeuristicFallbacks": true,
"gradeSourceCounts": {
"gradeSmooth": 17243,
"grade": 0,
"verticalSpeedOverSpeed": 0,
"heuristicZero": 0,
"unresolved": 0
}
}
},
{
"method": "MET",
"attempted": true,
"eligible": true,
"success": true,
"inputs": {
"durationSeconds": 17248.55,
"metOverride": null,
"energy": 3804,
"weight": 77.7,
"metResolved": 10.218082345884394,
"metSource": "estimated_from_energy_weight_duration",
"thresholdOverride": null,
"thresholdMet": 10,
"thresholdSource": "default_thresholdMet_10"
},
"result": {
"tss": 500.252,
"intensityFactor": 1.0218082345884394
}
}
]
}
},
{
"file": "src/specs/fixtures/rides/fit/withpower/2025-12-29_14-12.fit",
"activityIndex": 0,
"activityType": "Cycling",
"reportedTss": 101.1,
"reportedMethod": "IMPORTED",
"computedTss": 100.6,
"delta": -0.5,
"absDelta": 0.5,
"method": "POWER",
"diagnostics": {
"selectedMethod": "POWER",
"selectedTss": 100.6,
"durationSeconds": 9724.52,
"enableHeuristicFallbacks": true,
"attempts": [
{
"method": "POWER",
"attempted": true,
"eligible": true,
"success": true,
"inputs": {
"ftpOverride": null,
"ftpStatBefore": 234,
"ftpResolved": 234,
"ftpSource": "DataFTP",
"powerSampleCount": 9730
},
"result": {
"tss": 100.579,
"intensityFactor": 0.6111111111111112,
"normalizedPower": 143
}
},
{
"method": "HR",
"attempted": true,
"eligible": true,
"success": true,
"inputs": {
"maxHrOverride": null,
"maxHrSetting": null,
"maxHrStat": 146,
"maxHeartRate": 146,
"maxHrSource": "DataHeartRateMax",
"restingHrOverride": null,
"restingHeartRate": null,
"restingHrSource": "missing",
"lthrOverride": null,
"lthrZone5": 148,
"lactateThresholdHR": 148,
"lthrSource": "HR_zone5_lower",
"hrSampleCount": 9730,
"hrAverage": 119.84,
"gender": "male",
"hrAlgorithm": "EDWARDS"
},
"result": {
"tss": 209.683
}
},
{
"method": "PACE",
"attempted": false,
"eligible": false,
"success": false,
"reason": "sport_not_pace_enabled",
"inputs": {
"thresholdOverride": null,
"speedZone5": null,
"thresholdPace": null,
"thresholdSource": "missing",
"speedSampleCount": 9730,
"enableHeuristicFallbacks": true,
"gradeSourceCounts": {
"gradeSmooth": 9730,
"grade": 0,
"verticalSpeedOverSpeed": 0,
"heuristicZero": 0,
"unresolved": 0
}
}
},
{
"method": "MET",
"attempted": true,
"eligible": true,
"success": true,
"inputs": {
"durationSeconds": 9724.52,
"metOverride": null,
"energy": 1492,
"weight": 64.7,
"metResolved": 8.53687395836453,
"metSource": "estimated_from_energy_weight_duration",
"thresholdOverride": null,
"thresholdMet": 10,
"thresholdSource": "default_thresholdMet_10"
},
"result": {
"tss": 196.863,
"intensityFactor": 0.853687395836453
}
}
]
}
},
{
"file": "samples/fit/laps-issue.fit",
"activityIndex": 0,
"activityType": "Cycling",
"reportedTss": 251.2,
"reportedMethod": "IMPORTED",
"computedTss": 250.8,
"delta": -0.4,
"absDelta": 0.4,
"method": "POWER",
"diagnostics": {
"selectedMethod": "POWER",
"selectedTss": 250.8,
"durationSeconds": 17447.97,
"enableHeuristicFallbacks": true,
"attempts": [
{
"method": "POWER",
"attempted": true,
"eligible": true,
"success": true,
"inputs": {
"ftpOverride": null,
"ftpStatBefore": 200,
"ftpResolved": 200,
"ftpSource": "DataFTP",
"powerSampleCount": 17462
},
"result": {
"tss": 250.833,
"intensityFactor": 0.72,
"normalizedPower": 144
}
},
{
"method": "HR",
"attempted": true,
"eligible": true,
"success": true,
"inputs": {
"maxHrOverride": null,
"maxHrSetting": null,
"maxHrStat": 173,
"maxHeartRate": 173,
"maxHrSource": "DataHeartRateMax",
"restingHrOverride": null,
"restingHeartRate": null,
"restingHrSource": "missing",
"lthrOverride": null,
"lthrZone5": 148,
"lactateThresholdHR": 148,
"lthrSource": "HR_zone5_lower",
"hrSampleCount": 17462,
"hrAverage": 124.511,
"gender": "male",
"hrAlgorithm": "EDWARDS"
},
"result": {
"tss": 373.236
}
},
{
"method": "PACE",
"attempted": false,
"eligible": false,
"success": false,
"reason": "sport_not_pace_enabled",
"inputs": {
"thresholdOverride": null,
"speedZone5": null,
"thresholdPace": null,
"thresholdSource": "missing",
"speedSampleCount": 17462,
"enableHeuristicFallbacks": true,
"gradeSourceCounts": {
"gradeSmooth": 17462,
"grade": 0,
"verticalSpeedOverSpeed": 0,
"heuristicZero": 0,
"unresolved": 0
}
}
},
{
"method": "MET",
"attempted": true,
"eligible": true,
"success": true,
"inputs": {
"durationSeconds": 17447.97,
"metOverride": null,
"energy": 2413,
"weight": 68,
"metResolved": 7.321600095800796,
"metSource": "estimated_from_energy_weight_duration",
"thresholdOverride": null,
"thresholdMet": 10,
"thresholdSource": "default_thresholdMet_10"
},
"result": {
"tss": 259.809,
"intensityFactor": 0.7321600095800795
}
}
]
}
},
{
"file": "src/specs/fixtures/rides/fit/garmin-device-info-spam.fit",
"activityIndex": 0,
"activityType": "Indoor Cycling",
"reportedTss": 107.2,
"reportedMethod": "IMPORTED",
"computedTss": 107.6,
"delta": 0.4,
"absDelta": 0.4,
"method": "POWER",
"diagnostics": {
"selectedMethod": "POWER",
"selectedTss": 107.6,
"durationSeconds": 5462.52,
"enableHeuristicFallbacks": true,
"attempts": [
{
"method": "POWER",
"attempted": true,
"eligible": true,
"success": true,
"inputs": {
"ftpOverride": null,
"ftpStatBefore": 225,
"ftpResolved": 225,
"ftpSource": "DataFTP",
"powerSampleCount": 5463
},
"result": {
"tss": 107.627,
"intensityFactor": 0.8444444444444444,
"normalizedPower": 190
}
},
{
"method": "HR",
"attempted": true,
"eligible": true,
"success": true,
"inputs": {
"maxHrOverride": null,
"maxHrSetting": null,
"maxHrStat": 162,
"maxHeartRate": 162,
"maxHrSource": "DataHeartRateMax",
"restingHrOverride": null,
"restingHeartRate": null,
"restingHrSource": "missing",
"lthrOverride": null,
"lthrZone5": 138,
"lactateThresholdHR": 138,
"lthrSource": "HR_zone5_lower",
"hrSampleCount": 5463,
"hrAverage": 128.425,
"gender": "male",
"hrAlgorithm": "EDWARDS"
},
"result": {
"tss": 129.667
}
},
{
"method": "PACE",
"attempted": false,
"eligible": false,
"success": false,
"reason": "sport_not_pace_enabled",
"inputs": {
"thresholdOverride": null,
"speedZone5": null,
"thresholdPace": null,
"thresholdSource": "missing",
"speedSampleCount": 5460,
"enableHeuristicFallbacks": true,
"gradeSourceCounts": {
"gradeSmooth": 0,
"grade": 0,
"verticalSpeedOverSpeed": 0,
"heuristicZero": 5460,
"unresolved": 0
}
}
},
{
"method": "MET",
"attempted": true,
"eligible": true,
"success": true,
"inputs": {
"durationSeconds": 5462.52,
"metOverride": null,
"energy": 946,
"weight": 79,
"metResolved": 7.891753395775882,
"metSource": "estimated_from_energy_weight_duration",
"thresholdOverride": null,
"thresholdMet": 10,
"thresholdSource": "default_thresholdMet_10"
},
"result": {
"tss": 94.501,
"intensityFactor": 0.7891753395775882
}
}
]
}
},
{
"file": "src/specs/fixtures/rides/fit/withpower/2025-11-02_10-30.fit",
"activityIndex": 0,
"activityType": "Cycling",
"reportedTss": 251.2,
"reportedMethod": "IMPORTED",
"computedTss": 250.8,
"delta": -0.4,
"absDelta": 0.4,
"method": "POWER",
"diagnostics": {
"selectedMethod": "POWER",
"selectedTss": 250.8,
"durationSeconds": 17447.97,
"enableHeuristicFallbacks": true,
"attempts": [
{
"method": "POWER",
"attempted": true,
"eligible": true,
"success": true,
"inputs": {
"ftpOverride": null,
"ftpStatBefore": 200,
"ftpResolved": 200,
"ftpSource": "DataFTP",
"powerSampleCount": 17462
},
"result": {
"tss": 250.833,
"intensityFactor": 0.72,
"normalizedPower": 144
}
},
{
"method": "HR",
"attempted": true,
"eligible": true,
"success": true,
"inputs": {
"maxHrOverride": null,
"maxHrSetting": null,
"maxHrStat": 173,
"maxHeartRate": 173,
"maxHrSource": "DataHeartRateMax",
"restingHrOverride": null,
"restingHeartRate": null,
"restingHrSource": "missing",
"lthrOverride": null,
"lthrZone5": 148,
"lactateThresholdHR": 148,
"lthrSource": "HR_zone5_lower",
"hrSampleCount": 17462,
"hrAverage": 124.511,
"gender": "male",
"hrAlgorithm": "EDWARDS"
},
"result": {
"tss": 373.236
}
},
{
"method": "PACE",
"attempted": false,
"eligible": false,
"success": false,
"reason": "sport_not_pace_enabled",
"inputs": {
"thresholdOverride": null,
"speedZone5": null,
"thresholdPace": null,
"thresholdSource": "missing",
"speedSampleCount": 17462,
"enableHeuristicFallbacks": true,
"gradeSourceCounts": {
"gradeSmooth": 17462,
"grade": 0,
"verticalSpeedOverSpeed": 0,
"heuristicZero": 0,
"unresolved": 0
}
}
},
{
"method": "MET",
"attempted": true,
"eligible": true,
"success": true,
"inputs": {
"durationSeconds": 17447.97,
"metOverride": null,
"energy": 2413,
"weight": 68,
"metResolved": 7.321600095800796,
"metSource": "estimated_from_energy_weight_duration",
"thresholdOverride": null,
"thresholdMet": 10,
"thresholdSource": "default_thresholdMet_10"
},
"result": {
"tss": 259.809,
"intensityFactor": 0.7321600095800795
}
}
]
}
},
{
"file": "samples/fit/2026-02-10_14-28.fit",
"activityIndex": 0,
"activityType": "Cycling",
"reportedTss": 66.2,
"reportedMethod": "IMPORTED",
"computedTss": 65.9,
"delta": -0.3,
"absDelta": 0.3,
"method": "POWER",
"diagnostics": {
"selectedMethod": "POWER",
"selectedTss": 65.9,
"durationSeconds": 5367.05,
"enableHeuristicFallbacks": true,
"attempts": [
{
"method": "POWER",
"attempted": true,
"eligible": true,
"success": true,
"inputs": {
"ftpOverride": null,
"ftpStatBefore": 234,
"ftpResolved": 234,
"ftpSource": "DataFTP",
"powerSampleCount": 5375
},
"result": {
"tss": 65.902,
"intensityFactor": 0.6666666666666666,
"normalizedPower": 156
}
},
{
"method": "HR",
"attempted": true,
"eligible": true,
"success": true,
"inputs": {
"maxHrOverride": null,
"maxHrSetting": null,
"maxHrStat": 148,
"maxHeartRate": 148,
"maxHrSource": "DataHeartRateMax",
"restingHrOverride": null,
"restingHeartRate": null,
"restingHrSource": "missing",
"lthrOverride": null,
"lthrZone5": 147,
"lactateThresholdHR": 147,
"lthrSource": "HR_zone5_lower",
"hrSampleCount": 5375,
"hrAverage": 124.513,
"gender": "male",
"hrAlgorithm": "EDWARDS"
},
"result": {
"tss": 120.944
}
},
{
"method": "PACE",
"attempted": false,
"eligible": false,
"success": false,
"reason": "sport_not_pace_enabled",
"inputs": {
"thresholdOverride": null,
"speedZone5": null,
"thresholdPace": null,
"thresholdSource": "missing",
"speedSampleCount": 5375,
"enableHeuristicFallbacks": true,
"gradeSourceCounts": {
"gradeSmooth": 5375,
"grade": 0,
"verticalSpeedOverSpeed": 0,
"heuristicZero": 0,
"unresolved": 0
}
}
},
{
"method": "MET",
"attempted": true,
"eligible": true,
"success": true,
"inputs": {
"durationSeconds": 5367.05,
"metOverride": null,
"energy": 873,
"weight": 64.7,
"metResolved": 9.050588565436067,
"metSource": "estimated_from_energy_weight_duration",
"thresholdOverride": null,
"thresholdMet": 10,
"thresholdSource": "default_thresholdMet_10"
},
"result": {
"tss": 122.12,
"intensityFactor": 0.9050588565436067
}
}
]
}
},
{
"file": "samples/fit/file-with-zones.fit",
"activityIndex": 0,
"activityType": "Cycling",
"reportedTss": 76.7,
"reportedMethod": "IMPORTED",
"computedTss": 77,
"delta": 0.3,
"absDelta": 0.3,
"method": "POWER",
"diagnostics": {
"selectedMethod": "POWER",
"selectedTss": 77,
"durationSeconds": 7054.52,
"enableHeuristicFallbacks": true,
"attempts": [
{
"method": "POWER",
"attempted": true,
"eligible": true,
"success": true,
"inputs": {
"ftpOverride": null,
"ftpStatBefore": 234,
"ftpResolved": 234,
"ftpSource": "DataFTP",
"powerSampleCount": 7068
},
"result": {
"tss": 77.016,
"intensityFactor": 0.6282051282051282,
"normalizedPower": 147
}
},
{
"method": "HR",
"attempted": true,
"eligible": true,
"success": true,
"inputs": {
"maxHrOverride": null,
"maxHrSetting": null,
"maxHrStat": 153,
"maxHeartRate": 153,
"maxHrSource": "DataHeartRateMax",
"restingHrOverride": null,
"restingHeartRate": null,
"restingHrSource": "missing",
"lthrOverride": null,
"lthrZone5": 148,
"lactateThresholdHR": 148,
"lthrSource": "HR_zone5_lower",
"hrSampleCount": 7068,
"hrAverage": 120.308,
"gender": "male",
"hrAlgorithm": "EDWARDS"
},
"result": {
"tss": 137.178
}
},
{
"method": "PACE",
"attempted": false,
"eligible": false,
"success": false,
"reason": "sport_not_pace_enabled",
"inputs": {
"thresholdOverride": null,
"speedZone5": null,
"thresholdPace": null,
"thresholdSource": "missing",
"speedSampleCount": 7066,
"enableHeuristicFallbacks": true,
"gradeSourceCounts": {
"gradeSmooth": 7066,
"grade": 0,
"verticalSpeedOverSpeed": 0,
"heuristicZero": 0,
"unresolved": 0
}
}
},
{
"method": "MET",
"attempted": true,
"eligible": true,
"success": true,
"inputs": {
"durationSeconds": 7054.52,
"metOverride": null,
"energy": 1084,
"weight": 64.7,
"metResolved": 8.54988027407046,
"metSource": "estimated_from_energy_weight_duration",
"thresholdOverride": null,
"thresholdMet": 10,
"thresholdSource": "default_thresholdMet_10"
},
"result": {
"tss": 143.247,
"intensityFactor": 0.854988027407046
}
}
]
}
},
{
"file": "src/specs/fixtures/rides/fit/7432332116.fit",
"activityIndex": 0,
"activityType": "Cycling",
"reportedTss": 254,
"reportedMethod": "IMPORTED",
"computedTss": 254.3,
"delta": 0.3,
"absDelta": 0.3,
"method": "POWER",
"diagnostics": {
"selectedMethod": "POWER",
"selectedTss": 254.3,
"durationSeconds": 10055.65,
"enableHeuristicFallbacks": true,
"attempts": [
{
"method": "POWER",
"attempted": true,
"eligible": true,
"success": true,
"inputs": {
"ftpOverride": null,
"ftpStatBefore": 180,
"ftpResolved": 180,
"ftpSource": "DataFTP",
"powerSampleCount": 10063
},
"result": {
"tss": 254.311,
"intensityFactor": 0.9555555555555556,
"normalizedPower": 172
}
},
{
"method": "HR",
"attempted": true,
"eligible": true,
"success": true,
"inputs": {
"maxHrOverride": null,
"maxHrSetting": null,
"maxHrStat": 184,
"maxHeartRate": 184,
"maxHrSource": "DataHeartRateMax",
"restingHrOverride": null,
"restingHeartRate": null,
"restingHrSource": "missing",
"lthrOverride": null,
"lthrZone5": 144,
"lactateThresholdHR": 144,
"lthrSource": "HR_zone5_lower",
"hrSampleCount": 10063,
"hrAverage": 164.779,
"gender": "male",
"hrAlgorithm": "EDWARDS"
},
"result": {
"tss": 422.87
}
},
{
"method": "PACE",
"attempted": false,
"eligible": false,
"success": false,
"reason": "sport_not_pace_enabled",
"inputs": {
"thresholdOverride": null,
"speedZone5": null,
"thresholdPace": null,
"thresholdSource": "missing",
"speedSampleCount": 10063,
"enableHeuristicFallbacks": true,
"gradeSourceCounts": {
"gradeSmooth": 10063,
"grade": 0,
"verticalSpeedOverSpeed": 0,
"heuristicZero": 0,
"unresolved": 0
}
}
},
{
"method": "MET",
"attempted": true,
"eligible": true,
"success": true,
"inputs": {
"durationSeconds": 10055.65,
"metOverride": null,
"energy": 1532,
"weight": 78,
"metResolved": 7.0316381643844315,
"metSource": "estimated_from_energy_weight_duration",
"thresholdOverride": null,
"thresholdMet": 10,
"thresholdSource": "default_thresholdMet_10"
},
"result": {
"tss": 138.109,
"intensityFactor": 0.7031638164384432
}
}
]
}
},
{
"file": "src/specs/fixtures/rides/fit/withpower/2026-01-27_14-37.fit",
"activityIndex": 0,
"activityType": "Cycling",
"reportedTss": 76.7,
"reportedMethod": "IMPORTED",
"computedTss": 77,
"delta": 0.3,
"absDelta": 0.3,
"method": "POWER",
"diagnostics": {
"selectedMethod": "POWER",
"selectedTss": 77,
"durationSeconds": 7054.52,
"enableHeuristicFallbacks": true,
"attempts": [
{
"method": "POWER",
"attempted": true,
"eligible": true,
"success": true,
"inputs": {
"ftpOverride": null,
"ftpStatBefore": 234,
"ftpResolved": 234,
"ftpSource": "DataFTP",
"powerSampleCount": 7068
},
"result": {
"tss": 77.016,
"intensityFactor": 0.6282051282051282,
"normalizedPower": 147
}
},
{
"method": "HR",
"attempted": true,
"eligible": true,
"success": true,
"inputs": {
"maxHrOverride": null,
"maxHrSetting": null,
"maxHrStat": 153,
"maxHeartRate": 153,
"maxHrSource": "DataHeartRateMax",
"restingHrOverride": null,
"restingHeartRate": null,
"restingHrSource": "missing",
"lthrOverride": null,
"lthrZone5": 148,
"lactateThresholdHR": 148,
"lthrSource": "HR_zone5_lower",
"hrSampleCount": 7068,
"hrAverage": 120.308,
"gender": "male",
"hrAlgorithm": "EDWARDS"
},
"result": {
"tss": 137.178
}
},
{
"method": "PACE",
"attempted": false,
"eligible": false,
"success": false,
"reason": "sport_not_pace_enabled",
"inputs": {
"thresholdOverride": null,
"speedZone5": null,
"thresholdPace": null,
"thresholdSource": "missing",
"speedSampleCount": 7066,
"enableHeuristicFallbacks": true,
"gradeSourceCounts": {
"gradeSmooth": 7066,
"grade": 0,
"verticalSpeedOverSpeed": 0,
"heuristicZero": 0,
"unresolved": 0
}
}
},
{
"method": "MET",
"attempted": true,
"eligible": true,
"success": true,
"inputs": {
"durationSeconds": 7054.52,
"metOverride": null,
"energy": 1084,
"weight": 64.7,
"metResolved": 8.54988027407046,
"metSource": "estimated_from_energy_weight_duration",
"thresholdOverride": null,
"thresholdMet": 10,
"thresholdSource": "default_thresholdMet_10"
},
"result": {
"tss": 143.247,
"intensityFactor": 0.854988027407046
}
}
]
}
},
{
"file": "src/specs/fixtures/rides/fit/7386755164.fit",
"activityIndex": 0,
"activityType": "Cycling",
"reportedTss": 105.4,
"reportedMethod": "IMPORTED",
"computedTss": 105.2,
"delta": -0.2,
"absDelta": 0.2,
"method": "POWER",
"diagnostics": {
"selectedMethod": "POWER",
"selectedTss": 105.2,
"durationSeconds": 6175.05,
"enableHeuristicFallbacks": true,
"attempts": [
{
"method": "POWER",
"attempted": true,
"eligible": true,
"success": true,
"inputs": {
"ftpOverride": null,
"ftpStatBefore": 228,
"ftpResolved": 228,
"ftpSource": "DataFTP",
"powerSampleCount": 6177
},
"result": {
"tss": 105.228,
"intensityFactor": 0.7850877192982456,
"normalizedPower": 179
}
},
{
"method": "HR",
"attempted": true,
"eligible": true,
"su