Iter 43. Pins BfldFrame::from_bytes behavior on buffers carrying bytes
past `BFLD_HEADER_SIZE + header.payload_len`. The parser currently
accepts these and silently slices to the declared length. Useful when
the transport (UDP MTU padding, ESP-NOW trailer alignment) adds noise
the application layer doesn't strip.
Pinning this behavior makes any future tightening (reject as
MalformedFrame) a deliberate, traceable policy change rather than
silent breakage.
Added (in tests/frame_trailing_bytes.rs, 6 named tests):
parser_accepts_buffer_with_one_trailing_byte
(smoke: one extra 0xFF byte tolerated; payload.last() != Some(0xFF))
parser_accepts_many_trailing_bytes
(256 trailing bytes — UDP MTU padding scale)
parsed_payload_round_trips_back_to_typed_payload_with_trailing_bytes_present
*** Sanity: trailing-bytes leniency must not corrupt the section
parser downstream. from_bytes → parse_payload still yields
the original BfldPayload byte-for-byte. ***
header_only_buffer_at_exactly_header_size_with_zero_payload_len_succeeds
(boundary: empty-payload frame is exactly 86 bytes)
header_only_buffer_with_trailing_bytes_but_zero_payload_len_ignores_them
(100 trailing bytes; parsed.payload stays empty)
trailing_bytes_do_not_affect_crc_validation_when_payload_intact
(CRC is over payload bytes only; 32 trailing bytes leave CRC
intact and parse succeeds)
ADR-124 status (iter step 0 sibling check):
- docs/adr/ADR-124-rvagent-mcp-ruvector-npm-integration.md unchanged
at 431 lines. SENSE-BRIDGE scope remains orthogonal.
ACs progressed:
- ADR-119 wire-format parser contract: trailing-bytes tolerance is
now an explicit, tested behavior. Operators building stream-based
frame readers (where multiple frames concatenate) know the parser
treats `header.payload_len` as authoritative, not buffer.len().
Test config:
- cargo test --no-default-features → 90 passed (frame_trailing_bytes cfg-out)
- cargo test → 296 passed (290 + 6)
Out of scope (next iter target):
- PR-readiness pivot: CHANGELOG, witness bundle, AC closeout table.
Co-Authored-By: claude-flow <ruv@ruv.net>