Skip to content

Starting point - #1

Merged
konverga merged 12 commits into
mainfrom
dev-first-version
Jul 21, 2026
Merged

Starting point#1
konverga merged 12 commits into
mainfrom
dev-first-version

Conversation

@konverga

Copy link
Copy Markdown
Owner

Initial version of the application, including build pipelines, automated tests, and project documentation.
This PR establishes the foundation for future development.

konverga added 12 commits July 16, 2026 13:12
Persist explicit session timing and enforce the strict unreleased v1 schema. Unify active-time, lap, graph, summary, and FIT calculations while keeping main-window sensor cards on consistent averaged fields. Expand regression coverage and document the reproducible processing contract.
Keep live cards on averaged channels, render raw timestamp-aligned summary points, and retain averaged inputs for estimated power.
Remove dead and compatibility-only APIs, make sample weighting and power calibration explicit, enforce the strict v1 program schema with stable identifiers, and align tests and documentation with the release behavior.
ProgramRunner:
- Validate the monotonic/non-overlap timing guard in integer
  milliseconds instead of float seconds. A window that exactly
  filled its elapsed gap (e.g. 2.251 - 2.0 == 0.2509999999999999)
  could fail the strict float comparison and raise inside the live
  BLE callback, aborting program progression mid-workout.

Summary chart:
- Planned-workout chart lines now break only at the same
  five-second meaningful-pause boundaries free workouts already
  use, instead of at every exact activity run (D019). At high
  cadence the ergometer can leave a one-second uncovered gap
  without the athlete ever stopping paddling; this no longer
  fragments a continuous effort into disconnected line segments.
  Exact runs, FIT timer events, active time, distance, and laps
  are unaffected.
- Each run's chart line now begins at its run-start boundary on
  both axes: the FIT timer START (time axis) and the cumulative
  distance preceding its first sample window (distance axis)
  (D020). Points are plotted at window ends, so without this
  anchor a run's drawn span understated the lap table and a
  resume odometer jump appeared as dead space between segments
  instead of the start of the next one. Presentation only; raw
  series, hover, stats, laps, and FIT are unchanged.

Tests:
- Add regression coverage for the exact float-rounding values that
  crashed ProgramRunner, a planned high-cadence uncovered-gap
  continuity case, and run-start anchor alignment with lap
  distance/time.
- Update test_program_lap_is_clipped_to_active_signal for the new
  chart-break grouping.
- Fix test_each_active_signal_gap_fragments_chart_and_laps, a
  pre-existing stale test asserting a sub-five-second gap
  fragments a free-workout lap/chart; renamed to
  test_brief_active_signal_gaps_do_not_fragment_chart_or_laps with
  corrected expectations (1 lap, one continuous line).

Docs:
- Add D019 and D020 to DECISIONS.md; update AGENTS,
  ARCHITECTURE, DATA_TRANSFORMATIONS, and FEATURES accordingly.
@konverga
konverga merged commit 2de3c37 into main Jul 21, 2026
3 checks passed
@konverga
konverga deleted the dev-first-version branch July 21, 2026 18:11
Repository owner locked as resolved and limited conversation to collaborators Jul 21, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant