Files
MeshTerm/meshterm/services
Jean-Pierre MartineauandClaude Fable 5 19ac17a262 Heard ages: a sender's future clock no longer pins the list
A contact's last_advert is stamped by the advertising node's own clock;
a mis-set one lands in the future, where the age clamp read it as a
permanent "now" and the heard sort pinned it to the top — for as long
as the bogus stamp stayed ahead of the wall clock, since the firmware
only ever advances the field (its replay filter).

advert_time (models.py) is now THE converter for every last_advert
epoch — the live contact table and the cross-session store both pass
through it — and refuses a stamp more than 5 minutes ahead as unknown.
The devstate contacts fetch then fills the gap from our own recorded
receptions (stamped by our clock), so a refused contact we really do
hear shows an honest age, and one we never heard reads never.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-30 00:56:21 -04:00
..