trails/openspec/changes/hiking-foot-profile/proposal.md
Ullrich Schäfer 5dd4968626 docs+openspec: prior-art research (Organic Maps, Endurain, wanderer) and 15 proposals
Add docs/inspirations.md as the durable record of the 2026-07-05/06
prior-art research — per-project learnings with source paths, canonical
credit lines, and the changes each spawned — and extend the
acknowledgment lists in philosophy.md/architecture.md (Organic Maps,
Endurain, wanderer).

New OpenSpec changes (proposal/design/specs/tasks each):
- Organic Maps: elevation-profile-hardening, gpx-parser-robustness,
  hiking-time-estimate, poi-index, hiking-foot-profile
- Endurain: account-export, activity-duplicate-review,
  fit-parsing-hardening, activity-locations, self-hosting-guide,
  activity-privacy-controls
- wanderer: federation-hardening, link-share-tokens
- credits-page (user-visible acknowledgments)

Updated in-flight changes with wanderer prior-art sections:
route-federation, route-discovery.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 07:23:00 +02:00

31 lines
2.9 KiB
Markdown

## Why
The planner's "Hiking" option (de: "Wandern") is BRouter's `trekking` profile — a trekking-**bike** profile. Users planning a hike get bicycle routing: stairs and demanding footpaths are penalized or avoided, cycleways are preferred, and bicycle access rules apply, so the "Hiking" route is often not the route a hiker would (or could) take. trails.cool is an outdoor platform whose flagship use case is hiking; the routing should actually route on foot. This also unblocks the `hiking-time-estimate` change from being keyed to a mislabeled profile.
## What Changes
- The BRouter image guarantees a **foot routing profile named `hiking`** (from the pinned BRouter release's hiking profile, renamed; a vendored community foot profile is the fallback if the release doesn't ship one — verified during implementation).
- The planner profile selector gains **`hiking`** (en "Hiking", de "Wandern") and the existing `trekking` profile is **relabeled honestly** (en "Cycling (touring)", de "Radfahren (Touren)"). Available profiles become `hiking, trekking, fastbike, safety, shortest, car`; default stays `fastbike`.
- `@trails-cool/map-core` profile mappings move to the right sports: the `waymarked-hiking` tile overlay and hiking POI defaults (shelter, viewpoints) key on `hiking`; `trekking` gets the cycling defaults (`waymarked-cycling`, bike infrastructure) like the other bike profiles.
- Existing sessions are untouched: Yjs documents storing `trekking` keep routing exactly as before — only the label they see changes.
- The not-yet-implemented `hiking-time-estimate` change is retargeted to gate on the `hiking` profile (its artifacts are updated as part of this change's scope).
- Not in scope: SAC-scale-aware routing options (e.g. "avoid alpine routes"), per-country profile variants, and changing the demo bot's `trekking` usage (its synthetic routes remain plausible bike rides).
## Capabilities
### New Capabilities
<!-- none — foot routing is an extension of the existing brouter-integration capability -->
### Modified Capabilities
- `brouter-integration`: the "Profile selection" requirement's profile list gains `hiking`, and a new requirement pins the availability and foot semantics of the `hiking` profile in the BRouter image.
## Impact
- `docker/brouter/Dockerfile` — provide/rename the foot profile as `hiking.brf`; the existing WayTags patch loop must apply to it (deploys via `cd-brouter.yml` to the dedicated host).
- `apps/planner/app/components/ProfileSelector.tsx` — profile list + order.
- `packages/map-core/src/poi.ts``profiles` arrays and `profileOverlayDefaults` remapping.
- `packages/i18n` — en/de label additions and the trekking relabel.
- `e2e/integration.test.ts` — add a hiking-profile routing case alongside the existing trekking ones.
- `openspec/changes/hiking-time-estimate/` — gate updated from `trekking` to `hiking`.
- No schema/API changes; the BRouter proxy passes profile names through unchanged.