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.
Every draft from 11 on does. 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.
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.
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 new draft would silently take the drafts
07-10 answer.