You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Apr 30, 2026. It is now read-only.
Fix evening scheduler: NULL strength data crashed all user check-ins
Bodyweight exercises (sled pull, reverse hyper, etc.) logged with NULL
weight_lbs in strength_set. db_read.get_strength() converted str(None)
to "None", then strength.py float("None") crashed. The single try/except
in _gather_context meant the crash in _checkin discarded all context,
so has_composable_data() returned False and every user got the onboarding
"no health data" message.
Root cause: db_read.py str(None) -> "None" for NULL SQLite values.
Structural cause: _gather_context wrapped all data sources in one try block.
Fixes:
- db_read.get_strength: NULL weight/reps/rpe -> "0"/"" not "None"
- db_read.get_weights/get_bp: filter out NULL rows (defense-in-depth)
- strength.py: defensive float() with try/except
- scoring engine: _apply_clinical catches bad float values
- briefing.py: _load_weight_log/_load_bp_log skip bad rows
- scheduler.py: separate try/except per data source in _gather_context
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
0 commit comments