Repository navigation
Open
Labels
bugSomething isn't workingSomething isn't working
Description
NOOP version
9.0.1-staging
Platform
Android
OS version
16
WHOOP strap model
WHOOP 4.0
Where the data is coming from
WHOOP CSV export import
Test Centre profile
Sleep & Rest
What happens
Sleep is not being recognized
What you expected instead
It recognized sleep from like 4 days ago
Steps to reproduce
1.Have a whoop 4.0
2.Use newest noop
3.sleep
Strap log
<details><summary>Strap log (last 40 lines, redacted)</summary>
23:57:37 → GET_BATTERY_LEVEL payload=00
23:57:39 → DISABLE_ALARM payload=01
23:57:39 Alarm: disarmed
23:57:39 → SEND_HISTORICAL_DATA payload=00
23:57:39 Backfill: session started — historical offload requested
23:57:39 → HISTORICAL_DATA_RESULT payload=0144e9010019000000
23:57:39 Backfill: acked chunk trim=125252
23:57:40 → HISTORICAL_DATA_RESULT payload=0145e9010019000000
23:57:40 Backfill: acked chunk trim=125253
23:57:40 → HISTORICAL_DATA_RESULT payload=0147e9010019000000
23:57:40 Backfill: acked chunk trim=125255
23:57:40 → HISTORICAL_DATA_RESULT payload=014ce9010019000000
23:57:40 Backfill: acked chunk trim=125260
23:57:41 Backfill: session ended — reason=HISTORY_COMPLETE
23:57:43 hrv diag day=2026-07-17 rmssd=81ms sdnn=91ms meanNN=1073ms rr=6999/6909 rejected=1% coverage=0.92 dupBeats=0
23:57:43 rhr day=2026-07-17 floor=53 nightMean=57 inBedSamples=8157 (floor = WHOOP-style lowest-sustained = NOOP RHR; mean = sleeping-HR-app number)
23:57:44 hrv diag day=2026-07-16 rmssd=102ms sdnn=111ms meanNN=1110ms rr=23399/22539 rejected=4% coverage=0.91 dupBeats=6
23:57:44 rhr day=2026-07-16 floor=48 nightMean=55 inBedSamples=28734 (floor = WHOOP-style lowest-sustained = NOOP RHR; mean = sleeping-HR-app number)
23:57:45 hrv diag day=2026-07-15 rmssd=95ms sdnn=113ms meanNN=1107ms rr=17810/16542 rejected=7% coverage=0.90 dupBeats=2
23:57:45 rhr day=2026-07-15 floor=50 nightMean=56 inBedSamples=22033 (floor = WHOOP-style lowest-sustained = NOOP RHR; mean = sleeping-HR-app number)
23:57:45 sleep day=2026-07-21 totalSleepMin=nil stages=nil eff=nil matched=0 source=computed
23:57:45 hrv day=2026-07-21 window=whole avgHrv=nil
23:57:45 sleep day=2026-07-20 totalSleepMin=nil stages=nil eff=nil matched=0 source=computed
23:57:45 hrv day=2026-07-20 window=whole avgHrv=nil
23:57:45 sleep day=2026-07-18 totalSleepMin=nil stages=nil eff=nil matched=0 source=computed
23:57:45 hrv day=2026-07-18 window=whole avgHrv=nil
23:57:45 sleep day=2026-07-17 totalSleepMin=127 stages=34+39+55=127 eff=0.94 matched=1 source=computed
23:57:45 hrv day=2026-07-17 window=whole avgHrv=79.6
23:57:45 sleep day=2026-07-16 totalSleepMin=448 stages=92+163+193=448 eff=0.94 matched=1 source=computed
23:57:45 hrv day=2026-07-16 window=whole avgHrv=101.2
23:57:45 sleep day=2026-07-15 totalSleepMin=339 stages=74+128+138=339 eff=0.92 matched=1 source=computed
23:57:45 hrv day=2026-07-15 window=whole avgHrv=95.5
23:57:45 fitnessAge gate day=2026-07-21 rhrNights=3 activityDays=5 computed=false
23:57:45 Backfill: post-sync scoring pass done
23:57:45 Backfill: 6 day(s) banked; newest=2026-07-21, dashboard-today=2026-07-21 (present)
=== Capture check ===
universal: MISSING (expected dayOwner day=)
sleep: present (via sleep day=)
complete: all active traces present
bundle ok files=2 report=present meta=present screenshot=present crash=present leaks=0
</details>
Before you submit
- I attached my exported NOOP .zip (not a screenshot of the Live screen). If my bug is a clearly reproducible UI issue I described exactly how to see it instead.
- I attached or pasted a strap log above — or my bug is a clearly reproducible UI issue that doesn't need one (e.g. a typo, a button that does nothing) and I've described exactly how to see it.
- I checked the Troubleshooting guide — especially "history syncs but no data" (most often the strap isn't banking history to flash; charge it to 100% and reconnect).
- I checked the FAQ and — if I'm on a WHOOP 5.0 / MG — the 5.0/MG status page, and this isn't an already-known limit (e.g. SpO₂, or recovery/sleep on the 5/MG).
- I've left out anything personal (strap serial, account email, raw export).
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working
Activity
ryanbr commentedon Jul 22, 2026
Thanks for the log. Sleep detection is actually working — the log shows it recognized sleep for July 15 (339 min), July 16 (448 min), and July 17 (127 min), with HRV and resting HR computed for those nights. The issue is that July 18, 20, and 21 have no sleep data at all (
totalSleepMin=nil, matched=0), and July 19 has no entry at all.The backfill completed successfully but was very small (only 4 chunks), which suggests the strap didn't have much new data to hand over. This usually means the strap wasn't recording usable overnight data for those recent nights.
A few things to check:
If you were wearing the strap with charge and not using the WHOOP app, try charging to 100% and reconnecting — sometimes a full charge cycle gets the strap banking history again.
Merge pull request #720 from ryanbr/diag/sleep-skip-log-714
Log why a day is skipped when HR samples are insufficient (ryanbr#714)
Fix iOS build break: define missing diag call in IntelligenceEngine
macor47 commentedon Jul 22, 2026
First of all, as you can see, the amount of sleep it tracked was really low ( I slept for more than 8 hours from July 15th-17th, and it detected only 2 or 3). Next, I was wearing the strap from the 18th-21st, as well as today (22nd), and I also had more than 8 hours of sleep, but it detected nothing. I charged it to 100% on July 19th. I will try again today and see. I do not have the Whoop app installed at all. Thank you for your reply.
feat(round3): journal answered_yes header + sparse-HR skip diagnostic
Log why a day is skipped when HR samples are insufficient (ryanbr#714)
Merge pull request ryanbr#720 from ryanbr/diag/sleep-skip-log-714
Fix iOS build break: define missing diag call in IntelligenceEngine
LiveState: take the durable log mirror off the per-line hot path (iOS)