<?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.43 (Ruby 4.0.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-core-yang-metadata-01" category="std" consensus="true" submissionType="IETF" updates="9595" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.33.0 -->
  <front>
    <title abbrev="Metadata Annotations in YANG-CBOR">Representing metadata annotations in YANG-CBOR</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-core-yang-metadata-01"/>
    <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="2026" month="October" day="20"/>
    <area>WIT (Web and Internet Transport)</area>
    <workgroup>core</workgroup>
    <abstract>
      <?line 47?>

<t>This specification defines the representation of metadata annotations
(RFC 7952) in YANG-CBOR (RFC 9254).</t>
      <t>It updates RFC 9595 to add a separate namespace enabling the
representation of SIDs for metadata annotations in the ".sid" files
defined there.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-core-yang-metadata/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        core Working Group mailing list (<eref target="mailto:core@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/core/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/core/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/core-wg/draft-ietf-core-yang-metadata"/>.</t>
    </note>
  </front>
  <middle>
    <?line 56?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>This specification defines the representation of metadata annotations
<xref target="RFC7952"/> in YANG-CBOR <xref target="RFC9254"/>.</t>
      <t>It updates <xref target="RFC9595"/> to add a separate SID namespace enabling the
representation of SIDs for metadata annotations in the ".sid" files
defined there.</t>
      <section anchor="conventions-and-definitions">
        <name>Conventions and Definitions</name>
        <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="BCP14"/> when, and only when, they
appear in all capitals, as shown here.</t>
        <?line -18?>

<t>The term "CDDL" refers to the data definition language defined in
<xref target="RFC8610"/> and its registered extensions (such as those in <xref target="RFC9165"/>
and <xref target="RFC9741"/>), as
well as <xref target="RFC9682"/>.</t>
        <t>Specific examples are notated in CBOR Extended
Diagnostic Notation (EDN), as originally introduced in Section <xref target="RFC8949" section="8" sectionFormat="bare"/> of RFC 8949 <xref target="STD94"/> and extended in <xref section="G" sectionFormat="of" target="RFC8610"/>.
(<xref target="I-D.ietf-cbor-edn-literals"/> more rigorously defines and further extends EDN.)</t>
        <t><cref anchor="cpa">RFC-Editor: <br/>
  This document uses the CPA (code point allocation)
  convention described in [I-D.bormann-cbor-draft-numbers].  For
  each usage of the term "CPA", please remove the prefix "CPA"
  from the indicated value and replace the residue with the value
  assigned by IANA; perform an analogous substitution for all other
  occurrences of the prefix "CPA" in the document.  Finally,
  please remove this note.</cref></t>
        <t>The terms of <xref target="RFC7952"/> and <xref target="RFC9254"/> apply.</t>
      </section>
    </section>
    <section anchor="specification">
      <name>Specification</name>
      <t>This section defines the metadata encoding for YANG-CBOR <xref target="RFC9254"/>,
analogous to the Subsections for YANG-XML and YANG-JSON of <xref section="5" sectionFormat="of" target="RFC7952"/>.</t>
      <t><xref section="5.2.1" sectionFormat="of" target="RFC7952"/> defines a "Metadata Object" for YANG-JSON.
Analogously, the YANG-CBOR encoding of metadata annotations uses a
<em>Metadata Map</em>, which is identical in structure to the other CBOR maps
used in <xref target="RFC9254"/>.</t>
      <t>Where YANG SIDs are used as the basis for the map keys for the metadata
map, the map's reference SID is the reference SID of the enclosing data
structure, as defined in <xref section="3.2" sectionFormat="of" target="RFC9254"/>.
Where names (<xref section="3.3" sectionFormat="of" target="RFC9254"/>) are used as the map keys for
the metadata map, they <bcp14>MUST</bcp14> be fully qualified, analogous to <xref section="5.2.1" sectionFormat="of" target="RFC7952"/>.</t>
      <t>Metadata annotations are added to a data node instance by replacing
the representation of the instance ("<tt>Instance-Representation</tt>") with
the structure specified in CDDL in <xref target="fig-metadata-tag"/>:</t>
      <figure anchor="fig-metadata-tag">
        <name>Metadata-Annotated Data Node</name>
        <sourcecode type="cddl"><![CDATA[
annotated-data-node<Instance-Representation> = #6.109([ ; CPA109
  metadata-map,
  Instance-Representation
])
]]></sourcecode>
      </figure>
      <t>In essence, the <tt>annotated-data-node</tt> <em>stands in</em> for the
<tt>Instance-Representation</tt>; a consuming implementation that wants to
ignore all metadata received can simply replace each
<tt>annotated-data-node</tt> by the <tt>Instance-Representation</tt> embedded in it.</t>
      <t><cref anchor="question">(Editor's note:) QUESTION:</cref> This representation assumes that it is good that metadata
always come before the actual data node, as would also be the case
with XML attributes.
Sections <xref target="RFC7952" section="5.2.3" sectionFormat="bare"/> and <xref target="RFC7952" section="5.2.4" sectionFormat="bare"/> of <xref target="RFC7952"/> show examples with metadata last,
though.
Can we simply focus on one of these orders (always first, or always last), or do
we really need to support both (avoid!)?</t>
    </section>
    <section anchor="examples">
      <name>Examples</name>
      <t>This section provides a number of examples, based on the examples in
<xref section="5.2" sectionFormat="of" target="RFC7952"/>; please see the descriptions of these examples
there.
Note that the examples here always show an enclosing map if needed; this
is generally elided in <xref section="5.2" sectionFormat="of" target="RFC7952"/> (which shows only map key and
map value separated by colon).</t>
      <t>All but one example below use YANG SIDs (<xref section="3.2" sectionFormat="of" target="RFC9254"/>).
For this, the examples assume the example SID assignments in
<xref target="example-sids"/>, the relevant ones of which are also repeated at the
start of each subsection:</t>
      <table anchor="example-sids">
        <name>Example SID values</name>
        <thead>
          <tr>
            <th align="left">name</th>
            <th align="left">SID</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">cask</td>
            <td align="left">61600</td>
          </tr>
          <tr>
            <td align="left">seq</td>
            <td align="left">61601</td>
          </tr>
          <tr>
            <td align="left">name</td>
            <td align="left">61602</td>
          </tr>
          <tr>
            <td align="left">stuff</td>
            <td align="left">61603</td>
          </tr>
          <tr>
            <td align="left">example-last-modified:last-modified</td>
            <td align="left">61610</td>
          </tr>
          <tr>
            <td align="left">foo:flag</td>
            <td align="left">61620</td>
          </tr>
          <tr>
            <td align="left">bibliomod:folio</td>
            <td align="left">61630</td>
          </tr>
        </tbody>
      </table>
      <t>For computing the outermost SID deltas, the examples assume the
reference SID is 61000.</t>
      <t>TODO: Add explanatory text; add more examples.</t>
      <section anchor="s522">
        <name>Examples from <xref section="5.2.2" sectionFormat="of" target="RFC7952"/></name>
        <t>The examples here show that the map representing the instance
representation is not extended by a new member as in <xref section="5.2.2" sectionFormat="of" target="RFC7952"/>, but is enclosed in an <tt>annotated-data-node</tt> structure like in
the other examples.</t>
        <table anchor="s522-sids">
          <name>Example SID values for this section</name>
          <thead>
            <tr>
              <th align="left">name</th>
              <th align="left">SID</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">cask</td>
              <td align="left">61600</td>
            </tr>
            <tr>
              <td align="left">seq</td>
              <td align="left">61601</td>
            </tr>
            <tr>
              <td align="left">name</td>
              <td align="left">61602</td>
            </tr>
            <tr>
              <td align="left">example-last-modified:last-modified</td>
              <td align="left">61610</td>
            </tr>
          </tbody>
        </table>
        <t>"cask" is a container or anydata node:</t>
        <figure anchor="fig-cask">
          <name>Cask example</name>
          <sourcecode type="cbor-diag"><![CDATA[
{
   600: /CPA/ 109([                      # SID: 61600
     {
       10: "2015-09-16T10:27:35+02:00"   # SID: 61610
     },
     ... # instance representation in its own map
   ])
}
]]></sourcecode>
        </figure>
        <t>The same "cask" example with name-based CBOR maps (<xref section="3.3" sectionFormat="of" target="RFC9254"/>):</t>
        <figure anchor="fig-cask-name">
          <name>Cask example with a name-based item identifier</name>
          <sourcecode type="cbor-diag"><![CDATA[
{
   "cask": /CPA/ 109([
     {
       "example-last-modified:last-modified":
         "2015-09-16T10:27:35+02:00"
     },
     ... # instance representation in its own map
   ])
}
]]></sourcecode>
        </figure>
        <t>"seq" is a list whose key is "name"; annotation "last-modified" is
added only to the first entry:</t>
        <figure anchor="fig-seq">
          <name>Seq example</name>
          <sourcecode type="cbor-diag"><![CDATA[
{
   601: [                                # SID: 61601
     /CPA/ 109([
       {
          9: "2015-09-16T10:27:35+02:00" # SID: 61610
       },
       {
          1: "one",                      # SID: 61602
          ...: ...
       }
     ]),
     {                       # no metadata annotation
       1: "two",                         # SID: 61602
       ...: ...
     }
   ]
}
]]></sourcecode>
        </figure>
      </section>
      <section anchor="examples-from-section-523-of-rfc7952">
        <name>Examples from <xref section="5.2.3" sectionFormat="of" target="RFC7952"/></name>
        <table anchor="s523-sids">
          <name>Example SID values for this section</name>
          <thead>
            <tr>
              <th align="left">name</th>
              <th align="left">SID</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">stuff</td>
              <td align="left">61603</td>
            </tr>
            <tr>
              <td align="left">example-last-modified:last-modified</td>
              <td align="left">61610</td>
            </tr>
            <tr>
              <td align="left">foo:flag</td>
              <td align="left">61620</td>
            </tr>
          </tbody>
        </table>
        <t>"flag" is a leaf node of the "boolean" type defined in module "foo".
The SID 61620 for "foo:flag" expresses both the name "flag" and the
namespace name "foo" in its CBOR encoding:</t>
        <figure anchor="fig-flag">
          <name>Foo:flag example</name>
          <sourcecode type="cbor-diag"><![CDATA[
{
  620: 109([                             # SID: 61620
    {
      -10: "2015-09-16T10:27:35+02:00"   # SID: 61610
    },
    true
  ])
}
]]></sourcecode>
        </figure>
        <t>"stuff" is an anyxml node:</t>
        <figure anchor="fig-stuff">
          <name>Stuff example</name>
          <sourcecode type="cbor-diag"><![CDATA[
{
  603: 109([                             # SID: 61603
    {
      7: "2015-09-16T10:27:35+02:00"     # SID: 61610
    },
    [1, null, "three"]
  ])
}
]]></sourcecode>
        </figure>
      </section>
      <section anchor="examples-from-section-524-of-rfc7952">
        <name>Examples from <xref section="5.2.4" sectionFormat="of" target="RFC7952"/></name>
        <table>
          <thead>
            <tr>
              <th align="left">name</th>
              <th align="left">SID</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">example-last-modified:last-modified</td>
              <td align="left">61610</td>
            </tr>
            <tr>
              <td align="left">bibliomod:folio</td>
              <td align="left">61630</td>
            </tr>
          </tbody>
        </table>
        <figure anchor="fig-folio">
          <name>Bibliomod:folio example</name>
          <sourcecode type="cbor-diag"><![CDATA[
{
  630: [                                  # SID: 61630
    6,                 # SIDs below: -20 -> SID: 61610
    /CPA/ 109([{-20: "2015-06-18T17:01:14+02:00"}, 3]),
    /CPA/ 109([{-20: "2015-09-16T10:27:35+02:00"}, 7]),
    8,
  ]
}
]]></sourcecode>
        </figure>
      </section>
      <section anchor="add-more-examples">
        <name>(Add more examples)</name>
      </section>
    </section>
    <section anchor="sec-sids">
      <name>SIDs for Metadata Annotations</name>
      <t>The SID file format defined in <xref target="RFC9595"/> is extended by adding
another alternative in the enumeration used in the leaf <tt>namespace</tt>:</t>
      <artwork><![CDATA[
leaf namespace {
  type enumeration {
    [...]
    enum annotation {
      value 4;
      description
        "The namespace for all names of metadata attributes, as
         defined in YANG-metadata [RFC7952].";
    }
  }
}
]]></artwork>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The security considerations of <xref target="RFC7952"/> and <xref target="RFC9254"/> apply.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="cbor-tags-registry">
        <name>CBOR Tags Registry</name>
        <t>In the registry "CBOR Tags" <xref target="IANA.cbor-tags"/>, IANA is requested to allocate one tag:</t>
        <ul spacing="normal">
          <li>
            <t>Tag: CPA109</t>
          </li>
          <li>
            <t>Data item: Array <tt>[metadata, data]</tt></t>
          </li>
          <li>
            <t>Semantics: "YANG data node with metadata annotations"</t>
          </li>
          <li>
            <t>Reference: This document</t>
          </li>
        </ul>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC7952">
          <front>
            <title>Defining and Using Metadata with YANG</title>
            <author fullname="L. Lhotka" initials="L." surname="Lhotka"/>
            <date month="August" year="2016"/>
            <abstract>
              <t>This document defines a YANG extension that allows for defining metadata annotations in YANG modules. The document also specifies XML and JSON encoding of annotations and other rules for annotating instances of YANG data nodes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7952"/>
          <seriesInfo name="DOI" value="10.17487/RFC7952"/>
        </reference>
        <reference anchor="RFC9254">
          <front>
            <title>Encoding of Data Modeled with YANG in the Concise Binary Object Representation (CBOR)</title>
            <author fullname="M. Veillette" initials="M." role="editor" surname="Veillette"/>
            <author fullname="I. Petrov" initials="I." role="editor" surname="Petrov"/>
            <author fullname="A. Pelov" initials="A." surname="Pelov"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="M. Richardson" initials="M." surname="Richardson"/>
            <date month="July" year="2022"/>
            <abstract>
              <t>YANG (RFC 7950) is a data modeling language used to model configuration data, state data, parameters and results of Remote Procedure Call (RPC) operations or actions, and notifications.</t>
              <t>This document defines encoding rules for YANG in the Concise Binary Object Representation (CBOR) (RFC 8949).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9254"/>
          <seriesInfo name="DOI" value="10.17487/RFC9254"/>
        </reference>
        <reference anchor="RFC9595">
          <front>
            <title>YANG Schema Item iDentifier (YANG SID)</title>
            <author fullname="M. Veillette" initials="M." role="editor" surname="Veillette"/>
            <author fullname="A. Pelov" initials="A." role="editor" surname="Pelov"/>
            <author fullname="I. Petrov" initials="I." role="editor" surname="Petrov"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="M. Richardson" initials="M." surname="Richardson"/>
            <date month="July" year="2024"/>
            <abstract>
              <t>YANG Schema Item iDentifiers (YANG SIDs) are globally unique 63-bit unsigned integers used to identify YANG items. SIDs provide a more compact method for identifying those YANG items that can be used efficiently, notably in constrained environments (RFC 7228). This document defines the semantics, registration processes, and assignment processes for YANG SIDs for IETF-managed YANG modules. To enable the implementation of these processes, this document also defines a file format used to persist and publish assigned YANG SIDs.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9595"/>
          <seriesInfo name="DOI" value="10.17487/RFC9595"/>
        </reference>
        <referencegroup anchor="STD94" target="https://www.rfc-editor.org/info/std94">
          <reference anchor="RFC8949" target="https://www.rfc-editor.org/info/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>
        </referencegroup>
        <reference anchor="IANA.cbor-tags" target="https://www.iana.org/assignments/cbor-tags">
          <front>
            <title>Concise Binary Object Representation (CBOR) Tags</title>
            <author>
              <organization>IANA</organization>
            </author>
          </front>
        </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:.plus,.cat, and.det for the construction of constants;.abnf/.abnfb for including ABNF (RFC 5234 and RFC 7405) in CDDL specifications; and.feature 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="RFC9741">
          <front>
            <title>Concise Data Definition Language (CDDL): Additional Control Operators for the Conversion and Processing of Text</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="March" year="2025"/>
            <abstract>
              <t>The Concise Data Definition Language (CDDL), standardized in RFC 8610, provides "control operators" as its main language extension point. RFCs have added to this extension point in both an application-specific and a more general way.</t>
              <t>The present document defines a number of additional generally applicable control operators for text conversion (bytes, integers, printf-style formatting, and JSON) and for an operation on text.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9741"/>
          <seriesInfo name="DOI" value="10.17487/RFC9741"/>
        </reference>
        <reference anchor="RFC9682">
          <front>
            <title>Updates to the Concise Data Definition Language (CDDL) Grammar</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="November" year="2024"/>
            <abstract>
              <t>The Concise Data Definition Language (CDDL), as defined in RFCs 8610 and 9165, provides an easy and unambiguous way to express structures for protocol messages and data formats that are represented in Concise Binary Object Representation (CBOR) or JSON.</t>
              <t>This document updates RFC 8610 by addressing related errata reports and making other small fixes for the ABNF grammar defined for CDDL.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9682"/>
          <seriesInfo name="DOI" value="10.17487/RFC9682"/>
        </reference>
        <referencegroup anchor="BCP14" target="https://www.rfc-editor.org/info/bcp14">
          <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119">
            <front>
              <title>Key words for use in RFCs to Indicate Requirement Levels</title>
              <author fullname="S. Bradner" initials="S." surname="Bradner"/>
              <date month="March" year="1997"/>
              <abstract>
                <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. 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="14"/>
            <seriesInfo name="RFC" value="2119"/>
            <seriesInfo name="DOI" value="10.17487/RFC2119"/>
          </reference>
          <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174">
            <front>
              <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
              <author fullname="B. Leiba" initials="B." surname="Leiba"/>
              <date month="May" year="2017"/>
              <abstract>
                <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
              </abstract>
            </front>
            <seriesInfo name="BCP" value="14"/>
            <seriesInfo name="RFC" value="8174"/>
            <seriesInfo name="DOI" value="10.17487/RFC8174"/>
          </reference>
        </referencegroup>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="I-D.ietf-cbor-edn-literals">
          <front>
            <title>Concise Diagnostic Notation (CDN)</title>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <date day="29" month="September" year="2026"/>
            <abstract>
              <t>   This document formalizes and consolidates the definition of the
   Concise Diagnostic Notation (CDN) of the Concise Binary Object
   Representation (CBOR), addressing implementer experience.

   Replacing CDN's previous informal descriptions, it updates RFC 8949,
   obsoleting its Section 8, and RFC 8610, obsoleting its Appendix G.

   It also specifies registry-based extension points and uses them to
   support text representations such as of epoch-based dates/times and
   of IP addresses and prefixes.


   // (This cref will be removed by the RFC editor:) This revision -28
   // attempts to reflect various feature removals that have been
   // discussed on the mailing list, as a delta to -27.  Note that, with
   // the focus on the delta, this text is necessary somewhat
   // inconsistent.  The chairs decided not to include further editorial
   // improvements that could achieve a greater degree of consistency.
   // The text may be misleading as some of the explanatory sections no
   // longer fully reflect the technical content.  The text also does
   // not have WG input yet on any renaming decisions (CDN name, b1/t1
   // name).

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-cbor-edn-literals-28"/>
        </reference>
      </references>
    </references>
    <?line 354?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>Andy Bierman brought up the need for this document.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA81a7VbjRhL930/RET8CE+RgGxgQySQeYBL2DDAB5mSzhD20
rbZRRpYctQTxEvIs+2OfZPfF9lZ1S5aMPcxkP07mJDNyf1bfqrpV1ZLv++I2
kF0h8iiPdSDP9CTTRid5lIzkWOcqVLmSKknSXOVRmhgZJfKH3sk3/v7L0zOh
+v1MY4HjcmRv2ciByvUozaaBNHkoBujXiSlMIPOs0MLkmVbjQB4dXrwSxQRL
aXTtbu1uCRGmg0SNIVuYqWHuRzof+oM00/5UJSO/lNGPaU4ukmLc11kgaIlA
KCwbyO+PLuTq97qPc4TyKMl1luhcXmQqMZM0y9fEXZq9G2VpMQkkrSze6Sma
wkDc6qTAMlKOVRTbzq9JgFaajdA6ivKbom/b/bvR5++VUAhV5DdpRsv5+F9K
e6x9lZlcJ/Jlmo0BNPdg+UC+TaJbnZko/9c/cvky02MMuvjLEQ8gwHQeyDep
yYdqcCO73Y3NzQ3uG0Q5YLYTbEMaYp8Dv7PT3dp1LUWSkzK+0bTplBsnN2mC
cZ9t7vqbnbbfae/4293dTps7tUNA9dOv879FDIAQCcmcQ0w61Nmr/ee7W51A
jkP7a7eztRlIBmHQTzPXCKW6RhPRwPOLg10McyOOeie9Fj37uRqReeBvO3Fn
u72BYWEYu4Xa21sEPQ6Sxm3X9nyzXbV1XNv2TsfOg2EJESXDutBH/kHLKoz2
1GHixxEMRMXYG7+E8H1fqj7wVoNciIubyEgz0YNoGA3YzmWoh1GijcxvtMxK
97Fd6XChD4lViCUJq7WGk0huJ9TWWkIc5dJ5guRm4CbzVKowlEoaPVEZ+tiG
zEQNtNSJ6sfkthBEPBbk/OjASBx9qVeT/F4LOvHkMIq1EfZgIXVkumWRGEfA
UQtx+defC7gb5l4FcvUwjPI0+9RILKiDNfnd28Pzi6PTk0CIFXK4LA2LAQ3+
bwF4f++M7eGhiSB3EIIPD00IbQcwxIzHKAKc/yeSKytyP01uiWZpCtHSAQ2J
7OkAkpbgIEkkZKR3/Pb8wlu3/8qTU34+O/zu7dHZ4QE9n3/be/26ehBuxPm3
p29fH8yeZjP3T4+PD08O7GS0ykaT8I57P6CHpPJO35Aee689ey7oDnRcgFhy
CW4lJPsaXfAYoJTjiIpOawZZ1McPzHm5/+aff29vAv9P8NiGXuTdjU7s8mkS
T91PQDMVajLRKqNpKo7BNZMohyNiLEzmJr1LpMPv2SVBAcv7oj+YtDdfuAY6
YaOxBKnRyCA9bnk02aK2oGnBNhV8jfY5aJvy9n5o/C6BrjV+8RWMUEu/vfPV
C2GNAjiPpbd/cACFZHqI6EAqIHtjOwwrI5IxCLZQIy1L24sSeI1PNAgVEPhR
brDGKELwydCvf0EQMmyPq6ZARFHkkakh9Uqa6Yj24UHQ7FkLfHCNVCTuNJSm
jHTbwPPYCc+ds2MHNZ7AHdhy2GGsibDjHtL2oQ7FQaRGCaIaJpw4pwLBHJzw
HgiM0ShKYB1TsjrmFbvI/f25ZoqRO/BRQfFid3P3a6Z1d2DttrDDe7C1JIx+
kd+QTztgWmIV0oP3MWWMCC6xXYrEwGC/kqZoqWGRkS+7JY2EfK016Ai8OJio
q/LfgJjbt+wYyB9/5Egq5UXDjwrjuG//TU+uUqyWkzQiB4vj1FLkmps4qEhD
NpzskqJY3+YPNpDZTMQmQ+aqJeUrjq4cySldKAzZBg6ez6zqTQ9eDwUpQzw8
Tm8198Kxh4CJ+90Swywdc18EBAesx1sVF5qxAWHGxKKWzsGCaL9DosQNPMyt
ooyJRmSa/SmH/T050RkFZyyD/1ScjoC8NAWib5QXfGyiXeKGlOB366SDQZFl
OhkAR3eiuswlI5eAExjWhNbdAvNnjmwga9WcjleGaYxDZ0x4rhIbappM4ikx
uzyvx7Yy3jnTrEe6KnhA8DSkaENnq0ey+gbrYgaI8/hz4GLXNbOpfz5+zeLx
jz+dn55YuUvf2GJbH1vHrDW3Oq121TWzdIScUsrT/k8Y7M12osVboldKBTRZ
qtkBqnMtCeLW8JV4Vu1xrCbP1hEPIhgoUItCsvWBikmDSMCQQhQ25tBGbAGW
O8ZqYgRWc55dxw3H/J6CBstlIzexDw9WVhF9ZSKLIKtFTSj01hrK9B096+WQ
T42lXzI6Th6iMn2pNzpjxO84NYQEr1OdhAltRs81NXVbHdZG4yD2HJylyNX6
2O782LVHZ6yfSjSsrzzVVHIERTQfFsSuPxcqhhnrcF02LK/aWDSNBkAfL1Iy
SYJki5IfZF02TCXEcVFickVIwfstZQAhsTgHtFTjxq9610fu2T9rDL321php
eJWZwbhs0wUbxE4L9jCqVY8oMx4ekK7+9ttvtsRwZ9Chz/0k8hdLtn0hv5Qr
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
G0z6HMNGUbptrGJ69WZO/BtKO7TXkCYAAA==

-->

</rfc>
