feat(train): the instance names its map source (ADR 0030, D11, D22)

Train's first endpoint of its own, map.source, names the map workouts
are drawn on, for people signed in only, as a provider's key may be in
its style's address: OpenFreeMap's Liberty style where the operator sets
nothing, else MAP_STYLE_URL (HTTPS only) with MAP_SOURCE_NAME,
MAP_ATTRIBUTION and MAP_ABOUT_URL. A model without a table: no
migration. D22 is recorded in ADR 0030.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
This commit is contained in:
Tizian 「ティツィアーン」 2026-10-28 13:42:28 +01:00
commit dd778cb2cd
Signed by: raisondetredev
GPG key ID: 07F6FCF405488B64

View file

@ -1,7 +1,7 @@
# ADR 0030: Halkyon Train, what it does and where its data comes from
- **Status:** decided 27–28 Oct 2026, by the developer (D1–D21 below). The shell (D12)
is built; recording (D13–D21) is being built.
- **Status:** decided 27–28 Oct 2026, by the developer (D1–D22 below). The shell (D12)
is built; recording (D13–D22) is being built.
- **Numbering:** 0025 is held by the federation draft (stashed), 0026–0029 by the .NET
rewrite on the local branch `rewrite-dotnet`, abandoned on 27 Oct; Train takes the next
free number so that neither is ever read as this one.
@ -337,6 +337,16 @@ Strava. What was found, 27 Oct:
than in a snack bar, which would cover the button it speaks of. The service holds a
partial wake lock while it records (at most 12 hours), so that its clock and file run
with the screen off where no GPS fix wakes the processor.
- **D22 OpenFreeMap first, the PMTiles sidecar with route planning** (recommended, over
the sidecar now, which no one else ever sees the areas viewed through but needs Train's
server and the sidecar deployed on learn.halkyon.eu before anything else of Train is
ready, and a region chosen, gigabytes on the server's disk; and over a source fixed in
the app, which skips D11's operator's setting and would be undone): Train's server names
the instance's map source, as its operator sets it, OpenFreeMap where nothing is set
(D11), so 5c needs no deploy; a workout's page names the source drawing it and what it
sees (the device's address and the area viewed, not the track). The sidecar comes when
route planning gives Train's server a reason to run on the instance: the region's
PMTiles file served by Caddy with range requests, no server code.
## Consequences