| name | route-contract-review |
| description | Use when working on route sharing, hydration, route persistence, stale-anchor handling, GPX export boundaries, or watch payload semantics. |
Route Contract Review
Purpose
Protect the compact canonical route identity and prevent drift between web, iPhone, and watch behavior.
Canonical Authority
Canonical route identity is limited to:
version
destinationId
destinationIds
anchorEdgeIds
Derived Data
Treat route names, summaries, geometry, and watch display data as derived and non-authoritative.
Review Checklist
- Does the change preserve compact canonical authority?
- Does the change keep GPX separate from persistence and watch transfer?
- Does hydration still use
ok, partial, and empty semantics?
- Are stale anchors surfaced instead of silently dropped?
- Does any watch payload remain subordinate to canonical route identity?
Read First
docs/iOS/plan/phase-2.md
docs/iOS/plan/phase-4.md
docs/iOS/plan/phase-5.md
docs/iOS/plan/phase-6.md
lib/route-plan.js
lib/route-graph.js