Commit Graph
27 Commits
Author SHA1 Message Date
kyleandClaude Opus 5.5 cc39318673 fix(core): harden exchange send path from full-codebase review
- Cut every fragment of a stream from one encoding (age frozen at the
  first fragment) and bounds-check the slice: re-encoding mid-stream
  corrupted fragments and could panic when the tick went backwards.
- Fold the bloom summary to fit the MTU instead of sending a ~540-byte
  frame that small-MTU links reject; drop the sim's summary MTU
  exemption that hid this.
- Finish a peer's in-flight stream before starting another, and count
  an addressed message as delivered only after its last fragment.
- Alternate custody and broadcast per peer, rotate through addressed
  candidates, and evict the oldest bounce record when full, so neither
  path starves.
- Add Exchange::on_send_error; Node::poll uses it so Busy/Unreachable
  sends are retried rather than silently dropped.
- Clear bounce records per contact, record duplicates against their
  sender, and skip addressed messages that cannot fit the MTU.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 05:08:08 -07:00
kyleandClaude Opus 5.5 111a40236d ci: test the no-alloc build and harden the workflow
Run clippy, docs and tests for tines-core with --no-default-features,
gating the MemStore-based tests on `alloc` so they compile there. Fail on
rustdoc warnings, pass --locked everywhere, and pin the toolchain to
1.99.0. In the workflow, use read-only permissions, cancel superseded
runs, add a 20-minute timeout, and pin actions to commit SHAs.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 05:07:12 -07:00
kyle d10e3cd88e test(core): close deferred coverage gaps 2026-10-18 04:28:38 -07:00
kyle 277daae89f fix(core): rebuild_send_queue excludes addressed messages 2026-10-18 03:57:08 -07:00
kyle 1d646344e6 style: cargo fmt --all 2026-10-18 03:28:51 -07:00
kyle db39dc1df0 feat(core): Node::observe_to and belief excludes addressed-to-others 2026-10-18 02:56:17 -07:00
kyle 8ad0a7415f feat(core): addressed store-and-forward in the exchange 2026-10-18 02:39:36 -07:00
kyle c59834737b feat(core): reject expired or malformed addressed messages 2026-10-18 02:03:52 -07:00
kyle 2c932e96c0 feat(core): summaries carry only broadcast observations 2026-10-18 01:55:29 -07:00
kyle 65c4aa72c0 feat(core): Store::for_each_broadcast_id 2026-10-18 01:49:01 -07:00
kyle 085b4d35da feat(core): Observation gains to/lifetime_ms; identity includes to 2026-10-18 01:41:24 -07:00
kyle 1a02ef2d93 docs: fix broken intra-doc links; make cargo doc clean 2026-10-18 01:12:19 -07:00
kyle 1752bd23ff refactor(core): dedupe trim/belief comparators and emit_one; add coverage tests 2026-10-17 23:58:15 -07:00
kyle 80ccd25dde fix(core): reset reassembler slot on buffer overflow; drop tautological assert 2026-10-17 23:58:15 -07:00
kyle 09a676c243 docs: fix Bloom |1 placement and doubled 'The'; PairTransport 'broadcast' wording 2026-10-17 23:58:15 -07:00
kyle ab9b892d94 chore: ci script and README 2026-10-17 21:48:37 -07:00
kyle 9de7157ee2 feat(sim): harness and convergence scenarios 2026-10-17 17:32:12 -07:00
kyle 1740acd625 feat(core): Node facade 2026-10-17 15:43:57 -07:00
kyle 781710b196 feat(core): BeliefPolicy, LatestWins, SelfFirst 2026-10-17 15:02:51 -07:00
kyle 0bd74080a5 feat(core): exchange state machine 2026-10-17 14:47:20 -07:00
kyle b935812ed1 feat(core): fragmentation and reassembly 2026-10-17 13:37:43 -07:00
kyle 843ddae6fa feat(core): Transport trait 2026-10-17 13:05:25 -07:00
kyle 010efbe1f5 feat(core): salted Bloom summary 2026-10-17 12:48:39 -07:00
kyle 7ece265dbd feat(core): Store trait, TrimPolicy, MemStore 2026-10-16 18:46:31 -07:00
kyle ba7189804f feat(core): wire frames with postcard 2026-10-16 18:16:25 -07:00
kyle 3bf09afdd8 feat(core): wire frames with postcard 2026-10-16 18:15:57 -07:00
kyle 8108feb146 feat(core): workspace, Observation, content-derived id 2026-10-16 18:05:52 -07:00