refactor(core): make local constants crate-private

Decision K (spec §5): the local capacities and timings are defaults that
will become configuration, so they are `pub(crate)`. The wire constants
stay public.

- MAX_PEERS, SUMMARY_INTERVAL_MS, REASSEMBLY_TIMEOUT_MS, SEND_QUEUE_CAP,
  MIN_MTU, EVENT_QUEUE_CAP, DROP_TABLE_CAP, BCAST_SENT_CAP, ACK_BUFFER_CAP
  and PEER_IDLE_MS are now `pub(crate)`; a compile_fail doctest pins it.
- MIN_MTU's doc claimed it was the floor below which a fragment has no
  room. It is only the frag sweep's lower bound (BLE ATT's 23). The real
  floors are now stated on `Transport::mtu` and pinned by
  `consts::tests::mtu_floors`: 85 to carry every valid observation, 66 to
  fragment at all, 35 for an Ack, 26 for a summary.
- tines-bt caps live connections with its own MAX_PEERS (8).
- tines-sim's props mirror MAX_PEERS/SEND_QUEUE_CAP, checked against core
  through the hidden `conformance` module; the fuzz twin reads it there.
- node.rs: drain_events' rustdoc no longer links the now-private consts.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-22 08:44:09 -07:00
co-authored by Claude Opus 5.5
parent e2717a930d
commit 18e53b9bdd
6 changed files with 129 additions and 23 deletions
+11
View File
@@ -50,6 +50,17 @@ pub trait Transport {
fn send(&mut self, to: &Self::Addr, frame: &[u8]) -> Result<(), SendError>;
/// Maximum frame size in bytes this transport can send (must be `<= MAX_FRAME`).
///
/// The smallest MTU core can fully use is **85 bytes**: at 85 every valid
/// observation, up to a maximum-size, signed, addressed one, fits in the
/// 64 fragments a peer will reassemble. Below that core never emits an
/// oversized frame, but it sends less:
/// - below 85, the largest observations can't be sent;
/// - below 66, nothing is fragmented, so only observations that fit
/// whole in one frame go out;
/// - below 35, no receipt fits, so none is sent and every sender keeps
/// custody of what it sent;
/// - below 26, no summary fits.
fn mtu(&self) -> usize;
}