pub const MIN_PLAUSIBLE_EPOCH: u32 = 1_577_836_800;Expand description
The earliest instant a receiver is believed: 2020-01-01T00:00:00Z.
A receiver whose backup domain has lost power does not report no time. It reports the start of its own epoch — a T1000-E’s AG3335 comes back saying 1980-01-06, the GPS epoch — and an RMC carrying that is well-formed in every respect except being wrong by decades.
Nothing downstream can catch this. The wall clock’s precedence rules are about which source wins, not whether a source is lying, and an unset clock accepts a receiver-RTC restore by design. So the check belongs here, at the parse: an instant from before any of this software existed is not an instant, and a receiver reporting one is a receiver with no clock — which is a state the design already handles.
§The 2080 cliff
This floor combines with the GPS-epoch two-digit-year window to accept
2020 through 2079 and nothing else. In 2080 a receiver reports 80,
the window reads that as 1980, and this rejects it — the same reading
that makes a reset receiver detectable today.
Two digits cannot distinguish “the receiver’s clock was lost” from “it
is fifty-four years later”, so the ambiguity is inherent rather than
chosen; every NMEA consumer windowing on the GPS epoch shares it. The
alternative — windowing forward, so 80 means 2080 — buys a working
2080 at the cost of believing every clock-less receiver between now and
then, which is the failure that actually happens. PROP_TIME’s u32
runs out in 2106 regardless.