<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.6 (Ruby 3.2.2) -->
<?rfc compact="yes"?>
<?rfc comments="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-bormann-cbor-draft-numbers-03" category="info" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.20.0 -->
  <front>
    <title>Managing CBOR numbers in Internet-Drafts</title>
    <seriesInfo name="Internet-Draft" value="draft-bormann-cbor-draft-numbers-03"/>
    <author initials="C." surname="Bormann" fullname="Carsten Bormann">
      <organization>Universität Bremen TZI</organization>
      <address>
        <postal>
          <street>Postfach 330440</street>
          <city>Bremen</city>
          <code>D-28359</code>
          <country>Germany</country>
        </postal>
        <phone>+49-421-218-63921</phone>
        <email>cabo@tzi.org</email>
      </address>
    </author>
    <date year="2024" month="February" day="29"/>
    <keyword>CBOR numbers</keyword>
    <abstract>
      <?line 37?>

<t>CBOR-based protocols often make use of numbers allocated in a
registry.
During development of the protocols, those numbers may not yet be
available.
This impedes the generation of data models and examples that actually
can be used by tools.</t>
      <t>This short draft proposes a common way to handle these situations,
without any changes to existing tools.
Also, in conjunction with the application-oriented EDN literal "<tt>e</tt>", a
further reduction in editorial processing of CBOR examples around the
time of approval can be achieved.</t>
    </abstract>
  </front>
  <middle>
    <?line 52?>

<section anchor="intro">
      <name>Introduction</name>
      <t>(Please see abstract.)
<xref target="RFC8949"/> <xref target="I-D.bormann-cbor-e-ref"/></t>
    </section>
    <section anchor="the-problem">
      <name>The Problem</name>
      <t>A CBOR-based protocol might want to define a structure using CDDL
<xref target="RFC8610"/><xref target="RFC9165"/>, like that in <xref target="fig-struct1"/> (based on <xref target="RFC9290"/>):</t>
      <figure anchor="fig-struct1">
        <name>CDDL data model, final form</name>
        <sourcecode type="cddl"><![CDATA[
problem-details = {
  ? &(title: -1) => oltext
  ? &(detail: -2) => oltext
  ? &(instance: -3) => ~uri
  ? &(response-code: -4) => uint .size 1
  ? &(base-uri: -5) => ~uri
  ? &(base-lang: -6) => tag38-ltag
  ? &(base-rtl: -7) => tag38-direction
  / ... /
  * (uint .feature "extension") => any
}
]]></sourcecode>
      </figure>
      <t>The key numbers shown in this structure are likely to be intended for
allocation in an IANA section.</t>
      <t>The key numbers will be used in an example in the specification such
as shown in <xref target="fig-struct2"/>.</t>
      <figure anchor="fig-struct2">
        <name>CBOR-diag example, final form</name>
        <sourcecode type="cbor-diag"><![CDATA[
{
  / title /         -1: "title of the error",
  / detail /        -2: "detailed information about the error",
  / instance /      -3: "coaps://pd.example/FA317434",
  / response-code / -4: 128, / 4.00 /
  4711: {
     / ... /
  }
}
]]></sourcecode>
      </figure>
      <t>However, during development, these numbers are not yet fixed; they are
likely to move around as parts of the specification are added or deleted.</t>
    </section>
    <section anchor="the-anti-pattern">
      <name>The Anti-Pattern</name>
      <t>What not to do during development:</t>
      <figure anchor="fig-bad1">
        <name>CDDL data model, muddled form</name>
        <sourcecode type="cddl"><![CDATA[
problem-details = {
  ? "title" => oltext
  ? "detail" => oltext
  ? "instance" => ~uri
  ? "response-code" => uint .size 1
  ? "base-uri" => ~uri
  ? "base-lang" => tag38-ltag
  ? "base-rtl" => tag38-direction
  / ... /
  * (uint .feature "extension") => any
}
]]></sourcecode>
      </figure>
      <figure anchor="fig-bad2">
        <name>CBOR-diag example, muddled form</name>
        <sourcecode type="cbor-diag"><![CDATA[
{
  "title": "title of the error",
  "detail": "detailed information about the error",
  "instance-code": "coaps://pd.example/FA317434",
  "response-code": 128, / 4.00 /
  4711: {
     / ... /
  }
}
]]></sourcecode>
      </figure>
      <t>This makes the model and the examples compile/check out even before
having allocated the actually desired
numbers, but it also leads to several problems:</t>
      <ul spacing="normal">
        <li>
          <t>It becomes hard to assess what the storage/transmission cost of
these structures will be.</t>
        </li>
        <li>
          <t>What is being checked in the CI (continuous integration) for the
document is rather different from the final form.</t>
        </li>
        <li>
          <t>Draft implementations trying to make use of these provisional structures
have to cater for text strings, which may not actually be needed in
the final form (which might expose specification bugs once numbers
are used, too late in the process).</t>
        </li>
        <li>
          <t>The work needed to put in the actual numbers, once allocated, is
significant and error-prone.</t>
        </li>
        <li>
          <t>It is not certain the CI system used during development can interact
with the RFC editor's way of editing the document for publication.</t>
        </li>
      </ul>
    </section>
    <section anchor="what-to-do-during-spec-development">
      <name>What to do during spec development</name>
      <t>To make the transition to a published document easier, the document is
instead written with the convention demonstrated in the following example:</t>
      <t><cref anchor="carlscomments">This document uses the keys for a map as an example.
Other such constructs involving assigned numbers might also require
temporary values for exposition in a specification, e.g., CBOR
tags.  For the sake of keeping this document short, examples for
these are not given.</cref></t>
      <t><cref anchor="carlscomments4">Including examples of other things that generate
the need for temporary numbers, like tags, would be good.</cref></t>
      <figure anchor="fig-dev1">
        <name>CDDL data model, development form</name>
        <sourcecode type="cddl"><![CDATA[
problem-details = {
  ? &(title-CPA: -1) => oltext
  ? &(detail-CPA: -2) => oltext
  ? &(instance-CPA: -3) => ~uri
  ? &(response-code-CPA: -4) => uint .size 1
  ? &(base-uri-CPA: -5) => ~uri
  ? &(base-lang-CPA: -6) => tag38-ltag
  ? &(base-rtl-CPA: -7) => tag38-direction
  / ... /
  * (uint .feature "extension") => any
}
]]></sourcecode>
      </figure>
      <t>CPA is short for "code point allocation", and is a reliable search key
for finding the places that need to be updated after allocation.<cref anchor="tbd">An earlier concept for this draft used TBD in place of CPA, as
do many draft specifications being worked on today.
TBD is better recognized than CPA, but also could be misunderstood
to mean further work by the spec developer is required.
A document submitted for publication should not really have "TBD"
in it.</cref></t>
      <t>In the IANA section, the table to go into the registry is prepared as
follows:</t>
      <table anchor="tab-iana">
        <name>IANA table, development form</name>
        <thead>
          <tr>
            <th align="left">Key value</th>
            <th align="left">Name</th>
            <th align="left">CDDL Type</th>
            <th align="left">Brief description</th>
            <th align="left">Reference</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">CPA-1</td>
            <td align="left">title</td>
            <td align="left">
              <tt>text / tag38</tt></td>
            <td align="left">short, human-readable summary of the problem shape</td>
            <td align="left">RFC XXXX</td>
          </tr>
          <tr>
            <td align="left">CPA-2</td>
            <td align="left">detail</td>
            <td align="left">
              <tt>text / tag38</tt></td>
            <td align="left">human-readable explanation specific to this occurrence of the problem</td>
            <td align="left">RFC XXXX</td>
          </tr>
          <tr>
            <td align="left">CPA-3</td>
            <td align="left">instance</td>
            <td align="left">
              <tt>~uri</tt></td>
            <td align="left">URI reference identifying specific occurrence of the problem</td>
            <td align="left">RFC XXXX</td>
          </tr>
          <tr>
            <td align="left">CPA-4</td>
            <td align="left">response-code</td>
            <td align="left">
              <tt>uint .size 1</tt></td>
            <td align="left">CoAP response code</td>
            <td align="left">RFC XXXX</td>
          </tr>
          <tr>
            <td align="left">CPA-5</td>
            <td align="left">base-uri</td>
            <td align="left">
              <tt>~uri</tt></td>
            <td align="left">Base URI</td>
            <td align="left">RFC XXXX</td>
          </tr>
          <tr>
            <td align="left">CPA-6</td>
            <td align="left">base-lang</td>
            <td align="left">
              <tt>tag38-ltag</tt></td>
            <td align="left">Base language tag (see tag38)</td>
            <td align="left">RFC XXXX</td>
          </tr>
          <tr>
            <td align="left">CPA-7</td>
            <td align="left">base-rtl</td>
            <td align="left">
              <tt>tag38-direction</tt></td>
            <td align="left">Base writing direction (see tag38)</td>
            <td align="left">RFC XXXX</td>
          </tr>
        </tbody>
      </table>
      <t>The provisionally made up key numbers will then be used in an example
in the specification such as:</t>
      <figure anchor="fig-dev2">
        <name>CBOR-diag example, development form</name>
        <sourcecode type="cbor-diag"><![CDATA[
{
  / title-CPA /         -1: "title of the error",
  / detail-CPA /        -2: "detailed information about the error",
  / instance-CPA /      -3: "coaps://pd.example/FA317434",
  / response-code-CPA / -4: 128, / 4.00 /
  4711: {
     / ... /
  }
}
]]></sourcecode>
      </figure>
      <t>A "removeInRFC" note in the draft points the RFC editor to the present
document so the RFC editor knows what needs to be done at which point.
In the publication process, it is easy to remove the <tt>-CPA</tt> suffixes
and <tt>CPA</tt> prefixes for the RFC editor while filling in the actual IANA
allocated numbers and removing the note.</t>
      <t>Note that in <xref target="tab-iana"/>, the first column uses the name "CPA-1" for a
value that in the rest of the document is assumed to be "-1" (and
indicating a preference by the document author for this number); IANA
as well as the designated experts involved are expected by the present
document to decode this notation.</t>
      <dl>
        <dt>A "removeInRFC" note to the RFC Editor for <xref target="tab-iana"/> could have this approximate contents:</dt>
        <dd>
          <t>This document uses the CPA (code point allocation) convention
described in <xref target="I-D.bormann-cbor-draft-numbers"/>.
For each entry, please remove the prefix "CPA" from the indicated
value of the column <tt>&lt;REG_COLUMN&gt;</tt>, and replace the residue with the
value assigned by IANA; perform the same substitution for all other
occurrences of the prefix "CPA" in the document.
Finally, please remove this note.</t>
        </dd>
        <dt>A "removeInRFC" note to the RFC Editor for <xref target="fig-dev2"/> could have this approximate contents:</dt>
        <dd>
          <t>This document uses the CPA (code point allocation) convention
described in <xref target="I-D.bormann-cbor-draft-numbers"/>.
For each item whose key textual identifier has suffix "-CPA", please remove the suffix.
Then, consider the residue of the suffix removal, and replace the
key numeric identifier with the value assigned by IANA in the
<tt>&lt;REG_COLUMN_1&gt;</tt> of the registry <tt>&lt;REG_NAME&gt;</tt>, for the entry where
the value in the <tt>&lt;REG_COLUMN_2&gt;</tt> is equal to the residue.
Finally, please remove this note.</t>
        </dd>
      </dl>
      <t>The RFC editor with IANA would then execute these instructions as
shown in <xref target="tab-iana2-final"/> and <xref target="fig-dev2-final"/> (assuming the unlikely
case that all numbers allocated are ten times the number proposed):</t>
      <table anchor="tab-iana2-final">
        <name>IANA table, final form</name>
        <thead>
          <tr>
            <th align="left">Key value</th>
            <th align="left">Name</th>
            <th align="left">CDDL Type</th>
            <th align="left">Brief description</th>
            <th align="left">Reference</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">-10</td>
            <td align="left">title</td>
            <td align="left">
              <tt>text / tag38</tt></td>
            <td align="left">short, human-readable summary of the problem shape</td>
            <td align="left">RFC XXXX</td>
          </tr>
          <tr>
            <td align="left">-20</td>
            <td align="left">detail</td>
            <td align="left">
              <tt>text / tag38</tt></td>
            <td align="left">human-readable explanation specific to this occurrence of the problem</td>
            <td align="left">RFC XXXX</td>
          </tr>
          <tr>
            <td align="left">-30</td>
            <td align="left">instance</td>
            <td align="left">
              <tt>~uri</tt></td>
            <td align="left">URI reference identifying specific occurrence of the problem</td>
            <td align="left">RFC XXXX</td>
          </tr>
          <tr>
            <td align="left">-40</td>
            <td align="left">response-code</td>
            <td align="left">
              <tt>uint .size 1</tt></td>
            <td align="left">CoAP response code</td>
            <td align="left">RFC XXXX</td>
          </tr>
          <tr>
            <td align="left">-50</td>
            <td align="left">base-uri</td>
            <td align="left">
              <tt>~uri</tt></td>
            <td align="left">Base URI</td>
            <td align="left">RFC XXXX</td>
          </tr>
          <tr>
            <td align="left">-60</td>
            <td align="left">base-lang</td>
            <td align="left">
              <tt>tag38-ltag</tt></td>
            <td align="left">Base language tag (see tag38)</td>
            <td align="left">RFC XXXX</td>
          </tr>
          <tr>
            <td align="left">-70</td>
            <td align="left">base-rtl</td>
            <td align="left">
              <tt>tag38-direction</tt></td>
            <td align="left">Base writing direction (see tag38)</td>
            <td align="left">RFC XXXX</td>
          </tr>
        </tbody>
      </table>
      <figure anchor="fig-dev2-final">
        <name>CBOR-diag example, final form</name>
        <sourcecode type="cbor-diag"><![CDATA[
{
  / title /         -10: "title of the error",
  / detail /        -20: "detailed information about the error",
  / instance /      -30: "coaps://pd.example/FA317434",
  / response-code / -40: 128, / 4.00 /
  4711: {
     / ... /
  }
}
]]></sourcecode>
      </figure>
      <section anchor="depend">
        <name>Documents with Significant Generated Content Depending on Assignments</name>
        <t>Many documents have examples (which might even involve signatures over
the contents) that depend on the assignments in more than the trivial
way shown above, and regenerating them may not be easy for the RFC
editor to do.</t>
        <t>Therefore, for these documents we need another step involving the authors:</t>
        <t>Immediately after allocation, but before the RFC-Editor EDIT step, the
authors need to regenerate these examples and other generated content
depending on the exact allocations.</t>
        <t>In the current process, allocation is usually done after IESG
approval, after IANA action, so we would need to halt the EDIT step
for this regeneration.</t>
        <t>Alternatively, we could be more aggressive in invoking
some kind of IANA Early Allocation process, near the end of the IESG review.
One way to do this with current tooling and process is to perform a
late form of actual IANA "Early" Allocation.
Or we could amend <xref target="BCP9"/> and/or <xref target="BCP100"/> in a more fundamental way.</t>
        <t><cref anchor="indicator">We probably need an indicator in addition to CPA that
signifies an example or other text must be regenerated (vs. simply
be updated by IANA) when proposed numbers are updated by IANA.</cref></t>
      </section>
      <section anchor="reducing-the-editorial-workload-with-cddl-definitions">
        <name>Reducing the editorial workload with CDDL definitions</name>
        <t><xref target="I-D.bormann-cbor-e-ref"/> defines a CBOR diagnostic notation application extension that
allows CBOR diagnostic notation to reference constants defined in a
CDDL model, the <tt>e''</tt> application extension.</t>
        <t>If the draft contains a CDDL model that includes definitions of
constants that may then be used in CBOR diagnostic notation, the use
of <tt>e''</tt> constant references makes it unnecessary to change the
constant value in the example when final values are defined for these
constants.
(This application extension also can make the CBOR diagnostic notation
more readable and less distracting, replacing constructs such as</t>
        <sourcecode type="cbor-diag"><![CDATA[
/ title-CPA / -1
]]></sourcecode>
        <t>by</t>
        <sourcecode type="cbor-diag"><![CDATA[
e'title'
]]></sourcecode>
        <t>which removes the need to mention "CPA" and to provide a potentially
distracting copy of the value assignment in the example.)</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document makes no requests of IANA.
However, it specifies a procedure that can be followed during draft
development that has a specific role for IANA and the interaction
between RFC editor and IANA at important points during this
development.
This procedure is intended to be as little of an onus as possible, but
that is the author's assessment only.
IANA feedback is therefore requested.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security considerations</name>
      <t>The security considerations of <xref target="RFC8610"/> and <xref target="RFC8949"/> apply.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC8949">
          <front>
            <title>Concise Binary Object Representation (CBOR)</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <date month="December" year="2020"/>
            <abstract>
              <t>The Concise Binary Object Representation (CBOR) is a data format whose design goals include the possibility of extremely small code size, fairly small message size, and extensibility without the need for version negotiation. These design goals make it different from earlier binary serializations such as ASN.1 and MessagePack.</t>
              <t>This document obsoletes RFC 7049, providing editorial improvements, new details, and errata fixes while keeping full compatibility with the interchange format of RFC 7049. It does not create a new version of the format.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="94"/>
          <seriesInfo name="RFC" value="8949"/>
          <seriesInfo name="DOI" value="10.17487/RFC8949"/>
        </reference>
        <reference anchor="RFC8610">
          <front>
            <title>Concise Data Definition Language (CDDL): A Notational Convention to Express Concise Binary Object Representation (CBOR) and JSON Data Structures</title>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
            <author fullname="C. Vigano" initials="C." surname="Vigano"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="June" year="2019"/>
            <abstract>
              <t>This document proposes a notational convention to express Concise Binary Object Representation (CBOR) data structures (RFC 7049). Its main goal is to provide an easy and unambiguous way to express structures for protocol messages and data formats that use CBOR or JSON.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8610"/>
          <seriesInfo name="DOI" value="10.17487/RFC8610"/>
        </reference>
        <reference anchor="RFC9165">
          <front>
            <title>Additional Control Operators for the Concise Data Definition Language (CDDL)</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="December" year="2021"/>
            <abstract>
              <t>The Concise Data Definition Language (CDDL), standardized in RFC 8610, provides "control operators" as its main language extension point.</t>
              <t>The present document defines a number of control operators that were not yet ready at the time RFC 8610 was completed:,, and for the construction of constants; / for including ABNF (RFC 5234 and RFC 7405) in CDDL specifications; and for indicating the use of a non-basic feature in an instance.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9165"/>
          <seriesInfo name="DOI" value="10.17487/RFC9165"/>
        </reference>
        <reference anchor="I-D.bormann-cbor-draft-numbers">
          <front>
            <title>Managing CBOR numbers in Internet-Drafts</title>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <date day="2" month="September" year="2023"/>
            <abstract>
              <t>   CBOR-based protocols often make use of numbers allocated in a
   registry.  While developing the protocols, those numbers may not yet
   be available.  This impedes the generation of data models and
   examples that actually can be used by tools.

   This short draft proposes a common way to handle these situations,
   without any changes to existing tools.  Such changes are very well
   possible in the future, at which time this draft will be updated.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-bormann-cbor-draft-numbers-02"/>
        </reference>
        <reference anchor="I-D.bormann-cbor-e-ref">
          <front>
            <title>External References to Values in CBOR Diagnostic Notation (EDN)</title>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <date day="29" month="February" year="2024"/>
            <abstract>
              <t>   The Concise Binary Object Representation (CBOR, RFC 8949) is a data
   format whose design goals include the possibility of extremely small
   code size, fairly small message size, and extensibility without the
   need for version negotiation.

   CBOR diagnostic notation (EDN) is widely used to represent CBOR data
   items in a way that is accessible to humans, for instance for
   examples in a specification.  At the time of writing, EDN did not
   provide mechanisms for composition of such examples from multiple
   components or sources.  This document uses EDN application extensions
   to provide two such mechanisms, both of which insert an imported data
   item into the data item being described in EDN:

   The e'' application extension provides a way to import data items,
   particularly constant values, from a CDDL model (which itself has
   ways to provide composition).

   The ref'' application extension provides a way to import data items
   that are described in EDN.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-bormann-cbor-e-ref-00"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC9290">
          <front>
            <title>Concise Problem Details for Constrained Application Protocol (CoAP) APIs</title>
            <author fullname="T. Fossati" initials="T." surname="Fossati"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="October" year="2022"/>
            <abstract>
              <t>This document defines a concise "problem detail" as a way to carry machine-readable details of errors in a Representational State Transfer (REST) response to avoid the need to define new error response formats for REST APIs for constrained environments. The format is inspired by, but intended to be more concise than, the problem details for HTTP APIs defined in RFC 7807.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9290"/>
          <seriesInfo name="DOI" value="10.17487/RFC9290"/>
        </reference>
        <referencegroup anchor="BCP9" target="https://www.rfc-editor.org/info/bcp9">
          <reference anchor="RFC2026" target="https://www.rfc-editor.org/info/rfc2026">
            <front>
              <title>The Internet Standards Process -- Revision 3</title>
              <author fullname="S. Bradner" initials="S." surname="Bradner"/>
              <date month="October" year="1996"/>
              <abstract>
                <t>This memo documents the process used by the Internet community for the standardization of protocols and procedures. It defines the stages in the standardization process, the requirements for moving a document between stages and the types of documents used during this process. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
              </abstract>
            </front>
            <seriesInfo name="BCP" value="9"/>
            <seriesInfo name="RFC" value="2026"/>
            <seriesInfo name="DOI" value="10.17487/RFC2026"/>
          </reference>
          <reference anchor="RFC5657" target="https://www.rfc-editor.org/info/rfc5657">
            <front>
              <title>Guidance on Interoperation and Implementation Reports for Advancement to Draft Standard</title>
              <author fullname="L. Dusseault" initials="L." surname="Dusseault"/>
              <author fullname="R. Sparks" initials="R." surname="Sparks"/>
              <date month="September" year="2009"/>
              <abstract>
                <t>Advancing a protocol to Draft Standard requires documentation of the interoperation and implementation of the protocol. Historic reports have varied widely in form and level of content and there is little guidance available to new report preparers. This document updates the existing processes and provides more detail on what is appropriate in an interoperability and implementation report. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
              </abstract>
            </front>
            <seriesInfo name="BCP" value="9"/>
            <seriesInfo name="RFC" value="5657"/>
            <seriesInfo name="DOI" value="10.17487/RFC5657"/>
          </reference>
          <reference anchor="RFC6410" target="https://www.rfc-editor.org/info/rfc6410">
            <front>
              <title>Reducing the Standards Track to Two Maturity Levels</title>
              <author fullname="R. Housley" initials="R." surname="Housley"/>
              <author fullname="D. Crocker" initials="D." surname="Crocker"/>
              <author fullname="E. Burger" initials="E." surname="Burger"/>
              <date month="October" year="2011"/>
              <abstract>
                <t>This document updates the Internet Engineering Task Force (IETF) Standards Process defined in RFC 2026. Primarily, it reduces the Standards Process from three Standards Track maturity levels to two. This memo documents an Internet Best Current Practice.</t>
              </abstract>
            </front>
            <seriesInfo name="BCP" value="9"/>
            <seriesInfo name="RFC" value="6410"/>
            <seriesInfo name="DOI" value="10.17487/RFC6410"/>
          </reference>
          <reference anchor="RFC7100" target="https://www.rfc-editor.org/info/rfc7100">
            <front>
              <title>Retirement of the "Internet Official Protocol Standards" Summary Document</title>
              <author fullname="P. Resnick" initials="P." surname="Resnick"/>
              <date month="December" year="2013"/>
              <abstract>
                <t>This document updates RFC 2026 to no longer use STD 1 as a summary of "Internet Official Protocol Standards". It obsoletes RFC 5000 and requests the IESG to move RFC 5000 (and therefore STD 1) to Historic status.</t>
              </abstract>
            </front>
            <seriesInfo name="BCP" value="9"/>
            <seriesInfo name="RFC" value="7100"/>
            <seriesInfo name="DOI" value="10.17487/RFC7100"/>
          </reference>
          <reference anchor="RFC7127" target="https://www.rfc-editor.org/info/rfc7127">
            <front>
              <title>Characterization of Proposed Standards</title>
              <author fullname="O. Kolkman" initials="O." surname="Kolkman"/>
              <author fullname="S. Bradner" initials="S." surname="Bradner"/>
              <author fullname="S. Turner" initials="S." surname="Turner"/>
              <date month="January" year="2014"/>
              <abstract>
                <t>RFC 2026 describes the review performed by the Internet Engineering Steering Group (IESG) on IETF Proposed Standard RFCs and characterizes the maturity level of those documents. This document updates RFC 2026 by providing a current and more accurate characterization of Proposed Standards.</t>
              </abstract>
            </front>
            <seriesInfo name="BCP" value="9"/>
            <seriesInfo name="RFC" value="7127"/>
            <seriesInfo name="DOI" value="10.17487/RFC7127"/>
          </reference>
          <reference anchor="RFC7475" target="https://www.rfc-editor.org/info/rfc7475">
            <front>
              <title>Increasing the Number of Area Directors in an IETF Area</title>
              <author fullname="S. Dawkins" initials="S." surname="Dawkins"/>
              <date month="March" year="2015"/>
              <abstract>
                <t>This document removes a limit on the number of Area Directors who manage an Area in the definition of "IETF Area". This document updates RFC 2026 (BCP 9) and RFC 2418 (BCP 25).</t>
              </abstract>
            </front>
            <seriesInfo name="BCP" value="9"/>
            <seriesInfo name="RFC" value="7475"/>
            <seriesInfo name="DOI" value="10.17487/RFC7475"/>
          </reference>
          <reference anchor="RFC8789" target="https://www.rfc-editor.org/info/rfc8789">
            <front>
              <title>IETF Stream Documents Require IETF Rough Consensus</title>
              <author fullname="J. Halpern" initials="J." role="editor" surname="Halpern"/>
              <author fullname="E. Rescorla" initials="E." role="editor" surname="Rescorla"/>
              <date month="June" year="2020"/>
              <abstract>
                <t>This document requires that the IETF never publish any IETF Stream RFCs without IETF rough consensus. This updates RFC 2026.</t>
              </abstract>
            </front>
            <seriesInfo name="BCP" value="9"/>
            <seriesInfo name="RFC" value="8789"/>
            <seriesInfo name="DOI" value="10.17487/RFC8789"/>
          </reference>
          <reference anchor="RFC9282" target="https://www.rfc-editor.org/info/rfc9282">
            <front>
              <title>Responsibility Change for the RFC Series</title>
              <author fullname="B. Rosen" initials="B." surname="Rosen"/>
              <date month="June" year="2022"/>
              <abstract>
                <t>In RFC 9280, responsibility for the RFC Series moved to the RFC Series Working Group and the RFC Series Approval Board. It is no longer the responsibility of the RFC Editor, and the role of the IAB in the RFC Series is altered. Accordingly, in Section 2.1 of RFC 2026, the sentence "RFC publication is the direct responsibility of the RFC Editor, under the general direction of the IAB" is deleted.</t>
              </abstract>
            </front>
            <seriesInfo name="BCP" value="9"/>
            <seriesInfo name="RFC" value="9282"/>
            <seriesInfo name="DOI" value="10.17487/RFC9282"/>
          </reference>
        </referencegroup>
        <referencegroup anchor="BCP100" target="https://www.rfc-editor.org/info/bcp100">
          <reference anchor="RFC7120" target="https://www.rfc-editor.org/info/rfc7120">
            <front>
              <title>Early IANA Allocation of Standards Track Code Points</title>
              <author fullname="M. Cotton" initials="M." surname="Cotton"/>
              <date month="January" year="2014"/>
              <abstract>
                <t>This memo describes the process for early allocation of code points by IANA from registries for which "Specification Required", "RFC Required", "IETF Review", or "Standards Action" policies apply. This process can be used to alleviate the problem where code point allocation is needed to facilitate desired or required implementation and deployment experience prior to publication of an RFC, which would normally trigger code point allocation. The procedures in this document are intended to apply only to IETF Stream documents.</t>
              </abstract>
            </front>
            <seriesInfo name="BCP" value="100"/>
            <seriesInfo name="RFC" value="7120"/>
            <seriesInfo name="DOI" value="10.17487/RFC7120"/>
          </reference>
        </referencegroup>
      </references>
    </references>
    <?line 359?>

<section numbered="false" anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>This document was motivated by the AUTH48 experience for RFC 9200..RFC 9203.
Then, Jaime Jiménez made me finally write this document.
Marco Tiloca provided useful comments on an early presentation of this idea.
Michael Richardson pointed out the issues that led to <xref target="depend"/>.
Carl Wallace provided further comments shining light on the practical
aspects of the proposals.</t>
      <!-- 2) I wonder if a map is the best example. Most maps I've seen with numeric keys don't generally seek IANA assigned values. Groups seem like a better example or maybe a map that features a group that contributes keyed fields (see CoSWID) and maybe some guidance on where IANA assigned values would be useful (we don’t really want/need IANA assigned values for every field of every structure).
 -->

</section>
  </back>
  <!-- ##markdown-source:
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
4p9CXnApkzYAAA==

-->

</rfc>
