You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
While closing out issue #164 (systemic TC18.txt citation drift in src/*.rs doc comments), batch 4's e2e.rs pass (PR #168) found that the RC4→RC5 TC18.txt revision didn't just relocate two spec sentences this crate's REQ-CRC-015/REQ-CRC-016 comments used to cite — it appears to have removed them outright, with no textual replacement found anywhere in the current spec after an exhaustive full-text search. That's a genuine open engineering question, not a citation-fix problem, so it's split out here rather than resolved inside #164's own citation-only scope.
The old TC18.txt (pre-RC4/RC5) stated, in one sentence: "Before CRC calculation it is essential to adapt the acf_message_length by plus 1 quadlet for the CRC32 addition to the payload and in the AVTPD to increase the ntscf_data_length or in an TSCF header the stream_data_length by 4 octets per ACF type in the ACF payload being E-2-E protected."
The current TC18.txt (confirmed via direct read, TC18.txt line 4272) keeps only the first half: "When calculating the CRC, it needs to be considered that adding the CRC to the byte_msg_payload increases the acf_msg_length by 1." — which build_crc32_coverage_buffer already implements correctly.
The second half (the ntscf_data_length/stream_data_length +4-octet adjustment) has no surviving text anywhere in current TC18.txt — confirmed by a full-text search for ntscf_data_length, stream_data_length, and 4 octets; the only remaining hits are the two AVTPDU header-diagram field labels themselves (Figure 20/21), not an adjustment rule of any kind. This crate's REQ-CRC-016 requirement entry currently records this as "not implemented anywhere in this crate," on the premise that TC18 requires it. If TC18 itself dropped the requirement, REQ-CRC-016 may now be moot rather than a real gap; if the requirement moved somewhere this search didn't recognize (e.g. renamed fields, restructured section), the entry needs to point there instead.
REQ-CRC-015: fragmented-request CRC header coverage (first vs. final fragment)
The old TC18.txt stated: "For fragmented requests or responses going through CRC calculation only the first AVTPDU and ACF header data will be used and the payload of all segments." — a rule this crate's build_crc32_coverage_buffer_for_fragment_train deliberately does NOT implement (it uses the final fragment's header instead), recorded honestly as a known divergence via REQ-CRC-015.
The current TC18.txt (TC18.txt lines 4274-4275) reads, in its entirety, on this topic: "Fragmentation, if applied to a message, happens after CRC calculation. So, the CRC is only calculated once and will be transmitted in the last segment." Confirmed via full-text search that "first AVTPDU", "first ACF header", and "payload of all segments" appear nowhere in current TC18.txt.
This new sentence still supports this crate's "only the final fragment carries the CRC" placement rule, but says nothing — in either direction — about which fragment's AVTPDU/ACF header the CRC coverage is computed over. Read literally, "happens after CRC calculation" could mean the CRC is computed once over a single not-yet-fragmented header, before the message is split — which would sidestep the old first-vs-final distinction entirely rather than settle it. It's genuinely unclear whether:
REQ-CRC-015 still describes a real conformance gap (this crate uses final-fragment header, TC18 still implicitly wants first/pre-fragmentation header), or
it's now moot (TC18's model no longer distinguishes per-fragment headers for CRC purposes at all), or
it needs restating against a pre-fragmentation single-header model this crate doesn't currently implement (this crate always evaluates the coverage rule against one already-identified fragment's header — see e2e.rs's own "Fragmentation interaction" doc section, which takes fragment order/identity as a caller-supplied fact).
What this issue asks for
Not a citation fix (that part is done, PR #168). This needs an engineer to:
Read TC18 §13.6 and §11.4 (fragmentation) together against the current RC4/RC5 text, independent of what this crate's comments used to say.
Determine whether REQ-CRC-015/REQ-CRC-016 still describe real conformance gaps, are now moot, or need rewording against the new text.
If REQ-CRC-015 is still real: consider whether fixing it (switching to whatever header TC18 now actually requires) is worth doing, given it's flagged as changing three functions' contracts (build_crc32_coverage_buffer_for_fragment_train/crc32_tc18_for_fragment_train/crate::fragment::verify_reassembled_train_crc).
src/e2e.rs's own doc comments (top-of-file "Which length field..." section and "Fragmentation interaction" section) — carry the full flag text with citations
Summary
While closing out issue #164 (systemic TC18.txt citation drift in
src/*.rsdoc comments), batch 4'se2e.rspass (PR #168) found that the RC4→RC5 TC18.txt revision didn't just relocate two spec sentences this crate'sREQ-CRC-015/REQ-CRC-016comments used to cite — it appears to have removed them outright, with no textual replacement found anywhere in the current spec after an exhaustive full-text search. That's a genuine open engineering question, not a citation-fix problem, so it's split out here rather than resolved inside #164's own citation-only scope.REQ-CRC-016:
ntscf_data_length/stream_data_length+4-octet adjustmentThe old TC18.txt (pre-RC4/RC5) stated, in one sentence: "Before CRC calculation it is essential to adapt the acf_message_length by plus 1 quadlet for the CRC32 addition to the payload and in the AVTPD to increase the ntscf_data_length or in an TSCF header the stream_data_length by 4 octets per ACF type in the ACF payload being E-2-E protected."
The current TC18.txt (confirmed via direct read,
TC18.txtline 4272) keeps only the first half: "When calculating the CRC, it needs to be considered that adding the CRC to the byte_msg_payload increases the acf_msg_length by 1." — whichbuild_crc32_coverage_bufferalready implements correctly.The second half (the
ntscf_data_length/stream_data_length+4-octet adjustment) has no surviving text anywhere in current TC18.txt — confirmed by a full-text search forntscf_data_length,stream_data_length, and4 octets; the only remaining hits are the two AVTPDU header-diagram field labels themselves (Figure 20/21), not an adjustment rule of any kind. This crate'sREQ-CRC-016requirement entry currently records this as "not implemented anywhere in this crate," on the premise that TC18 requires it. If TC18 itself dropped the requirement,REQ-CRC-016may now be moot rather than a real gap; if the requirement moved somewhere this search didn't recognize (e.g. renamed fields, restructured section), the entry needs to point there instead.REQ-CRC-015: fragmented-request CRC header coverage (first vs. final fragment)
The old TC18.txt stated: "For fragmented requests or responses going through CRC calculation only the first AVTPDU and ACF header data will be used and the payload of all segments." — a rule this crate's
build_crc32_coverage_buffer_for_fragment_traindeliberately does NOT implement (it uses the final fragment's header instead), recorded honestly as a known divergence viaREQ-CRC-015.The current TC18.txt (
TC18.txtlines 4274-4275) reads, in its entirety, on this topic: "Fragmentation, if applied to a message, happens after CRC calculation. So, the CRC is only calculated once and will be transmitted in the last segment." Confirmed via full-text search that "first AVTPDU", "first ACF header", and "payload of all segments" appear nowhere in current TC18.txt.This new sentence still supports this crate's "only the final fragment carries the CRC" placement rule, but says nothing — in either direction — about which fragment's AVTPDU/ACF header the CRC coverage is computed over. Read literally, "happens after CRC calculation" could mean the CRC is computed once over a single not-yet-fragmented header, before the message is split — which would sidestep the old first-vs-final distinction entirely rather than settle it. It's genuinely unclear whether:
REQ-CRC-015still describes a real conformance gap (this crate uses final-fragment header, TC18 still implicitly wants first/pre-fragmentation header), ore2e.rs's own "Fragmentation interaction" doc section, which takes fragment order/identity as a caller-supplied fact).What this issue asks for
Not a citation fix (that part is done, PR #168). This needs an engineer to:
REQ-CRC-015/REQ-CRC-016still describe real conformance gaps, are now moot, or need rewording against the new text.REQ-CRC-015is still real: consider whether fixing it (switching to whatever header TC18 now actually requires) is worth doing, given it's flagged as changing three functions' contracts (build_crc32_coverage_buffer_for_fragment_train/crc32_tc18_for_fragment_train/crate::fragment::verify_reassembled_train_crc)..fusa-reqs.json'sREQ-CRC-015/REQ-CRC-016entries andsrc/e2e.rs's doc comments to reflect the resolution, closing out the flags PR docs: fix TC18.txt citation drift in e2e.rs (issue #164 batch 4, final) #168 left in place.References
src/e2e.rs's own doc comments (top-of-file "Which length field..." section and "Fragmentation interaction" section) — carry the full flag text with citations