Skip to content

fix(ci): release build fails on committed path dependency_overrides - #34

Merged
abdulsaheel merged 1 commit into
mainfrom
fix/ci-dep-overrides
Jun 30, 2026
Merged

fix(ci): release build fails on committed path dependency_overrides#34
abdulsaheel merged 1 commit into
mainfrom
fix/ci-dep-overrides

Conversation

@abdulsaheel

Copy link
Copy Markdown
Collaborator

The v0.6.0 tag build failed at flutter pub get (exit 66): _edge depends on _analytics from path which doesn't exist.

Cause: PR #25 committed a dependency_overrides block in pubspec.yaml pointing protocol/analytics at the sibling working copies (../openstrap-*). CI checks out only the edge repo, so those paths don't exist. v0.5.4 (last good release) had no such block.

Fix:

  • Remove the dependency_overrides block from pubspec.yaml so CI/release resolves the pinned git refs (OpenStrap/analytics@main, OpenStrap/protocol@main).
  • Move the path overrides into a gitignored pubspec_overrides.yaml (pub auto-detects it) so local dev still links the siblings.
  • Regenerate pubspec.lock against the git refs (analytics c1a68a0 = Its crashed sometimes #14, protocol dc64c4e = main).

flutter pub get verified locally both with the override (path link) and without (git refs).

🤖 Generated with Claude Code

…in release

PR #25 committed a dependency_overrides block pointing protocol/analytics at the sibling working copies. CI has no sibling checkout, so `flutter pub get` failed (exit 66) on the v0.6.0 tag build. Move the path overrides to a gitignored pubspec_overrides.yaml (pub auto-detects it for local dev) and regenerate pubspec.lock against the pinned git refs (analytics@main c1a68a0, protocol@main dc64c4e).
@abdulsaheel
abdulsaheel merged commit 86b34ed into main Jun 30, 2026
@abdulsaheel
abdulsaheel deleted the fix/ci-dep-overrides branch July 12, 2026 05:53
svssathvik7 added a commit to svssathvik7/edge that referenced this pull request Aug 6, 2026
kAlgoVersion 55 and 56 both cite the new nap detector as their sibling change,
and until this commit neither was backed by the pin. pubspec.yaml still pointed
at OpenStrap#34 (f0d1153), which has no `sleep/nap.dart`, no `wristOff:`/`exclude:` on
`detectNaps`, and no `tstSec`/`tibSec`/`efficiency` on `NapWindow`.

This is the §3.5 failure mode the v43 changelog is remembered for, except worse
in kind: v43 shipped a changelog describing a fix its pin merely lacked, while
this branch did not COMPILE against its own pin — 10 analyzer errors in
derivation_engine.dart. It went unnoticed because pubspec_overrides.yaml is
gitignored and resolves both siblings to local working copies, so every local
build and test run silently used analytics HEAD rather than the pinned SHA.
Confirmed by moving the override aside and running `flutter pub get` against
the real pin.

Verified present at c3a30be, per §3.5:
  git show c3a30be:lib/src/onehz/sleep/nap.dart | grep -cE 'wristOff|exclude|tibSec'   -> 16
  git show c3a30be:lib/src/onehz/sleep/van_hees.dart | grep -c immobilityMask          -> 2

pubspec.lock regenerated with the override moved aside, so it locks the git SHA
rather than `path: ../analytics`. A path-source lock fails CI `flutter pub get`
(exit 66) and is the reason that file must never be regenerated with the
override in place.

No kAlgoVersion bump: 56 is already the version describing this analytics
behaviour, and it has not shipped. The pin and the version now land together,
which is the whole point.

Against the real pin: flutter analyze lib/ clean, 1150 tests pass. The single
failure is workout_reliability_test.dart's queued-job case, pre-existing and
identical on clean main.
chinna244 pushed a commit to chinna244/edge that referenced this pull request Aug 9, 2026
The sleep-stager rewrite (analytics#34) and the protocol RR-bound fix
(protocol#21) were both on their respective mains but not reaching users,
because edge was still pinned behind. Analytics was two hops back — sitting on
analytics#32's PR-BRANCH head even though OpenStrap#32 merged two days ago.

analytics cbbe06a -> f0d1153 (main @ OpenStrap#34)
protocol  5bb8606 -> 7edcb3e (main @ OpenStrap#21)

analytics#34 replaces the deep/REM boolean conjunctions with weighted robust-z
scores. The old deep rule AND-ed one informative axis with one null one (rmssd,
d -0.13) and one INVERTED one (mean HR, d +0.31 — deep sleep runs slightly
FASTER than light on the wrist), so all three only co-fired by luck. That's what
produced 30-second deep specks the 3-min bout rule then deleted. Against 99
PSG-labelled wrist nights: kappa 0.036 -> 0.128 (0.132 held out), deep
10.3/5.7 -> 53.0/12.9 sens/PPV, REM 30.6/12.1 -> 52.6/20.7.

protocol#21 bounds realtimeRr to the same 200-2500ms range parseRealtimeHr and
parseR24 already use, so a misaligned 0x28 frame can't hand a 5ms "beat" to live
HRV. The other half of that commit (historical-family activity/steps_inc null
instead of 0) isn't read by edge.

kAlgoVersion 52 -> 53: every day's hypnogram, stage minutes and sleep-derived
scalars change, so every day re-derives.

Verified both SHAs actually contain what this claims, per the v43 lesson:
  git show f0d1153:lib/src/onehz/sleep/cardio_stager.dart | grep classifyCardioEpochs
  git show 7edcb3e:lib/src/live.dart | grep kMinRrMs

Reproduced CI locally rather than trusting the path overrides: moved
pubspec_overrides.yaml aside, pub get, confirmed lock resolved-ref matches both
pins, ran check_sibling_pins.sh (both agree), then analyze + full suite against
the REAL pinned packages. 1088 tests, analyze clean. Lock diff is the four ref
lines only — no path: sources.
abdulsaheel added a commit that referenced this pull request Aug 24, 2026
…pick lifecycle

pairing key: pairOuraRing wrote it to secure storage before proving the ring
accepts it, but nothing ever deleted it -- a failed pair or a forgotten ring
left a 16-byte secret behind with no device row pointing at it. added
OuraLink.forgetRing + a paired-flag so every early return in pairOuraRing
drops the key it wrote. HrsLink.forgetDevice now dispatches on adapter_id so
the one "forget" entry point the UI calls actually reaches it for a ring.

devices.dart: sensorLive reflects HrsLink.reading only, so it was marking an
unrelated paired oura row "connected" whenever a strap happened to be live.

oura_link.dart: the advertised ring name went into device.label unfiltered --
same cleanDeviceLabel pass the strap pairing path already runs it through.

pair_sensor.dart: dismissing the screen mid-scan left the process-wide scan
running for its full timeout with nothing to stop it; an exception out of the
injected pairing callback skipped the busy-clearing setState and left every
row permanently locked; forgetting a sensor updated the screen's own state
but not the shared AppState.sensors another open screen reads.

repin to protocol #34's latest head, verified against the actual pinned SHAs
with overrides off same as last time.
DropTabl added a commit to DropTabl/edge that referenced this pull request Aug 26, 2026
…ision gate is gone

All three pin locations move together to protocol main @ 6664854, the
OpenStrap/protocol#35 merge commit. The old pin's parser returned null
for any hello body whose revision byte was not 1; under this branch's
mandatory-hello bootstrap that made a future firmware revision bump
unable to connect. OpenStrap#35 records the byte instead of gating on it.

NO kAlgoVersion bump, verified against the full 4ce8f02..6664854 diff:
OpenStrap#35's one code change widens which HELLO bodies PARSE (hello feeds
connection identity/state, not the derivation pipeline); OpenStrap#34, also in
the hop, only ADDS files (oura + generic-HRS wire formats nothing here
imports); the rest is comment rewording. No decoder for a persisted
record moves, so no stored number can.
DropTabl added a commit to DropTabl/edge that referenced this pull request Aug 26, 2026
…ision gate is gone

All three pin locations move together to protocol main @ 6664854, the
OpenStrap/protocol#35 merge commit. The old pin's parser returned null
for any hello body whose revision byte was not 1; under this branch's
mandatory-hello bootstrap that made a future firmware revision bump
unable to connect. OpenStrap#35 records the byte instead of gating on it.

NO kAlgoVersion bump, verified against the full 4ce8f02..6664854 diff:
connection identity/state, not the derivation pipeline); OpenStrap#34, also in
the hop, only ADDS files (oura + generic-HRS wire formats nothing here
imports); the rest is comment rewording. No decoder for a persisted
record moves, so no stored number can.
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