<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.43 (Ruby 3.2.3) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

]>


<rfc ipr="trust200902" docName="draft-moore-scitt-ciris-ceg-00" category="info" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="CEG Attestation Rows and SCITT">Signed Attestation Rows of the CIRIS Epistemic Grammar and Their Relationship to SCITT</title>

    <author fullname="Eric Moore">
      <organization>CIRIS L3C</organization>
      <address>
        <email>eric@ciris.ai</email>
      </address>
    </author>

    <date year="2026" month="October" day="21"/>

    <area>Security</area>
    <workgroup>Supply Chain Integrity, Transparency, and Trust</workgroup>
    <keyword>attestation</keyword> <keyword>transparency</keyword> <keyword>canonical JSON</keyword> <keyword>hybrid signature</keyword> <keyword>ML-DSA</keyword>

    <abstract>


<?line 73?>

<t>The CIRIS Epistemic Grammar (CEG) records claims between parties as
signed rows.  Each row is one JSON object, canonicalised with the JSON
Canonicalization Scheme (JCS) and signed twice: once with Ed25519 and
once with ML-DSA-65, where the ML-DSA-65 signature covers the canonical
bytes followed by the Ed25519 signature.  Every row has one of five
types: a claim, a delegation, a replacement, a withdrawal, or a
recantation.  A node admits a row only after a fixed set of checks,
and it refuses a failing row with a named reason.</t>

<t>This document specifies the signed object, the signing input, the
signature construction, and the admission checks, so that a second
implementation can produce and verify the same bytes.  It then
describes how these rows relate to the roles of the SCITT
architecture (RFC 9943), and where they differ from a SCITT
Transparency Service.  It defines no new SCITT mechanism and requests
no IANA action.</t>



    </abstract>

    <note title="About This Document" removeInRFC="true">
      <t>
        The latest revision of this draft can be found at <eref target="https://github.com/CIRISAI/CIRISConstitution/tree/main/ietf"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-moore-scitt-ciris-ceg/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/CIRISAI/CIRISConstitution"/>.</t>
    </note>


  </front>

  <middle>


<?line 92?>

<section anchor="introduction"><name>Introduction</name>

<t>CEG is the row format of the CIRIS system, in which people, devices,
communities and AI agents make claims about each other and act on
them.  It is defined normatively in the CIRIS Constitution <xref target="CC"/>.
This document restates the parts of that definition that another
implementation needs in order to interoperate at the byte level.</t>

<t>Three goals shape the format:</t>

<t><list style="symbols">
  <t>Any party holding a row can recompute its signing bytes exactly.
Signatures are over a canonical form, and every point where JSON or
JCS would let one encoding produce two byte strings is fixed.  Two
encodings of one meaning can still exist (an explicit default, or a
one-element <spanx style="verb">scope</spanx> written as a string); they are different rows
with different bytes, and both verify (<xref target="canon"/>).</t>
  <t>Rows exchanged between nodes have to resist forgery by an attacker
with a quantum computer.  Every such row carries an ML-DSA-65
signature <xref target="FIPS204"/> beside the Ed25519 signature <xref target="RFC8032"/>, and
both <bcp14>MUST</bcp14> verify.</t>
  <t>The set of row types is closed, so that every row is subject to the
same admission rules.  New kinds of claim are new values of
<spanx style="verb">dimension</spanx>, never new types.</t>
</list></t>

<t>SCITT <xref target="RFC9943"/> defines an architecture for registering signed
statements with a Transparency Service and returning receipts that
prove registration.  CEG rows play a similar role in their own
system, but the two were designed separately and differ in encoding
and in how proofs are delivered.  <xref target="scitt"/> describes the
relationship.  A COSE encoding of CEG rows is out of scope; <xref target="scitt"/>
says what one would need to cover.</t>

<section anchor="scope"><name>Scope</name>

<t>In scope:</t>

<t><list style="symbols">
  <t>the signed object of an attestation row and its member set
(<xref target="object"/>);</t>
  <t>the five row types (<xref target="types"/>);</t>
  <t>the canonical signing input (<xref target="canon"/>);</t>
  <t>the hybrid signature and cosignatures (<xref target="sig"/>);</t>
  <t>the admission checks, written as a SCITT Registration Policy
(<xref target="admission"/>).</t>
</list></t>

<t>Informative only:</t>

<t><list style="symbols">
  <t>the safety properties the rows carry (<xref target="safety"/>);</t>
  <t>the relationship to SCITT roles (<xref target="scitt"/>);</t>
  <t>the lifecycle of an agent's decision record (<xref target="lifecycle"/>).</t>
</list></t>

<t>Out of scope: the transport between nodes, the storage schema, the
meaning of individual claim families (the "dimension" namespace), and
the governance rules that decide who may hold which role.  <xref target="CC"/>
defines each of these.</t>

</section>
<section anchor="requirements-language"><name>Requirements Language</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="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>

<?line -18?>

</section>
<section anchor="terminology"><name>Terminology</name>

<t>This document uses the terms Issuer, Signed Statement, Transparency
Service, Registration Policy, Receipt, Transparent Statement, and
Relying Party as defined in <xref target="RFC9943"/>.  It also uses:</t>

<dl>
  <dt>Row:</dt>
  <dd>
    <t>One signed attestation.  On the wire it is a JSON object
<xref target="RFC8259"/> that carries the signed object and members beside it.</t>
  </dd>
  <dt>Signed object:</dt>
  <dd>
    <t>The JSON object named <spanx style="verb">attestation_envelope</spanx> inside a row.  Its JCS
image is the signing input.  Nothing else in the row is signed.</t>
  </dd>
  <dt>Attester:</dt>
  <dd>
    <t>The key that signs a row's signed object.  It plays the SCITT
Issuer role.</t>
  </dd>
  <dt>Subject:</dt>
  <dd>
    <t>A party a row is about.  <spanx style="verb">attested_key_id</spanx> names the primary
subject; <spanx style="verb">subject_key_ids</spanx> lists any others, including parties that
have no key.</t>
  </dd>
  <dt>Producer, Consumer, Substrate:</dt>
  <dd>
    <t>A Producer emits rows.  A Consumer verifies and reads rows.  A
Substrate stores and relays rows and applies the admission checks.
One node is usually all three.</t>
  </dd>
  <dt>Refusal token:</dt>
  <dd>
    <t>A fixed, case-sensitive ASCII string that names why a row was
refused, so that two implementations agree on a refusal as well as
on an acceptance.  The tokens of <xref target="CC"/> are either all lowercase or
all uppercase, and are compared byte for byte.  A refusal of the
shape of a row uses the token <spanx style="verb">federation_malformed_row</spanx> together
with a reason from a closed set; "refused with reason R" in this
document means that token with reason R.</t>
  </dd>
  <dt>Local tier, federation tier:</dt>
  <dd>
    <t>A row at the local tier stays on the node that wrote it and is not
replicated.  A row at the federation tier may leave the node.
Promotion from the local tier to the federation tier adds the
ML-DSA-65 signature and does not change the signing input, so a
promoted row is byte-identical to one written at the federation
tier.</t>
  </dd>
  <dt>key_id:</dt>
  <dd>
    <t>A key identifier of the form <spanx style="verb">&lt;label&gt;-&lt;fingerprint&gt;</spanx>, where the
fingerprint is the first ten characters of the lowercase base32
<xref target="RFC4648"/> encoding of the SHA-256 digest of the raw 32-byte
Ed25519 public key.  The label is chosen by the key holder.</t>
  </dd>
</dl>

</section>
</section>
<section anchor="object"><name>The Signed Object</name>

<section anchor="members-of-a-row"><name>Members of a Row</name>

<t>A row is a JSON object with the following members.  Each is listed with
its placement: <spanx style="verb">signed</spanx> members are inside the signing input;
<spanx style="verb">beside</spanx> members travel with the row and are bound to it by a check,
but are not signed.</t>

<texttable title="Members of a row">
      <ttcol align='left'>Member</ttcol>
      <ttcol align='left'>Placement</ttcol>
      <ttcol align='left'>Content</ttcol>
      <c>attestation_envelope</c>
      <c>signed</c>
      <c>The signed object.</c>
      <c>attestation_id</c>
      <c>beside, mirrored</c>
      <c>UUID <xref target="RFC9562"/> of the row.</c>
      <c>attesting_key_id</c>
      <c>beside, mirrored</c>
      <c>key_id of the attester.</c>
      <c>attested_key_id</c>
      <c>beside, mirrored</c>
      <c>key_id the row is primarily about.</c>
      <c>attestation_type</c>
      <c>beside, mirrored</c>
      <c>One of the five types.</c>
      <c>subject_key_ids</c>
      <c>beside, mirrored</c>
      <c>Set of subject identifiers.</c>
      <c>cohort_scope</c>
      <c>beside, mirrored</c>
      <c>Audience: one of seven scopes.</c>
      <c>weight</c>
      <c>beside, mirrored</c>
      <c>Optional number.</c>
      <c>asserted_at</c>
      <c>beside</c>
      <c>Column copy of the signed instant.</c>
      <c>expires_at</c>
      <c>beside</c>
      <c>Optional column copy.</c>
      <c>original_content_hash</c>
      <c>beside</c>
      <c>Lowercase hex SHA-256 of the signing input.</c>
      <c>scrub_key_id</c>
      <c>beside</c>
      <c>key_id that produced the row's signature.</c>
      <c>scrub_signature_classical</c>
      <c>beside</c>
      <c>Ed25519 signature, base64.</c>
      <c>scrub_signature_pqc</c>
      <c>beside</c>
      <c>ML-DSA-65 signature, base64.</c>
      <c>scrub_timestamp</c>
      <c>beside</c>
      <c>When the signature was applied.</c>
      <c>additional_scrubs</c>
      <c>beside</c>
      <c>Cosignatures (<xref target="cosign"/>).</c>
</texttable>

<t>The seven members marked "mirrored" are repeated inside the signed
object under the member <spanx style="verb">row</spanx> (<xref target="mirror"/>).  <spanx style="verb">asserted_at</spanx> and
<spanx style="verb">expires_at</spanx> beside the row are read out of the signed object: a
Substrate <bcp14>MUST</bcp14> refuse a row whose <spanx style="verb">asserted_at</spanx> column differs from
the signed member, with reason <spanx style="verb">typed_diverges_from_envelope</spanx>, and <spanx style="verb">expires_at</spanx>
is present beside the row exactly when it is present in the signed
object.  <spanx style="verb">scrub_timestamp</spanx> uses the instant form of <xref target="time"/>.  A
Substrate <bcp14>MAY</bcp14> add members of its own beside the row; they are not part
of this specification.</t>

</section>
<section anchor="mirror"><name>The Mirror</name>

<t>The signed object <bcp14>MUST</bcp14> contain a member <spanx style="verb">row</spanx> whose value is an object
with exactly these members: <spanx style="verb">attestation_id</spanx>, <spanx style="verb">attesting_key_id</spanx>,
<spanx style="verb">attestation_type</spanx>, <spanx style="verb">attested_key_id</spanx>, <spanx style="verb">subject_key_ids</spanx>,
<spanx style="verb">cohort_scope</spanx>, and optionally <spanx style="verb">weight</spanx>.  The set is closed.  A
Substrate <bcp14>MUST</bcp14> refuse a row:</t>

<t><list style="symbols">
  <t>whose signed object has no <spanx style="verb">row</spanx> member, with
reason <spanx style="verb">envelope_member_missing</spanx>;</t>
  <t>whose <spanx style="verb">row</spanx> object has any member not in this list, with reason
<spanx style="verb">envelope_row_member_unknown</spanx>;</t>
  <t>where any column beside the row differs from its mirror, with
reason <spanx style="verb">typed_diverges_from_envelope</spanx>.</t>
</list></t>

<t>The mirror exists because the columns beside a row are what a
Substrate indexes and a Consumer filters on.  If those columns were not signed, a
relay could change who a row is about or who may see it while the
signature still verified.</t>

<t><spanx style="verb">subject_key_ids</spanx> is always present in the mirror; an empty array means
the row has no subject beyond <spanx style="verb">attested_key_id</spanx>.  <spanx style="verb">cohort_scope</spanx> takes
one of the values <spanx style="verb">self</spanx>, <spanx style="verb">family</spanx>, <spanx style="verb">community</spanx>, <spanx style="verb">affiliations</spanx>,
<spanx style="verb">species</spanx>, <spanx style="verb">biosphere</spanx>, <spanx style="verb">federation</spanx>.</t>

</section>
<section anchor="members-of-the-signed-object"><name>Members of the Signed Object</name>

<t>Besides <spanx style="verb">row</spanx>, every signed object carries:</t>

<dl>
  <dt>asserted_at:</dt>
  <dd>
    <t><bcp14>REQUIRED</bcp14>.  The instant the attester makes the claim, in the form of
<xref target="time"/>.</t>
  </dd>
  <dt>dimension:</dt>
  <dd>
    <t><bcp14>REQUIRED</bcp14>.  A string naming the claim family, for example
<spanx style="verb">expertise:cardiology:en:v1</spanx>.  Its grammar and registry are defined
in <xref target="CC"/> and are not needed to verify a signature.</t>
  </dd>
  <dt>expires_at:</dt>
  <dd>
    <t><bcp14>OPTIONAL</bcp14>.  The instant after which the claim no longer stands.</t>
  </dd>
</dl>

<t>Each row type adds members (<xref target="types"/>).  Claim families add members of
their own.  <xref target="cddl"/> gives the full member list with types.  A
Consumer <bcp14>MUST</bcp14> preserve members it does not recognise when it relays a
row, because removing one would change the signing input.</t>

</section>
</section>
<section anchor="types"><name>The Five Row Types</name>

<t>The <spanx style="verb">attestation_type</spanx> member takes exactly one of five values.  A
Substrate <bcp14>MUST</bcp14> refuse any other value, compared byte for byte, with
<spanx style="verb">attestation_type_unregistered</spanx>.  It <bcp14>MUST</bcp14> apply this check to rows it
emits and to rows it receives.</t>

<dl>
  <dt>scores:</dt>
  <dd>
    <t>A claim about the attested key on the named dimension.  It carries
<spanx style="verb">score</spanx> and <spanx style="verb">confidence</spanx>, both numbers.  Every positive or negative
claim about a party is a <spanx style="verb">scores</spanx> row.</t>
  </dd>
  <dt>delegates_to:</dt>
  <dd>
    <t>The attester authorises the attested key to sign on its behalf
within <spanx style="verb">scope</spanx>, a set of strings, from <spanx style="verb">delegation_valid_from</spanx> until
<spanx style="verb">delegation_valid_until</spanx>.  For the scopes that <xref target="CC"/> lists as
requiring a term, among them licensing, moderation and takedown,
<spanx style="verb">delegation_valid_until</spanx> is <bcp14>REQUIRED</bcp14> and <bcp14>MUST</bcp14> be no more than 365
days after <spanx style="verb">delegation_valid_from</spanx>; a Substrate refuses a row that
breaks this with <spanx style="verb">delegation_term_required</spanx>.</t>
  </dd>
  <dt>supersedes:</dt>
  <dd>
    <t>The attester replaces one of its own earlier rows, named by
<spanx style="verb">references_attestation_id</spanx>.  It <bcp14>MAY</bcp14> list the changed members in
<spanx style="verb">differs_in</spanx>.</t>
  </dd>
  <dt>withdraws:</dt>
  <dd>
    <t>The attester retracts an earlier row, named by
<spanx style="verb">references_attestation_id</spanx>, without saying the row was false.
<xref target="withdraw-rule"/> says who may withdraw a row.</t>
  </dd>
  <dt>recants:</dt>
  <dd>
    <t>The attester says one of its own earlier rows was false when it was
made.  Only the original attester can recant a row.</t>
  </dd>
</dl>

<t>A withdrawal and a recantation are different statements.  A withdrawal
says "I no longer assert this"; a recantation says "this was wrong".
Consumers can weigh them differently, and the subject of a row has
authority over the first but not the second (<xref target="withdraw-rule"/>).</t>

<t>A new kind of record is expressed as a new <spanx style="verb">dimension</spanx> on one of the
five types, never as a sixth type.</t>

</section>
<section anchor="canon"><name>The Signing Input</name>

<t>The signing input of a row is the JCS <xref target="RFC8785"/> image of its signed
object, as UTF-8 bytes.  No other member of the row contributes to it.</t>

<t>JCS fixes member order, whitespace, string escaping and number
formatting, but leaves several choices open that would let two
Producers encode the same claim differently.  The rules in this section
close them.</t>

<section anchor="absent-never-null-never-materialised"><name>Absent, Never Null, Never Materialised</name>

<t>An optional member is unset by being absent.  A Producer <bcp14>MUST NOT</bcp14> emit
an optional member with the JSON value <spanx style="verb">null</spanx>.  A Substrate <bcp14>MUST</bcp14>
refuse a row whose signed object contains an optional member set to
<spanx style="verb">null</spanx>, with <spanx style="verb">federation_malformed_row</spanx> and the reason
<spanx style="verb">envelope_member_null</spanx>.</t>

<t>A default is applied when a row is read, never when it is encoded.  A
Producer that writes a member at its default value and a Producer that
omits it produce different signing bytes; both rows verify, and both
mean the same thing.  A Substrate that stores or relays a row <bcp14>MUST NOT</bcp14> add a defaulted
member or remove one, because either change alters the signing input.</t>

</section>
<section anchor="arrays"><name>Arrays</name>

<t>Each array member is declared as either a set or a sequence.  The
declarations are in <xref target="cddl"/>.</t>

<t><list style="symbols">
  <t>A set <bcp14>MUST</bcp14> be sorted in ascending order of the JCS serialisation of
each element, compared as sequences of UTF-16 code units (the
comparison JCS uses for member names), and its elements <bcp14>MUST</bcp14> be
unique.  A Substrate <bcp14>MUST</bcp14> refuse a row with an
unsorted or duplicated set, with <spanx style="verb">federation_set_semantics_unsorted</spanx>
naming the member.  It <bcp14>MUST NOT</bcp14> sort the set itself, because that
would change the signing input.</t>
  <t>A sequence keeps the order its author gave it.</t>
</list></t>

<t><spanx style="verb">subject_key_ids</spanx>, <spanx style="verb">scope</spanx> and <spanx style="verb">differs_in</spanx> are sets.  <spanx style="verb">evidence_refs</spanx>
is a sequence.  An array without a declaration is a set.</t>

<t>The <spanx style="verb">scope</spanx> member <bcp14>MAY</bcp14> be a single string or an array.  A single string
denotes the one-element set; a Substrate <bcp14>MUST NOT</bcp14> rewrite one form
into the other.</t>

</section>
<section anchor="strings-that-carry-bytes"><name>Strings That Carry Bytes</name>

<t>JSON has no byte type.  Hashes, digests and raw key material inside the
signing input are lowercase hexadecimal, with no prefix and no
separators.  Members declared as base64 use the standard alphabet of
<xref section="4" sectionFormat="of" target="RFC4648"/> with padding and no line breaks.</t>

<t>An element of <spanx style="verb">subject_key_ids</spanx> is either a key_id, copied byte for
byte from the key's record, or a tagged canonical identifier of the form
<spanx style="verb">canonical:&lt;hashalg&gt;:&lt;hex&gt;</spanx> for a party that has no key.  The tag is
part of the signed string.  A Substrate <bcp14>MUST</bcp14> refuse an element whose
tag is not in lowercase, and <bcp14>MUST NOT</bcp14> repair it.</t>

</section>
<section anchor="time"><name>Instants</name>

<t>Every instant inside the signing input is written as
<spanx style="verb">YYYY-MM-DDTHH:MM:SS.sssZ</spanx>: UTC, the literal uppercase <spanx style="verb">Z</spanx>, and exactly
three fractional digits.  This is a profile of <xref target="RFC3339"/>.  A Producer
<bcp14>MUST</bcp14> emit this form.  A Substrate <bcp14>MUST</bcp14> refuse any other form inside the
signing input with reason <spanx style="verb">envelope_member_invalid</spanx>, even though a signature
over those bytes would still verify.</t>

</section>
<section anchor="numbers"><name>Numbers</name>

<t>JCS serialises numbers as IEEE 754 binary64 values.  A Producer <bcp14>MUST</bcp14>
convert every number to its finite binary64 value before computing the
signing input, and <bcp14>MUST</bcp14> fail, rather than emit a row, for a number that
has none (for example <spanx style="verb">1e1000</spanx>).  A parser that keeps numbers at
arbitrary precision would otherwise emit bytes that another
implementation cannot reproduce.</t>

</section>
<section anchor="size"><name>Size</name>

<t>The signing input <bcp14>MUST NOT</bcp14> exceed 1 MiB (1,048,576 bytes).  A Substrate
<bcp14>MUST</bcp14> refuse a larger row on every path by which rows reach it, with
<spanx style="verb">ENVELOPE_TOO_LARGE</spanx>.  Because the limit is on canonical bytes, it can
only be decided after parsing; each intake path therefore also needs a
local limit on how many bytes it will read before it stops.  That local
limit <bcp14>MUST NOT</bcp14> be less than 1 MiB and is not part of the interoperable
contract.  A Substrate that receives a non-canonical serialisation
larger than its local limit <bcp14>MAY</bcp14> refuse it even if its canonical form
would fit; the interoperable serialisation is the canonical one.
Larger content travels outside the row and is named in
<spanx style="verb">evidence_refs</spanx> by its hash.</t>

</section>
<section anchor="the-content-hash"><name>The Content Hash</name>

<t><spanx style="verb">original_content_hash</spanx> is the lowercase hex SHA-256 digest of the
signing input.  A Substrate <bcp14>MUST</bcp14> recompute it when it receives a row
and <bcp14>MUST</bcp14> refuse a row whose value differs.</t>

</section>
</section>
<section anchor="sig"><name>Signatures</name>

<section anchor="the-hybrid-signature"><name>The Hybrid Signature</name>

<t>The attester's signature has two parts, made with the attester's key
pair:</t>

<t><list style="numbers" type="1">
  <t><spanx style="verb">scrub_signature_classical</spanx> is the Ed25519 signature <xref target="RFC8032"/>
over the signing input.</t>
  <t><spanx style="verb">scrub_signature_pqc</spanx> is the ML-DSA-65 signature <xref target="FIPS204"/> over
the signing input followed by the 64 raw bytes of the Ed25519
signature, computed with ML-DSA.Sign and an empty context string.
HashML-DSA is not used.</t>
</list></t>

<t>Both values are encoded in base64.  <spanx style="verb">scrub_key_id</spanx> <bcp14>MUST</bcp14> equal
<spanx style="verb">attesting_key_id</spanx>.  A Consumer verifies each part against the public
keys it holds for that key_id.  At the federation tier both parts <bcp14>MUST</bcp14>
verify; a row with only the Ed25519 part is not admitted there.  There
is no configuration that turns the ML-DSA-65 check off.</t>

<t>In the terms of <xref target="RFC9955"/> this is a nested hybrid: the second
signature covers the message and the first signature
(<xref section="3.3" sectionFormat="of" target="RFC9955"/>; terminology from <xref target="RFC9794"/>).  Because
the ML-DSA-65 input contains the Ed25519 signature, an ML-DSA-65
signature taken from one row cannot be paired with a different Ed25519
signature.  The construction is not the composite signature of
<xref target="I-D.ietf-lamps-pq-composite-sigs"/> and
<xref target="I-D.ietf-jose-pq-composite-sigs"/>, in which both components sign
the same prefixed message representative and neither covers the
other.  Deployed rows use the nested form, and this document describes
what they carry.</t>

<t>A Producer <bcp14>MAY</bcp14> use either the hedged or the deterministic variant of
ML-DSA.Sign.  A Consumer <bcp14>MUST</bcp14> accept any valid signature and <bcp14>MUST NOT</bcp14>
expect the ML-DSA-65 part to be byte-identical across signers.  The
reference implementation uses the deterministic variant, so the
vectors in <xref target="vectors"/> reproduce bit for bit from their seeds.</t>

</section>
<section anchor="cosign"><name>Cosignatures</name>

<t>A row <bcp14>MAY</bcp14> carry further signatures over the same signing input in
<spanx style="verb">additional_scrubs</spanx>, an array of objects with these members:</t>

<dl>
  <dt>scrub_key_id:</dt>
  <dd>
    <t><bcp14>REQUIRED</bcp14>.  The cosigner's key_id.</t>
  </dd>
  <dt>scrub_signature_classical:</dt>
  <dd>
    <t><bcp14>REQUIRED</bcp14>.  Ed25519 over the signing input.</t>
  </dd>
  <dt>scrub_signature_pqc:</dt>
  <dd>
    <t><bcp14>REQUIRED</bcp14> at the federation tier.  ML-DSA-65 over the signing input
followed by this entry's Ed25519 signature.</t>
  </dd>
  <dt>cosigned_at:</dt>
  <dd>
    <t><bcp14>OPTIONAL</bcp14>.  When the cosignature was applied.</t>
  </dd>
</dl>

<t>Cosignatures are beside the signed object, not inside it, because a
signature cannot be part of the bytes it signs.  Adding a cosignature
therefore changes neither the signing input nor the attester's
signature.  An entry carries no role: a Consumer decides what role a
cosigner holds from its own record of the relevant group or roster,
at the row's <spanx style="verb">asserted_at</spanx>.</t>

<t>A claim family can require a quorum.  It does so by naming where the
rule comes from (for example the group the row is about), and a
Substrate admits the row only when the attester and the cosigners that
verify and hold a seat in that group meet the group's rule.  A
cosignature that does not verify, or whose key holds no seat, is not
counted; it is not an error.</t>

</section>
<section anchor="keys"><name>Keys</name>

<t>A Consumer resolves a key_id to an Ed25519 public key and an ML-DSA-65
public key through its own key directory, which is populated by key
records that are themselves signed (<xref target="cddl"/>).  <xref target="CC"/> defines how keys
are registered and revoked.  Verification also requires that:</t>

<t><list style="symbols">
  <t>the fingerprint in the key_id <bcp14>MUST</bcp14> match the SHA-256 digest of the
Ed25519 public key the directory returns, so a directory entry cannot
be substituted for another key with the same label; and</t>
  <t>a revoked key <bcp14>MAY</bcp14> carry an instant <spanx style="verb">revoked_after</spanx>, so that rows the
key signed before that instant still stand and rows signed after it
do not.</t>
</list></t>

</section>
</section>
<section anchor="admission"><name>Admission as a Registration Policy</name>

<t><xref target="RFC9943"/> lets each Transparency Service define a Registration
Policy: the checks a Signed Statement must pass before it is
registered.  The CEG admission checks are such a policy.  A Substrate
<bcp14>MUST</bcp14> apply them, in any order, to every row before storing or relaying
it, and <bcp14>MUST</bcp14> refuse a failing row with the token given.  It <bcp14>MUST NOT</bcp14>
truncate, repair or re-encode a row in order to admit it.</t>

<texttable title="Admission checks">
      <ttcol align='left'>Check</ttcol>
      <ttcol align='left'>Refusal</ttcol>
      <c>Signing input at most 1 MiB</c>
      <c>ENVELOPE_TOO_LARGE</c>
      <c>Content hash matches</c>
      <c>(R) content_hash_mismatch</c>
      <c>Both signature parts verify</c>
      <c>SIGNATURE_VERIFICATION_FAILED</c>
      <c>Type is one of the five</c>
      <c>attestation_type_unregistered</c>
      <c>Mirror present</c>
      <c>(R) envelope_member_missing</c>
      <c>Mirror has no other member</c>
      <c>(R) envelope_row_member_unknown</c>
      <c>Columns equal the mirror</c>
      <c>(R) typed_diverges_from_envelope</c>
      <c>No optional member is <spanx style="verb">null</spanx></c>
      <c>(R) envelope_member_null</c>
      <c>Sets sorted and unique</c>
      <c>federation_set_semantics_unsorted</c>
      <c>Instants in canonical form</c>
      <c>(R) envelope_member_invalid</c>
      <c>Subject identifiers well formed</c>
      <c>(R) subject_key_id_malformed</c>
      <c>Termed delegation within 365 days</c>
      <c>delegation_term_required</c>
      <c>Withdrawal meets <xref target="withdraw-rule"/></c>
      <c>federation_withdraws_not_admitted</c>
      <c><spanx style="verb">dimension</spanx> resolves</c>
      <c>see <xref target="CC"/></c>
</texttable>

<t>"(R) r" means the token <spanx style="verb">federation_malformed_row</spanx> with reason r.</t>

<t>The namespace rules that decide whether a <spanx style="verb">dimension</spanx> resolves, and
their tokens, are defined in <xref target="CC"/> and are outside the scope of this
document.</t>

<section anchor="withdraw-rule"><name>Who May Withdraw a Row</name>

<t>A <spanx style="verb">withdraws</spanx> row against a target row T is admitted when its attester
meets any one of these rules:</t>

<t><list style="numbers" type="1">
  <t>It is T's attester.</t>
  <t>It appears in T's <spanx style="verb">subject_key_ids</spanx>.</t>
  <t>It holds an unexpired <spanx style="verb">delegates_to</spanx> chain whose scope includes
<spanx style="verb">consent_revocation</spanx>, from a canonical identifier that appears in
T's <spanx style="verb">subject_key_ids</spanx>.  This is how an agent holding data on behalf
of a party with no key can act on that party's request.</t>
  <t>It holds an unexpired <spanx style="verb">delegates_to</spanx> from a key that meets rule 1,
2 or 3.</t>
</list></t>

<t>Two further rules take precedence:</t>

<t><list style="symbols">
  <t>If T carries cosignatures, rules 1 to 4 do not apply.  T is withdrawn
only by a <spanx style="verb">withdraws</spanx> that is itself cosigned under T's quorum rule.</t>
  <t>A subject cannot use rules 2 to 4 to withdraw a third party's
adverse claim about itself, such as a detection or a licensing
decision.  <xref target="CC"/> lists the families this covers.  The subject's
route is to dispute the claim with a row of its own.</t>
</list></t>

<t>Recantation is not covered by these rules.  Only T's attester can
recant T.</t>

</section>
</section>
<section anchor="safety"><name>The Safety Model the Rows Carry</name>

<t>This section is informative.  <xref target="CC"/> is normative for every rule it
summarises, and the section numbers given are those of <xref target="CC"/>.</t>

<t>CEG serves a network with no central operator.  No party can enforce a
safety rule for the others, so each rule has to be carried by the rows
themselves and checked by each node on its own.  This section says
which member or check carries each property, and what is not claimed.</t>

<section anchor="two-planes"><name>Two Planes</name>

<t>The network has a public plane and a private plane.  The CIRIS
documents call them the lightnet and the darknet.</t>

<t>The identity plane (lightnet) is public.  Key records, announced
transport destinations and trust roots are visible to every node, and
the plane makes no anonymity claim.  A node attributes every inbound
message to a key before any handler sees it.  A device that has not
yet been bound to an owner can still open a connection, but only under
its own self-signed key, so it is unowned but never anonymous (CC 3.2).</t>

<t>The group plane (darknet) is derived from the identity plane.  Each
member of a family or community computes the group's address from
directory state it already holds (a per-group HKDF), so the address is
never announced and an outsider cannot map an address to a group or
fetch its content (CC 5.2, CC 5.4.6).  An observer of link traffic can
still see which node opens links to some derived address, and the
timing and size of that traffic (CC 5.4.6).  A node never announces
that it holds content scoped to a family or community outside that
group.  Members relay for members.</t>

</section>
<section anchor="consent-bounded-flow"><name>Consent-Bounded Flow</name>

<t>The rows apply the idea of contextual integrity: information flows
appropriately when the flow matches the norms of the context it came
from.  Each row signs its own context.  <spanx style="verb">attesting_key_id</spanx> says who
sent it, <spanx style="verb">attested_key_id</spanx> and <spanx style="verb">subject_key_ids</spanx> say whom it is about,
and <spanx style="verb">cohort_scope</spanx> says who may see it.  All of these are in the
mirror (<xref target="mirror"/>), so a relay cannot change them without breaking
the signature.</t>

<t>A Consumer accepts a row only if it trusts the attester's root or has
consented to receive from the attester, and a row reaches no one else
(CC 4.4.3.8).  A row defaults to the smallest scope that fits its
purpose; <spanx style="verb">federation</spanx> scope, the public commons, is an explicit choice
(CC 1.13.3.4).  Consent is itself a row, and a subject can withdraw a
row about itself (<xref target="withdraw-rule"/>).  Content in a private scope is
never scanned.  Known abuse images are checked for only when content
is moved to <spanx style="verb">federation</spanx> scope or posted to a public room (CC
1.13.3.4).</t>

</section>
<section anchor="accountable-key-relationships"><name>Accountable Key Relationships</name>

<t>Some parties cannot accept obligations for themselves.  The rows give
each of them a named human:</t>

<t><list style="symbols">
  <t>A key whose identity type includes <spanx style="verb">agent</spanx> or <spanx style="verb">node</spanx> <bcp14>MUST</bcp14> have a
steward: a human identity with a live <spanx style="verb">delegates_to</spanx> row binding the
key.  Without one, the key cannot be admitted to any family,
community or organisation.  It <bcp14>MAY</bcp14> trust and serve infrastructure
communities without a steward (CC 3.2).</t>
  <t>A minor has a guardian bound by a signed row (CC 3.4.13).</t>
  <t>A community has a named moderator at all times.  If the moderator
lapses, the most trusted member is promoted in the same step (CC
4.5.4).</t>
</list></t>

</section>
<section anchor="a-bounded-human-halt"><name>A Bounded Human Halt</name>

<t>A trust root names a small set of human holders.  Any one holder can
pause the agents that accepted that root with a single signed row.  A
pause by one holder lapses after 24 hours unless a majority of the
holders confirms it, and a majority ends it.  A pause stops agents from
acting; it does not touch stored data, messages or network service.  A root can tell a node to share less,
never more.  A node that never accepted the root is not affected, and
any node can leave a root by withdrawing one row (CC 4.2.1, CC 4.2.6).</t>

</section>
<section anchor="what-is-not-claimed"><name>What Is Not Claimed</name>

<t>Where <xref target="CC"/> speaks of anonymity, it means anonymity toward outsiders:
a group's existence, and what its members do in it, are hidden from
non-members.  Beyond that:</t>

<t><list style="symbols">
  <t>The identity plane is not anonymous.</t>
  <t>No multi-hop anonymity is provided today, and the deployed design
does not resist a global passive observer of traffic.  An opt-in
anonymous tier using onion routing is planned for deployments that
need that protection (CC 1.13.3.1).  It is not yet specified in
<xref target="CC"/> or shipped, and this document does not describe it.</t>
  <t>Members of a group can read, and keep, what the group shares.
Ballots within a group are accountable to its members, not secret
from them.</t>
  <t>Nothing is detected inside private groups.  The design declines
client-side scanning.</t>
</list></t>

</section>
</section>
<section anchor="scitt"><name>Relationship to SCITT</name>

<t>This section is informative.</t>

<section anchor="roles"><name>Roles</name>

<texttable title="SCITT roles and their CEG counterparts">
      <ttcol align='left'>SCITT role ()</ttcol>
      <ttcol align='left'>CEG counterpart</ttcol>
      <c>Issuer</c>
      <c>The attester.</c>
      <c>Signed Statement</c>
      <c>A row: its signed object and the hybrid signature.</c>
      <c>Registration Policy</c>
      <c>The admission checks of <xref target="admission"/>.</c>
      <c>Transparency Service</c>
      <c>A Substrate with its RFC 6962 logs <xref target="RFC6962"/>.</c>
      <c>Receipt</c>
      <c>No direct counterpart; see <xref target="deltas"/>.</c>
      <c>Relying Party</c>
      <c>A Consumer.</c>
</texttable>

</section>
<section anchor="deltas"><name>Differences</name>

<dl>
  <dt>Encoding.</dt>
  <dd>
    <t><xref target="RFC9943"/> requires Signed Statements to be COSE_Sign1 <xref target="RFC9052"/>
messages with an Issuer and a subject in the protected header.  CEG
rows are JSON with a JCS signing input, so a CEG row is not a SCITT
Signed Statement.  A profile that carried CEG rows
through a SCITT service would wrap the signing input, or its hash, in
a COSE_Sign1.  ML-DSA-65 now has a COSE algorithm identifier
<xref target="RFC9964"/>, but the nested pair of <xref target="sig"/> has none, so such a
profile would either carry two COSE signatures or change the
construction.  No such profile is defined.</t>
  </dd>
  <dt>Registration Policy.</dt>
  <dd>
    <t><xref target="RFC9943"/> has the Transparency Service evaluate its policy over the
COSE headers and requires the policy itself to be registered, so that
Auditors can reproduce the decision.  The CEG checks read the whole
signed object, and they are fixed by <xref target="CC"/> rather than registered as
statements.  Any party can reproduce an admission decision from the
row and the checks, but the checks are not themselves on the log.</t>
  </dd>
  <dt>Receipts.</dt>
  <dd>
    <t>A SCITT Receipt is a proof of inclusion, issued at registration and
signed by the service, that the holder can present without the log.
A CEG Substrate keeps RFC 6962 logs and returns inclusion and
consistency proofs on request, against the current or a named tree
size, but it does not issue a receipt when a row is admitted and
does not store one with the row.  The logs exist so that a node
cannot show different histories to different peers, and so that any
holder of the rows can recompute them.  Issuing a COSE Receipt
<xref target="RFC9942"/> at admission, against a
witness-cosigned tree head, would close this gap.  It is not
specified.</t>
  </dd>
  <dt>Witnesses.</dt>
  <dd>
    <t>At the time of writing, the tree heads of deployed Substrates are
signed by a single key.  <xref target="CC"/> defines witness cosignature of tree
heads and of trust-root lineages, but deployed roots have it turned
off.  A single
signer can therefore equivocate between two forks until a peer
compares heads.</t>
  </dd>
  <dt>Statement content.</dt>
  <dd>
    <t>SCITT leaves the meaning of a statement to its issuer.  CEG fixes the
five row types and requires every claim to name a registered
dimension, so a Consumer can interpret any admitted row without
out-of-band agreement.</t>
  </dd>
</dl>

</section>
</section>
<section anchor="lifecycle"><name>Lifecycle of an Agent Decision</name>

<t>This section is informative.</t>

<t>Several individual SCITT drafts record AI agent actions as a sequence
of statements: an authorisation before the act, a record of the act,
and a refusal where the agent declined.  In CEG the same events are
rows.  The reasoning steps before an act are rows in the decision
families of <xref target="CC"/>.  The act is recorded by one row whose dimension is
<spanx style="verb">trace:complete:v1</spanx>, ending in a terminal result.  A completed action,
a refusal, and a deferral to a human are the same kind of row with
different terminal results, so a Consumer reads all three the same
way.  Authority to act, and any transfer of it, is a <spanx style="verb">delegates_to</spanx>
row.</t>

</section>
<section anchor="open"><name>Open Issues</name>

<t>Note to the RFC Editor: please remove this section before publication.</t>

<t><list style="symbols">
  <t>CIRISPersist does not yet refuse an unsorted or duplicated
<spanx style="verb">subject_key_ids</spanx> set at admission, and does not yet emit the reasons
<spanx style="verb">content_hash_mismatch</spanx>, <spanx style="verb">envelope_row_member_unknown</spanx> and
<spanx style="verb">subject_key_id_malformed</spanx>, which <xref target="CC"/> named on 2026-10-21
(<xref target="implementation-status"/>).</t>
  <t>No COSE encoding of a row is defined (<xref target="deltas"/>).</t>
  <t>No second implementation exists (<xref target="implementation-status"/>).</t>
</list></t>

</section>
<section anchor="implementation-status"><name>Implementation Status</name>

<t>Note to the RFC Editor: please remove this section before publication,
together with the reference to <xref target="RFC7942"/>.</t>

<t>This section records the status of known implementations at the time
of writing, as described in <xref target="RFC7942"/>.  Listing an implementation
here does not imply endorsement.</t>

<dl>
  <dt>CIRISPersist:</dt>
  <dd>
    <t>The storage and admission engine (Rust), CIRIS L3C, AGPL-3.0.
Release v59.1.0 implements the signed object, the mirror checks, the
hybrid signature and <spanx style="verb">additional_scrubs</spanx>.  It does not yet refuse an
unsorted or duplicated <spanx style="verb">subject_key_ids</spanx> set at admission.
<eref target="https://github.com/CIRISAI/CIRISPersist">https://github.com/CIRISAI/CIRISPersist</eref></t>
  </dd>
  <dt>CIRISVerify:</dt>
  <dd>
    <t>Verification library (Rust), CIRIS L3C, AGPL-3.0.  Provides the JCS
implementation, the hybrid signer and verifier, and the RFC 6962
proofs.  The test vectors in <xref target="vectors"/> were produced with it.
<eref target="https://github.com/CIRISAI/CIRISVerify">https://github.com/CIRISAI/CIRISVerify</eref></t>
  </dd>
  <dt>Reference vectors:</dt>
  <dd>
    <t><xref target="CC-VECTORS"/>: thirteen vectors, recomputed in continuous
integration by an independent Python implementation of JCS and
Ed25519 verification.</t>
  </dd>
</dl>

<t>No second, independent implementation of the full signing and
admission path exists yet.</t>

</section>
<section anchor="security-considerations"><name>Security Considerations</name>

<t>This section follows the guidance of <xref target="RFC3552"/>.</t>

<dl>
  <dt>Canonical form.</dt>
  <dd>
    <t>Every rule in <xref target="canon"/> closes a case in which a Producer and a
Consumer that both follow JCS compute different bytes.  The
mismatch shows up only as a failed signature, with nothing to say
which rule was broken.
Implementations should test against the vectors in <xref target="vectors"/>, and
in particular against arrays, base64 variants and instants.</t>
  </dd>
  <dt>What the signature covers.</dt>
  <dd>
    <t>Only the signed object is signed.  The mirror rule exists because the
columns beside a row decide who a row is about and who may read it;
an implementation that indexes those columns without checking them
against the mirror lets a relay redirect a validly signed row.</t>
  </dd>
  <dt>Hybrid signature.</dt>
  <dd>
    <t>A forger must produce both an Ed25519 signature over the signing
input and an ML-DSA-65 signature over the signing input and that
Ed25519 signature, but only against a verifier that checks both.
<xref target="RFC9955"/> notes that a verifier of a nested hybrid can be led to
check only one part.  A verifier that accepts Ed25519 alone gives no
protection against an attacker able to forge Ed25519, and an attacker
can always remove the ML-DSA-65 part of a row.  For this reason the
federation tier refuses a row without both parts and has no setting
that relaxes the check.  Rows below the federation tier <bcp14>MAY</bcp14> lack the
ML-DSA-65 part and have only classical strength.</t>
  </dd>
  <dt>Short fingerprints.</dt>
  <dd>
    <t>The key_id fingerprint is 50 bits.  It is an identifier for lookup,
not a commitment to a key.  A verifier must use the full public key
from its directory, and must check that the key's digest matches the
fingerprint, as <xref target="sig"/> requires.</t>
  </dd>
  <dt>Withdrawal.</dt>
  <dd>
    <t>The withdrawal rules let parties other than the attester retract a
row.  The precedence rules in <xref target="withdraw-rule"/> stop a subject from
removing adverse findings about itself, and stop any single key from
undoing a quorum's act.</t>
  </dd>
  <dt>Single-signer logs.</dt>
  <dd>
    <t>Until witness cosignature is on, a Substrate's log head is signed by
one key, and a Substrate can show different histories to different
peers until the heads are compared (<xref target="deltas"/>).</t>
  </dd>
  <dt>Size.</dt>
  <dd>
    <t>The 1 MiB limit applies after parsing.  An implementation that reads
an unbounded input in order to find out whether it fits is open to
memory exhaustion; each intake path needs its own read limit.</t>
  </dd>
</dl>

</section>
<section anchor="privacy-considerations"><name>Privacy Considerations</name>

<t>This section follows the guidance of <xref target="RFC6973"/>.</t>

<dl>
  <dt>Labels in key identifiers.</dt>
  <dd>
    <t>The label of a key_id is chosen by its holder and is sent in clear
wherever the key_id appears.  A label such as a person's device name
reveals that name to every node that sees a row.  For this reason a
key revocation names the revoked key by the digest of its public key,
not by its key_id.</t>
  </dd>
  <dt>Subjects without keys.</dt>
  <dd>
    <t>A canonical identifier is a hash of a platform, entity kind and
identifier.  Where the identifier space is small, the hash can be
reversed by enumeration.</t>
  </dd>
  <dt>Audience.</dt>
  <dd>
    <t><spanx style="verb">cohort_scope</spanx> limits which nodes may receive a row.  It is signed,
through the mirror, so a relay cannot widen it.  It does not
encrypt the row; a node inside the audience can read and keep it.</t>
  </dd>
  <dt>Withdrawal is not erasure.</dt>
  <dd>
    <t>A <spanx style="verb">withdraws</spanx> row stops a claim from standing.  It does not remove
the original row from nodes that already hold it.  <xref target="CC"/> defines a
separate removal procedure.</t>
  </dd>
</dl>

</section>
<section anchor="iana-considerations"><name>IANA Considerations</name>

<t>This document has no IANA actions.</t>

</section>


  </middle>

  <back>


<references title='References' anchor="sec-combined-references">

    <references title='Normative References' anchor="sec-normative-references">



<reference anchor="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">
  <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>

<reference anchor="RFC8259">
  <front>
    <title>The JavaScript Object Notation (JSON) Data Interchange Format</title>
    <author fullname="T. Bray" initials="T." role="editor" surname="Bray"/>
    <date month="December" year="2017"/>
    <abstract>
      <t>JavaScript Object Notation (JSON) is a lightweight, text-based, language-independent data interchange format. It was derived from the ECMAScript Programming Language Standard. JSON defines a small set of formatting rules for the portable representation of structured data.</t>
      <t>This document removes inconsistencies with other specifications of JSON, repairs specification errors, and offers experience-based interoperability guidance.</t>
    </abstract>
  </front>
  <seriesInfo name="STD" value="90"/>
  <seriesInfo name="RFC" value="8259"/>
  <seriesInfo name="DOI" value="10.17487/RFC8259"/>
</reference>

<reference anchor="RFC8785">
  <front>
    <title>JSON Canonicalization Scheme (JCS)</title>
    <author fullname="A. Rundgren" initials="A." surname="Rundgren"/>
    <author fullname="B. Jordan" initials="B." surname="Jordan"/>
    <author fullname="S. Erdtman" initials="S." surname="Erdtman"/>
    <date month="June" year="2020"/>
    <abstract>
      <t>Cryptographic operations like hashing and signing need the data to be expressed in an invariant format so that the operations are reliably repeatable. One way to address this is to create a canonical representation of the data. Canonicalization also permits data to be exchanged in its original form on the "wire" while cryptographic operations performed on the canonicalized counterpart of the data in the producer and consumer endpoints generate consistent results.</t>
      <t>This document describes the JSON Canonicalization Scheme (JCS). This specification defines how to create a canonical representation of JSON data by building on the strict serialization methods for JSON primitives defined by ECMAScript, constraining JSON data to the Internet JSON (I-JSON) subset, and by using deterministic property sorting.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8785"/>
  <seriesInfo name="DOI" value="10.17487/RFC8785"/>
</reference>

<reference anchor="RFC8032">
  <front>
    <title>Edwards-Curve Digital Signature Algorithm (EdDSA)</title>
    <author fullname="S. Josefsson" initials="S." surname="Josefsson"/>
    <author fullname="I. Liusvaara" initials="I." surname="Liusvaara"/>
    <date month="January" year="2017"/>
    <abstract>
      <t>This document describes elliptic curve signature scheme Edwards-curve Digital Signature Algorithm (EdDSA). The algorithm is instantiated with recommended parameters for the edwards25519 and edwards448 curves. An example implementation and test vectors are provided.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8032"/>
  <seriesInfo name="DOI" value="10.17487/RFC8032"/>
</reference>

<reference anchor="RFC4648">
  <front>
    <title>The Base16, Base32, and Base64 Data Encodings</title>
    <author fullname="S. Josefsson" initials="S." surname="Josefsson"/>
    <date month="October" year="2006"/>
    <abstract>
      <t>This document describes the commonly used base 64, base 32, and base 16 encoding schemes. It also discusses the use of line-feeds in encoded data, use of padding in encoded data, use of non-alphabet characters in encoded data, use of different encoding alphabets, and canonical encodings. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="4648"/>
  <seriesInfo name="DOI" value="10.17487/RFC4648"/>
</reference>

<reference anchor="RFC3339">
  <front>
    <title>Date and Time on the Internet: Timestamps</title>
    <author fullname="G. Klyne" initials="G." surname="Klyne"/>
    <author fullname="C. Newman" initials="C." surname="Newman"/>
    <date month="July" year="2002"/>
    <abstract>
      <t>This document defines a date and time format for use in Internet protocols that is a profile of the ISO 8601 standard for representation of dates and times using the Gregorian calendar.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="3339"/>
  <seriesInfo name="DOI" value="10.17487/RFC3339"/>
</reference>

<reference anchor="RFC9562">
  <front>
    <title>Universally Unique IDentifiers (UUIDs)</title>
    <author fullname="K. Davis" initials="K." surname="Davis"/>
    <author fullname="B. Peabody" initials="B." surname="Peabody"/>
    <author fullname="P. Leach" initials="P." surname="Leach"/>
    <date month="May" year="2024"/>
    <abstract>
      <t>This specification defines UUIDs (Universally Unique IDentifiers) --
also known as GUIDs (Globally Unique IDentifiers) -- and a Uniform
Resource Name namespace for UUIDs. A UUID is 128 bits long and is
intended to guarantee uniqueness across space and time. UUIDs were
originally used in the Apollo Network Computing System (NCS), later
in the Open Software Foundation's (OSF's) Distributed Computing
Environment (DCE), and then in Microsoft Windows platforms.</t>
      <t>This specification is derived from the OSF DCE specification with the
kind permission of the OSF (now known as "The Open Group"). Information from earlier versions of the OSF DCE specification have
been incorporated into this document. This document obsoletes RFC
4122.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9562"/>
  <seriesInfo name="DOI" value="10.17487/RFC9562"/>
</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="RFC9943">
  <front>
    <title>An Architecture for Trustworthy and Transparent Digital Supply Chains</title>
    <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
    <author fullname="A. Delignat-Lavaud" initials="A." surname="Delignat-Lavaud"/>
    <author fullname="C. Fournet" initials="C." surname="Fournet"/>
    <author fullname="Y. Deshpande" initials="Y." surname="Deshpande"/>
    <author fullname="S. Lasker" initials="S." surname="Lasker"/>
    <date month="June" year="2026"/>
    <abstract>
      <t>Traceability in supply chains is a growing security concern. While Verifiable Data Structures (VDSs) have addressed specific issues, such as equivocation over digital certificates, they lack a universal architecture for all supply chains. This document defines such an architecture for single-issuer signed statement transparency. It ensures extensibility and interoperability between different transparency services as well as compliance with various auditing procedures and regulatory requirements.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9943"/>
  <seriesInfo name="DOI" value="10.17487/RFC9943"/>
</reference>


<reference anchor="FIPS204" >
  <front>
    <title>Module-Lattice-Based Digital Signature Standard</title>
    <author >
      <organization>National Institute of Standards and Technology</organization>
    </author>
    <date year="2024" month="August"/>
  </front>
  <seriesInfo name="FIPS" value="204"/>
  <seriesInfo name="DOI" value="10.6028/NIST.FIPS.204"/>
</reference>


    </references>

    <references title='Informative References' anchor="sec-informative-references">



<reference anchor="RFC6962">
  <front>
    <title>Certificate Transparency</title>
    <author fullname="B. Laurie" initials="B." surname="Laurie"/>
    <author fullname="A. Langley" initials="A." surname="Langley"/>
    <author fullname="E. Kasper" initials="E." surname="Kasper"/>
    <date month="June" year="2013"/>
    <abstract>
      <t>This document describes an experimental protocol for publicly logging the existence of Transport Layer Security (TLS) certificates as they are issued or observed, in a manner that allows anyone to audit certificate authority (CA) activity and notice the issuance of suspect certificates as well as to audit the certificate logs themselves. The intent is that eventually clients would refuse to honor certificates that do not appear in a log, effectively forcing CAs to add all issued certificates to the logs.</t>
      <t>Logs are network services that implement the protocol operations for submissions and queries that are defined in this document.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="6962"/>
  <seriesInfo name="DOI" value="10.17487/RFC6962"/>
</reference>

<reference anchor="RFC7942">
  <front>
    <title>Improving Awareness of Running Code: The Implementation Status Section</title>
    <author fullname="Y. Sheffer" initials="Y." surname="Sheffer"/>
    <author fullname="A. Farrel" initials="A." surname="Farrel"/>
    <date month="July" year="2016"/>
    <abstract>
      <t>This document describes a simple process that allows authors of Internet-Drafts to record the status of known implementations by including an Implementation Status section. This will allow reviewers and working groups to assign due consideration to documents that have the benefit of running code, which may serve as evidence of valuable experimentation and feedback that have made the implemented protocols more mature.</t>
      <t>This process is not mandatory. Authors of Internet-Drafts are encouraged to consider using the process for their documents, and working groups are invited to think about applying the process to all of their protocol specifications. This document obsoletes RFC 6982, advancing it to a Best Current Practice.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="205"/>
  <seriesInfo name="RFC" value="7942"/>
  <seriesInfo name="DOI" value="10.17487/RFC7942"/>
</reference>

<reference anchor="RFC9052">
  <front>
    <title>CBOR Object Signing and Encryption (COSE): Structures and Process</title>
    <author fullname="J. Schaad" initials="J." surname="Schaad"/>
    <date month="August" year="2022"/>
    <abstract>
      <t>Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size. There is a need to be able to define basic security services for this data format. This document defines the CBOR Object Signing and Encryption (COSE) protocol. This specification describes how to create and process signatures, message authentication codes, and encryption using CBOR for serialization. This specification additionally describes how to represent cryptographic keys using CBOR.</t>
      <t>This document, along with RFC 9053, obsoletes RFC 8152.</t>
    </abstract>
  </front>
  <seriesInfo name="STD" value="96"/>
  <seriesInfo name="RFC" value="9052"/>
  <seriesInfo name="DOI" value="10.17487/RFC9052"/>
</reference>

<reference anchor="RFC3552">
  <front>
    <title>Guidelines for Writing RFC Text on Security Considerations</title>
    <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
    <author fullname="B. Korver" initials="B." surname="Korver"/>
    <date month="July" year="2003"/>
    <abstract>
      <t>All RFCs are required to have a Security Considerations section. Historically, such sections have been relatively weak. This document provides guidelines to RFC authors on how to write a good Security Considerations section. 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="72"/>
  <seriesInfo name="RFC" value="3552"/>
  <seriesInfo name="DOI" value="10.17487/RFC3552"/>
</reference>

<reference anchor="RFC6973">
  <front>
    <title>Privacy Considerations for Internet Protocols</title>
    <author fullname="A. Cooper" initials="A." surname="Cooper"/>
    <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
    <author fullname="B. Aboba" initials="B." surname="Aboba"/>
    <author fullname="J. Peterson" initials="J." surname="Peterson"/>
    <author fullname="J. Morris" initials="J." surname="Morris"/>
    <author fullname="M. Hansen" initials="M." surname="Hansen"/>
    <author fullname="R. Smith" initials="R." surname="Smith"/>
    <date month="July" year="2013"/>
    <abstract>
      <t>This document offers guidance for developing privacy considerations for inclusion in protocol specifications. It aims to make designers, implementers, and users of Internet protocols aware of privacy-related design choices. It suggests that whether any individual RFC warrants a specific privacy considerations section will depend on the document's content.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="6973"/>
  <seriesInfo name="DOI" value="10.17487/RFC6973"/>
</reference>

<reference anchor="RFC9794">
  <front>
    <title>Terminology for Post-Quantum Traditional Hybrid Schemes</title>
    <author fullname="F. Driscoll" initials="F." surname="Driscoll"/>
    <author fullname="M. Parsons" initials="M." surname="Parsons"/>
    <author fullname="B. Hale" initials="B." surname="Hale"/>
    <date month="June" year="2025"/>
    <abstract>
      <t>One aspect of the transition to post-quantum algorithms in cryptographic protocols is the development of hybrid schemes that incorporate both post-quantum and traditional asymmetric algorithms. This document defines terminology for such schemes. It is intended to be used as a reference and, hopefully, to ensure consistency and clarity across different protocols, standards, and organisations.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9794"/>
  <seriesInfo name="DOI" value="10.17487/RFC9794"/>
</reference>

<reference anchor="RFC9942">
  <front>
    <title>CBOR Object Signing and Encryption (COSE) Receipts</title>
    <author fullname="O. Steele" initials="O." surname="Steele"/>
    <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
    <author fullname="A. Delignat-Lavaud" initials="A." surname="Delignat-Lavaud"/>
    <author fullname="C. Fournet" initials="C." surname="Fournet"/>
    <date month="June" year="2026"/>
    <abstract>
      <t>CBOR Object Signing and Encryption (COSE) Receipts prove properties of a Verifiable Data Structure (VDS) to a verifier. VDSs and associated Proof Types enable security properties, such as minimal disclosure, transparency, and non-equivocation. Transparency helps maintain trust over time and has been applied to certificates, end-to-end encrypted messaging systems, and supply chain security. This specification enables concise transparency-oriented systems by building on Concise Binary Object Representation (CBOR) and COSE. The extensibility of the approach is demonstrated by providing CBOR encodings for Merkle inclusion and consistency proofs.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9942"/>
  <seriesInfo name="DOI" value="10.17487/RFC9942"/>
</reference>

<reference anchor="RFC9955">
  <front>
    <title>Hybrid Signature Spectrums</title>
    <author fullname="N. Bindel" initials="N." surname="Bindel"/>
    <author fullname="B. Hale" initials="B." surname="Hale"/>
    <author fullname="D. Connolly" initials="D." surname="Connolly"/>
    <author fullname="F. Driscoll" initials="F." surname="Driscoll"/>
    <date month="July" year="2026"/>
    <abstract>
      <t>This document describes classification of design goals and security considerations for hybrid digital signature schemes, including proof composability, non-separability of the component signatures given a hybrid signature, backwards and forwards compatibility, hybrid generality, and Simultaneous Verification (SV).</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9955"/>
  <seriesInfo name="DOI" value="10.17487/RFC9955"/>
</reference>

<reference anchor="RFC9964">
  <front>
    <title>ML-DSA for JSON Object Signing and Encryption (JOSE) and CBOR Object Signing and Encryption (COSE)</title>
    <author fullname="M. Prorock" initials="M." surname="Prorock"/>
    <author fullname="O. Steele" initials="O." surname="Steele"/>
    <date month="May" year="2026"/>
    <abstract>
      <t>This document specifies JSON Object Signing and Encryption (JOSE) and CBOR Object Signing and Encryption (COSE) serializations for the Module-Lattice-Based Digital Signature Standard (ML-DSA), a Post-Quantum Cryptography (PQC) digital signature scheme defined in US NIST FIPS 204.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9964"/>
  <seriesInfo name="DOI" value="10.17487/RFC9964"/>
</reference>


<reference anchor="I-D.ietf-lamps-pq-composite-sigs">
   <front>
      <title>Composite Module-Lattice-Based Digital Signature Algorithm (ML-DSA) for use in X.509 Public Key Infrastructure</title>
      <author fullname="Mike Ounsworth" initials="M." surname="Ounsworth">
         <organization>Entrust Limited</organization>
      </author>
      <author fullname="John Gray" initials="J." surname="Gray">
         <organization>Entrust Limited</organization>
      </author>
      <author fullname="Massimiliano Pala" initials="M." surname="Pala">
         <organization>OpenCA Labs</organization>
      </author>
      <author fullname="Jan Klaußner" initials="J." surname="Klaußner">
         <organization>Bundesdruckerei GmbH</organization>
      </author>
      <author fullname="Scott Fluhrer" initials="S." surname="Fluhrer">
         <organization>Cisco Systems</organization>
      </author>
      <date day="21" month="April" year="2026"/>
      <abstract>
	 <t>   This document defines combinations of US NIST Module-Lattice-Based
   Digital Signature Algorithm (ML-DSA) in hybrid with traditional
   algorithms RSASSA-PKCS1-v1.5, RSASSA-PSS, ECDSA, Ed25519, and Ed448.
   These combinations are tailored to meet regulatory guidelines in
   certain regions.  Composite ML-DSA is applicable in applications that
   use X.509 or PKIX data structures that accept ML-DSA, but where the
   operator wants extra protection against breaks or catastrophic bugs
   in ML-DSA, and where existential unforgeability (EUF-CMA) level
   security is acceptable.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-ietf-lamps-pq-composite-sigs-19"/>
   
</reference>


<reference anchor="I-D.ietf-jose-pq-composite-sigs">
   <front>
      <title>PQ/T Hybrid Composite Signatures for JOSE and COSE</title>
      <author fullname="Lucas Prabel" initials="L." surname="Prabel">
         <organization>Huawei</organization>
      </author>
      <author fullname="Sun Shuzhou" initials="S." surname="Shuzhou">
         <organization>Huawei</organization>
      </author>
      <author fullname="John Gray" initials="J." surname="Gray">
         <organization>Entrust Limited</organization>
      </author>
      <author fullname="Tirumaleswar Reddy.K" initials="T." surname="Reddy.K">
         <organization>Nokia</organization>
      </author>
      <date day="20" month="October" year="2026"/>
      <abstract>
	 <t>   This document describes JSON Object Signing and Encryption (JOSE) and
   CBOR Object Signing and Encryption (COSE) serializations for Post-
   Quantum Traditional (PQ/T) hybrid composite signatures.  The
   composite algorithms described combine the Module-Lattice-Based
   Digital Signature Algorithm (ML-DSA) as the post-quantum component
   and either the Elliptic Curve Digital Signature Algorithm (ECDSA) or
   the Edwards-Curve Digital Signature Algorithm (EdDSA) as the
   traditional component.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-ietf-jose-pq-composite-sigs-06"/>
   
</reference>


<reference anchor="CC" target="https://github.com/CIRISAI/CIRISConstitution/tree/v1.0-rc9">
  <front>
    <title>CIRIS Constitution 1.0-rc9</title>
    <author >
      <organization>CIRIS L3C</organization>
    </author>
    <date year="2026" month="October" day="21"/>
  </front>
</reference>
<reference anchor="CC-VECTORS" target="https://github.com/CIRISAI/CIRISConstitution/blob/v1.0-rc9/manifests/signed_object_vectors.json">
  <front>
    <title>CIRIS Constitution signed object test vectors</title>
    <author >
      <organization>CIRIS L3C</organization>
    </author>
    <date year="2026" month="October" day="21"/>
  </front>
</reference>


    </references>

</references>


<?line 902?>

<section anchor="cddl"><name>CDDL</name>

<t>The following CDDL <xref target="RFC8610"/> describes the row, the signed object,
the mirror, a cosignature entry, and a key record.  It uses the JSON
interpretation of CDDL.  It is generated from the same table as the
normative text of <xref target="CC"/>.</t>

<figure><sourcecode type="cddl"><![CDATA[
; CC 2.6.1.7 - the signed object. GENERATED by
; tools/build_cc_signed_object.py from
; constitution/signed_object.tsv; do not edit. RFC 8610 CDDL, JSON
; profile (Appendix E).
; Typed from CIRISPersist 32512f52 src/federation/envelope.rs.
; The signing input is JCS(attestation-row.attestation_envelope), RFC
; 8785, and nothing else.

attestation-row = {
  attestation_id: uuid,  ; REQUIRED
  attesting_key_id: key-id,  ; REQUIRED
  attested_key_id: key-id,  ; REQUIRED
  attestation_type: row-type,  ; REQUIRED
  ? weight: number,  ; OPTIONAL; default absent
  asserted_at: rfc3339,  ; REQUIRED
  ? expires_at: rfc3339,  ; OPTIONAL; default absent
  ; OPTIONAL (absent when empty); default absent; array kind: set
  ? subject_key_ids: [* subject-id],
  cohort_scope: cohort-scope,  ; REQUIRED; default federation
  attestation_envelope: envelope,  ; REQUIRED
  original_content_hash: hex64,  ; REQUIRED
  ; OPTIONAL (absent when empty); default absent; array kind:
  ; sequence
  ? additional_scrubs: [* scrub-sig],
  ; OPTIONAL (store-computed; absent on a row as emitted)
  ? persist_row_hash: hex64,
  scrub_signature_classical: base64,  ; REQUIRED
  ? scrub_signature_pqc: base64,  ; REQUIRED at the federation tier
  scrub_key_id: key-id,  ; REQUIRED
  scrub_timestamp: rfc3339,  ; REQUIRED
  ? pqc_completed_at: rfc3339,  ; OPTIONAL
  ; persist-internal members (tier, promoted_at,
  ; withdraws_admission_rule) are not part of this contract
}

; The signed object. Member presence is exactly what the producer
; signed (CC 2.6.1.1):
; an absent optional member is absent, never materialised; unknown
; members are preserved (CC 2.1.1).
envelope = {
  ; REQUIRED; the closed mirror of the seven columns beside the row
  row: row-mirror,
  asserted_at: rfc3339-ms,  ; REQUIRED; default stamped at the mint
  ? expires_at: rfc3339-ms,  ; OPTIONAL; default absent (no expiry)
  dimension: tstr,  ; REQUIRED on every row type
  ; REQUIRED on supersedes, withdraws, recants
  ? references_attestation_id: uuid,
  ; REQUIRED on consent:state:granted and on delegates_to; array
  ; kind: set
  ? scope: tstr / [* tstr],
  ; OPTIONAL (charter); default absent
  ? pre_rotation_commitment: hex64,
  ; REQUIRED on a charter recovery; default absent
  ? recovers: key-id,
  ; REQUIRED on a charter recovery; default absent; array kind: set
  ? successor_keys: [* key-id],
  ? withdrawal_reason: tstr,  ; OPTIONAL on withdraws; default absent
  ; OPTIONAL on consent:state:*; default absent
  ? consent_supersedes: uuid,
  ? delivery_mode: "pull" / "push",  ; OPTIONAL; default pull
  ? deletion_window: tstr,  ; OPTIONAL; default absent
  ? listed: "public",  ; OPTIONAL; default absent (private roster)
  ? media: { * tstr => any },  ; OPTIONAL; default absent
  ; REQUIRED on a widening supersedes, absent otherwise; default
  ; absent
  ? widened_at: rfc3339-ms,
  ? accord_root: key-id,  ; REQUIRED on accord:* rows; default absent
  ; OPTIONAL on trust:charter:v1; default absent (anchor only)
  ? attach_window_secs: uint,
  ; REQUIRED on a witnessed lineage's charter; default absent
  ? witness_cadence_secs: uint,
  ; REQUIRED on a witnessed lineage's charter; default absent (= 0,
  ; witnessed mode off)
  ? witness_quorum: uint,
  ? attached_head_digest: hex64,  ; REQUIRED on trust:accepts:v1
  ; REQUIRED on the accord's charter
  ? recovery_commitments: { * key-id => hex64 },
  ? score: number,  ; REQUIRED on scores
  ? confidence: number,  ; REQUIRED on scores
  ? context: tstr,  ; OPTIONAL; default absent
  ; OPTIONAL (some families require it); default absent; array kind:
  ; sequence
  ? evidence_refs: [* tstr],
  ? valid_until: rfc3339-ms,  ; OPTIONAL; default absent
  ; OPTIONAL; default direct
  ? epistemic_mode: "direct" / "crypto" / "hearsay" / "derivative"
    / "appeal",
  ; OPTIONAL; default external
  ? witness_relation: "self" / "external" / "derived",
  ; OPTIONAL; default absent (per-cell default)
  ? oversight_mode: "HITL" / "HOTL" / "HOOTL",
  ; OPTIONAL; default absent (read as occurrence-0)
  ? occurrence_id: tstr,
  ? occurrence_count: uint,  ; OPTIONAL; default absent (read as 1)
  ; OPTIONAL; default absent (read as primary)
  ? occurrence_role: "primary" / "shared" / "replica",
  ; OPTIONAL; default reputational
  ? stake: "free" / "reputational" / "capital" / "cryptoeconomic",
  ; REQUIRED iff cohort_scope is community or affiliations
  ? community_id: key-id,
  ? family_id: key-id,  ; REQUIRED iff cohort_scope is family
  ? session_id: tstr,  ; REQUIRED on session:*
  ? claimed_at: rfc3339-ms,  ; REQUIRED on session:*
  ? custody_state: "here" / "none",  ; REQUIRED on custody:ack
  ; REQUIRED on membership:proposal
  ? group_kind: "family" / "community",
  ; OPTIONAL on membership:proposal, restated on
  ; membership:acceptance; default absent
  ? role: tstr,
  ; REQUIRED on membership:acceptance and membership:decline
  ? proposal_hash: hex64,
  ; OPTIONAL on moderation:*; default absent
  ? subject_sha256_ed25519_raw: hex64,
  ; OPTIONAL on the accord's charter; default 86400 (a constant of
  ; this document)
  ? halt_fuse_secs: uint,
  ; REQUIRED on a witnessed lineage's charter; array kind: set
  ? witnesses: [* key-record],
  ; OPTIONAL; default from_join
  ? history_on_join: "full" / "from_join",
  ; OPTIONAL on supersedes; default absent
  ? supersession_reason: tstr,
  ; OPTIONAL on supersedes; a widening lists cohort_scope; default
  ; absent; array kind: set
  ? differs_in: [* tstr],
  ? recantation_reason: tstr,  ; OPTIONAL on recants; default absent
  ? what_was_false: tstr,  ; OPTIONAL on recants; default absent
  ; OPTIONAL on delegates_to; default absent
  ? delegation_purpose: tstr,
  ; OPTIONAL on delegates_to; default the edge's asserted_at
  ? delegation_valid_from: rfc3339-ms,
  ; REQUIRED on a termed delegates_to (CC 2.4.1), otherwise OPTIONAL;
  ; default absent (open-ended)
  ? delegation_valid_until: rfc3339-ms,
  ; family payload members (CC 3.3) and anything a consumer has not
  ; learned yet
  * tstr => any,
}

; Closed: exactly these seven members (CIRISPersist#643).
; deny_unknown_fields.
row-mirror = {
  attestation_id: uuid,  ; REQUIRED
  attesting_key_id: key-id,  ; REQUIRED
  attestation_type: row-type,  ; REQUIRED
  attested_key_id: key-id,  ; REQUIRED; default the attester
  ; REQUIRED (may be empty); default []; array kind: set
  subject_key_ids: [* subject-id],
  cohort_scope: cohort-scope,  ; REQUIRED; default federation
  ? weight: number,  ; OPTIONAL; default absent
}

scrub-sig = {
  scrub_key_id: key-id,  ; REQUIRED
  scrub_signature_classical: base64,  ; REQUIRED
  ? scrub_signature_pqc: base64,  ; REQUIRED at the federation tier
  ? cosigned_at: rfc3339-ms,  ; OPTIONAL; default absent
}

key-record = {
  key_id: key-id,  ; REQUIRED
  pubkey_ed25519_base64: base64,  ; REQUIRED
  ? pubkey_ml_dsa_65_base64: base64,  ; REQUIRED for algorithm hybrid
  algorithm: tstr,  ; REQUIRED
  identity_type: tstr,  ; REQUIRED
  identity_ref: tstr,  ; REQUIRED
  valid_from: rfc3339,  ; REQUIRED
  ? valid_until: rfc3339,  ; OPTIONAL; default absent
  registration_envelope: { * tstr => any },  ; REQUIRED
  original_content_hash: hex64,  ; REQUIRED
  scrub_signature_classical: base64,  ; REQUIRED
  ? scrub_signature_pqc: base64,  ; REQUIRED once hybrid-complete
  scrub_key_id: key-id,  ; REQUIRED
  scrub_timestamp: rfc3339,  ; REQUIRED
  ? pqc_completed_at: rfc3339,  ; OPTIONAL
  persist_row_hash: hex64,  ; REQUIRED
  ? roles: [* tstr],  ; OPTIONAL; default []; array kind: set
  ; OPTIONAL; default absent
  ? attestation_evidence: { * tstr => any },
  ; OPTIONAL (absent when empty); default absent; array kind:
  ; sequence
  ? additional_scrubs: [* scrub-sig],
}

row-type = "scores" / "delegates_to" / "supersedes" / "withdraws"
  / "recants"
cohort-scope = "self" / "family" / "community" / "affiliations"
  / "species" / "biosphere" / "federation"
uuid = tstr .regexp "[0-9a-f]{8}(-[0-9a-f]{4}){3}-[0-9a-f]{12}"
; <label>-<fingerprint>, CC 2.6.8; a legacy 64-hex id is also a key-
; id
key-id = tstr .regexp "[a-z0-9-]+"
; CC 2.3.2.1, tag required
canonical-id = tstr .regexp "canonical:[a-z0-9-]+:[0-9a-f]+"
subject-id = key-id / canonical-id
hex64 = tstr .regexp "[0-9a-f]{64}"  ; CC 2.6.3
; RFC 4648 section 4, padded, no whitespace
base64 = tstr .regexp "[A-Za-z0-9+/]+={0,2}"
; CC 2.6.2
rfc3339-ms = tstr .regexp
  "[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}\\.[0-9]{3}Z"
; a column rendered by the store; the signed twin inside the envelope
; is rfc3339-ms
rfc3339 = tstr

]]></sourcecode></figure>

</section>
<section anchor="vectors"><name>Test Vectors</name>

<t><xref target="CC-VECTORS"/> holds two test identities and thirteen vectors: five
rows that <bcp14>MUST</bcp14> be admitted, two size cases, and six rows that <bcp14>MUST</bcp14> be
refused, each with its refusal token.  For each admitted row it gives
the signed object, the JCS bytes in hex, the content hash, and both
signatures.</t>

<t>The smallest vector is reproduced here.  The attester's Ed25519 seed is</t>

<figure><artwork><![CDATA[
3e072ddf64847215af6d77de9efa0d95af5e2829abba3ff252cad647c8151593
]]></artwork></figure>

<t>and its public key is</t>

<figure><artwork><![CDATA[
69e98359bc7c5c783ee95150f2e9343e4f04775853bae63790bdc4aa3501c18e
]]></artwork></figure>

<t>which gives the key_id <spanx style="verb">alice-ctffz2edis</spanx>.  The signed object is</t>

<figure><sourcecode type="json"><![CDATA[
{
  "row": {
    "attestation_id": "5684f46c-749c-282f-bb10-0d74759dcde7",
    "attesting_key_id": "alice-ctffz2edis",
    "attestation_type": "scores",
    "attested_key_id": "bob-fx44qqfrla",
    "subject_key_ids": [],
    "cohort_scope": "federation"
  },
  "asserted_at": "2026-10-18T12:00:00.000Z",
  "dimension": "expertise:cardiology:en:v1",
  "score": 0.8,
  "confidence": 0.9
}
]]></sourcecode></figure>

<t>Its signing input is 326 bytes:</t>

<figure><artwork><![CDATA[
{"asserted_at":"2026-10-18T12:00:00.000Z","confidence":0.9,
"dimension":"expertise:cardiology:en:v1","row":{"attestation_id":
"5684f46c-749c-282f-bb10-0d74759dcde7","attestation_type":"scores",
"attested_key_id":"bob-fx44qqfrla","attesting_key_id":
"alice-ctffz2edis","cohort_scope":"federation","subject_key_ids":[]},
"score":0.8}
]]></artwork></figure>

<t>(line breaks added for display; the signing input has none).  The
content hash is</t>

<figure><artwork><![CDATA[
f61e3b8bc13fbe4e09897fcf366c84264b69d16dc59d4f6c606cc86a7803fbed
]]></artwork></figure>

<t>and the Ed25519 signature, in base64, is</t>

<figure><artwork><![CDATA[
ahk5YzITuIqtXaBl7fIChZ9x1sMkeuypdtuG/6O4Hm1iubzc/OJ0C/rG6QyJjPZt
8aF5MVJmuuJU6WYopsm+Bg==
]]></artwork></figure>

<t>(line break added for display).  The ML-DSA-65 key and one valid
signature are in <xref target="CC-VECTORS"/>.</t>

</section>
<section numbered="false" anchor="acknowledgments"><name>Acknowledgments</name>

<t>The canonical-form rules in this document were found and fixed in
review by the implementers of CIRISPersist, CIRISVerify and CIRISEdge.</t>

</section>


  </back>

<!-- ##markdown-source:
H4sIAAAAAAAAA8V9+XobR5Ln//UUtdQfLXYDFG+RoI+lJdpijw6PSNvb3euP
LAAJsiygCq4qkKJpzbPss+yTbcQvIjKzCiCtnmvnm7ZAIM/IyLgjst/vJ03e
TN0gXTvLrwo3To+bxtVN1uRlkb4vb+u0nKTNtUtfnL4/PUtP5nnduFk+Sr+r
stksq9KsGKfn1y6v0vduim71dT5PmzI9e3F6fr6WZMNh5W5oghcn3y2Pzt21
4Shr3FVZ3Q3SvJiUSb0YzvK6ppbN3ZwWeHpy/m0yLkdFNqO/xlU2afqzsqxc
vx7lTdMf5VVe90fuqr+5mRSL2dBVg2RMYw4Smn0nySqX8TbdaFHlzd1acltW
H66qcjHnbxfz+fQufXGd5UV6WtBCuE0vPa+yop5T12JEf2Gv1aJu1pIP7o76
jwdJ2k+zsCn+s4n68N+jrCiLfJRN07+evXvL31zfDat8nNYE8axZVI6/e/O6
//LsOLlxxYJWnKZXeXO9GDLYGPDHp8/w7wsCLx3Ygudao1YEcZqaWl03zbwe
PHsm3TZG5ezZgx2fNZVzz2a01We5ayZrSZItmuuy4s3QmGk6WUynAuaTio76
DUMZP5TVVVbkv2GrA0WJ1zsv8JujAaeD1FGP/4mz2MjyJCnKakbNb7Cn99++
2N7aOtSPB1vPd+3j9p7/9vnBnn3c3NnWj7v7uwf6cWdnx9oe7u1bg4P9rU37
9nB3hz9+e/r92fYmpkhTw/I35Xgxdf3XdGb5yPW/yWrC+Zc5gY3O58wOJD1r
6KyzaryGzh48qQJhkL4FDKjPqcLV8UWxboLX5250XZTT8uoOPYGL6fbm9m5/
8wDf1AQsVzO229i8ZlolLXtNv3n57nSQbm1u7G9uHzx7e3p2vsFtNqhFknDP
Nnj3Dz1Enh/u2sfDzT37uLPnP+4fPt+xBtQ4QM93O9zb8x/30eC0/3KDcaY/
zWbzuj//tU+YNi/rvKFrmF/VrTa/lLVb3eTFi/apCCbFOJpubWz2q9HhgwfQ
Rj4P2/3+1mZ/e0tGz6orR5fjn78bNzo7ltr/8eTF+bv3Z3+45FooaDn8xY2a
lC9mekOfyqr+b9/FcFoO/S7oqhf5hJZTP5MlXsgSL3R1G7/URLmSfp9I2bAm
8jVqkuT8EZr/lEj5elq5UcmoPppm+axOh665da5IifI1hNVpVicKkIoI/Uaa
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
1lzfQR8t+GlRr26hMJk902DZmSKLa3YJqwE/md7dzYHewEtuGrfRNrKGZ83k
mik9wwaXC5pD+VhR0jx6erFTaVw8JxIRARNL3hzBq9BFWE2VkSronTLnajMA
kVVf7YwHicCq60bSiwVQkAIitthMMmynd7E/L0ledQ3L8hQY3vXVHBdLby3F
yLlcCKGbf4kznOvG48yvR/pEPdSCteqJD4sbCxHcRjzVxilWIF7qRlDikTdv
tbyyVi8IPK1EeuhkqFXCviU+bEnML7TmM6MmBPT2zBZpYqvOptxYSmMXpRBy
c/r41Ycnk1NzngDyNopJ1fHLygiflnLzXvJZyoo2Oc6XHZZKibXYwlih7VRA
aNfv9SE2oS4C0hO1VL1DtU3YjzOpy/3RSrMzrGhSxNYO3VReiV+aDdV3My5X
3XnXS+o6YCp9GjYNz7/UDdGzKz7Z5IwjjuK0O1zv85B313lTa2+Ts7Jrb37x
sRE4QHbYTcvyw2LO8QtiV+e4gLwx40CmppPo1HE3zJ8OFhOS98zVhcKSIZsR
TzxyN63VbaRKypNpTmAUBtZ+GwwypJnBzfoghiNNODEYREV3JVqca51a/EoZ
rLRxIJOVMQaLCZa6ECEfyp6uqEXcsHvWezzg/01DaXaLQ59ImEndCUWH9Q4j
FHeRpcqGWZC0KyY6iY/ncMuRvIzJTfsqSbFNkQHwA+xEq4xaSN/qxZX7/sSl
gK5gQgpMQCo28+1FDKqo2sEyi8DWzzFO8p1n86RariD7iVIdv0XY0a64NpUd
o+TBSZUie+6xVdJJvNSreAi0d2ExC4n3hXAmxQJCqt4E9oFF45N4cgs8s3q5
JdxcM6SafrwmFshzrCglJbWjQo43ARQLh0T1PbtzR/8RgWr/8PkOBKrXnLMK
LGy/uufvv7xYB/qnpKD1eh0cV2Ib1jpL9mDHiLQevNrIGpcxJx1C02NAAGSC
kD7BRcvLAu9Hw7/DmjiQ/8ZlU2U4sAm2Arnle8RXP0SoM82mDZk80Runca7u
0JKFLacYniVPjIym6e59BQdNlguiBedDC/tfmSgEQw6SLiWxZ5o1UlVEozhg
bFIJzveS6glqk4oGk2wyBj/HMKlmxGML91UAcjl4JBoULPCa8G8vr/FaO8Gn
wLk6ilKuVeiS8M3wDG647r3IDxqEqFVBqLe8fglJijRWLkFbjKq7ua9XcGQh
RFFxxUzX7GMufMiFZMpGWYPq2qX91l4e62awaSiUVUFgXoOcaiEKp613NFhG
SKR6lC/azmOgl8BIJJgoRl122XEUIMRQaoOq1YWDaKqSGIQE3j5JT4/fHq++
5j4+RYUItFQDMluV+n2S7EcfeJAXL1++5uoonLsvUdfhOUj5DYW39rc2sTgt
YGPQ762wUiTxwbbKZUgCvVH5Dz5rQ6DoK8Owaz7xhnqvXfJqPDpduYL3HGcY
SJFniHbiEk5C2hBCuuOsn3/7t39Lec/JEYd6bW/sb2xtPE/7y9vZSL87eXvy
/vj85CXzqiOiLOW0fjZc5NPxxWh0oWVMtPFcGemReLm5MgCt/lm7UVPfHFla
GykMNAWbIBjE2GNPAHDkPeJPj+esc+cf0xPiWkdIj9Z9t4yuO9t7W9uTve20
rkbPghT4zEyfG0y4j/zrlq3yo6TNPo2Sq/t8dVc9k7ne48XSKFyqXk6yiN6v
Jsh2Rkm/TO+ZN7beYRikiwUXkk2PfOkZ3yZE0A8YRfoPtfNB9I83C7niA0bY
Pn/qtvxaH48caMIYfreSNEe+WrnUheeRoweV0moy4qKpy2NGbwq1Gj0ycPgx
fSpfigMY9eHWux2OtOAQ84IBKwqYtmOrG6T/+LN9R0D6WYKGAxkf6F99DXKP
dhHmaz3KuwotBj5TvAuHlcURB1wLcX+32/Y/sH309l4xhsOS8VMgwR9ZigUg
4gnhQ++bce1IJ9HnszkWoobDgX5bx/hzuXXwJ8R7Yrr9YLkmNagsI8uqwkyr
Gj9QoclP+viV6DyX+Ajy0vwX3in2IAoDhAqIPih2KGLANd9hZ7V4bBpFYB6S
8L1t8IJ1m/XW64qWiZ5aSdKE+FOgXhGB1td/JeBDBJ3wlKTCa27FjI98wRpP
97fWBwnejbMjX67GkOn7EhqYHL0pcZSqF4mGiB9Ctve2bCKeZiPxhR+EKsZ3
DRq9vFeupiWrYY0yqR0rmPJfUR+FsinLfYA+9Wf1A5cbqCARN8K5i+Yh+mWD
PETC0qckbKDf3XrsiR+kDSl0bUT2FXvN0590fw5vFPUCzvT0+Zkaa3zwpR/l
MEtjaqLRAE7zwVWVFVY6A2FQwW+q1AUDdAiskE3eUfqMaQp/WiIn/JQ4YckS
1ZLbVbEfUhcbjB8RCWmvOkt1OAhMDLWVw+qPtb/+/46BHmIqI4JxXVZMYISS
yhTY99eREeRCFKroxD1MypDdVD/O/JYO6s8r92vlF6LHrPyxf82nyUVX7i44
f2SQrs0X0+kanRh9qK/XHsBjbmS9nZYMKcZ8xZb2s3JJ8l46ZmOV8KFp7LpY
7LXUYRPGMiOZMBuk96lgVvrlV7DVfPpj4aF90tCgEIUR3SMjcY0W9/bjYIBo
I+i9TEKEtY5Yar/g8KOVnAbzo83gz4j1+MPTRqzTQHFzcLO1DKmsGF1rbpqA
CVbaaz2ei9qN+PDZcrcSFBLuNbZIqj/VdhFWnqK2vxhlUgv6P2309OmX6abn
gtprhgTfyWS9NbfY38KstmM6E7ZsXYgFYpUkFQCqdnIC6NKyJfiHzyisNiYi
dxFdqgUb5aQZHzEnYaTRw8q1ROcWEcdLgnZd9Z3Cz2zNWtvnXbyWIMcJhD6Y
yCoV5s0/K0C2KoEPWoT+6zR66u+zuWOy+kexWcuUcyYfs3xkNEt+A9WC1aPE
x2u2j2V3+IwkcCi5azREyl/BgDZd6z0wHwEVcloL2ypN4qA52U6Moa1hmMeN
HxzVUzRX9Uec2aU/CFKDLbGKZRt7dXr+GuO+euc/8Kc/Gl6sOXVajiSyduT6
mzqF/wbsH1jT/QH5C3qlPm+erfXPXBBR8llW3S2tRUp4runP2CnSfMb4yG8t
kmLw4Lbp94WICXpeNVuBabxJ5ZyN4FsInmTzvLHPwBn23ZczZkZtKpBPJi1V
EMbbOJ80frxY76T+GusY+EUyUh9SPVZOJV1kV060AH9wS3RBGgz+LMuQDLzH
xNsVnYggluO7CxEo+BJVAkFOcFhb6qzNB2wm6/6mcv51Ph9whYGy1sNBBtWF
SE5rsj05BgNb55wfGItFXKyShVJ0iBoJSWd7/WoREOhmyP/gssMo4icLv2i0
p4qpsqCuftvZgX8c9QExzSwShPfbe/sXTtytFyQGPjjmKu4Uxj7Y393c5MIe
MLJp7WseopWcJ1fxOps2F+xu/Y8w8VUisXUI0rAYM39+6C6j8t8vJXJ4vlY3
1t0FYT1/xwhj8qlvuAJdgiz3AKjxs+rUsST+6EiRsCg1p+K7ukpEXA2S8NhY
l11GT4Y+riCocrdaKiNl/uI2qy/wZOo/PUC7XVvXWzFbVHdQq0I8BMnVQzEK
c9V29qAGfbw7dHjjtytmdxG0adVKxGRqWtjd2FrvRe/1eNTDKF2Gxa7GPodw
qR1r9fvFy6vRci/z7G5aZuH5Xkny31m3kGSxBcvVROCUlS/iMdjrx7aXOyBM
S7/piXnnBSwgA2/AaVDDREwgYcrI6v1kf3cHVnHC3zuL6L2Y5G7KiQrBLvJf
Zof+HAPz51is25jjKyG2EOEp+9eGbskg+o+fV13I/3JL8D9nN/+k5efZ+qqn
8fk2y/9mY+rXaVyg/rMFfNpiYAS6x8d3N18MuYHxRFnkwzvT5rPpxbjOLvb3
HusgBal9EqgEXDEy2lcrZK0k9YUCFKUfbUKa0eoWK8ja8mZWkZs/UqDinMDI
+7DaWPLvdEP8V2JcySKXHEXf7Ov//4z3D/kwlkZEMnjE1Fef0moy9AcWs5Y7
6cbsA8sH2tHy/xv8Q3SbjaDTXV4T24Qqw4EJi0rnhSn86c2crJNDSYNQspbE
FBZjmq69UluAMh/pYDoaEhl1pmFe1nOvygRCtpYwZ6MpAMQNujbu4zxd+8dm
/zDrT36+P/j0tO//2P20fr/zKfy9tf1pjTjqF4i++ar/RRQX91XP/OUHLDYy
GEZ36f5unx83k/gflO6He79PgxDJMbtRdy1Z/zeasf/zX9bMC78jxVf48U0r
85z48JhVY4T3QsNoA9sHjRvYHXXVdTxL4yETsWU9CKj93U9rjDu66x1aKnvr
+X1VH01FF4bfWOWc8KKMXlJPNHx6afDj/t9luX959vNfvrzf7AnAdY7tJPCb
Tl9CACyNz6wvH7bDh3P7MFj68L//94Z83Pn0d54qU4cSwZmrQkY51ewGPYrj
IJrbvIija4zq8uHWEWu0VeuSEWOBerAcKPWjBqHfP7EIdH47IE520EqDnIOK
EHZlMrkvQtHOhBggTTTRxxCy8LS15XT2MBTqH3KUvyUu5x/TpT76HDt1Qaid
L8JhGZGopa1BY2jRyhvNG4k8TpZDYSw7xV6TKZi+yrejqLB+9GR5qJugFTZ9
uTrZtyRC+syT8AJaXFnPB3NzEZy8lpPYcZvPt8fjCSHu7vPtrb1ssj9+/nzs
Dolobo4P6e89t32wfZgNh9nOZLK9tz3Kxvu7z0cHW3tbe4c7cpz2Mnf0doZN
sH/oDg929g6Ho+ejvdHzgx3nDqnn5mTbHe7s7rjdyebu8+d7B3s7w8zt7zw/
3ByOR7tZtrO3uTXaOnAygUSTSSh3FBR4mXGp5P6omUx+23bjXEtkLycXSGjP
L/zSPUtfa3RCawMIYvRHW/qn79f29g92J7v7o/7z3cNRn/Y/6Q+HW5v9zfHz
3ed7h+PR2D2HGu57B72A+3eX1W4bdANuqwyk1cLrBNxgWA77k4+7u7/+Oqmm
mTXsiPHU8B8/60+x+M4DxPQ/FZ65Fimf3MRSFrcOzre2B5ub9P8bm5ubf8ds
a95jy035HbCqIY1yMOI6b3iPbuCKwc2WNMZ+qOHmxgH+DvZ9fHlIDBRHeqqF
dloBRzvb+sTrQLDnvr3QR9bZmoem6SXxsh9dtWDD/RIeJJ+JByuONZzq8oku
HegKFEpWoFDnXONj7S2jwz9+poO2w6CzUKg/jd75TsGdpFZWXs+n2V2g8OFU
rNrLuuYvxSTK3/LJ/pbbGR4MR1s7k6HbdZuHB4fPJ6PJzv7+6GB3e393uH84
3tofjwhou5P90f7m/mh0sJ89P9jkDuNARngBK9JO/AuWPT9ndv1h72+/nZ4v
Tn9t/lf2zfT55PTF9d8PP27Vbz64xd183Cy+e7b/bvfVbCtfDH8bPXv3180X
z6rv9v/17q+/fP/3JjnIvt178+NfZ4vFX3/Y/+lv5bye/eWbqy+/XILUMqAU
GFHahL2yxEHrUGGit8S02Gqbs8nLOiO2TEzd+AoeteR+IDqzG3+5BnvWmoZf
BuEE73D4RIB24TEkIE5QdpHXIuVhcq7EfpO7W2PmPlpda5HFhhPNrPwxPIiF
v0/GV24j+X/GNfq4b7kAAA==

-->

</rfc>

