PHPMem v2.0.1

Version
1.6.45
Uptime
15 days 14 hours 10 minutes 3 seconds

Memory

Total
512MB
Used
9,38MB (1.83%)
Free
502,62MB

Keys

Current
11 436
Total (since start)
35 066
Evictions
0
Reclaimed
738
Expired Unfetched
0
Evicted Unfetched
0

Connections

Current
14 / 1 024 max
Total
174 833
Rejected
0
llm:6e732d2d0a77c4fe000374b14cbf5d27b2c084fa86370ae69834471db6428e16
TTL 6 days 21 hours 37 minutes 17 seconds Size 2,96KB Export
Edit
**Overall, the data is structurally clean. The one real integrity problem is that `sleep_debt_category` overlaps in `total_sleep_hours`.** I found no nulls, duplicates, impossible values, or mixed units in the checks I ran. **Real issue: the category label doesn't follow from sleep hours** - The card says `sleep_debt_category` is a function of `total_sleep_hours`, but two categories overlap (step 3/4/6). - Severe Sleep Debt covers 3.2–5.38 h. - Moderate Debt covers 3.2–6.74 h. - 207 Moderate Debt rows sleep under 4 hours, and 440 Severe rows do too. - So the same hours can carry either label, and Severe is not simply "fewer hours than Moderate." Some other input, such as latency or another score, seems to feed the label. The documented rule is incomplete or the labels are inconsistent. - Mild Deficit (6.75–7.74 h) and Optimal Recovery (7.75–9.8 h) have clean, non-overlapping cut-offs. - Don't re-derive the category from hours alone, and be careful using it as a clean outcome variable. **Distribution oddities, not errors** - **Sleep floor:** `total_sleep_hours` bottoms out at exactly 3.2 in two categories, which hints at clipping or a generator floor. I haven't confirmed that. - **Latency tail:** `sleep_latency_min` runs 6.0–123.3, median 37.6. It is heavy-tailed within Severe Sleep Debt: 104 rows are over 90 minutes, versus 13 in Moderate and none in the other two categories. The values are plausible but extreme, so decide deliberately whether to winsorize. - **Caffeine zeros:** `caffeine_post_5pm_mg` is 0 for 4,950 of 8,500 rows (about 58%), with a maximum of 250. This is a zero-inflated column, and it is unclear whether 0 means "none" or "not recorded." - **Phone minutes:** `bedtime_phone_minutes` spans exactly 1–180, which may be a cap. Aggregate it only, since the card flags it as person-identifying. **Checked and clean** - **Completeness and keys:** All 8,500 rows are non-null on every measure and classifier, and `user_id` is unique (8,500 distinct). - **Value ranges:** All fall in plausible bounds. - Age 18–65. - Brightness 10–100. - Activity 0–112 min. - Alarm snoozes 0–7. - Fatigue 1.0–10.0. - Deep sleep 8.1–28.0%. - REM 9.6–27.0%. - **Sleep stages:** No row has deep% + REM% over 100. - **Flags and labels:** `blue_light_filter_active` is a clean 0/1 integer. Categorical labels show no case or spelling variants. - **Units:** Percent columns are on a 0–100 scale, hours are in hours, and minutes are in minutes, with no sign of mixing. **Minor structural notes** - Some labels bundle several apps ("Instagram / Reddit", "TikTok / Reels", "Streaming (Netflix/Hulu)"), so app-level analysis is coarser than it looks. - Non-Binary has only 248 rows, which is thin for subgroup comparisons. - The data looks observational or possibly synthetic. The tidy bounds and the hard floor and cap fit that reading.