{
  "differentSportControlMatches" : 0,
  "duplicateChecks" : [
    {
      "confidence" : "likely",
      "file" : "synthetic-ride.gpx",
      "matches" : 1,
      "reasons" : [
        "start time",
        "duration",
        "distance",
        "sport"
      ]
    },
    {
      "confidence" : "likely",
      "file" : "synthetic-ride.tcx",
      "matches" : 1,
      "reasons" : [
        "start time",
        "duration",
        "distance",
        "sport"
      ]
    },
    {
      "confidence" : "likely",
      "file" : "synthetic-ride-core-only.gpx",
      "matches" : 1,
      "reasons" : [
        "start time",
        "duration",
        "distance",
        "sport"
      ]
    },
    {
      "confidence" : "likely",
      "file" : "renamed-ride.fit (unchanged FIT bytes)",
      "matches" : 1,
      "reasons" : [
        "start time",
        "duration",
        "distance",
        "sport"
      ]
    }
  ],
  "duplicateReference" : "synthetic existing FIT preview",
  "method" : "Actual WorkoutPort file parser and duplicate checker; synthetic files and a synthetic existing candidate. No Health write, app UI, upload or destination-service test.",
  "previews" : [
    {
      "cadenceSamples" : 5,
      "distanceMeters" : 1350,
      "durationSeconds" : 300,
      "energyKilocalories" : 42,
      "file" : "synthetic-ride.fit",
      "heartRateSamples" : 5,
      "lossMessages" : [
        "Per-point distance is used for preview and duplicate checks; Health import writes a summary distance sample but does not restore a per-point distance stream.",
        "Elevation is preserved as route altitude where route points can be written, not as a separate Health elevation sample stream.",
        "Workout events, laps, splits, segments, gear, photos, source device identity, and service sync state cannot be restored from this file."
      ],
      "power" : [
        {
          "powerWatts" : 120,
          "time" : "2026-01-01T07:00:00Z"
        },
        {
          "powerWatts" : 180,
          "time" : "2026-01-01T07:01:00Z"
        },
        {
          "powerWatts" : 0,
          "time" : "2026-01-01T07:02:00Z"
        },
        {
          "time" : "2026-01-01T07:03:00Z"
        },
        {
          "powerWatts" : 240,
          "time" : "2026-01-01T07:04:00Z"
        },
        {
          "powerWatts" : 160,
          "time" : "2026-01-01T07:05:00Z"
        }
      ],
      "powerSamples" : 5,
      "routePoints" : 6,
      "speedSamples" : 6,
      "sport" : "Cycling",
      "start" : "2026-01-01T07:00:00Z"
    },
    {
      "cadenceSamples" : 5,
      "distanceMeters" : 1334.3391197347048,
      "durationSeconds" : 300,
      "file" : "synthetic-ride.gpx",
      "heartRateSamples" : 5,
      "lossMessages" : [
        "Elevation is preserved as route altitude where route points can be written, not as a separate Health elevation sample stream.",
        "Workout events, laps, splits, segments, gear, photos, source device identity, and service sync state cannot be restored from this file."
      ],
      "power" : [
        {
          "powerWatts" : 120,
          "time" : "2026-01-01T07:00:00Z"
        },
        {
          "powerWatts" : 180,
          "time" : "2026-01-01T07:01:00Z"
        },
        {
          "powerWatts" : 0,
          "time" : "2026-01-01T07:02:00Z"
        },
        {
          "time" : "2026-01-01T07:03:00Z"
        },
        {
          "powerWatts" : 240,
          "time" : "2026-01-01T07:04:00Z"
        },
        {
          "powerWatts" : 160,
          "time" : "2026-01-01T07:05:00Z"
        }
      ],
      "powerSamples" : 5,
      "routePoints" : 6,
      "speedSamples" : 6,
      "sport" : "Ride",
      "start" : "2026-01-01T07:00:00Z"
    },
    {
      "cadenceSamples" : 5,
      "distanceMeters" : 1350,
      "durationSeconds" : 300,
      "energyKilocalories" : 42,
      "file" : "synthetic-ride.tcx",
      "heartRateSamples" : 5,
      "lossMessages" : [
        "Per-point distance is used for preview and duplicate checks; Health import writes a summary distance sample but does not restore a per-point distance stream.",
        "Elevation is preserved as route altitude where route points can be written, not as a separate Health elevation sample stream.",
        "Workout events, laps, splits, segments, gear, photos, source device identity, and service sync state cannot be restored from this file."
      ],
      "power" : [
        {
          "powerWatts" : 120,
          "time" : "2026-01-01T07:00:00Z"
        },
        {
          "powerWatts" : 180,
          "time" : "2026-01-01T07:01:00Z"
        },
        {
          "powerWatts" : 0,
          "time" : "2026-01-01T07:02:00Z"
        },
        {
          "time" : "2026-01-01T07:03:00Z"
        },
        {
          "powerWatts" : 240,
          "time" : "2026-01-01T07:04:00Z"
        },
        {
          "powerWatts" : 160,
          "time" : "2026-01-01T07:05:00Z"
        }
      ],
      "powerSamples" : 5,
      "routePoints" : 6,
      "speedSamples" : 6,
      "sport" : "Biking",
      "start" : "2026-01-01T07:00:00Z"
    },
    {
      "cadenceSamples" : 0,
      "distanceMeters" : 1334.3391197347048,
      "durationSeconds" : 300,
      "file" : "synthetic-ride-core-only.gpx",
      "heartRateSamples" : 0,
      "lossMessages" : [
        "No heart-rate samples were found; Health import will not add heart-rate samples.",
        "No power samples were found; Health import will not add power samples.",
        "No cadence samples were found; Health import will not add cadence samples.",
        "No speed samples were found; Health import will not add speed samples.",
        "Elevation is preserved as route altitude where route points can be written, not as a separate Health elevation sample stream.",
        "Workout events, laps, splits, segments, gear, photos, source device identity, and service sync state cannot be restored from this file."
      ],
      "power" : [
        {
          "time" : "2026-01-01T07:00:00Z"
        },
        {
          "time" : "2026-01-01T07:01:00Z"
        },
        {
          "time" : "2026-01-01T07:02:00Z"
        },
        {
          "time" : "2026-01-01T07:03:00Z"
        },
        {
          "time" : "2026-01-01T07:04:00Z"
        },
        {
          "time" : "2026-01-01T07:05:00Z"
        }
      ],
      "powerSamples" : 0,
      "routePoints" : 6,
      "speedSamples" : 0,
      "sport" : "Ride",
      "start" : "2026-01-01T07:00:00Z"
    }
  ],
  "shiftedStartControlMatches" : 0,
  "sourceRevision" : "b7411f3af20f11c4c3b1679cfa8530553bf4313b"
}
