Skip to content

Test run only: sharded CI (not for merge) - #1

Closed
kurexw wants to merge 45 commits into
mainfrom
ci/shard-tests
Closed

kurexw wants to merge 45 commits into
mainfrom
ci/shard-tests

Conversation

@kurexw

@kurexw kurexw commented Nov 11, 2026

Copy link
Copy Markdown
Owner

Opened inside the fork only to make GitHub run the new test workflow and measure it. Not for merging here; the real PR goes to OpenStrap/edge.

Riedel-David and others added 30 commits November 4, 2026 00:39
…n the Activity tab

The /activities/review deep link (emitted for detected naps and workouts)
resolved to the Today domain, so tapping a "Did you nap?" notification
pushed the review screen over Home instead of over the Activity tab where
the suggestion cards live. domainForRoute now maps kRouteDetectedActivities
to ShellDomain.activity; tap_router's table keeps the payload's base tab
and app.dart decides, as with the other screen routes.

Co-authored-by: BucciMobile <BucciMobile@users.noreply.github.com>
…oute doc

Sourcery review on OpenStrap#668 flagged two issues:

- _ShellState drove programmatic tab jumps (notification deep links) by
  re-keying AppShell (ValueKey(_rev)), which recreated the widget and wiped
  the IndexedStack — the Activity tab's scroll position and every other
  visited tab's state were lost when a detected-activity notification was
  tapped. AppShell now takes an optional ValueNotifier<ShellDomain> named
  selection and follows it without being recreated; _go writes the
  notifier instead of bumping the key.
- The kRouteDetectedActivities doc still said the review 'lands on the
  Workouts tab'; it now says Activity (the old Workouts tab).

Adds a regression test: switching tabs via the external notifier preserves
a previously visited tab's state.

Co-authored-by: BucciMobile <BucciMobile@users.noreply.github.com>
onSelect fired for user tab taps and Back navigation updated _domain but
not the external selection notifier, so _selection.value could go stale.
A later notification _go to the stale value then fired no change event and
AppShell did not follow the deep link.

Co-authored-by: BucciMobile <BucciMobile@users.noreply.github.com>
If AppShell is rebuilt with a different selection notifier, move the
_followSelection listener from the old notifier to the new one and
reconcile the shell to the new notifier's current value.

Co-authored-by: BucciMobile <BucciMobile@users.noreply.github.com>
didUpdateWidget now reconciles a swapped selection notifier without
invoking onSelect during the build phase (deferred via addPostFrameCallback,
guarded by mounted), and _followSelection tolerates a removed (null)
notifier instead of throwing on widget.selection!.

Co-authored-by: BucciMobile <BucciMobile@users.noreply.github.com>
The post-frame callback scheduled in didUpdateWidget captured the domain
at scheduling time; if the new notifier moved on before the callback ran,
the stale domain was reported via onSelect, which writes back to the
notifier in the real shell and would flip the tab back. The callback now
only fires when the shell is still mounted and neither the notifier nor
its value changed since scheduling.

Co-authored-by: BucciMobile <BucciMobile@users.noreply.github.com>
Co-authored-by: BucciMobile <BucciMobile@users.noreply.github.com>
Sample gains nullable spo2CandidateRaw (protocol inner[74]), mapped in
sampleFromGen5Historical and logged nonzero in the gen5 history drain.
Raw passthrough only — never stored as or displayed as a percentage.

Co-authored-by: BucciMobile <BucciMobile@users.noreply.github.com>
…ation, whoop-rs deferred

Co-authored-by: BucciMobile <BucciMobile@users.noreply.github.com>
Co-authored-by: BucciMobile <BucciMobile@users.noreply.github.com>
…(both generations)

Co-authored-by: BucciMobile <BucciMobile@users.noreply.github.com>
FileLog writes to Android external storage (file_log.dart), so a
timestamped candidate/sleep line is CWE-532 sensitive-data exposure.
The raw byte stays in memory only (Sample.spo2CandidateRaw).

Co-authored-by: BucciMobile <BucciMobile@users.noreply.github.com>
…resholds

Display gate requires MAE <= 2 pp, |bias| <= 1 pp, 95% LoA within +/-4 pp
vs a reference oximeter (>=10 nights / 30 pairs); correlation reported
separately, never as accuracy proof.

Co-authored-by: BucciMobile <BucciMobile@users.noreply.github.com>
…yte in undecodable frames

Co-authored-by: BucciMobile <BucciMobile@users.noreply.github.com>
…pairs

Co-authored-by: BucciMobile <BucciMobile@users.noreply.github.com>
…e nightly gate

Co-authored-by: BucciMobile <BucciMobile@users.noreply.github.com>
…ct PPG rationale, RAM-only nuance, encoding wording

Co-authored-by: BucciMobile <BucciMobile@users.noreply.github.com>
Co-authored-by: BucciMobile <BucciMobile@users.noreply.github.com>
…ero + null)

Co-authored-by: BucciMobile <BucciMobile@users.noreply.github.com>
… future Gen4 nightly output like Gen5

Co-authored-by: BucciMobile <BucciMobile@users.noreply.github.com>
…verage checks, FileLog rationale, gen4 evidence wording, analytics in scope

Co-authored-by: BucciMobile <BucciMobile@users.noreply.github.com>
…ad (Spo2Data refusal intact); field doc points to Spo2Data as the single publication path

Co-authored-by: BucciMobile <BucciMobile@users.noreply.github.com>
…ed by import surface; spo2CandidateRaw feeds Spo2Data only after the gate

Co-authored-by: BucciMobile <BucciMobile@users.noreply.github.com>
…2Data pct field/accessor/getter, UI via existing spo2 series with provenance

Co-authored-by: BucciMobile <BucciMobile@users.noreply.github.com>
OpenStrap#675) from the spo2CandidateRaw field doc

Co-authored-by: BucciMobile <BucciMobile@users.noreply.github.com>
…s no heartRate/spo2CandidateRaw override params

Co-authored-by: BucciMobile <BucciMobile@users.noreply.github.com>
abdulsaheel and others added 15 commits November 10, 2026 17:22
…tion test timing, drop duplicate import and unrelated coderabbit change
…r minimum on the gate, FileLog claim corrected, drop unrelated coderabbit change
… comment-only block, test the wake state, drop unrelated coderabbit change
…ng, gallery case for it, taller surface for the picker search test
fix main's test run: missing translations and gallery case
…in-trend

Weight trend: include scale weighings alongside the journal's weight
…vity-tab-7879a4

 fix(notify): land detected-activity (nap/workout) notification taps on the Activity tab
…posal-7295e2

docs: WHOOP SpO2 evidence-review proposal with staged, self-critical plan
…5-candidate-7295e2

feat: carry gen5 v18 SpO2 candidate byte as raw diagnostic
The suite ran as one job for about 75 minutes, and a newer push to main
cancels the run in progress, so runs on main were cancelled about as often
as they finished. Each slice still runs its files one at a time. A final
job keeps the check name `test`.
@kurexw

kurexw commented Nov 11, 2026

Copy link
Copy Markdown
Owner Author

Measurement done; the real PR is on OpenStrap/edge.

@kurexw kurexw closed this Nov 11, 2026
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.

5 participants