const fn has_implicit_subgroup_id_mode(draft: DraftVersion) -> boolExpand description
Whether this draft defines a subgroup ID is the first object’s ID stream type.
Nine drafts do: every one from 11 on. Drafts 07-10 always carry the subgroup ID explicitly, so eliding index 0 there redefines nothing.
The two wordings are worth telling apart, because reading only the later
one makes the earlier drafts look as though they lack the mode. Drafts 11
through 15 state it as a property of the type value — draft-15 Section
10.4.2: “the Subgroup ID is either 0 (for Types 0x10-11 and 0x18-19) or the
Object ID of the first object transmitted in this subgroup (for Types
0x12-13 and 0x1A-1B)” — while drafts 16 through 20 name a SUBGROUP_ID_MODE
field and give mode 1 the sentence “The Subgroup ID field is absent and the
Subgroup ID is the Object ID of the first Object transmitted in this
Subgroup”. Different prose, one stream: 0x12 on both sides of the change.
Draft-15’s absence here was not a narrower guard but a silent one. Skipping the block admitted the elide instead of refusing it, so a hook removing index 0 of a draft-15 first-object stream handed the receiver a stream whose subgroup ID had become the second object’s. The draft list the tests sweep carried the same omission, so no run ever asked.
Nothing that checks this list may read it. Two places state the same
partition independently and are what a narrowing here contradicts: the
a_first_object_carrier_exists in this module’s tests, which names every
draft in an exhaustive match, and the copy in tests/action_matrix.rs,
transcribed from the drafts and driving end-to-end probes. Both cuts have
been run — dropping draft-15, and narrowing to 17-19 — and each is caught
by both. A test that took the fact from here instead passed under both.
The restatement discipline above and the exhaustive match below answer two
different failures and neither substitutes for the other: restatement
catches this list saying the wrong thing about a draft it names, and
exhaustiveness catches it saying nothing about a draft that has just been
added. As a matches! a fifteenth draft would silently take the drafts
07-10 answer.