Summary

  • RFC 8928 depicted its EARO C-flag at bit 3 but did not register that position with IANA; RFC 9685 later registered the two-bit P-Field at bits 2 and 3.
  • RFC 9927 moves C to bit 1 and records the corrected allocation. The change is explicitly not backward compatible, while the RFC declines a transition plan because its authors knew of no implementations or deployments of RFC 8928.
  • The corrected RFC and IANA registry establish the current coordination contract. They do not rewrite firmware, identify every old parser, observe a packet or prove an operational outcome.

A figure can teach code without reserving a field

The collision began in a place easy to dismiss as presentation. RFC 8928 defined Address-Protected Neighbor Discovery and showed a C-flag in the Extended Address Registration Option. When set, C says that the Registration Ownership Verifier contains a Crypto-ID and that the registering 6LoWPAN Node may be challenged for ownership of the registered address. The figure placed C at bit position 3.

The omission was not in the explanation of C. It was in the shared allocation record: the position was never registered with IANA. That matters because a compact option is a namespace, not merely a drawing. A developer can quite reasonably implement the diagram. Another standards effort can quite reasonably consult the registry before requesting an allocation. If those two sources are not joined, both actors can follow plausible instructions and still produce incompatible grammars for the same octet.

RFC 9685 later defined the Registered Address Type Indicator, a two-bit P-Field occupying bits 2 and 3, and performed the corresponding IANA registration. The result was a real specification collision at bit 3. This was not a duplicate label or a typographical disagreement: one wire position had two possible interpretations.

No source in the evidence package shows that this ambiguity caused an incident. The defensible claim is narrower and more important: the published documents permitted two parsers to disagree.

The repair moves one bit and restores one ledger

RFC 9927 replaces the relevant Neighbor Solicitation and Neighbor Advertisement EARO figures. C moves from bit 3 to bit 1, while P remains the properly registered two-bit field at bits 2 and 3. The RFC also corrects the earlier phrase “Enhanced Address Registration Option” to “Extended Address Registration Option.”

The current IANA Address Registration Option Flags registry now gives a unique map: bit 0 is unassigned; bit 1 is C; bits 2–3 are P; bits 4–5 are I; bit 6 is R; and bit 7 is T. That ledger is the live coordination surface. It lets future specification authors and implementers consult one allocation map rather than reconstruct intent from a sequence of figures.

RFC 8126 explains why this work is governance, not clerical housekeeping. A registry is a controlled point for coordinating scarce protocol values. But authority must remain scoped. IANA can establish which meaning the standards process currently assigns to a bit. It cannot attest that a binary has been rebuilt, that firmware was distributed, or that a peer decoded a received option under the new grammar.

“No known implementation” is a bounded statement

RFC 9927 is unusually direct about the cost of its repair: the update is not backward compatible. A sender following RFC 8928’s old figure and a receiver following the corrected allocation could attach different meanings to bit 3. Yet the RFC prescribes no transition plan because there were no known implementations or deployments of RFC 8928.

That sentence records a knowledge state used in a standards decision. It is not a universal census result. It does not disclose the search universe, turn an absence report into proof of nonexistence, or guarantee that experimental code was never written. Treating it as absolute would erase the uncertainty on which the low-cost repair depends.

The distinction changes operational due diligence. An organization that never implemented RFC 8928 may safely treat RFC 9927 as the initial grammar. One that experimented with the earlier figure should inventory encoders and decoders, preserve build provenance, test both interpretations with fixtures, stage the change, observe peers and retain a rollback path. The RFC’s decision not to standardize a transition does not prohibit a local transition where local evidence requires one.

The registry coordinates meaning; running code establishes behavior

Heng Lu’s Minimum Initial Specification model is useful here as an analytical lens, not as an IETF rule. A narrow common allocation can coordinate independent actors while leaving implementation and future adoption local. His Running-Code Primacy argument adds the complementary limit: a clean specification does not displace the evidence of operating systems. His Reality Layers framework warns against allowing symbolic authority in one layer to impersonate facts in another.

Applied to RFC 9927, the layers are crisp. RFC 8928 proves what its figure depicted. RFC 9685 and its IANA action prove a properly coordinated P allocation. RFC 9927 proves the corrective normative mapping and its stated transition judgment. The live registry proves the current allocation. None proves what an unnamed implementation parses today.

A runtime claim needs a longer chain: named source or binary version; encoder and decoder behavior; configuration; controlled packet fixtures or captures; peer version; observed interpretation; and, if the claim concerns service, an outcome measurement. Without that chain, “the registry is fixed” is correct and “the network is fixed” is not established.

Evidence record

The case contains no named implementation, deployed node, captured packet, exploit, outage, adoption rate or measured business effect. It also does not elevate the C-flag into proof of address title, global route authorization or service acceptance. C participates in an EARO ownership-verification mechanism; its scope should not be widened by analogy.

The strongest conclusion is therefore architectural. A diagram may be normative enough to shape code, but it is not a substitute for updating the shared namespace ledger. Conversely, a corrected ledger is not a substitute for implementation evidence. RFC 9927 repairs the coordination layer while leaving operators responsible for establishing whether any local runtime ever inhabited the old one.

Sources