<?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.31 (Ruby 3.4.8) -->
<?rfc compact="yes"?>
<?rfc comments="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-bormann-cbor-cddl-2-draft-08" category="info" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title abbrev="CDDL 2.0">CDDL 2.0 and beyond — a draft plan</title>
    <seriesInfo name="Internet-Draft" value="draft-bormann-cbor-cddl-2-draft-08"/>
    <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="March" day="01"/>
    <workgroup>CBOR Working group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 67?>

<t>The Concise Data Definition Language (CDDL) today is defined by
RFC 8610, RFC 9165, RFC 9682, and RFC 9741).
RFC 9165 and the latter (as well as some more application specific specifications
such as RFC 9090) have used the extension point provided in RFC 8610,
the control operator.</t>
      <t>As CDDL is used in larger projects, feature requirements become known
that cannot be easily mapped into this single extension point.
Hence, there is a need for evolution of the base CDDL specification
itself.</t>
      <t>The present document provides a roadmap towards a "CDDL 2.0";
it is intended to serve as a basis for implementations that evolve
with the concept of CDDL 2.0.
It is based on draft-bormann-cbor-cddl-freezer, but is more selective
in what potential features it takes up and more detailed in their
discussion.
This document is intended to evolve over time; it might spawn specific
documents and then retire, or it might eventually be published as a roadmap
document.</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-bormann-cbor-cddl-2-draft/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        cbor Working Group mailing list (<eref target="mailto:cbor@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/cbor/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/cbor/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/cbor-wg/cddl-2"/>.</t>
    </note>
  </front>
  <middle>
    <?line 90?>

<section anchor="intro">
      <name>Introduction</name>
      <t>(Please see abstract.)</t>
      <t>Note that the existing extension point can be exercised for new
features in parallel to the work described here.
<xref target="RFC9741"/> forms part of the first set of
specifications going forward from the CDDL-2 project together with <xref target="RFC9682"/>.</t>
      <t>The rest of this introduction gives a rough overview over what could
be the development plan for CDDL 1.1, 2.0, 2.5.</t>
      <section anchor="s11">
        <name>CDDL 1.1 + 2 plan (standards track)</name>
        <t>This section is completed.</t>
        <t>CDDL 1.1 milestone</t>
        <ul spacing="normal">
          <li>
            <t>"CDDL 1.1": <xref target="RFC9682"/>, <em>Grammar</em> fixes:
Empty files (enabling CDDL 2), non-literal tags, errata fixes.</t>
          </li>
          <li>
            <t>Parallel to CDDL 1.1: More <em>control</em> operators
<xref target="RFC9741"/>: Additional control operators, another iteration
like <xref target="RFC9165"/> before.</t>
          </li>
        </ul>
        <t>CDDL 2.0 work:</t>
        <ul spacing="normal">
          <li>
            <t>Technically complete before <strong>IETF 119</strong>: CDDL 2.0: <xref target="I-D.ietf-cbor-cddl-modules"/>
(<tt>import</tt>/<tt>include</tt> directives, implemented).
Feedback is available from IETF 119, one remaining technical issue
(sockets).</t>
          </li>
          <li>
            <t>Potentially, further directives to be added.
No proposals are ripe for specification.</t>
          </li>
        </ul>
        <t>"CDDL 2.5":</t>
        <ul spacing="normal">
          <li>
            <t>Being prepared: CDDL 2.5: <xref target="anno"/> of the present document
("<em>annotations</em>", plus some functionality enabled by that).
The requirements are reasonably well-understood;
the specific form this takes needs to be worked out.
Enables, e.g., <xref section="5" sectionFormat="of" target="I-D.bormann-cbor-cddl-freezer"/> (co-occurrence).</t>
          </li>
        </ul>
      </section>
      <section anchor="s12">
        <name>Other documents</name>
        <t>Not on the main line of development, but important ancillary work:</t>
        <ul spacing="normal">
          <li>
            <t>(Informational, implemented): Section <xref target="I-D.bormann-cbor-cddl-freezer" section="6" sectionFormat="bare">alternative representations</xref> of <xref target="I-D.bormann-cbor-cddl-freezer"/>:
CDDL-in-JSON format(s) for interchange of CDDL model information
between tools.</t>
          </li>
          <li>
            <t>(Informational, companion to <xref target="I-D.ietf-cbor-cddl-modules"/>): <xref target="I-D.bormann-cbor-rfc-cddl-models"/>
(builds standard collection of referenceable models).</t>
          </li>
          <li>
            <t>(BCP? Informational?): <xref target="I-D.bormann-cbor-draft-numbers"/>
(BCP for handling assigned numbers during draft stage; can stay
informational as the work described is completed and any reference
to the document erased before a specification using it would be published).</t>
          </li>
          <li>
            <t>Application-oriented literal <tt>e''</tt> <xref target="I-D.ietf-cbor-edn-e-ref"/> makes use of
<xref target="I-D.ietf-cbor-edn-literals"/> so that diagnostic notation can refer
to named numbers that are specified in CDDL.
Implemented, see <xref target="enum-literals"/> for an introduction.</t>
          </li>
          <li>
            <t>Further proposals to improve the integration between CDDL and EDN
are likely; see <xref target="I-D.bormann-cbor-edn-mapkey"/> for a work in progress.</t>
          </li>
        </ul>
        <t>More explorative at this point:</t>
        <ul spacing="normal">
          <li>
            <t>(Standards-Track?) The remaining <xref target="syntax"/> of this document:
application-oriented literals in CDDL mirroring the work in
<xref target="I-D.ietf-cbor-edn-literals"/>.</t>
          </li>
          <li>
            <t>(Informational or Standards-Track?): <xref target="I-D.bormann-cbor-cddl-csv"/> (using CDDL to
model CSV documents).</t>
          </li>
        </ul>
        <t>Important CBOR work that may be reflected in some CDDL extensions:</t>
        <ul spacing="normal">
          <li>
            <t>Evolving Extended Diagnostic Notation <xref target="I-D.ietf-cbor-edn-literals"/>.  While EDN
and CDDL are independent languages (with EDN rooted in JSON and CDDL
in ABNF and Relax-NG), they are often used together, and
developments in one may spawn parallel work in the other.</t>
          </li>
          <li>
            <t>Common Deterministic Encoding (CDE) <xref target="I-D.ietf-cbor-cde"/> and related documents.
These do define CDDL operators already, which may be sufficient for
initial use; this might be extended once more experience has been
gained.</t>
          </li>
          <li>
            <t>Packed CBOR <xref target="I-D.ietf-cbor-packed"/>.
CDDL already can be used to describe the original
data item represented in a packed data item.
Requirements for describing the latter have not yet been collected;
there is some relation to <xref target="transformation">transformation</xref> that
might need to be explored.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="syntax">
      <name>Mending syntax deficits</name>
      <t>The previous content of this section formed the basis for <xref target="RFC9682"/>,
except for <xref target="tagolit-ref"/>.</t>
      <section anchor="tagolit-ref">
        <name>Tag-oriented Literals</name>
        <t>Incomplete, see <xref target="tagolit"/>.</t>
      </section>
    </section>
    <section anchor="anno">
      <name>Processing model: Beyond Validation</name>
      <dl spacing="compact">
        <dt><em>Proposal Status</em>:</dt>
        <dd>
          <t>experiments with implementations ongoing</t>
        </dd>
        <dt><em>Compatibility</em>:</dt>
        <dd>
          <t>backwards compatible</t>
        </dd>
      </dl>
      <t>The basic (implicit) processing model for CDDL 1.0 applies a CDDL data
model to a data item and returns a Boolean that indicates whether the
data item matches that model ("<em>validation</em>").</t>
      <t><xref section="4" sectionFormat="of" target="RFC9165"/> extends this model with named "<em>features</em>".
A validation can indicate which features were used.
Validation could also be parameterized with information about what
features are allowed to be used, enabling variants (see <xref section="4" sectionFormat="of" target="RFC9165"/> and <xref target="useful"/> for examples).</t>
      <section anchor="annotations">
        <name>Annotations</name>
        <t>The <tt>cddl</tt> tool (<xref section="F" sectionFormat="of" target="RFC8610"/>) also supports experimental
forms of "annotating" a validated data item with information about
which rules were used to support validation, currently entirely based on the
information that is in a standard CDDL 1.0 data model.
This leads to a more general concept of "<em>annotation</em>", where the data
model specification supports "annotating" the validated instance by
optionally supplying information in the model.
(The annotated result is a special case of a "post-schema validation
instance" <xref target="PSVI"/>, here one where the data item itself is only
augmented, not changed, by the process.)</t>
        <t>Annotations could in turn provide input to further validation steps,
as is often done with Schematron validation in Relax-NG; with an
appropriate evaluation language this can be used for checking co-occurrence
constraints (<xref section="5" sectionFormat="of" target="I-D.bormann-cbor-cddl-freezer"/>).</t>
      </section>
      <section anchor="transformation">
        <name>Transformation</name>
        <t>Finally, annotations are a first step to <em>transformation</em>, i.e.,
describing how a validated data item should be interpreted as a
transformed data item by performing certain computations.
This generally requires even more support from an evaluation language,
simple transformations such as adding in default values may not need
much support though.</t>
      </section>
      <section anchor="next-steps">
        <name>Next Steps</name>
        <t>At this time, existing experimental implementations do not lead to a
clear choice for what processing model enhancements should be in
CDDL 2.0 follow-ons.
This document proposes to continue the experimentation and document
good approaches.</t>
      </section>
    </section>
    <section anchor="module-superstructure">
      <name>Module superstructure</name>
      <t>The previous content of this section formed the basis for <xref target="I-D.ietf-cbor-cddl-modules"/>.
Additional work might be started on the ideas outlined in the
subsections of this section.</t>
      <section anchor="cross-universe-references">
        <name>Cross-universe references</name>
        <t>See <xref target="cross"/>.
<!-- {Appendix A.2 of -cddl-2-draft}}. -->
        </t>
      </section>
      <section anchor="abnf-is-a-lot-like-cddl">
        <name>ABNF is a lot like CDDL</name>
        <t>Many of the constructs defined here for CDDL also could be used with
ABNF specifications.  ABNF would definitely benefit from a standard
way to import snippets from existing RFCs.
Since CDDL contains ABNF support (<xref section="3" sectionFormat="of" target="RFC9165"/>), it would be
natural to make some of the functionality discussed in this section
available for ABNF as well.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document makes no requests of IANA.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security considerations</name>
      <t>The security considerations of <xref target="RFC8610"/> apply.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <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>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="I-D.bormann-cbor-cddl-freezer">
          <front>
            <title>A feature freezer for the Concise Data Definition Language (CDDL)</title>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <date day="30" month="August" year="2025"/>
            <abstract>
              <t>   In defining the Concise Data Definition Language (CDDL), some
   features have turned up that would be nice to have.  In the interest
   of completing this specification in a timely manner, the present
   document was started to collect nice-to-have features that did not
   make it into the first RFC for CDDL, RFC 8610, or the specifications
   exercising its extension points, such as RFC 9165.

   Significant parts of this draft have now moved over to the CDDL 2.0
   project, described in draft-bormann-cbor-cddl-2-draft.  The remaining
   items in this draft are not directly related to the CDDL 2.0 effort.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-bormann-cbor-cddl-freezer-16"/>
        </reference>
        <reference anchor="I-D.ietf-cbor-edn-literals">
          <front>
            <title>CBOR Extended Diagnostic Notation (EDN)</title>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <date day="16" month="October" year="2025"/>
            <abstract>
              <t>   This document formalizes and consolidates the definition of the
   Extended Diagnostic Notation (EDN) of the Concise Binary Object
   Representation (CBOR), addressing implementer experience.

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

   It also specifies and uses registry-based extension points, using one
   to support text representations of epoch-based dates/times and of IP
   addresses and prefixes.


   // (This cref will be removed by the RFC editor:) The present -19
   // includes the definition of the cri'' application- extension. cri''
   // was previously defined in draft-ietf-core-href; however the latter
   // document overtook the present document in the approval process.
   // As the definition of cri'' is dependent on the present document
   // (and conversely has essentially no dependency on the technical
   // content of draft-ietf-core-href beyond its mere existence), the
   // text (including IANA considerations) has been moved here. -19 is
   // intended for use at the CBOR WG meeting at IETF 124.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-cbor-edn-literals-19"/>
        </reference>
        <reference anchor="I-D.ietf-cbor-edn-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="2" month="July" year="2025"/>
            <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-ietf-cbor-edn-e-ref-02"/>
        </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>
        <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="I-D.ietf-cbor-cddl-modules">
          <front>
            <title>CDDL Module Structure</title>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <author fullname="Brendan Moran" initials="B." surname="Moran">
              <organization>Arm Limited</organization>
            </author>
            <date day="1" month="March" year="2026"/>
            <abstract>
              <t>   At the time of writing, the Concise Data Definition Language (CDDL)
   is defined by RFC 8610 and RFC 9682 as well as RFC 9165 and RFC 9741.
   The latter two have used the extension point provided in RFC 8610,
   the _control operator_.

   As CDDL is being used in larger projects, the need for features has
   become known that cannot be easily mapped into this single extension
   point.

   The present document defines a backward- and forward-compatible way
   to add a module structure to CDDL.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-cbor-cddl-modules-06"/>
        </reference>
        <reference anchor="I-D.bormann-cbor-rfc-cddl-models">
          <front>
            <title>CDDL models for some existing RFCs</title>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <date day="22" month="February" year="2026"/>
            <abstract>
              <t>   A number of CBOR- and JSON-based protocols have been defined before
   CDDL was standardized or widely used.

   This short draft records some CDDL definitions for such protocols,
   which could become part of a library of CDDL definitions available
   for use in CDDL2 processors.  It focuses on CDDL in (almost)
   published IETF RFCs.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-bormann-cbor-rfc-cddl-models-07"/>
        </reference>
        <reference anchor="EXTRACT-RB" target="https://github.com/cabo/common-cddl/blob/main/extract.rb">
          <front>
            <title>extract.rb — extract CDDL from an enum-style IANA registry</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="I-D.bormann-cbor-draft-numbers">
          <front>
            <title>Managing CBOR codepoints in Internet-Drafts</title>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <date day="12" month="January" year="2026"/>
            <abstract>
              <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.

   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 e'', a further reduction in
   editorial processing of CBOR examples around the time of approval can
   be achieved.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-bormann-cbor-draft-numbers-07"/>
        </reference>
        <reference anchor="I-D.bormann-cbor-cddl-csv">
          <front>
            <title>Using CDDL for CSVs</title>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
              <organization>Fraunhofer SIT</organization>
            </author>
            <date day="1" month="March" year="2026"/>
            <abstract>
              <t>   The Concise Data Definition Language (CDDL), standardized in RFC
   8610, is defined to provide data models for data shaped like JSON or
   CBOR.

   Another representation format that is quote popular is the CSV
   (Comma-Separated Values) file as defined by RFC 4180.

   The present document shows a way how to use CDDL to provide a data
   model for CSV files.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-bormann-cbor-cddl-csv-08"/>
        </reference>
        <reference anchor="I-D.ietf-cbor-packed">
          <front>
            <title>Packed CBOR</title>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <author fullname="Mikolai Gütschow" initials="M." surname="Gütschow">
              <organization>TUD Dresden University of Technology</organization>
            </author>
            <date day="2" month="February" year="2026"/>
            <abstract>
              <t>   The Concise Binary Object Representation (CBOR, RFC 8949 == STD 94)
   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 does not provide any forms of data compression.  CBOR data
   items, in particular when generated from legacy data models, often
   allow considerable gains in compactness when applying data
   compression.  While traditional data compression techniques such as
   DEFLATE (RFC 1951) can work well for CBOR encoded data items, their
   disadvantage is that the recipient needs to decompress the compressed
   form before it can make use of the data.

   This specification describes Packed CBOR, a set of CBOR tags and
   simple values that enable a simple transformation of an original CBOR
   data item into a Packed CBOR data item that is almost as easy to
   consume as the original CBOR data item.  A separate decompression
   step is therefore often not required at the recipient.


   // (This cref will be removed by the RFC editor:) The present
   // revision -19 is a work-in-progress release in preparation for
   // another cbor-packed side meeting.  This revision resolves the use
   // of the tunables A/B/C by setting A=16, B=8, and C=8, and choosing
   // requested simple values and tag numbers, in preparation for
   // continuing the early allocation process.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-cbor-packed-19"/>
        </reference>
        <reference anchor="I-D.ietf-cbor-cde">
          <front>
            <title>CBOR Common Deterministic Encoding (CDE)</title>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <date day="13" month="October" year="2025"/>
            <abstract>
              <t>   CBOR (STD 94, RFC 8949) defines the concept of "Deterministically
   Encoded CBOR" in its Section 4.2, determining one specific way to
   encode each particular CBOR value.  This definition is instantiated
   by "core requirements", providing some flexibility for application
   specific decisions; this makes it harder than necessary to offer
   Deterministic Encoding as a selectable feature of generic CBOR
   encoders.

   The present specification documents the Best Current Practice for
   CBOR _Common Deterministic Encoding_ (CDE), which can be shared by a
   large set of applications with potentially diverging detailed
   application requirements.

   The document also discusses the desire for partial implementations,
   which can be another reason for constraining CBOR encoders, and
   singles out the encoding constraint "definite-length-only" as a
   likely constraint to be used in application protocol and media type
   definitions.

   This specification updates RFC 8949 in that it provides
   clarifications and definitions of additional terms as well as more
   examples and explanatory text; it does not make technical changes to
   RFC 8949.


   // This revision -13 merges all active pull requests in preparation
   // for the 2025-cbor-17 interim on 2025-10-15.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-cbor-cde-13"/>
        </reference>
        <reference anchor="I-D.bormann-cbor-edn-mapkey">
          <front>
            <title>CBOR: Generating Numeric Map Labels from Textual EDN</title>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <author fullname="Christian Amsüss" initials="C." surname="Amsüss">
         </author>
            <date day="1" month="March" year="2026"/>
            <abstract>
              <t>   The Concise Binary Object Representation (CBOR, STD 94 == 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.  Complex examples often use nested maps,
   the map keys (labels) for each of which are often sourced from
   different specifications.  While the e'' application extension
   provides a way to import data items, particularly constant values,
   from a CDDL model, it does not help with automatically selecting the
   right kind of map depending on its position in the nested maps.


   // The present document is intended to capture ideas initially
   // discussed at the CBOR WG interim 2025-06-25 and demonstrate some
   // design alternatives.  It is not ready for adoption yet in any way.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-bormann-cbor-edn-mapkey-01"/>
        </reference>
        <reference anchor="enum-literals" target="https://mailarchive.ietf.org/arch/msg/cbor/D8h_0Egog89GaRLFNwb1VfKlHI4">
          <front>
            <title>[Cbor] Getting diagnostic notation examples in drafts under control</title>
            <author>
              <organization/>
            </author>
            <date year="2024" month="February" day="26"/>
          </front>
        </reference>
        <reference anchor="useful" target="https://github.com/cbor-wg/cddl/wiki/Useful-CDDL">
          <front>
            <title>Useful CDDL</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="PSVI" target="https://www.w3.org/XML/2002/05/psvi-use-cases">
          <front>
            <title>Use Cases for XML Schema PSVI API</title>
            <author>
              <organization/>
            </author>
            <date year="2002" month="June" day="24"/>
          </front>
        </reference>
      </references>
    </references>
    <?line 286?>

<section anchor="fridge">
      <name>Fridge</name>
      <t>This appendix contains sections that may not make it to a 2.0
milestone, but might be part of a followup.</t>
      <section anchor="tagolit">
        <name>Tag-oriented Literals</name>
        <dl spacing="compact">
          <dt><em>Proposal Status</em>:</dt>
          <dd>
            <t>rough idea, porting from EDN</t>
          </dd>
          <dt><em>Compatibility</em>:</dt>
          <dd>
            <t>backward (not forward)</t>
          </dd>
        </dl>
        <t>Some CBOR tags often would be most natural to use in a CDDL spec with a literal
syntax that is tailored to their semantics instead of the
serialization of their tag content in CBOR.
There is currently no way to add such syntaxes, no
defined extension point either.</t>
        <t>The specification
"CBOR Extended Diagnostic Notation (EDN): Application-Oriented Literals, ABNF, and Media Type"
<xref target="I-D.ietf-cbor-edn-literals"/> defines application-oriented
literals, e.g., of the form</t>
        <ul empty="true">
          <li>
            <t>dt'2019-07-21T19:53Z'</t>
          </li>
        </ul>
        <t>for datetime items.  With additional considerations for unambiguous
syntax, a similar literal form could be included in CDDL.</t>
        <t>This proposal opens a namespace for the prefix that indicates an
application specific literal.
A registry could be provided to turn this namespace into a genuine
extension point.
(This is currently the production <tt>bsqual</tt> in <xref section="B" sectionFormat="of" target="RFC8610"/>.)</t>
        <t>The syntax provided in <xref target="I-D.ietf-cbor-edn-literals"/> does not
enable the use of named CDDL rules — using it directly in CDDL would
have the same flaw that is being
fixed for tag numbers in <xref section="3.2" sectionFormat="of" target="RFC9682"/>.</t>
      </section>
      <section anchor="cross">
        <name>Cross-universe references</name>
        <t>Often, a CDDL specification needs to import from specifications in a
different language or platform.</t>
        <section anchor="iana-references">
          <name>IANA references</name>
          <t>In many cases, CDDL specifications make use of values that are
specified in IANA registries.  The proposed <tt>.iana</tt> control operator can be
used to reference such a set of values.</t>
          <t>The reference needs to be able to point to a draft, the registry of
which has not been established yet, as well as to an established IANA registry.</t>
          <t>An example of such a usage might be:</t>
          <sourcecode type="CDDL"><![CDATA[
cose-algorithm = int .iana ["cose", "algorithms", "value"]
]]></sourcecode>
          <t>Unfortunately, the vocabulary employed in IANA registries has not been
designed for machine references.  In this case, the potential values
would come from applying the XPath expression</t>
          <sourcecode type="xpath"><![CDATA[
//iana:registry[@id='algorithms']/iana:record/iana:value
]]></sourcecode>
          <t>to <tt>https://www.iana.org/assignments/cose/cose.xml</tt>, plus some
filtering on the records returned that only leaves actual allocations.
<xref section="3.1" sectionFormat="of" target="I-D.bormann-cbor-rfc-cddl-models"/> contains an example of a CDDL module that is
automatically generated from those assignments.
(The code for this extraction is available in the document source
repository of <xref target="I-D.bormann-cbor-rfc-cddl-models"/> as <xref target="EXTRACT-RB"/>.)</t>
          <t>Additional functionality may be needed for filtering with respect to other
columns of the registry record, e.g., <tt>&lt;capabilities&gt;</tt> in the case of
this example.</t>
        </section>
      </section>
    </section>
    <section numbered="false" anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>TBD</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA6Va3XLbuJK+x1NglYvYPqJsKz+TKGcy48TOHO/mrxLPT51U
ag2RkIQTitQhSMsal7f2IfYB5mKfZPZN9kn2626ApGxn5mJTNWOJAoFG99fd
XzeQJIm6mOgHStWuzu1EP1davzw+fv37b+PRgTZFpqd2U+LP//7nf2mjs8rM
ar3KTaHMdFpZvNuOVlmZFmaJSXhUMi2rpSmKJMWHJM2yPBkn8ktuautrdU+P
D8YPk4Mnyfgbpb7Yzbqssok+LWpbFbZOjmmwSk090a6YlcrXlTVLDDg5e6XW
cyz94t0H/XNZfXHFXM+rslkpdWGLxk6wi6Vx+UQPaPXvna1no7KaD/B87upF
M51oFms93xfJlFq5if5Ul+lQ+7LCSjOPT5ulfEjL5cqkNX9Y2qL2n5UyTb0o
K1oqwX9ay95fmsrXttAvZPf8C1ae6B8Ld2Er7+r/+e9av6gsptFnfz/lAbQz
i22+L309M+lCP3hw8PDhAf+WunozCS/IgzLDOsfJ+MmDR0/Dk6aoK4z6wdKi
G364WpQFxv3l4dPk4fgwGR8+SR4/eDo+5B+taCc10/L7+ldHulFKFSRzDTFp
Ux9evXzy+PAAg6Ag+f708PEjfC+xWJkfKkVW6b1xmhyPbht9hq39aquJDh/C
QDKJjLJZkeQONje5n+j+tzuH2gQmwTj6E8R6/GQ8gf3Ncmmq8Oibh4etpONb
87BgyzJrcoslw4e7dlDN0nawzWWsZcFOfjn7cPTyLPnwYsIarU01JxMu6nrl
J/v7ArMR8LJPWt4n4JQFT7Y/zcvpPixQ7NvLugKuRtVUJhEn7J6y24Wv7GnQ
YrmEX2rAfJn4epNbfXr09khXdu4Ao81duxCvwwtTAHCiw4evWiz1F2J1+nRL
d/CDLxZuKn/vUK2ll+1ds5P5lmYFT4ci+S9G8UZa+9+pSwKrqdIFcDaKrrxP
D/aXHg6MqfePnyz+/eBkXs6fPP3BfHj96u16evjT7N/yv50+7Gv2OX/R+tNL
vPQZ/lLXFDsyZ+YFfM+luihrALqEgi/NcgVYIPZIQPO6KTJbRVTxTBki2SSE
sXEyfoyHjbezJv9zUPTCz/7afXH7P/KLCVm5L7I81uHx+48/nd4993q9Hq0f
sGp+efN6f3xwMN4/eLS/8hcugUxJajxjvBMaEh88TsYPb6yGEIaRGq6tMZH+
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
f1ryrgruLwAA

-->

</rfc>
