MIN_PLAUSIBLE_EPOCH

Constant MIN_PLAUSIBLE_EPOCH 

Source
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.