Skip to main content
Version: 0.3.0

Merging sources

The merge engine is the heart of Cairn. When several sources describe the same workout, Cairn produces one activity by choosing the best source per field group — not by picking a single "winner" source.

Field groups​

Fields are grouped (classification, time, duration, title, distance, elevation, speed, hr, power, …, gps_track, laps). For each group, a priority list that depends on the activity type decides which source wins. So a ride might take its GPS track from your bike computer, power from the trainer, and title from Strava — automatically.

Your edits are protected​

  • User edits are preserved — title, description, tags, privacy and gear are user-owned; re-merging never clobbers them.
  • Field-source override — pin any field group to a specific source; applied on every recompute.
  • Classification override — a per-activity overlay for type/discipline/flags and summary metrics (distance/elevation/moving time), which survives re-import.

Streams stay per-source​

Streams are never merged — each source keeps its own. A primary stream is selected for rendering. You can even graft "source data from another activity" (a donor's selected groups + its stream, rebased in time) onto an activity.

Configure the policy​

Set your merge priorities in the web UI (the policy editor) per activity type. Manual entry is just a manual source fed through the same engine.