Bounded route intake
GPX input is bounded and parsed defensively before accepted data becomes a phone-local route for review and navigation.
Case study | Android + Wear OS
A local-first trail workout app that defensively parses bounded GPX input, validates phone/watch transfers, checkpoints active workouts, and creates local GPX/FIT output before phone delivery.
Evidence snapshot
The phone route workflow is the visible entry point. The deeper boundary is the ordered path from bounded GPX input through durable local workout artifacts and a guarded return import.
Problem
Trail workouts cross fragile boundaries: imported route files, phone-to-watch sync, GPS quality, workout state, and exports that need to remain useful after the activity. TrailScope treats them as one local-first loop centered on an Android phone and paired Wear OS watch, without assuming a hosted account.
System
GPX input is bounded and parsed defensively before accepted data becomes a phone-local route for review and navigation.
Shared bounded payload contracts validate route and workout transfers, while phone and watch adapters persist state for their own surfaces.
Active workouts receive periodic checkpoints. Completion stores history and local GPX/FIT artifacts before delivery can be sent or left pending.
Returned assets are bounded, FIT structure is validated, files are persisted, and a newer-state merge prevents an older record from replacing newer work.
Decisions
Restored connectivity is not a prerequisite for a completed local artifact; delivery can remain pending and retry later.
Periodic checkpoints and a restore path support interrupted workouts, while outdoor and reboot behavior remains subject to real-device release validation.
The return path structurally validates FIT input and prevents an older imported record from overwriting newer workout state.
Public proof stays at the product-decision level and excludes source, real route data, precise locations, logs, accounts, and release secrets.
Outcome
TrailScope shows ownership of a cross-device route lifecycle, not a collection of screens. Bounded GPX intake, validated phone/watch handoff, periodic checkpoints, local GPX/FIT output, pending delivery, and a newer-state merge remain one inspectable flow across Android and Wear OS.