From f94c50b2ee74c1ea5548341633f7c8d9049b2aba Mon Sep 17 00:00:00 2001 From: Mathieu Moran Date: Thu, 13 Aug 2026 15:53:52 -0400 Subject: [PATCH] docs: close BUG-16 (fixed + verified), update Phase 29 status --- BUGS.md | 28 ++++++++++++++++++---------- PLAN.md | 10 +++++++++- 2 files changed, 27 insertions(+), 11 deletions(-) diff --git a/BUGS.md b/BUGS.md index 404a627..aca528c 100644 --- a/BUGS.md +++ b/BUGS.md @@ -23,16 +23,6 @@ When CLOSED, move the entire entry to Resolved — don't duplicate. - **Pi-side hardening shipped 2026-08-12**: `phone-hotspot` now forces public DNS (`8.8.8.8`/`1.1.1.1`) and the Settings page surfaces the correct URL per uplink mode. -### BUG-16 — Trip missing from Pi local history (present on server) -- **Status**: `OPEN` 2026-08-13 -- **Phase**: 29 -- **Symptom**: a drive produced a trip on the server portal but not in the Pi's local - trip history. -- **Hypothesis**: the Pi's trip builder suppresses trips until the car ECU has been - reached once (`was_car_ever_connected`), so a mid-drive reboot with a slow/failed OBD - reconnect can skip local trip building — while the raw rows still upload and the server - (no such guard) builds the trip. Investigate against the raw `tracking` rows for that drive. - ### BUG-17 — Server trip timestamps wrong after an offline period - **Status**: `OPEN` 2026-08-13 - **Phase**: 29 @@ -56,6 +46,24 @@ When CLOSED, move the entire entry to Resolved — don't duplicate. ## Resolved +### BUG-16 — Trip missing from Pi local history (present on server) +- **Status**: `CLOSED` 2026-08-13 +- **Commits**: `e5ac14e`, `f5f20c3` +- **Fix**: two root causes: + 1. `connect_obd()` set `_car_ever_connected` **without a `global` declaration**, so the + module-level flag was never set and `was_car_ever_connected()` always returned `False` — + local trip building had been silently blocked ever since BUG-10 landed. Added the `global` + declaration and now persist the flag to the settings table (`car_ever_connected`) so it + survives reboots. + 2. Speed-only rows (NULL GPS, from FEAT-12) made trips start/end with NULL coordinates, + violating the `trips.*GPSX NOT NULL` constraint. The trip builder now uses the first/last + GPS-bearing row for start/end coordinates, and skips a trip that never got any fix. +- **Verification**: backfilled the persisted flag on the Pi (the car has been connected + before), triggered a rebuild — the local `trips` table now contains the 2026-08-13 drive + (e.g. a 48.5 km trip) plus several earlier trips that had been silently dropped. + `trip_build_state` advanced to LAST_TRACKING_ID=7009. Timestamps for the 08-13 data are + still wrong — that's BUG-17 (no RTC). + ### BUG-13 — Server Web UI shows raw coordinates instead of geocoded location on trips - **Status**: `CLOSED` 2026-08-12 - **Commit**: `8309819` diff --git a/PLAN.md b/PLAN.md index 27d013a..7c18b07 100644 --- a/PLAN.md +++ b/PLAN.md @@ -2267,8 +2267,16 @@ The app reuses the existing Pi REST API surface with no changes: **Owner completed a second road test on 2026-08-13.** Issues found during the drive are logged as `BUG-XX` entries in [BUGS.md](./BUGS.md) (BUG-16 onward) and fixed + verified here. +- **BUG-16 (trip missing from Pi local history) — ✅ FIXED**: `connect_obd()` set + `_car_ever_connected` without a `global` declaration, so the module-level flag was never + set and local trip building was silently blocked since BUG-10. The flag is now persisted + across reboots; also fixed a NULL-GPS speed-only row crash in the trip builder. Verified the + 2026-08-13 drive now appears locally. +- **BUG-17 (trip timestamps wrong) — OPEN**: no RTC → clock drifts without internet. +- **BUG-18 (no RTC) — OPEN**: add a battery-backed RTC (DS3231) / GNSS time source. + Open items from the drive — fill in as reported: -- (none yet) +- BUG-17 / BUG-18 (clock) pending. ## Working Notes / Environment Gotchas