ecgang e999d57c19 Count the simulated-mesh storm bound per packet type
`publicMessageRelaysAcrossLineTopologyWithinTTLBudget` bounded every frame the
mesh delivered, announces included. Announce *admission* is the one decision
the manual scheduler does not own: `sendAnnounceNow` asks
`announceThrottle.shouldSend(force:now: Date())` (BLEService.swift:2760), so
announce volume tracks real elapsed seconds rather than `advanceTime`, and the
forced-announce window is only 0.15s.

#1651 has since made that harmless here, by draining the mesh to quiet before
the baseline is taken: the announce traffic now lands in the baseline instead
of in the measured delta. Re-measured on top of it, burning 0.2s of wall clock
and changing nothing else:

  burn        baseline total/announce   delta total/announce/message
  none        66 / 22                   4 / 0 / 4
  0.2s early  80 / 36                   4 / 0 / 4
  0.2s late   66 / 22                   4 / 0 / 4

The burn moves the baseline and leaves the delta alone. So the flake is fixed,
and this is not the fix.

What is left is legibility. The assertion now names the traffic it bounds, so
a later change on the announce path cannot spend the message budget's headroom
unnoticed. The message-only cost is 4 and is invariant under the perturbation
above, so the budget is 8.

Full SimulatedMeshTests suite green (macOS scheme, 8/8).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-10 06:02:06 -07:00
..