Skip to content

Debug export: add a Workouts-by-source breakdown#32

Merged
ryanbr merged 2 commits into
mainfrom
debug-workout-sources
Jul 7, 2026
Merged

Debug export: add a Workouts-by-source breakdown#32
ryanbr merged 2 commits into
mainfrom
debug-workout-sources

Conversation

@ryanbr

@ryanbr ryanbr commented Jul 7, 2026

Copy link
Copy Markdown
Owner

The "counted but not shown" workout bugs (#28 strap workouts under my-whoop vs the active strap id; #29 activity-file imports the load path skipped) were invisible in a strap log — you couldn't tell WHERE workouts lived vs what the Workouts screen loaded.

Adds a "Workouts by source" block to the debug export (both platforms), reusing the existing dynamicLines plumbing:

  • Resolved active deviceId (whoop-<uuid> vs my-whoop) — the key context for any "data under the wrong id" report.
  • Per-source STORED workout count (active strap, my-whoop, their -noop computed twins, activity-file, lifting, apple-health, health-connect).
  • Most-recent workout (date · sport · source).

So a future "workouts present in Data Sources but missing from the screen" report is self-diagnosing (e.g. activity-file=3 with the screen empty → the load skips that source).

Best-effort + guarded so it never throws into the export.

Verify

  • Android compiles clean.
  • iOS via CI.

ryanbr added 2 commits July 7, 2026 22:47
The 'counted but not shown' workout bugs (#28 strap workouts under my-whoop vs the active
strap id; #29 activity-file imports the load path skipped) were invisible in a strap log —
you couldn't tell WHERE workouts lived vs what the Workouts screen loaded.

Add a 'Workouts by source' block to the debug export (both platforms), reusing the existing
dynamicLines plumbing:
- The RESOLVED active deviceId (whoop-<uuid> vs my-whoop) — the key context for any
  'data under the wrong id' report.
- A per-source STORED workout count (active strap, my-whoop, their -noop computed twins,
  activity-file, lifting, apple-health, health-connect).
- The most-recent workout (date · sport · source).

Best-effort + guarded so it never throws into the export. Makes the whole
'workouts present in Data Sources but missing from the screen' class self-diagnosing.
Extends the source reconciliation to daily data (the same active-strap↔my-whoop id
mismatch strands days/steps/sleep/recovery, not just workouts):
- Per-source DAY counts (active strap, my-whoop, their -noop twins, apple, health-connect).
- Recent-7d metric presence on the imported spine (sleep/recovery/steps/kcal = N/7).
- On-device volume one-liner (raw stream rows, imported days, workouts) from the existing
  dataVolumeSnapshot.

Makes the 'no data / no steps / 0% REM' report class self-diagnosing too. Both platforms.
@ryanbr ryanbr merged commit 74c47f2 into main Jul 7, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant