Harden sync reliability for v0.2 beta - #1
Conversation
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 64761450f2
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| cadences = _data(streams, "cadence") | ||
| watts = _data(streams, "watts") | ||
| moving = _data(streams, "moving") | ||
| if summary_only: |
There was a problem hiding this comment.
Preserve sensor streams when only distance samples are missing
When Strava returns a valid time stream with aligned GPS, heart-rate, cadence, or other samples but omits only the distance stream, summary_only becomes true and this block erases every genuine sensor array. The resulting FIT permanently loses available route and health data even though the real time stream can still provide the record timeline; handle the missing distance stream separately instead of discarding all aligned source streams.
AGENTS.md reference: AGENTS.md:L19-L19
Useful? React with 👍 / 👎.
Outcome
Prepares the public v0.2 beta with explicit failure reporting, privacy-minimized state storage, safer summary-only FIT conversion, stronger automated testing, dependency/security automation, and bilingual documentation updates.
Key changes
/bin/launchctlValidation
uv run coverage run -m pytest -q— 25 passeduv run coverage report— 81%uv run ruff check .— passeduv run bandit -q -r src/nrc_volt_sync— passeduv run pip-audit— no known vulnerabilitiesuv build— source archive and wheel builtnrc-volt-sync --help— passedAll fixtures use synthetic identifiers and data. No credentials, real activity IDs, FIT files, GPS traces, or provider payloads are included.