trails/openspec/changes/poi-index/specs/infrastructure/spec.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

1.3 KiB

ADDED Requirements

Requirement: POI extract pipeline on the BRouter host

The BRouter host SHALL run a scheduled job (monthly by default) that downloads an OSM data file, filters it to the planner's POI category selectors with osmium, and publishes the resulting artifact with a checksum-and-timestamp manifest at a vSwitch-only URL via the existing Caddy sidecar. Transient working data SHALL live under the trails user's directory and be cleaned up after each run.

Scenario: Monthly extract published

  • WHEN the scheduled extract job completes
  • THEN a fresh artifact and manifest are available to the flagship over the vSwitch
  • AND the planet working files are removed from disk

Scenario: Artifact not publicly reachable

  • WHEN a host outside the vSwitch requests the artifact URL
  • THEN the request is refused

Requirement: POI import job on the flagship

The flagship SHALL run a scheduled import job that fetches the artifact over the vSwitch, verifies its checksum, loads it into the staging table, and performs the guarded atomic swap. Job outcome and index age SHALL be visible in the monitoring stack.

Scenario: Import failure is visible

  • WHEN an import run fails (fetch, checksum, load, or guard)
  • THEN the failure is recorded in metrics/logs and surfaces on the Grafana planner dashboard