<?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.24 (Ruby 3.4.1) -->
<?rfc compact="yes"?>
<?rfc comments="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-bormann-cbor-cddl-2-draft-06" category="info" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.27.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-06"/>
    <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="2025" month="February" day="28"/>
    <workgroup>CBOR Working group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 66?>

<t>The Concise Data Definition Language (CDDL) today is defined by
RFC 8610, RFC 9165, RFC 9682, and draft-ietf-cbor-cddl-more-control
(RFC-to-be 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="I-D.ietf-cbor-cddl-more-control"/> (recently approved, RFC-to-be 9741), 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 documents the status in Summer 2024.</t>
        <t>CDDL 1.1 milestone (documents technically complete, implemented):</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.
Approved document, in RFC editor queue (EDIT state) at the time of writing.</t>
          </li>
          <li>
            <t>Parallel to CDDL 1.1: More <em>control</em> operators
<xref target="I-D.ietf-cbor-cddl-more-control"/>, RFC-to-be 9741: Additional control operators, another iteration
like RFC 9165 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 open technical issue
(sockets); WGLC 1H2025.</t>
          </li>
          <li>
            <t>Potentially, further directives to be added.
No proposals are ripe for specification; this work could go into a
second document constituting "CDDL 2.1" so we have the
well-understood <tt>import</tt>/<tt>include</tt> available now.</t>
          </li>
        </ul>
        <t>"CDDL 2.5":</t>
        <ul spacing="normal">
          <li>
            <t>Being prepared in <strong>1H2025</strong>: 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>
        </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="28" month="August" year="2024"/>
            <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-14"/>
        </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="8" month="January" 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
   // revision (–16) addresses the first half of the WGLC comments,
   // except for the issues around the specific way how to best achieve
   // pluggable ABNF grammars for application-extensions.  It is
   // intended for use as a reference document for the mid-WGLC CBOR WG
   // interim meeting on 2025-01-08.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-cbor-edn-literals-16"/>
        </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="29" month="December" 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-ietf-cbor-edn-e-ref-01"/>
        </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="I-D.ietf-cbor-cddl-more-control">
          <front>
            <title>Concise Data Definition Language (CDDL): Additional Control Operators for the Conversion and Processing of Text</title>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <date day="9" month="January" 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 both in an
   application-specific and a more general way.

   The present document defines a number of additional generally
   applicable control operators for text conversion (Bytes, Integers,
   JSON, Printf-style formatting) and for an operation on text.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-cbor-cddl-more-control-08"/>
        </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="September" year="2024"/>
            <abstract>
              <t>   At the time of writing, the Concise Data Definition Language (CDDL)
   is defined by RFC 8610 and RFC 9165.  The latter has 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-03"/>
        </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="23" month="February" year="2025"/>
            <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-05"/>
        </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="29" month="August" year="2024"/>
            <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-04"/>
        </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="16" month="June" year="2024"/>
            <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-05"/>
        </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="1" month="September" year="2024"/>
            <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 to make use of the data.

   This specification describes Packed CBOR, a simple transformation of
   a CBOR data item into another 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.


   // The present version (-13) is a refresh of the implementation draft
   // -12 with minor editorial improvements.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-cbor-packed-13"/>
        </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="10" month="February" year="2025"/>
            <abstract>
              <t>   CBOR (STD 94, RFC 8949) defines "Deterministically Encoded CBOR" in
   its Section 4.2, providing some flexibility for application specific
   decisions.  To facilitate Deterministic Encoding to be offered as a
   selectable feature of generic encoders, the present document defines
   a CBOR Common Deterministic Encoding (CDE) Profile that can be shared
   by a large set of applications with potentially diverging detailed
   requirements.  It also defines "Basic Serialization", which stops
   short of the potentially more onerous requirements that make CDE
   fully deterministic, while employing most of its reductions of the
   variability needing to be handled by decoders.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-cbor-cde-08"/>
        </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 287?>

<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:
H4sIAAAAAAAAA6Va23IbR5J9r6+ohR5EctAgAV0sQeMLRVI2d2VZIdGXGIdj
WeguADVqdMNd3QRhhjb2I/YD/LBf4v2T/ZI9mVnV3SAp+2EdMSMQqEtW5snM
k1mVJIm6mupHStWuzu1Uf6G0Pjk9ff3H75PRkTZFpmd2W+Kf//3P/9JGZ5WZ
13qdm0KZ2ayymNuOVlmZFmaFRXhUMiurlSmKJMWHJM2yPJkk8ktuautr9UBP
jiaPk6NnyeQzpT7Y7aassqk+L2pbFbZOTmmwSk091a6Yl8rXlTUrDDi7eKU2
C2z98rt3+sey+uCKhV5UZbNW6soWjZ3iFCvj8qke0O5fOVvPR2W1GOD7hauX
zWyqWazN4lAkU2rtpvrnukyH2pcVdpp7fNqu5ENartYmrfnDyha1/0Up09TL
sqKtEvxPazn7ial8bQv9Uk7Pv2Dnqf6+cFe28q7+n/+u9cvKYhl98Y9zHkAn
szjm29LXc5Mu9aNHR48fH/Fvqau30zBBvigz7HOaTJ49evI8fNMUdYVRX1va
dMtfrpdlgXF/e/w8eTwZJ5Pxs+Tpo+eTMf9oRTupmZVf1b850o1SqiCZa4hJ
h3r36uTZ0/ERBkFB8vfz8dMn+LvEZmU+Voqs0ptxnpyO7hp9jqP9ZqupDh/C
QDKJjLJZkeQONje5n+r+X/cOtQlMgnH0TxDr6bPJFPY3q5W5uzwLsSormwTB
p7r/191NwoSsya2nsfzhvuNV87QdbHMZa3nBs58u3h2fXCTvXk5Z3bWpFmTf
ZV2v/fTwUDA4ApgOyQSHhKqy4MUOZ3k5O4R5ikN7XVcA3aiaySLiod237JPh
T3ZDqLhcwWk1fGCV+HqbW31+/OZYV3bhgLHtfacQl8SEGdA51eHDJ82Z+iuB
BH26ozs4yQcLH5Z/71GtpckWP7CIrdnv1RJh1FTpEvAaRQ8+pC8OVx5+iwUP
T58t//3obFEunj3/2rx7/erNZjb+Yf5v+Tfnj/s6+4L/0PrnE0z6BW5S1xQy
MmcWBVzOpbooa+C4hOquzWoNgyPkSBzzuikyW0XY80oZAtg0RK9JMnmKLxtv
503+1+buRZ3DjfvgDr/niQnZry+yfK3D12/f/3B+/9qbzWa0ecSq+enb14eT
o6PJ4dGTw7W/cglkSlLjGb2d0JD46GkyeXxrN0QujNTwaI2F9Pt0iSDBG+vj
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
7XnfxHfNNvt8UJQDesH08lT9HxUdda3+MAAA

-->

</rfc>
