It might sound silly but I've found it to work quite well for me: I store the (rather coarse) data on these exercise activities in my Google calendar.
I also do some more fine-grained analyses (e.g. looking at heart rates) via Garmin and Strava but for cross-discipline comparisons I mostly rely on my calendar entries.
I've found the calendar to be extremely reliable -- knock on wood -- over long time horizons (I have exercise data going back to 2016). Also, it's very flexible. I store additional metadata, e.g. the distance of a run, in the event description.
The teams I've been working on have resorted to data tests instead of code tests. That means that the data produced by your code is tested against a certain set of expectations - in stark contrast to code being tested _before_ its execution.
We've written our own tool to compare different data sources against each other. This allows, for example, to test for invariants (or expected variations) between and after a transformation.
For a reason I haven't been able to distill I really appreciate it when people known for one facet of their personality (here: being a big shot in crypto) have the courage to be open about other, much less impressive facets (here: writing about mundane practicalities) of their lives as well.
I agree that what you suggest is more useful in many scenarios, particularly when one care about _monitoring_ of performance.
Unlike the rest of the notifications, my ambition with this cumulative distance plot was rather to intervene by cheering than to observe by analyzing. Put differently, I tried to gamify the yearly distance - as if I was racing against last year's version of myself. I'm not advocating for this, I just liked the idea at some point.
That's a great point! I vaguely tried to go in that direction by plotting the average over the past 7 days, the average over the 7 days before and the average over the year to date. Yet, I fully agree one might want to push this a little further and do as you describe. Thanks for the suggestion!
My current setup is also slightly dissatisfying in that regard. What's nice (or rather a consolation) about orgzly - the mobile app I use - is that upon conflict, it explicitly offers to either choose the remote or the local version. At first I was worried it would simply attempt to always overwrite based on the local version.