Refresh the native Rippr snapshot to match the claimed commit

RIPPR.md said the native snapshot was at ba57a92, but rippr-src and the bundle
were still at d418920 -- so the superseded notice and the two recorded bugs were
missing from the copy. Re-exported both.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-15 22:38:02 -05:00
parent 0bc42b2e5a
commit 3c801e9114
3 changed files with 378 additions and 1 deletions

View File

@@ -1,4 +1,32 @@
# Rippr
# Rippr — native Android (superseded)
> ## ⚠ This app has been ported to Flutter
>
> Active development moved to **`~/dojo/rippr-flutter`**, which runs on Android *and*
> iOS. That port is feature-complete and better tested than this app; see its
> `docs/port/PARITY-AUDIT.md` for a row-by-row comparison.
>
> **This repository is kept as a reference and a fallback**, not archived. It is still the
> only version that has recorded real rides, and the port's validation depends on running
> both apps side by side — they use different application ids (`com.rippr` here,
> `com.rippr.port` there) specifically so they can be installed together.
>
> **Two bugs in this code were found by porting it.** Both are fixed in the port and
> still present here:
>
> 1. **`TrackingService.restoreAfterProcessDeath` measures the dead time as distance.**
> Its comment says it resumes into a new segment; it calls `resumeTrip`, which adopts
> the segment a crash left open. `RideStatistics.compute` then measures straight
> through the gap — reproduced at **111 km** of phantom distance. See
> `TripRepository.resumeIntoNewSegment` in the port.
> 2. **The elevation regression guard passes on seed luck.** On a fixture shared between
> both languages the algorithm yields ~39 m, which would fail this repo's own 35 m
> bound in `RideStatisticsTest`. It passes only because `kotlin.random.Random(42)`
> draws a benign sequence.
>
> Everything below describes this app as it stands, and remains accurate.
---
A native Android GPS ride recorder for motorcycles. Records telemetry from an
un-killable foreground service into a local SQLite database, renders the traversed path