Protect the battery-less SBC from an unclean power cut at a GWML neutral section (phase break) by proactively hibernating it before power actually drops — rather than losing power mid-write, which is the same failure mode already observed affecting the train's own wifi router.
1. Poll current position from the loc endpoint / location-db locations table. The existing ~4-8s in-motion reporting cadence is sufficient on its own (see Data Sources) — no separate local GPS source is needed, provided the idle→moving transition is handled (don't trust a fix that could be several minutes stale right after departure).
2. Compare position against known neutral-section coordinates (gazetteer table, source='gwml-neutral-sections').
3. When within the trigger radius (currently ~5 km, pending tightening — see Considerations), call systemctl hibernate.
4. Log every trigger event: exact timestamp only, plus confirmation the hibernate write completed if the device can log this before power loss (needs a durable, immediately-synced write). Position and speed at trigger time do not need separate logging — both are already in the existing locations table and can be joined back by timestamp.
Router wifi (SSID c13) power-loss is used as a proxy signal for real GWML neutral-section crossings, cross-referenced against the gazetteer entries. This is a development/calibration tool, not part of the live trigger path itself — the live trigger only needs position vs. gazetteer coordinates, not router state. See Findings for the methodology and results, and john/actions item 3 for the unrelated stale-Google-Drive-export investigation this whole line of work grew out of.
• Compare hibernate-trigger logs against the router's c13 power-loss evidence over multiple trips — confirms whether triggers fired with adequate margin, and by how much, without needing a separate ground-truth source.
• As trip history accumulates, tighten position estimates for each neutral section (average/cluster the observed outage start-points across trips) and reduce the required trigger radius accordingly, rather than keeping the wide margin indefinitely.
• Track speed-at-approach per trip so lead distance can eventually be computed as time-to-section at current speed, rather than a fixed radius — more robust across different train speeds and schedules. See Considerations for the reasoning.