Skip to content

Investigate REQ-CRC-015/REQ-CRC-016 against RC4/RC5 TC18.txt: old supporting spec text appears removed, not just relocated #169

Description

@SoundMatt

Summary

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.

REQ-CRC-016: ntscf_data_length/stream_data_length +4-octet adjustment

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:

  1. 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.
  2. Determine whether REQ-CRC-015/REQ-CRC-016 still describe real conformance gaps, are now moot, or need rewording against the new text.
  3. 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).
  4. Update .fusa-reqs.json's REQ-CRC-015/REQ-CRC-016 entries and src/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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions