diff --git a/zephcore/ARCHITECTURE.md b/zephcore/ARCHITECTURE.md index 4c5b294..2fea346 100644 --- a/zephcore/ARCHITECTURE.md +++ b/zephcore/ARCHITECTURE.md @@ -345,7 +345,7 @@ ZephCore-only divergence from Arduino MeshCore (like the Adaptive Contention Win | Room server | forward-only | post timestamps feed client `sync_since` ordering | | Companion | forward-only | own clock stamps outgoing DMs; peers hold per-sender replay high-water marks | -**Step application**: the shared policy (GPS gate, forward-only skip, uint32-overflow guard, set clock, one `zephcore_rtc_save` per step — never per evaluation) lives in `MeshTimeSync::runTick()`; when it returns true, the role shifts its wall-clock-anchored bookkeeping by `lastStepDelta()` — repeater: neighbor `heard_timestamp`s, ACL `last_activity`, login/anon/discover rate-limiter resets; room server: ACL + login limiter. +**Step application**: the shared policy (suppression/pedigree checks inside `evaluateNow`, forward-only skip, uint32-overflow guard, set clock, one `zephcore_rtc_save` per step — never per evaluation) lives in `MeshTimeSync::runTick()`; when it returns true, the role shifts its wall-clock-anchored bookkeeping by `lastStepDelta()` — repeater: neighbor `heard_timestamp`s, ACL `last_activity`, login/anon/discover rate-limiter resets; room server: ACL + login limiter. All policy timers (6 h rate limit, 7-day suppression, tenure, sample age) anchor on **uptime, never wall clock** — otherwise the very steps they govern would distort them. diff --git a/zephcore/app/CompanionMesh.cpp b/zephcore/app/CompanionMesh.cpp index a4074c5..be6f6e4 100644 --- a/zephcore/app/CompanionMesh.cpp +++ b/zephcore/app/CompanionMesh.cpp @@ -353,8 +353,8 @@ void CompanionMesh::onAdvertTimeSample(const mesh::Identity &id, uint32_t timest void CompanionMesh::timeSyncTick() { if (!prefs.meshtimesync) return; - /* Shared policy (GPS fix-freshness gate, forward-only) lives in - * runTick; no companion-side bookkeeping needs shifting on a step. */ + /* Shared policy (suppression/pedigree, forward-only) lives in runTick; + * no companion-side bookkeeping needs shifting on a step. */ _timesync.runTick(*getRTCClock()); } diff --git a/zephcore/app/ObserverMesh.cpp b/zephcore/app/ObserverMesh.cpp index 1ccd973..d24dd95 100644 --- a/zephcore/app/ObserverMesh.cpp +++ b/zephcore/app/ObserverMesh.cpp @@ -267,7 +267,7 @@ void ObserverMesh::harvestTimeSample(Packet *pkt) void ObserverMesh::timeSyncTick() { if (!_prefs.meshtimesync || !_rtc) return; - /* Shared policy (GPS fix-freshness gate) lives in runTick; no + /* Shared policy (suppression/pedigree) lives in runTick; no * observer-side bookkeeping needs shifting on a step. */ _timesync.runTick(*_rtc); }