<?xml version='1.0' encoding='utf-8'?>
<rfc version="3" ipr="trust200902" category="exp" submissionType="IETF" docName="draft-saez-xcim-00" consensus="false" tocInclude="true" symRefs="true" sortRefs="true">
  <front>
    <title abbrev="XCIM Direct Email">XCIM: Verifiable Communication Authorization for Direct Email</title>
    <author initials="D." surname="Saez" fullname="Damian Saez">
      <organization>We Are 14 Inc</organization>
      <address>
        <email>damian@xcim.org</email>
      </address>
    </author>
    <date year="2026" month="October" day="20" />
    <keyword>email</keyword>
    <keyword>consent</keyword>
    <keyword>authorization</keyword>
    <abstract>
      <t>XCIM specifies experimental evidence linking purpose-specific communication authorization to an application, an original email recipient, and message content. A signed receipt records an issuer's observation of consent; a receiver also verifies current permission, signing authority, freshness, authenticated publication, and DKIM. The minimum direct-email profile uses one recipient and purpose per message copy, issuer-signed recipient binding, and application-authorized message signatures. This document defines a bounded experimental integration and identifies unresolved lifecycle, history-continuity, and registration questions. It does not establish the truth of an issuer's consent observation or claim production readiness.</t>
    </abstract>
  </front>
  <middle>
    <section anchor="editorial-status">
      <name>Introduction and Problem Statement</name>
      <t>Email authentication and communication authorization answer different
      questions. A receiver can authenticate sending infrastructure without
      learning whether a recipient authorized a particular application to send
      communications for a particular purpose. XCIM explores interoperable
      evidence for that authorization and its revocation across issuers, senders,
      and receivers that do not share a private product integration.</t>
      <t>The baseline is <xref target="XCIMWD" />. A valid signature records an
      issuer's attestation; it does not establish that the issuer observed a
      truthful or non-deceptive consent decision. Public commitments preserve
      authenticated history under a publication policy, while the receiver
      remains responsible for its trust and delivery policies.</t>
      <t>The minimum profile is MAIL01, specified in
<xref target="mail-minimum-contract" />. This document is an individual
experimental proposal. Its normative rules describe the bounded profile;
<xref target="open-issues" /> distinguishes unresolved design questions from
future implementation evidence. Neither an Internet-Draft nor the available
local tests constitute IETF endorsement or operational certification.</t>
    </section>
    <section anchor="scope">
      <name>Scope, Use Cases, and Related Work</name>
      <t>The minimum profile combines the core
authorization model with direct email: one application/epoch, one original
SMTP envelope recipient, one purpose, and explicit_consent per message copy.
It selects OIDC-01 receipt 0.1, P1 binding objects, AS01-F01 authority and
state, and AN01-F01 anchored evidence. Required authenticated publication
and anchor verification remain part of the profile. EVP and other
authorization classes are outside this revision.</t>
      <t>The baseline distinguishes explicit consent, a transactional
      relationship, a service acknowledgement, and a preference. MAIL01 supports only the first of these; it does not relabel the other kinds.
      Identity authentication remains distinct from communication permission.</t>
      <t>XCIM does not guarantee message safety, legal compliance, mailbox
      existence, or inbox placement. It complements SPF, DKIM, DMARC, ARC,
      unsubscribe mechanisms, and ordinary abuse controls. Product billing,
      account provisioning, and private list-evaluation APIs are outside the
      proposed protocol scope.</t>
      <t>For the proposed first profile, emit separate copies for different
      envelope recipients. Compare the exact original RCPT TO from trusted
      receiver context, before alias rewriting; visible To/Cc/Bcc fields are
      not that authority. SMTPUTF8, quoted local parts, mailing-list expansion,
      and forwarding do not inherit a positive P1 authorization. ARC does not
      create a grant for a different destination.</t>
      <t>MAIL01 fixes the selected dependencies and their
integration. Broader discovery, alternate publication profiles and migrations
are not implicitly enabled. Further related-work review can inform later
revisions without changing the meaning of the selected signed objects.</t>
      <section anchor="minimum-flow">
        <name>Minimum Direct-Email Flow and Exclusions</name>
        <ol>
          <li>The Consent Issuer validates identity under OIDC-01 and a
          separate explicit-consent decision for the application and purpose.</li>
          <li>The issuer issues the receipt, permission evidence, and RBA
          binding the authenticated recipient context to that permission.</li>
          <li>The application's control key authorizes a scoped message
          signer through MSA; the signer cannot create consent or redelegate.</li>
          <li>The sender freezes one recipient's message copy, signs MP over
          scope, RBA, MSA, and content, adds Reference, then applies DKIM.</li>
          <li>The receiver uses its trusted original RCPT TO and preaccepted
          trust policy to verify bindings, signatures, currently authorized
          keys/domains, permission, publication, freshness, and DKIM.</li>
          <li>The receiver coordinates replay state with SMTP acceptance and
          applies its own delivery policy. Missing or stale evidence cannot
          be converted to a fresh positive result.</li>
        </ol>
        <t>Product APIs, infrastructure
provisioning, forwarding/list authorization, SMTPUTF8 and other authorization
classes are outside the minimum. XCIM-Reference is required. XCIM-Proof is
outside MAIL01: its presence prevents a positive MAIL01 result. A future
profile would need to define its complete verification behavior.</t>
      </section>
      <section anchor="related-work">
        <name>Initial Related-Work Comparison</name>
        <t>SPF <xref target="RFC7208" /> authorizes hosts for SMTP domain
        identities, while DKIM <xref target="RFC6376" /> binds selected message
        content to a signing domain. DMARC <xref target="RFC9989" /> addresses
        Author Domain validation, alignment, policy, and reporting; RFC 9989
        obsoletes RFCs 7489 and 9091. These mechanisms do not attest to an
        application's purpose-specific permission for an individual recipient.</t>
        <t>ARC <xref target="RFC8617" /> authenticates a chain of intermediary
        authentication assessments; it does not create permission for a new
        destination. One-click unsubscribe <xref target="RFC8058" /> provides
        list-header signaling for removal and complements, rather than
        establishes, the current permission presented by a message.</t>
        <t>NO-SOLICITING <xref target="RFC3865" /> is
relevant prior work on solicitation-class signaling. Its scope excludes
authentication and consent. XCIM's proposed distinction is an authenticated
relationship among application, recipient, purpose, message, and current
permission. This comparison does not claim an exhaustive novelty survey.</t>
      </section>
    </section>
    <section anchor="terminology">
      <name>Requirements Language and Terminology</name>
      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
      "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
      "OPTIONAL" 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>
      <t>The overview sections describe
the selected object families; <xref target="mail-minimum-contract" /> defines
their minimum integration. The open issues in <xref target="open-issues" />
do not permit omitting a required check or selecting a weaker fallback.
Historical object families and broader P1 framing are identified explicitly
and do not expand MAIL01 conformance.</t>
      <dl>
        <dt>Recipient</dt>
        <dd>The person or destination to which a communication authorization is bound.</dd>
        <dt>Application</dt>
        <dd>A stable application identity with keys, epochs, and metadata, distinct from a sending domain or OAuth client.</dd>
        <dt>Identity Issuer</dt>
        <dd>An authority supplying identity assertions under a selected identity profile.</dd>
        <dt>Consent Issuer</dt>
        <dd>An authority validating identity evidence, controlling consent presentation, and signing receipts.</dd>
        <dt>Log Operator</dt>
        <dd>An operator publishing append-only history and authenticated current-state commitments.</dd>
        <dt>Sender</dt>
        <dd>An application or authorized sending infrastructure presenting XCIM evidence with email.</dd>
        <dt>Receiver</dt>
        <dd>A verifier applying accepted issuer trust and local message-handling policy.</dd>
        <dt>Resolver, Mirror, or Monitor</dt>
        <dd>A component transporting or inspecting evidence without obtaining trust merely by hosting it.</dd>
      </dl>
    </section>
    <section anchor="architecture">
      <name>Architecture and Trust Boundaries</name>
      <figure>
        <name>Conceptual Flow</name>
        <artwork type="ascii-art">
 Identity Issuer ---- identity evidence ---&gt; Consent Issuer
 Recipient ---------- separate decision ---&gt; Consent Issuer
 Application -------- signed manifest -----&gt; Consent Issuer
 Consent Issuer ----- receipt/events ------&gt; Log / Publisher
 Sender ------------ message/evidence -----&gt; Receiver
 Log / Publisher ---- authenticated state -&gt; Receiver
 Local trust policy ----------------------&gt; Receiver
</artwork>
      </figure>
      <t>A receiver authenticates component relationships and current authority,
      rather than trusting the presence of a receipt, header, HTTPS endpoint,
      or chain transaction. An Identity Issuer and a Consent Issuer are distinct
      roles even when one organization performs both.</t>
      <t>Recipient mapping is authenticated
by the RBA and checked against trusted SMTP context. Trust is installed
administratively, and evidence is retrieved from configured endpoints as
specified in <xref target="mail-minimum-contract" />. Automatic trust
discovery is outside this minimum.</t>
    </section>
    <section anchor="versions">
      <name>Versions, Profiles, and Historical Compatibility</name>
      <t>Document revision, signed-object wire version, and profile selection
      are separate. WD-02-E1 retains core objects and OIDC receipts at wire 0.1;
      experimental EVP receipts use 0.2, and metadata/accreditation 0.2 do not
      migrate other object families. Schema-union support does not enable an
      experimental profile.</t>
      <t>The baseline requires exact dispatch by signed version, object type,
      and issuance profile. Unsupported combinations and unknown critical
      extensions are rejected. Existing signed objects, commitments, timestamps,
      and historical interpretations MUST NOT be rewritten by an editorial
      revision.</t>
      <t>MAIL01 fixes the minimum accepted tuples and historical exceptions in the integration contract. Additional families or migrations require explicit version selection; broad migration tooling remains outside this revision. See <xref target="mail-minimum-contract" />.</t>
      <t>Historical EdDSA tuples remain
distinct from P1, AS, AN, and NB families using explicit Ed25519 identifiers.
There is no algorithm fallback or rewriting of signed typ/version values.
The selected tuple catalog is specified in <xref target="mail01-wire" />;
additional families require a separately specified migration.</t>
    </section>
    <section anchor="encodings">
      <name>Identifiers, Encodings, Canonicalization, and Time</name>
      <t>The baseline uses typed opaque identifiers, canonical unpadded
      base64url encodings for most 32-byte hashes, and UTC timestamps. Some
      publication-profile fields explicitly use hexadecimal encodings instead.
      Exact matching and normalization depend on the selected object/profile.</t>
      <t>Base64url follows <xref target="RFC4648" /> Section 5, with padding
      omitted where required by the object contract; receivers check the exact
      canonical encoding, including unused trailing bits. Historical textual
      timestamps use <xref target="RFC3339" /> with per-profile zone constraints.
      P1 iat/exp instead use integer seconds since the Unix epoch; the two
      representations are not interchangeable signed values.</t>
      <t>JSON parsing precedes schema and signature semantics. E1 restricts
      raw number tokens in JSON <xref target="RFC8259" /> to the grammar below and the interoperable integer
      range from -9007199254740991 through 9007199254740991. Epochs start at one.
      Fractional and exponent forms are rejected before host numeric conversion,
      including forms that would round to an integer. Duplicate members and
      invalid Unicode scalar values are rejected.</t>
      <sourcecode type="text">
number-token = ["-"] ("0" / (%x31-39 *DIGIT))
DIGIT = %x30-39
</sourcecode>
      <t>Canonicalization uses JCS <xref target="RFC8785" />, including unsigned
      UTF-16 code-unit ordering. A raw -0 token can canonicalize to 0, but signed
      segments must already contain their required canonical bytes. Parsing an
      already-created host object cannot recover a number token's original form.</t>
      <t>The email baseline preserves ASCII dot-atom local-part case, dots, and
      plus tags and normalizes the domain using the specified IDNA mapping.
      Post-mapping DNS validity is checked again. Quoted local parts and SMTPUTF8
      are outside that profile. EVP issuer normalization is not OIDC issuer
      matching and must not replace it.</t>
      <t>The address profile uses
non-transitional UTS #46 mapping with STD3 rules and Unicode 15.1.0 tables,
including validation after mapping. The local reference implementation uses
idna 3.10. The protocol selects the table version, not an unspecified library
default; a table change requires a new address profile.</t>
      <t>The mapping reference is UTS #46
revision 31 for Unicode 15.1.0 <xref target="UTS46" /> and its versioned data
<xref target="IDNAMAP151" />, applied with IDNA definitions and procedures
<xref target="RFC5890" />
        <xref target="RFC5891" />. Newer Unicode tables and
provider-specific mailbox equivalence are not enabled by this revision.</t>
      <t>MAIL01 specifies the minimum parsing, address, table-version and temporal rules. Independent reproduction of all canonicalization cases remains an external-validation task. See <xref target="mail-minimum-contract" />.</t>
    </section>
    <section anchor="crypto">
      <name>Cryptographic Envelopes and Commitments</name>
      <t>The baseline uses SHA-256 <xref target="RFC6234" />, Ed25519 <xref target="RFC8032" />, and JWS
      Flattened JSON Serialization <xref target="RFC7515" /> with canonical
      protected/payload bytes. The protected header carries alg, kid, and the
      object-specific typ. The signing input is the ASCII protected segment,
      a dot, and the ASCII payload segment. Ed25519 signs that input directly.</t>
      <t>Receipt, batch, application, identity, and chain-signing keys have
      different authorities. Unprotected security headers, algorithm
      substitution, undefined detached semantics, and unknown critical
      extensions cannot establish valid baseline evidence.</t>
      <t>Consent manifest 0.1 has a historical inline-signature exception.
      Receipt commitments hash the defined payload, not an arbitrary outer
      envelope. Domain tags and byte encodings are part of the contract.</t>
      <t>MAIL01 specifies domain-separated commitments, role-specific algorithm selection and historical exceptions. Existing signed bytes MUST NOT be relabeled. Independent cryptographic review remains outstanding. See <xref target="mail-minimum-contract" />.</t>
    </section>
    <section anchor="trust">
      <name>Application, Domain, and Issuer Authority</name>
      <t>The application identity is bound to active keys and epochs. Domain
      bindings distinguish organizational, rfc5322_from, dkim_signing,
      envelope_from, link_domain, and consent_presentation_delegate roles.
      Authority is evaluated for the role actually used, including its validity
      and lifecycle; ownership transfers cannot inherit an unrelated epoch.</t>
      <t>Baseline receivers select trusted issuers through explicit local pins
      or authenticated registry chains rooted in previously accepted authority.
      Metadata 0.2 advertises capabilities and can have null accreditation.
      Discovery and advertised keys do not establish initial trust.</t>
      <t>MAIL01 uses administrative pins, role-specific
signed authority, bounded freshness, and configured evidence endpoints.
Portable enrollment and recovery ceremonies across unrelated operators
remain design questions in <xref target="open-issues" />. Metadata alone
cannot establish initial authority.</t>
      <t>P1 defines issuer key role recipient_binding and
      application-controlled Message Signer Authorization (MSA) objects for
      delegated message_presentation keys. Each MSA needs authenticated current
      revocation/epoch state, not just a signed expiry. Existing metadata does
      not gain new key roles implicitly.</t>
      <section anchor="authority-state-proposal">
        <name>Authority and State Objects</name>
        <t>AS01-F01
<xref target="XCIMAS" /> defines the selected C1-C8 authority and state
contracts. Its objects have distinct versions and do not extend closed
WD-02-E1 objects implicitly. <xref target="mail01-state" /> specifies how
the receiver derives P1 authority from authenticated AS evidence.</t>
        <t>C1 is receiver-local trust policy: issuer/log identifiers, root and
        recovery key sets and thresholds, genesis, anchor policy, origin allowlist,
        expiry and durable epoch floors. Initial trust is provisioned outside
        the message; HTTPS discovery cannot create it. MAIL01 selects local pins; a registry path would need a separate authenticated lifecycle contract.</t>
        <t>C2 is an AuthorityManifest authorized by the pinned root quorum.
        It binds role-specific keys and validity intervals to a manifest epoch
        and predecessor. C3 is a fresh ControlHead and C4 a StateCheckpoint;
        their keys must differ. A ControlHead commits to one exact checkpoint
        under that manifest. Neither online publication role can establish its
        own current authority through a state leaf it authenticates itself.</t>
        <t>C5 defines typed application, key, domain and MSA state; C6 provides
        sparse membership or absence proofs against C4. Application state is
        looked up by stable application identity so an old epoch cannot remain
        active merely by selecting an obsolete lookup key. MSA material binds
        the exact P1 envelope, authorization identifier, key and app epochs.
        Domain state requires observed challenge evidence for the exact role.</t>
        <t>C7 transports the component evidence; the unsigned wrapper grants
        no authority. C8 records attested lifecycle changes and their actor
        authorization commitments in a separate append-only authority log.
        Sparse state commits to the latest event; the event commits to the new
        state core without that event commitment, avoiding a circular hash.</t>
        <t>Revocation of an MSA or MP key is terminal for its identifier.
        New authorization requires a new identifier and proof of possession;
        an MP timestamp cannot bypass current revocation. Control-key changes
        conservatively advance application epochs under the baseline rule;
        unrelated owners cannot inherit grants. Root recovery needs previously
        accepted recovery authority or external reprovisioning.</t>
        <t>The nested AS evidence
schema retains a null anchor_evidence slot; MAIL01 requires the separate
AN01 wrapper and its verified anchor. AS-only fixtures do not establish an
anchored positive result. Administrative actor/possession procedures and
operational recovery remain subject to <xref target="open-issues" />.</t>
      </section>
    </section>
    <section anchor="identity">
      <name>Identity Evidence and Issuer-Controlled Consent</name>
      <t>The Consent Issuer validates identity independently of vendor
      assertions and binds it to a frozen session containing recipient,
      application/epoch, nonce, return binding, and manifest. Authentication
      precedes consent acceptance, which precedes receipt issuance. The
      consent decision takes place on an issuer-controlled top-level surface
      and is distinct from authentication or registration.</t>
      <t>OIDC-01 uses receipt 0.1 and profile oidc_hosted_consent. Its baseline
      requires issuer/key/audience/time/nonce validation, active client binding,
      expected-address checks, and a versioned provider authority policy.
      Raw identity tokens and recipient addresses are excluded from public
      receipts and logs. EVP-01 uses experimental receipt 0.2 and explicit opt-in.</t>
      <t>Identity validation uses OpenID Connect Core 1.0 incorporating errata
      set 2 <xref target="OIDCCore" />, especially ID Token validation, together
      with JWT security guidance <xref target="RFC8725" />. These references do
      not make an OAuth/OIDC authorization decision a communication grant.
      MAIL01 specifies the selected provider-policy and receipt mapping; real-provider conformance remains unproven.</t>
      <t>MAIL01 specifies issuer session, claim validation, consent transaction and public mapping requirements. Its local synthetic-provider adapter does not establish browser or real-provider conformance; EVP remains outside the minimum. See <xref target="mail-minimum-contract" />.</t>
    </section>
    <section anchor="permission-lifecycle">
      <name>Receipts and Permission Lifecycle</name>
      <t>A receipt records an immutable historical decision for an application,
      pairwise recipient, and explicit purposes/authorization kinds. It is not
      a perpetual permission to send. A receiver additionally evaluates current
      permission state and current application, key, and domain authority.</t>
      <t>Revocation appends an authenticated lifecycle event and changes the
      current-state projection while preserving the issuance receipt. Integration
      requests cannot allow a vendor to create a recipient grant by asserting
      a lifecycle action. Session retries require idempotent terminal handling.</t>
      <t>The minimum defines identity and
consent issuance, finite permission expiry, authenticated current-state and
latest-event checks, and rejection of revoked state. Complete producer-side
actor authorization and conflict handling for every lifecycle transition
remain open in <xref target="open-issues" />. A valid inclusion proof alone
does not demonstrate that the original actor was authorized.</t>
    </section>
    <section anchor="recipient-binding">
      <name>Portable Recipient Mapping</name>
      <t>A receiver knows its intended SMTP envelope recipient or authenticated
      evaluation target. An issuer/app-scoped HMAC pairwise identifier cannot
      by itself prove the relationship to that address because the receiver
      does not hold the issuer's private pairwise key.</t>
      <t>The baseline requires an authenticated mapping binding the exact
      canonical target, issuer, application/epoch, and pairwise ID. A sender's
      assertion or recomputable salted recipient digest is insufficient.
      Missing or untrusted mapping MUST withhold a positive baseline result.</t>
      <t>A Recipient Binding
Attestation (RBA), signed by the Consent Issuer, binds issuer,
application/epoch, receipt commitment, permission, purpose, authorization
kind, and pairwise recipient to an address commitment. The issuer computes
it from an authenticated private observation, not a sender-supplied digest.
RBA renewal cannot create consent. The signed object includes a 32-byte
random salt.</t>
      <t>The address input is the closed projection of issuer, app_id,
      app_epoch, receipt_id, receipt_commitment, permission_id, purpose_id,
      authorization_kind, pairwise_id, address_profile, recipient_domain, salt,
      and canonical_recipient. Only the last member is private and omitted from
      the RBA. The receiver supplies it from its original SMTP recipient context.</t>
      <sourcecode type="text">
address_commitment = base64url(SHA-256(
  UTF8("XCIM-RECIPIENT-BINDING-P1\0") || JCS(address_input)))
</sourcecode>
      <t>The receiver checks the declared recipient_domain against that exact
      canonical destination and recomputes the commitment. A reusable RBA does
      not establish current permission: the full receipt/state/authority
      algorithm still applies. No pairwise derivation secret is shared and no
      per-message issuer call is required by this construction.</t>
      <t>The selected P1 schemas and MAIL01
commitment rules define this mapping. A known salt permits offline candidate
address tests; RBA and salt are not public-log material and do not establish
anonymity. This object does not alter receipt 0.1.</t>
    </section>
    <section anchor="email-binding">
      <name>Email Presentation and Message Binding</name>
      <t>Message syntax follows <xref target="RFC5322" /> and the envelope
      context follows SMTP <xref target="RFC5321" />. The initial profile keeps
      its ASCII header and original-recipient restrictions; it does not infer
      an envelope destination from visible message fields.</t>
      <t>MAIL01 carries
XCIM-Reference and excludes XCIM-Proof. Relied-upon fields are added before
DKIM signing and covered by valid DKIM evidence. Duplicate or injected fields
and copied presentations for the wrong recipient, application, purpose, or
sender authority cannot produce a positive authorization result.</t>
      <t>A Message Presentation
(MP) signed by an application-authorized message key commits to the full
RBA and MSA JWS envelopes, content, scope, random presentation_id, validity,
and exact From/DKIM domains. A Message Signer Authorization (MSA), signed
by application control, authorizes a delegate key/thumbprint, role,
app/epoch, finite purposes/classes/domains, authority_epoch, and validity.
It cannot grant consent or authorize subdelegation. Thumbprints use
<xref target="RFC7638" />. The application keeps its control key.</t>
      <t>Using only RBA plus a shared DKIM domain would conflate tenants unless
      the DKIM key had separately established exclusive application authority.
      P1 uses the application/delegate signature plus DKIM. An
      issuer token for every message is another alternative, with availability
      and traffic-disclosure costs.</t>
      <t>Isolate delegated MP keys and signing APIs by application/epoch and
      delegate. A signing oracle that accepts arbitrary requests across tenants
      defeats this separation and is a sender compromise, not a protection
      supplied by the existence of a second signature.</t>
      <t>MAIL01 integrates authenticated authority and anchored-artifact checks with P1, defines phase ordering and a durable local replay/outbox transaction. Proof is outside its minimum revision. Real MTA integration, distributed storage and independent review remain unproven. See <xref target="mail-minimum-contract" />.</t>
      <t>Historical shadow-mode
encodings are not accepted by MAIL01. Header presence alone cannot establish
authorization. Registration questions are described in
<xref target="iana" />.</t>
      <section anchor="message-content-p1">
        <name>Content Commitment</name>
        <t>Use RFC 6376 relaxed header/body canonicalization
        <xref target="RFC6376" /> on the network message. Include all header
        occurrences in their original order except the following exact names,
        compared case-insensitively: Received, Return-Path, Authentication-Results,
        ARC-Authentication-Results, ARC-Message-Signature, ARC-Seal,
        DKIM-Signature, XCIM-Reference, and XCIM-Proof. There is no wildcard
        exclusion for unknown or X- fields.</t>
        <t>Represent the included relaxed header fields, retaining each final
        CRLF, as an ordered array of ASCII strings. Hash the complete relaxed
        body, including MIME parts, without a body-length limit or MIME decoding.
        An empty relaxed body is the empty sequence. This equality follows the
        selected canonicalization, not raw-byte or rendered-content identity.</t>
        <sourcecode type="text">
message_input = {
  "headers": ordered_relaxed_headers,
  "body_sha256": base64url(SHA-256(relaxed_full_body))
}
message_commitment = base64url(SHA-256(
  UTF8("XCIM-DIRECT-MESSAGE-P1\0") || JCS(message_input)))
</sourcecode>
        <t>Require unambiguous parsing, a single mailbox in From, one Date and
        Message-ID, and at most one occurrence of each critical singleton
        field, including Reference/Proof. A changed Subject, From, Reply-To,
        MIME structure, unknown non-excluded field, or body changes this
        commitment; added hop fields above do not. Other in-transit metadata
        modifications can lose the P1 signal, which requires MTA evaluation.</t>
      </section>
      <section anchor="message-transport-p1">
        <name>Signing Order, Transport, and Replay</name>
        <t>Obtain RBA/MSA, freeze message
content, compute its commitment, sign MP, add XCIM-Reference, then DKIM-sign.
The message commitment excludes XCIM/DKIM fields to avoid circularity.
RBA/MSA envelope commitments use separate domain tags; duplicated scope fields
must match the receipt and permission exactly. Do not add Proof to MAIL01.</t>
        <t>The Reference wrapper
contains proposal_version p1, recipient_binding, signer_authorization, and
presentation. Transport is v=p1; data= followed by base64url of its JCS,
with FWS-separated fragments of at most 76 characters. The P1 grammar also
recognizes Proof framing, but MAIL01 does not accept Proof. There is no
sender-selected fetch URL or fallback to the legacy URL adapter.</t>
        <t>Require a valid DKIM
signature for the exact domain declared by MP, current application/domain
authority, full-body coverage without l=, and actual coverage of Reference
and critical fields. Singleton oversigning excludes Bcc as described in
<xref target="p1-contract-artifacts" />. Content hashes, DKIM, RBA signatures,
and current state are complementary checks.</t>
        <t>DKIM processing uses <xref target="RFC6376" /> with its applicable
        updates <xref target="RFC8301" />
          <xref target="RFC8463" />
          <xref target="RFC8553" />
          <xref target="RFC8616" />. These updates do not
        enable SMTPUTF8 or expand this profile's message syntax. An exact
        domain match and current application/domain authority are additional
        XCIM checks, not consequences of any passing DKIM signature.</t>
        <t>MAIL01 bounds RBA/MP
lifetimes to 24 hours, MP expiry by RBA/MSA expiry, MSA to seven days with
separately verified current state, and future iat tolerance to 60 seconds.
Expiry is exclusive with no grace extension. Current-state windows can be
shorter. Reference is limited to 16 KiB and JSON depth to 32; these selected
limits have not been validated as production performance budgets.</t>
        <t>Use a 32-byte random presentation_id per recipient copy. After all
        validation, deduplicate by issuer/app/epoch/permission/original recipient
        and that ID, coordinated across the receiver's MX/workers. Persist
        acceptance and replay state atomically before final SMTP acceptance;
        retries before acceptance must remain idempotent. Already accepted
        duplicates produce no fresh positive authorization. An identical
        intercepted copy can arrive first; no global replay guarantee is claimed.</t>
      </section>
    </section>
    <section anchor="p1-contract-artifacts">
      <name>P1-01 Development Schemas, Grammar, and Fixtures</name>
      <t>The P1-01 source package contains closed JSON Schema 2020-12 payload
      schemas for RBA, MSA and MP, shared definitions, a protected JWS header,
      flattened JWS envelope and Reference wrapper. Schema identifiers under
      xcim.invalid are local development identifiers resolved offline; they do
      not claim publication or registration. Proposed typ strings likewise
      remain unregistered development names.</t>
      <t>The grammar below uses <xref target="RFC5234" /> and case-sensitive
      values from <xref target="RFC7405" />. It describes raw fields including
      final CRLF. Names are case-insensitive; values/order are exact. Resource,
      cardinality, base64url, JSON/JCS, schema and cryptographic checks are
      additional semantic constraints.</t>
      <sourcecode type="abnf">
xcim-field = xcim-reference-field / xcim-proof-field
xcim-reference-field = "XCIM-Reference" ":" FWS p1-value CRLF
xcim-proof-field = "XCIM-Proof" ":" FWS p1-value CRLF
p1-value = %s"v=p1;" FWS %s"data=" segment *(FWS segment)
segment = 1*76b64urlchar
b64urlchar = ALPHA / DIGIT / "-" / "_"
FWS = 1*WSP / (*WSP CRLF 1*WSP)
WSP = SP / HTAB
SP = %x20
HTAB = %x09
CRLF = %x0D.0A
ALPHA = %x41-5A / %x61-7A
DIGIT = %x30-39
</sourcecode>
      <t>MAIL01 requires exactly
one Reference and no Proof. The broader P1 grammar recognizes Proof only
for explicit rejection or future profiles; syntactic validity does not
enable it. The 16384-octet Reference limit includes its name, colon, folding
and CRLF. Each physical line is at most 998 octets excluding CRLF. Join
only FWS-separated fragments and require canonical unpadded base64url,
strict safe-integer JSON at depth at most 32, and exact JCS bytes.</t>
      <t>RBA/MSA/MP schemas and transport acceptance do not authenticate current
      authority, grant state, Proof, or distributed replay. The fixture checker
      explicitly refuses to use a supplied Proof as authority while its verifier
      is pending. FRAME_OK tests only framing; P1_BINDING_FIXTURE_OK tests
      signatures/relationships under TEST ONLY pins and synthetic state and
      always reports can_assert_xcim_pass=false.</t>
      <t>P1-01 includes 91 binding cases (7 positive and 84 adversarial), 24
      structural cases and 20 header cases. Fixture DKIM uses real Ed25519-SHA256
      signatures with offline TEST ONLY DNS records, per <xref target="RFC8463" />.
      Singleton oversigning excludes Bcc following DKIM guidance; Bcc remains
      subject to MP content commitment and cardinality rules. A separate Node
      check reproduces positive-vector signatures and commitments without Python
      helpers; it is not a second complete receiver or independent operator.</t>
      <t>The selected schemas and
canonical-byte rules are in <xref target="XCIMP1" />. MAIL01 supplies the
integration and multi-fault evaluation order. Fixture-only authority
records are not trust anchors, and registration remains provisional.</t>
    </section>
    <section anchor="publication">
      <name>Transparency, Current-State Proofs, and Publication</name>
      <t>The baseline combines an append-only event tree, authenticated sparse
      current-state tree, signed batches, and an externally verified anchor.
      Event tree history and current permission state have different roles.
      A proof bundle transports component evidence but does not gain authority
      merely from an outer wrapper or its generated_at timestamp.</t>
      <t>Batch preparation freezes consistent event/state snapshots. Retried
      publication preserves frozen bytes; later downloads cannot refresh a
      signed validity window. The Amoy testnet profile fixes additional genesis,
      proof-set, signer, chain, and finality relationships.</t>
      <t>MAIL01 transfers exact sparse/event-tree reconstruction and commitment rules and selects the existing AS/AN anchored families. A chain-independent profile is not introduced; full-prefix history bounds and unproven finality remain explicit. See <xref target="mail-minimum-contract" />.</t>
      <t>C4 commits to an unchanged signed WD permission
      batch and a separate AS authority event/state projection from one logical
      write cut. A new external anchor commits to C4, its sequence, predecessor,
      issuer/log and profile. A new checkpoint and zero-event permission batch
      are required to renew unchanged state; rewrapping an old batch is not
      renewal. C3 has the same observation time as C4 and cannot extend it.</t>
      <t>The existing Amoy 0.1 anchor does not authenticate these new authority
      roots. AN01 defines the selected anchor ABI/genesis; authentic deployment
      identity and finality verification are required for operational use. No real deployment is claimed here. The profile
      retains explicit anchoring; a log/witness alternative without a chain
      would be a separate profile. Signatures, logs and anchors alone do not
      prove that every state transition was authorized or the projection was
      computed correctly; monitoring and issuer trust remain necessary.</t>
    </section>
    <section anchor="verification">
      <name>Receiver Verification Algorithm</name>
      <t>The following overview lists
the required relationships. It is not an alternative evaluation order:
<xref target="mail01-evaluation" /> specifies the ordered phases and
<xref target="mail01-transaction" /> the acceptance transaction.</t>
      <ol>
        <li>Apply resource limits and strict JSON/base64url parsing.</li>
        <li>Select exact supported versions, schemas, profile, and trust policy.</li>
        <li>Resolve role-authorized receipt and batch keys with lifecycle policy.</li>
        <li>Validate canonical signatures, receipt commitment, issuer, and receipt validity.</li>
        <li>Bind recipient, application/epoch, permission, purpose, and authorization kind to the message or evaluation context.</li>
        <li>For P1, verify the RBA/MSA/MP signatures, exact scope, signer role,
        delegation limits, current MSA/key state, temporal relationships,
        envelope commitments, and complete message-content commitment.</li>
        <li>Validate issuance-event commitments, inclusion, and required history continuity.</li>
        <li>Establish the selected anchor and authenticated batch roots, including profile-specific genesis/proof-set checks.</li>
        <li>Validate state key, sparse proof, identity/epoch, status, and latest-event relationship.</li>
        <li>Establish current application/key and role-specific domain authority.</li>
        <li>Intersect authenticated validity intervals with local maximum-age policy.</li>
        <li>For P1, require a qualifying DKIM signature with exact domain and
        actual field/full-body coverage. Reevaluate current evidence and
        expiry at acceptance and coordinate durable replay/SMTP acceptance;
        rejected input cannot consume a presentation identifier.</li>
        <li>Return a specific result and non-sensitive diagnostics; apply delivery policy independently.</li>
      </ol>
      <t>MAIL01 defines deterministic phase ordering, derived verification context and the acceptance transaction. The local requirements-to-tests matrix records coverage and the remaining real-provider, transport and node boundaries. See <xref target="mail-minimum-contract" />.</t>
    </section>
    <section anchor="freshness">
      <name>Freshness, Caching, and Result Semantics</name>
      <t>XCIM_PASS and XCIM_PASS_CACHED require accepted, sufficiently fresh
      authenticated evidence for the intended context. Cache retrieval cannot
      extend signed validity. XCIM_PASS_ANCHOR_PENDING is a historical spelling
      classified as neutral in baseline registry 0.2.</t>
      <t>Revoked, stale, indeterminate, unavailable-anchor, and invalid-log-proof
      outcomes are distinct. Unavailable or untrusted evidence is not PASS;
      losing a positive XCIM signal does not by itself require mail rejection.
      Issuer-side permission results and synthetic fixture outcomes are not
      public-proof results.</t>
      <t>MAIL01 fixes bounded clock, age, expiry and local-cache rules, including re-evaluation at commit. These are design bounds, not measured revocation latency or operational SLAs. See <xref target="mail-minimum-contract" />.</t>
      <t>with local time t and bounded uncertainty u,
      require an observation start s to satisfy s &lt;= t-u, and every exclusive
      deadline e to satisfy t+u &lt; e. Intersect checkpoint/control-head validity,
      maximum ages, manifest, trust policy, receipt, RBA/MSA/MP, required keys,
      state/domain observation and the selected anchor policy. No cache grace
      extends expiry; reevaluate at SMTP acceptance and on exported reuse.</t>
      <t>The selected experiment parameters are 300 seconds of state age, 60 seconds
      snapshot cadence, up to 60 seconds of clock uncertainty and 24 hours
      maximum root-manifest age. A 120-second p99 revocation-publication target
      is unmeasured and is not a security bound. Publication-key compromise
      or withholding a newer root manifest is not covered by a five-minute
      revocation claim. Root and recovery channels require separate tests.</t>
      <t>Persist accepted manifest/head/checkpoint high-water marks and observed
      state tombstones. Authenticated newer evidence supersedes an older still
      unexpired view; same-sequence conflicting commitments trigger quarantine.
      Loss of floors requires trusted resynchronization, not trust-on-first-use
      from email. Proven absence, missing proof, expiry, revocation and network
      failure are distinct. MAIL01 specifies precedence and durable acceptance. AS01-F01 component
      fixtures check bounded full history offline without operating SMTP or a live anchor.</t>
    </section>
    <section anchor="operations">
      <name>Operational and Deployment Considerations</name>
      <t>The selected resource, time and history bounds define this experiment,
not measured service levels. Before a deployment claims suitability for a
workload, it needs evidence size, retrieval count, latency, publication
cadence, revocation propagation and CPU/memory/network measurements under
declared message rates and cache conditions.</t>
      <t>Loss of evidence or freshness withdraws the positive XCIM signal; local
mail policy remains separate. Operators must account for replay pressure,
lookup abuse, durable-state recovery and issuer availability. Forwarding
and list expansion are outside the selected profile. No real-node trial
or production availability claim is made by this draft.</t>
    </section>
    <section anchor="mail-minimum-contract">
      <name>Minimum Direct Email Integration Contract (MAIL01)</name>
      <t>This section specifies the bounded Reference-only integration of P1, AS01-F01 and AN01-F01 for this revision. It defines the selected minimum profile without changing historical signed objects or waiving anchor verification. The companion versioned contracts <xref target="XCIMP1" />, <xref target="XCIMAS" /> and <xref target="XCIMAN" /> define the selected structural families and publication algorithms. Their development identifiers do not imply IANA registration.</t>
      <section anchor="mail01-scope">
        <name>Scope, Inputs and Trust Boundaries</name>
        <t>A conforming minimum copy has one application and epoch, one original
    SMTP recipient, one purpose, and explicit_consent. The identity profile is
    OIDC-01 with receipt version 0.1. RBA, MSA and MP use P1; current authority
    and permission use AS01 within the AN01 anchored evidence envelope.
    Mailing lists, forwarding, SMTPUTF8, quoted local parts, EVP, wildcard
    scopes and subdelegation are outside this minimum profile.</t>
        <t>The receiver MUST obtain the original RCPT TO from its trusted SMTP
    boundary, not from To, a sender-supplied mapping or a forwarded header.
    Exactly one XCIM-Reference is required. XCIM-Proof is outside this minimum
    revision: its presence MUST prevent a positive MAIL01 result, even when
    its framing is valid. A future profile may specify Proof independently.
    A malformed or unsupported Reference MUST NOT fall back to a legacy URL
    representation.</t>
        <t>Receiver policy is installed administratively before evaluating mail.
    It binds the exact consent issuer URI to issuer_id and log_id, accepted
    genesis, root and recovery keys and thresholds, legacy pins, allowed
    algorithms, origins, provider policies, and AN intent, binding, contract,
    network genesis and finality bootstrap. Email, DNS discovery or a fetched
    self-signed manifest MUST NOT install or enlarge this policy. A valid
    issuer signature attests its observation; it does not prove that an
    untrusted issuer observed a truthful consent decision.</t>
      </section>
      <section anchor="mail01-wire">
        <name>Exact Wire Selection and Closed Structures</name>
        <t>Receipts MUST match the tuple (0.1, xcim_receipt,
    oidc_hosted_consent), with alg EdDSA restricted to Ed25519, the separately
    pinned legacy_receipt role and typ application/xcim-receipt+jcs.
    Batch manifests MUST match (0.1, batch_manifest), the legacy_batch role,
    EdDSA restricted to Ed25519, and application/xcim-batch-manifest+jcs.
    These legacy exceptions do not authorize EdDSA in the new families;
    see the fully specified algorithm guidance in <xref target="RFC9864" />.</t>
        <t>RBA, MSA and MP MUST use proposal_version p1, alg Ed25519, and the
    respective exact types application/xcim-recipient-binding-p1+json,
    application/xcim-message-signer-authorization-p1+json and
    application/xcim-message-presentation-p1+json. Their signer roles are
    recipient_binding, current application control and message_presentation.
    AS proposal_version is as-01; typ is application/xcim-as- followed by the
    exact object_type and +jcs. The AN deployment binding uses Ed25519,
    root quorum and application/xcim-as-anchor-binding+jcs. Each object
    MUST satisfy its closed schema as well as its semantic checks.</t>
        <t>RBA has exactly proposal_version, object_type, binding_id, issuer,
    app_id, app_epoch, receipt_id, receipt_commitment, permission_id,
    purpose_id, authorization_kind, pairwise_id, address_profile,
    recipient_domain, salt, address_commitment, iat and exp.
    MSA has exactly proposal_version, object_type, authorization_id,
    app_id, app_epoch, authority_epoch, message_key, roles, purpose_ids,
    authorization_kinds, from_domains, dkim_domains, iat and exp.
    message_key has kid, alg, public_jwk and public_key_thumbprint.
    roles contains only message_presentation; authorization_kinds contains
    only explicit_consent. Scope arrays contain 1 to 64 distinct entries
    and no wildcard.</t>
        <t>MP has exactly proposal_version, object_type, issuer, app_id, app_epoch,
    receipt_id, permission_id, purpose_id, authorization_kind,
    binding_commitment, signer_authorization_commitment, message_profile,
    message_commitment, presentation_id, from_domain, dkim_domain, iat and
    exp. The reference wrapper and JWS envelopes have exactly the properties
    defined in the P1 closed schemas. Schema acceptance alone establishes
    neither trust, freshness nor equality of scopes.</t>
        <t>JWS protected headers have exactly alg, kid and typ. No unprotected
    header, private JWK member, unknown critical extension, detached payload,
    b64=false or algorithm fallback is accepted. JWK members are exactly kty,
    crv and x, with OKP and Ed25519. A kid MUST NOT be reused for another key
    or role. New objects signed by application keys MUST postdate their
    authenticated admission. The key must be valid at issuance and evaluation.
    Changes to algorithms, types or namespace semantics require new versioned
    issuance, never rewriting signed historical objects.</t>
      </section>
      <section anchor="mail01-bytes">
        <name>Parsing, Address Rules and Commitments</name>
        <t>Apply E1 before conversion: valid UTF-8, no duplicate JSON names or
    isolated surrogates, no fractional or exponent number tokens, and safe
    integers within plus or minus 9007199254740991. Booleans are not epochs.
    Signed protected headers, payloads and the Reference wrapper MUST already
    be JCS bytes; lexical -0 is therefore rejected in those canonical
    representations. Base64url is unpadded and MUST reproduce itself after
    decoding and re-encoding. Signatures decode to 64 octets; hashes, salts,
    pairwise IDs and presentation IDs decode to 32 octets.</t>
        <t>The address procedure removes only outer SP and HTAB, requires exactly
    one @, and preserves the ASCII dot-atom local part and its case. Reject
    consecutive, leading or trailing local-part dots, a local part over 64
    octets, and a trailing domain dot. Map the domain with UTS #46 revision 31,
    Unicode 15.1.0, nontransitional processing and STD3 rules, followed by
    IDNA2008 A-label validation including hyphen, Bidi and Joiner checks.
    Labels are 1 to 63 octets, the domain at most 253 and the entire address
    at most 254. No provider-specific equivalence, alias expansion or local
    part lowercasing is inferred. A new Unicode table requires a new
    address_profile; installed library updates MUST NOT silently change it.</t>
        <t>Use the P1 ABNF for raw Reference, including final CRLF. Parameter
    values and order are case-sensitive. Concatenate only the permitted FWS
    separated base64url fragments. Reference is at most 16384 raw octets;
    physical header lines are at most 998 octets without CRLF. JSON depth is
    at most 32. IDs are at most 256 characters, kid 200 and purpose tokens
    128 ASCII characters. This bounded revision accepts messages up to 16 MiB,
    headers up to 256 KiB, AS evidence up to 1 MiB and the complete anchored
    envelope up to 2 MiB. Exceeding a bound cannot yield partial verification.</t>
        <t>With H = SHA-256, J = JCS, U = UTF-8 and NUL a zero octet, the
    following functions fix the domain separation. The JWS envelope hashes
    include all protected, payload and signature members.</t>
        <sourcecode type="text">
rc = b64u(H(U("XCIM-RECEIPT-0.1") || NUL || J(receipt_payload)))
bc = b64u(H(U("XCIM-BINDING-ENVELOPE-P1") || NUL || J(rba_jws)))
sc = b64u(H(U("XCIM-SIGNER-AUTHORIZATION-P1") || NUL || J(msa_jws)))
ac = b64u(H(U("XCIM-RECIPIENT-BINDING-P1") || NUL
           || J(address_input)))
mc = b64u(H(U("XCIM-DIRECT-MESSAGE-P1") || NUL || J(message_input)))
</sourcecode>
        <t>rc is receipt_commitment, bc binding_commitment, sc
    signer_authorization_commitment, ac address_commitment and mc
    message_commitment. address_input contains exactly the RBA fields issuer,
    app_id, app_epoch, receipt_id, receipt_commitment, permission_id,
    purpose_id, authorization_kind, pairwise_id, address_profile,
    recipient_domain and salt, plus canonical_recipient computed from trusted
    RCPT TO. The canonical recipient is not added to the transported RBA.</t>
        <t>RBA and MP lifetimes MUST be positive and at most 86400 seconds;
    MSA lifetime at most 604800. iat MUST NOT exceed evaluation time plus
    60 seconds. Expiration is exclusive. MP.iat is at least both RBA.iat
    and MSA.iat, and MP.exp is no later than either parent expiration.
    Authority, state and clock-uncertainty deadlines further restrict these
    windows; a long-lived signature is not a current send permit.</t>
      </section>
      <section anchor="mail01-issuer">
        <name>OIDC Issuance and Consent Transaction</name>
        <t>The issuer MUST preselect a versioned provider policy containing exact
    issuer, permitted keys and algorithms, clients, address authority classes,
    consent origins and return URIs. Use the authorization-code flow with
    session-bound state, PKCE and a one-time nonce. The server session fixes
    application and epoch, active OAuth binding, provider, client, original
    recipient, nonce, manifest and hash, purpose, origin, return URI and expiry.
    A token MUST NOT choose the trusted issuer or cause arbitrary discovery.</t>
        <t>Validate the ID Token signature, exact issuer, audience, azp where
    applicable, subject, nonce, times and required address claims according
    to <xref target="OIDCCore" /> and the admitted provider policy. MAIL01
    excludes provider_relay. email_verified alone is insufficient authority.
    The observed canonical address MUST equal the frozen recipient.
    Authentication is distinct from consent: require a separate decision for
    the same session, manifest and purpose, with authenticated_at no later than
    accepted_at, and accepted_at no later than issued_at.</t>
        <t>The issuer MUST durably consume session and nonce and store the decision
    and issued receipt atomically. A denial is terminal for that session.
    Refresh and login alone do not renew a grant. A failure before commit
    does not emit a receipt. A retry after commit cannot create a second grant;
    the issuer may retrieve the recorded result through its authenticated
    session interface. Nonce reuse across sessions of the same provider and
    client MUST be rejected.</t>
        <t>The public mapping retains the closed OIDC 0.1 receipt structure.
    The application and identity-evidence client commitments MUST be equal
    and all commitment values decode to their prescribed lengths. The
    receiver admits adapter version, provider policy, comparison rule,
    address authority class and consent origin explicitly. It does not
    receive raw tokens, subjects, addresses or the issuer's commitment key.</t>
        <t>MAIL01 requires finite, non-null receipt and permission expirations,
    even where historical schemas permit null. Issuer replay storage loss
    requires authenticated recovery; a token or session retry MUST NOT
    recreate an empty issuance store. The local adapter checks nbf when
    present and restricts sub to a nonempty ASCII string of at most 255
    characters.</t>
        <t>The new experimental adapter mail01-local-oidc-01 uses
    HMAC-SHA256(secret, UTF8(tag) || NUL || JCS(array)), encoded as unpadded
    base64url. Scope is [consent_issuer, app_id, app_epoch, provider_issuer].
    The tags XCIM-MAIL01-CLIENT, XCIM-MAIL01-SUBJECT, XCIM-MAIL01-NONCE and
    XCIM-MAIL01-PAIRWISE append respectively client_id, sub, nonce and sub to
    that scope. XCIM-MAIL01-RECEIPT-ID appends session_id;
    XCIM-MAIL01-PERMISSION-ID appends session_id and purpose_id. IDs add
    their existing receipt or permission URN prefix. The private key has at
    least 256 bits of entropy and is separated by issuer; its version belongs
    to the issuance policy. Rotation affects new issuance only. These
    commitments are opaque attestations, not receiver-recomputable identity
    proofs, and assign no new recipe to historical commitments.</t>
        <t>The local issuer harness accepts only synthetic, pinned EdDSA/Ed25519
    JWTs, one string audience, a maximum 600-second token interval and no
    clock leeway. It tests claim validation and durable issuance, not a browser,
    authorization endpoint, PKCE exchange or real provider integration.
    This harness restriction does not replace the OIDC requirements above.</t>
      </section>
      <section anchor="mail01-content">
        <name>Message Construction and Domain Authentication</name>
        <t>The sender freezes the content, signs MP, adds Reference, and then
    signs DKIM. It generates a fresh 32-octet random presentation_id per copy.
    A retry preserves the presentation and signed objects. A different content
    commitment requires a new presentation. Deterministic IDs and keys in the
    published test data MUST NOT be used for operational issuance.</t>
        <t>message_input contains exactly headers, an ordered array of ASCII
    relaxed-canonicalized header strings including their terminal CRLF, and
    body_sha256, the base64url SHA-256 of the complete relaxed body. Use
    <xref target="RFC6376" /> Sections 3.4.2 and 3.4.4. Do not decode MIME,
    render the body, truncate it or sort header occurrences. The empty
    relaxed body is zero octets. Exclude only Received, Return-Path,
    Authentication-Results, ARC-Authentication-Results, ARC-Message-Signature,
    ARC-Seal, DKIM-Signature, XCIM-Reference and XCIM-Proof, comparing names
    case-insensitively. Do not exclude arbitrary x-* fields.</t>
        <t>Reject bare CR/LF, controls and non-ASCII headers. From has one mailbox,
    Date a timezone and Message-ID one local@domain enclosed by angle brackets
    with no whitespace or extra @. From, Date, Message-ID, To, Cc, Bcc, Subject,
    Sender, Reply-To, MIME-Version, Content-Type, Content-Transfer-Encoding,
    Reference and Proof are singletons. Nonempty Bcc is unsupported. All
    occurrences of other fields are included in their original order.</t>
        <t>At least one cryptographically valid DKIM signature MUST have the exact
    MP dkim_domain, current domain authority, no l= truncation and coverage
    of the present Reference and critical singleton fields. Require one more
    h= occurrence than present instances of each critical singleton except
    Bcc. Bcc remains covered by the MP projection and cardinality checks.
    Inspect actual DKIM occurrence selection. A separate invalid DKIM
    signature does not invalidate a qualifying signature. AS domain authority
    does not replace DNS/DKIM verification.</t>
      </section>
      <section anchor="mail01-state">
        <name>Authenticated State Composition</name>
        <t>Derive the AS request from the bounded, still-untrusted Reference:
    app_id, app_epoch, authority_epoch, control_kid, mp_kid, authorization_id,
    the recomputed MSA envelope commitment, from_domain, dkim_domain,
    purpose_id, pairwise_id, permission_id and receipt_commitment.
    A sender-supplied auxiliary request MUST NOT substitute for this
    derivation. These hints have no authority before verification.</t>
        <t>Verify the AS root quorum, manifest chain, exact roles, epochs and
    predecessor commitments from the admitted genesis. Require distinct
    signers by thumbprint; root/recovery sets are disjoint. Check that kid
    is not reused and revoked keys are not reactivated. Checkpoint and
    control-head signers are distinct and authorized by the root manifest,
    never by their own state leaves. The checkpoint and control-head MUST
    bind the same manifest, genesis, cut and sequence.</t>
        <t>Reproduce the authenticated event-history prefixes and AS sparse
    projection; verify membership or absence witnesses, material commitments
    and current lifecycle events. Verify the WD receipt and batch, event
    inclusion and current sparse permission proof under the same committed
    cut. Consult application state by stable app_id so an old epoch cannot
    remain authoritative. Application, control key, delegated MP key, MSA,
    From domain, DKIM domain and consent-presentation delegation MUST all be
    active, current and in the exact scope. The transported MSA envelope
    MUST equal the one authenticated by AS state.</t>
        <t>Derive the P1 key and state context only from these authenticated
    records; never accept active/revoked flags supplied beside the message.
    Match receipt, RBA and MP issuer, receipt ID, application and epoch,
    permission, purpose and authorization kind. Match pairwise ID, receipt
    commitment, key thumbprints, MSA authority epoch, domains, RBA/MSA
    commitments, recipient commitment and message commitment. Verify all
    signatures and their issuance and current key windows.</t>
        <t>Revoked, expired and erased states are terminal. A suspended MSA
    cannot reactivate; new authorization is required. Key rotation uses a
    new kid, authenticated lifecycle events and an updated MSA. A new key
    cannot authorize its own admission. Signed absence is not permission.
    Preserve known terminal states and monotonic epochs across restarts.
    Root recovery requires authenticated resynchronization before use, not
    merely a recovery signature or resetting local floors.</t>
        <t>Issuer authority_attestation records attest administrative actor and
    domain-possession observations. The issuer MUST retain private evidence
    binding authenticated actor, a random one-time challenge, app/epoch,
    domain, role, observation time, outcome and expiry. Challenge consumption
    and state change are atomic. Recheck possession on control/epoch changes
    and before recheck_by; loss of possession withdraws the domain roles.
    The public observation commitment does not independently prove DNS
    ownership or the truth of an issuer's human-action report.</t>
      </section>
      <section anchor="mail01-state-algorithms">
        <name>Publication Hashes and Proof Reconstruction</name>
        <t>Let TH(tag, bytes...) mean SHA-256 of UTF8(tag), NUL and the
    concatenated raw byte arguments. AS object commitment of kind K and
    value V is base64url(TH("XCIM-AS-01-" || K, JCS(V))). K is exactly
    GENESIS, MANIFEST, EVENT, STATE-VALUE, MATERIAL, CHECKPOINT or CONTROL-HEAD
    for the corresponding object. Commit the decoded payload rather than
    its signature envelope unless the P1 envelope formula explicitly applies.</t>
        <t>The AS sparse key is TH("XCIM-AS-01-STATE-KEY", JCS of the object with
    issuer_id, log_id and locator). A present leaf is
    TH("XCIM-AS-01-STATE-LEAF", key, decoded STATE-VALUE commitment).
    Define E[0] = TH("XCIM-AS-01-STATE-EMPTY") and
    E[h+1] = TH("XCIM-AS-01-STATE-NODE", E[h], E[h]).
    Begin at the present leaf or E[0] for authenticated absence. Interpret
    key as an unsigned big-endian 256-bit integer. Consume exactly 256
    siblings from leaf to root, each 32 decoded octets. At height h, use
    TH("XCIM-AS-01-STATE-NODE", sibling, current) if bit h is one, otherwise
    TH("XCIM-AS-01-STATE-NODE", current, sibling). The reconstructed root
    MUST equal the checkpoint's authority_state_root. Check issuer/log,
    locator and checkpoint commitment before accepting either presence or
    absence. Absence material/event fields must be null.</t>
        <t>For AS event history, the empty root is
    TH("XCIM-AS-01-EVENT-EMPTY"), a one-event tree is
    TH("XCIM-AS-01-EVENT-LEAF", JCS(event)), and an internal node is
    TH("XCIM-AS-01-EVENT-NODE", left, right). For n greater than one,
    split at the largest power of two strictly less than n, preserving event
    order. Inclusion paths contain siblings from leaf to root, with side
    determined recursively by leaf_index and tree_size. Consume the entire
    path and reject missing or excess nodes. For the WD permission event
    tree, use respectively XCIM-EVENT-EMPTY-0.1, XCIM-EVENT-LEAF-0.1 and
    XCIM-MERKLE-NODE-0.1 with the same splitting procedure.</t>
        <t>The WD permission sparse key is
    TH("XCIM-STATE-KEY-0.1", UTF8("permission"), NUL, UTF8(permission_id)).
    Its present leaf is TH("XCIM-STATE-LEAF-0.1", key,
    TH("XCIM-STATE-VALUE-0.1", JCS(state_value))).
    Empty leaf and node tags are XCIM-STATE-EMPTY-LEAF-0.1 and
    XCIM-STATE-NODE-0.1. The 32-octet sibling bitmap is indexed by root
    depth, most-significant bit first; non_empty_siblings follow that
    root-to-leaf order. During leaf-to-root reconstruction at height h,
    consult depth 255-h, consuming supplied nonempty siblings in reverse
    order; a zero bitmap bit uses the recursively constructed empty node
    at height h. Direction is again bit h of the big-endian key. Require
    exactly the bitmap population count of siblings, correct state_key and
    the batch's exact state_root. MAIL01 requires a present active permission.</t>
        <t>Replay AS lifecycle events in sequence from one. The first state
    epoch is one; each successor increments by one and binds both previous
    event and state commitments. State time cannot decrease; terminal states
    cannot become active. Every event binds issuer, log, locator, state epoch
    and effective time to its new state core. Recompute the projected sparse
    root at each checkpoint cut. Full prefixes MUST match their declared
    sizes, roots and last sequence. A zero-event permission batch MUST NOT
    change the previous state root. An accepted newer checkpoint cannot hide
    a previously known terminal state.</t>
        <t>AN anchors decoded 32-octet commitments. Checkpoint commitment C uses
    the CHECKPOINT formula above. G is the GENESIS commitment. AN identity I
    uses TH("XCIM-AS-EVM-01-IDENTITY", JCS of adapter_profile, issuer_id,
    log_id and as_genesis_commitment). Intent T uses
    TH("XCIM-AS-EVM-01-INTENT", JCS(intent)); binding B uses
    TH("XCIM-AS-EVM-01-DEPLOYMENT-BINDING", JCS(binding payload)).
    ABI digest is SHA-256 of the JCS ABI array; contract/event identifiers
    use Keccak-256 and ABI encoding as specified in <xref target="XCIMAN" />.
    Do not interchange SHA-256 and Keccak-256 or hash the textual hex/base64
    encoding in place of bytes32. Intent and genesis precede deployment;
    neither includes its future binding or receipt. This avoids circular
    commitments. The fixed AN contract/ABI and build recipe remain normative
    dependencies of this bounded adapter, not certification of Amoy operation.</t>
      </section>
      <section anchor="mail01-anchor-transport">
        <name>Anchoring and Evidence Acquisition</name>
        <t>Require the AN01 external evidence wrapper. Its intent, root-signed
    binding, network and genesis, ABI, constructor, runtime, contract, event,
    checkpoint and current contract state MUST satisfy <xref target="XCIMAN" />.
    AS01's inner null anchor slot only locates the anchor in that outer
    wrapper; an AS-only response MUST NOT produce a positive MAIL01 result.</t>
        <t>Network observations originate from the receiver's admitted node:
    finalized block and ancestry, receipt/event, code and getters at the same
    canonical block hash, current head, halt state and monotonic chain floors.
    A finalized flag in an issuer object, matching responses from two RPC
    servers or latest are insufficient. No fallback bypasses consensus
    bootstrap, finality or state verification. The current laboratory checks
    relationships against a synthetic view and therefore never reports
    consensus_verified or can_assert_xcim_pass as true.</t>
        <t>Evidence endpoints and authentication are selected by admitted receiver
    policy, never by email URLs. Use POST to the exact configured HTTPS
    endpoint, Content-Type application/json, Accept application/json and
    no content encoding. The closed request object has exactly profile,
    the string mail01, and request, the tuple object defined above.
    Success is HTTP 200, Content-Type application/json and a complete AN01
    EvidenceSet JSON body. Mutual TLS authenticates a receiver certificate
    admitted by the issuer and bound to authorized query scopes.
    Endpoint configuration is administrative, not dynamic discovery.
    Retrieval MUST validate HTTPS hostname/certificate and applicable pins,
    constrain the resolved destination and the actual connected address,
    reject redirects, origin changes, unsolicited compression and HTTP
    fallback, and enforce a 10-second deadline and size limits before parsing.
    Block private, loopback and link-local addresses except for an explicitly
    administered endpoint. Prevent DNS rebinding and credential forwarding.
    Unauthorized queries MUST NOT disclose private state. An HTTP error,
    including 404 or 429, proves neither revocation nor permission.</t>
        <t>The versioned AS01 development contract uses full prefixes bounded to
    16 cuts/manifests and 128 events per log. Exceeding these bounds MUST
    withdraw the positive signal, not silently truncate history or restart
    genesis to evade revocation. A future continuity/compaction contract is
    needed for sustained operation beyond this bounded revision. Transport
    and node implementations remain separate operational dependencies; local
    evidence injection does not establish their conformance.</t>
      </section>
      <section anchor="mail01-evaluation">
        <name>Evaluation Order and Time Intersection</name>
        <t>Evaluate in this order: local policy/store/clock preconditions;
    parsing and profile selection; authenticated AS authority and permission;
    AN anchoring; P1 bindings and DKIM; admitted public OIDC projection;
    final time intersection; replay and durable acceptance. Stop at the first
    failed phase. Within a phase every failed mandatory check is nonpositive;
    diagnostic subcode ordering is not a wire guarantee for simultaneous
    faults. Structural success, a valid isolated signature, neutral status or
    anchor-pending status MUST NOT be promoted to VERIFIED.</t>
        <t>Contract outcome classes are UNSUPPORTED_PROFILE, INVALID_EVIDENCE,
    NOT_AUTHORIZED, TEMPORARILY_UNVERIFIABLE, DUPLICATE_ACCEPTED,
    REPLAY_CONFLICT and VERIFIED. These are descriptive classes, not a newly
    registered Authentication-Results method or an extension to historical
    result registries. VERIFIED requires every real dependency. SMTP delivery
    policy remains local; XCIM failure does not universally mandate a 5xx.
    A policy requiring a verified XCIM signal cannot accept on an unavailable
    mandatory dependency.</t>
        <t>For wall-clock interval [t-u,t+u], require u at most 60 seconds,
    this_update no later than t-u and t+u strictly earlier than the effective
    deadline. That deadline is the minimum of all used object, key,
    policy/manifest, state, permission, domain observation, binding and
    finalized-header windows. AS state is at most 300 seconds old; manifest
    and domain observation windows at most 86400 seconds; finalized header
    age is less than 120 seconds; local node-view cache age less than 30
    seconds. Fetching or rereading MUST NOT restart those windows.</t>
        <t>Use a monotonic clock for elapsed budgets and a bounded wall clock for
    signed times. Recheck immediately before acceptance, including time spent
    verifying and waiting for the store lock. Clock regression, unbounded
    uncertainty or expiry during verification prevents positive acceptance.
    These values are bounded-design parameters, not measured SLAs.</t>
      </section>
      <section anchor="mail01-transaction">
        <name>Replay, Durable Queue and Restrictive State</name>
        <t>The local replay key uses the same tagged SHA-256/JCS construction with
    tag XCIM-MAIL01-REPLAY and array [issuer, app_id, app_epoch, permission_id,
    canonical_recipient, presentation_id]. The acceptance fingerprint uses
    tag XCIM-MAIL01-ACCEPTANCE and the object containing exactly reference
    and message_commitment. This fingerprint is a local record, not a new
    signed wire object.</t>
        <t>All MX workers sharing an acceptance domain MUST serialize the
    acceptance transaction: read admitted policy and durable floors,
    verify the evidence and deadlines, compare replay, store the durable
    message/outbox, presentation record and new floors, then commit. Only
    after commit may the transport report acceptance. Invalid messages MUST
    NOT consume a nonce. A pre-commit crash rolls back acceptance state;
    a lost 250 response does not undo a committed message.</t>
        <t>An already accepted identical fingerprint is idempotent and MUST NOT
    enqueue another delivery. Current policy and evidence are still checked
    before indicating a verified retry. A different fingerprint with the
    same replay key is REPLAY_CONFLICT. Durable enqueue does not by itself
    prove exactly-once final mailbox delivery; that requires cooperation
    from the downstream delivery system.</t>
        <t>An authenticated signed denial may restrict trust before its anchor
    is available, but cannot create a positive signal. Preserve terminal
    states and restrictive floors after authenticating AS history and
    witnesses. Unauthenticated data MUST NOT update these records.
    An authenticated conflicting manifest or checkpoint at the same
    epoch/sequence quarantines the log. Missing, corrupt or unavailable
    storage, or an unadmitted policy change, requires withdrawal of the
    signal and authenticated administrative resynchronization. Never
    automatically replace a lost store with empty replay/floor state.</t>
        <t>The local SQLite laboratory uses FULL synchronization, a serialized
    write transaction and a durable test outbox. It has no garbage collection
    and a 1000-acceptance quota. Operational garbage collection must preserve
    replay protection until no presentation can be accepted again and must
    preserve terminal lifecycle floors. Detecting rollback of an entire disk
    requires an external authenticated floor; ordinary persistence alone
    does not establish that property.</t>
      </section>
      <section anchor="mail01-assurance">
        <name>Privacy, Evidence and Remaining Operational Work</name>
        <t>An issuer can lie about consent; a publisher can withhold renewal;
    root compromise exceeds the protection of individual object signatures.
    Anchoring does not prove truth or availability. Revocation freshness is
    bounded under the stated trust assumptions and is not instantaneous.
    RBA salts permit candidate-address guessing by parties that know possible
    addresses; commitments MUST NOT be described as encryption. State queries
    can reveal app/permission activity to the issuer. Require authorization,
    minimization, retention controls and rate limits, without erasing replay
    or terminal state still needed for safety.</t>
        <t>The local integrated suite issues a synthetic OIDC receipt, signs a
    new RBA/MP, verifies authenticated authority/permission and AN artifact
    relationships, checks content and DKIM, and tests expiry, revocation
    memory, rollback, restarts and competing acceptance processes. Positive
    results are explicitly MAIL01_LOCAL_QUEUED or
    MAIL01_LOCAL_ALREADY_QUEUED, with no operational XCIM_PASS.
    Public provider, DNS and chain data in the suite are synthetic.</t>
        <t>Real provider/browser and lifecycle administration, authenticated
    evidence transport, an admitted node/finality implementation, real MTA
    and distributed storage integration, sustained history continuity,
    independent security review and interoperability remain unproven.
    This draft may be reviewed with those limits; the suite does not close
    global implementation or operational readiness.</t>
      </section>
    </section>
    <section anchor="conformance">
      <name>Conformance and Test Evidence</name>
      <t>Baseline reports name document revision, role, supported object
      versions/profiles, schema manifest digest, date, trust/finality/freshness
      policy, tests, and limitations. Schema acceptance, cryptographic fixtures,
      separate implementations, and independently operated interoperability
      are distinct evidence categories.</t>
      <t>MAIL01 specifies the bounded minimum integration and its local conformance cases. Real transport, lifecycle administration, node finality, MTA integration, history compaction and independent reproduction remain necessary before a global implementation-readiness claim. See <xref target="mail-minimum-contract" />.</t>
      <section anchor="role-minimum">
        <name>Role Obligations and Evidence</name>
        <dl>
          <dt>Consent Issuer</dt>
          <dd>Validate identity and separate consent;
          issue exactly scoped receipts and RBAs; publish lifecycle and current
          authority under the selected profile.</dd>
          <dt>Application Control and Sender</dt>
          <dd>Authorize a finite MSA
          scope, isolate message-signing keys, sign one MP per recipient copy,
          preserve content commitments, and apply DKIM after XCIM fields.</dd>
          <dt>Log and Publisher</dt>
          <dd>Authenticate a consistent permission
          and authority cut, sequence and predecessor, current state or proven
          absence, signed validity, and the required publication evidence.</dd>
          <dt>Receiver</dt>
          <dd>Use previously accepted trust and the original
          local RCPT TO; verify all bindings, roles, publication, state,
          freshness, and DKIM; coordinate durable replay and SMTP acceptance.
          Unavailable evidence cannot authorize omission of a check.</dd>
          <dt>Mirror and Evidence Transport</dt>
          <dd>Transfer bounded evidence
          without acquiring authority by hosting it; enforce retrieval, cache,
          redirect, and resource policies.</dd>
        </dl>
        <t>These obligations describe the
selected roles; they are not certification claims about the available
fixtures. Reports must distinguish structural checks, cryptographic checks,
integrated tests, and independent operation. Remaining specification work
is listed in <xref target="open-issues" />.</t>
      </section>
    </section>
    <section anchor="security">
      <name>Security Considerations</name>
      <t>The threat model includes malicious
or compromised senders, issuers, applications, logs, resolvers, mirrors,
trust sources, chain/RPC sources, and keys. Relevant attacks include false
consent observations, deceptive presentation, replay, split views, stale
authority, metadata substitution, domain transfer, SSRF, and resource
exhaustion.</t>
      <t>An accepted issuer can attest falsely. Cryptographic integrity and
      publication ordering do not establish truth of the original identity or
      consent observation. Receiver trust policy and remedies for compromise
      must be explicit.</t>
      <t>The minimum analysis treats a malicious sender, compromised delegate,
      dishonest accepted issuer, withholding publisher, untrusted resolver,
      replaying intermediary, and compromised receiver host as distinct actors.
      Scope/signature checks limit cross-application or cross-recipient reuse;
      current authority and bounded validity limit stale acceptance only under
      their stated trust assumptions. Root-manifest withholding can outlast
      the five-minute state window. Receiver-host compromise can
      defeat local trust, clock, and durable floors. Neither an anchor nor a
      second signature removes these residual risks.</t>
      <t>The required signature, scope, age, resource,
transport and durable-state checks address these attacks under the selected
trust assumptions. This initial analysis has not received independent
cryptographic review. In particular, the open lifecycle and continuity
questions in <xref target="open-issues" /> prevent a general claim of
sustained secure operation.</t>
    </section>
    <section anchor="privacy">
      <name>Privacy Considerations</name>
      <t>Public receipts, logs, and chain data exclude recipient email addresses,
      raw external identity tokens, credentials, private keys, and predictable
      unsalted email hashes. Pairwise identifiers reduce correlation but do not
      guarantee anonymity; timing, application/purpose metadata, and queries
      can still reveal relationships.</t>
      <t>Evidence services require authorized queries and
resource limits as specified in <xref target="mail01-anchor-transport" />.
Public commitments and private mappings have different retention needs.
Compromised issuers, message observers and evidence services can correlate
activity; minimized fields do not eliminate those risks.</t>
      <t>Private identity and consent inputs flow to the Consent Issuer; public
      logs receive commitments and opaque identifiers. The direct-email RBA,
      MSA, and MP reach the sender and intended receiver with the message.
      Lookup timing and identifiers can expose relationships to evidence
      services. An RBA salt known to a message observer permits address guesses
      to be tested; it is not encryption. Retention, access control, and deletion
      of private mappings and receiver replay records remain profile obligations,
      not guarantees supplied by permanent public commitments.</t>
    </section>
    <section anchor="iana">
      <name>IANA Considerations</name>
      <t>This revision uses provisional identifiers and makes no claim of IANA
assignment. The following proposals and unresolved choices are submitted
for review; no new registry or structured suffix is established here.</t>
      <section anchor="iana-media">
        <name>Media and JWS Type Identifiers</name>
        <t>
          <xref target="mail01-wire" /> enumerates the exact JWS typ strings.
Historical +jcs strings are retained as signed protocol identifiers; +jcs
is not treated as a registered structured suffix. The evidence HTTP
transport uses application/json. A later revision must distinguish
envelope, payload and HTTP media types, complete appropriate registration
templates, and specify compatibility before changing signed typ values.
The P1 +json names likewise do not imply completed registration.</t>
      </section>
      <section anchor="iana-identifiers">
        <name>Identifier Namespace</name>
        <t>Selected objects retain provisional urn:xcim identifiers. This document
does not establish a registered URN namespace. A later revision must
either propose a namespace under <xref target="RFC8141" /> with assignment,
persistence, equivalence and change-control rules, or define an alternative
and explicit migration. Existing signed identifiers cannot be silently
replaced.</t>
      </section>
      <section anchor="iana-extensions">
        <name>Email Fields and Result Reporting</name>
        <t>The candidate email field for this minimum is XCIM-Reference, with syntax
in <xref target="p1-contract-artifacts" /> and semantics in
<xref target="mail-minimum-contract" />. Its proposed initial status is
provisional, its protocol is mail, and the document author is the contact.
The final field-registration request remains open. XCIM-Proof is excluded
from MAIL01; its grammar is retained solely to identify the broader P1
framing.</t>
        <t>This document defines no new Authentication-Results method. Internal
XCIM result labels are not a registered method and cannot be represented
as one. Future profile, object and result registries require explicit
initial values and allocation policies using <xref target="RFC8126" />.</t>
      </section>
    </section>
    <section anchor="artifact-distribution">
      <name>Artifact Distribution and Reproducibility</name>
      <t>WD-02-E1 supplies a revision-specific source archive, schemas,
      registries, deterministic vectors, and fixture tools with a manifest.
      Historical published artifacts remain frozen. A hash manifest provides
      integrity comparison, not independently established release authority.</t>
      <t>The normative project dependencies
are the identified WD-02-E1, P1-01, AS01-F01 and AN01-F01 revisions, not an
unversioned latest implementation. An implementation report must identify
the exact source revision and schema manifest it used. Public test keys
are not operational credentials, and successful manifest verification
establishes byte integrity rather than trust in an issuer.</t>
    </section>
    <section anchor="implementation-status">
      <name>Implementation Status</name>
      <t>This section is informative. MAIL01 has a same-project local integration
suite with 52 passing cases covering synthetic identity/consent issuance,
recipient and message bindings, authenticated authority and permission,
anchor-artifact relationships, DKIM, replay, revocation memory, expiry at
acceptance, restart and concurrent local acceptance. The provider, DNS and
chain observations are synthetic. The durable outbox is local SQLite,
not a deployed MTA or distributed MX service.</t>
      <t>P1, AS01 and AN01 supply structural and adversarial component fixtures.
The local EVM tests exercise contract bytecode, while node/bootstrap tests
use synthetic observations. None establishes real consensus/finality,
independent interoperability or a production revocation latency.</t>
      <t>
        <xref target="RFC7942" /> explains the role of implementation reports.
Real OIDC flows, authenticated evidence services, node admission/finality,
MTA/distributed storage, independent review and workload measurements remain
future validation. They are separate from the unresolved specification
questions in <xref target="open-issues" /> and are not prerequisites to
discussing this initial Internet-Draft.</t>
    </section>
    <section anchor="open-issues">
      <name>Open Design Questions and Closure Criteria</name>
      <t>The bounded MAIL01 integration is specified in this revision. The
following questions delimit what remains incomplete; they do not authorize
weaker verification or imply that an operational deployment has been
validated. Implementations must fail to produce a positive result when a
required input or proof cannot be established.</t>
      <dl>
        <dt>OI-01: Authority enrollment and recovery</dt>
        <dd>The receiver uses an administratively installed trust policy and checks
signed current application, domain, key and MSA state. Portable procedures
for authenticating administrative actors, observing domain possession,
changing owners and provisioning recovery across unrelated operators are
not fully specified. Closure requires explicit authenticated inputs,
role/epoch constraints, conflict and compromise handling, and positive and
adversarial vectors for those procedures. Metadata discovery alone must
never confer authority.</dd>
        <dt>OI-02: Complete permission lifecycle producer</dt>
        <dd>Issuance, finite expiry, current-state/latest-event verification,
revocation rejection and receiver memory are specified. The full
producer-side transition/actor contract for lifecycle requests, conflicting
actions and recovery remains incomplete. The receiver relies on its
accepted issuer's attestation of those observations. Closure requires a
transition table with authorized actors, authenticated request inputs,
idempotency and ordering rules, atomic event/state publication, and vectors
showing that revocation or an unrelated actor cannot create a new grant.</dd>
        <dt>OI-03: Sustained history continuity</dt>
        <dd>AS01-F01 uses full prefixes bounded to 16 cuts/manifests and 128 events
per log. Exhaustion withdraws the positive signal. There is no silent
truncation or genesis reset. Closure for sustained operation requires a
versioned continuity/compaction protocol preserving revocation, latest-event
bindings and rollback protection for existing and new receivers, with
boundary, restart and adversarial proof vectors. This revision remains
explicitly bounded until such a protocol is defined.</dd>
        <dt>OI-04: Registration and migration</dt>
        <dd>The field, type and namespace decisions in <xref target="iana" /> remain
provisional. Closure requires concrete registration templates or a chosen
existing namespace, allocation/change-control rules where relevant, and
versioned migration that does not reinterpret existing signed bytes.
The selected minimum does not define an Authentication-Results method.</dd>
      </dl>
      <t>Independent security/privacy review, real transport/provider/node/MTA
integration, interoperability and load testing are future evidence tasks
described in <xref target="implementation-status" />. They cannot substitute
for resolving a missing protocol rule, and the absence of those trials
does not prevent publication of a draft that states its limits.</t>
    </section>
    <section anchor="community">
      <name>Review Objectives</name>
      <t>Review is requested on the usefulness of purpose-specific authorization
for direct email, the issuer trust model, recipient/content binding,
revocation and privacy tradeoffs, and the open questions in
<xref target="open-issues" />. This is an individual proposal with intended
status Experimental; it does not claim working-group adoption, community
consensus or a production deployment.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>Normative References</name>
      <reference anchor="RFC2119" target="https://www.rfc-editor.org/rfc/rfc2119">
        <front>
          <title>Key words for use in RFCs to Indicate Requirement Levels</title>
          <author initials="S." surname="Bradner" fullname="Scott Bradner" />
          <date year="1997" month="March" />
        </front>
        <seriesInfo name="BCP" value="14" />
        <seriesInfo name="RFC" value="2119" />
      </reference>
      <reference anchor="RFC8174" target="https://www.rfc-editor.org/rfc/rfc8174">
        <front>
          <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
          <author initials="B." surname="Leiba" fullname="Barry Leiba" />
          <date year="2017" month="May" />
        </front>
        <seriesInfo name="BCP" value="14" />
        <seriesInfo name="RFC" value="8174" />
      </reference>
      <reference anchor="RFC7515" target="https://www.rfc-editor.org/rfc/rfc7515">
        <front>
          <title>JSON Web Signature (JWS)</title>
          <author initials="M." surname="Jones" />
          <author initials="J." surname="Bradley" />
          <author initials="N." surname="Sakimura" />
          <date year="2015" month="May" />
        </front>
        <seriesInfo name="RFC" value="7515" />
      </reference>
      <reference anchor="RFC8032" target="https://www.rfc-editor.org/rfc/rfc8032">
        <front>
          <title>Edwards-Curve Digital Signature Algorithm (EdDSA)</title>
          <author initials="S." surname="Josefsson" />
          <author initials="I." surname="Liusvaara" />
          <date year="2017" month="January" />
        </front>
        <seriesInfo name="RFC" value="8032" />
      </reference>
      <reference anchor="RFC8785" target="https://www.rfc-editor.org/rfc/rfc8785">
        <front>
          <title>JSON Canonicalization Scheme (JCS)</title>
          <author initials="A." surname="Rundgren" />
          <author initials="B." surname="Jordan" />
          <author initials="S." surname="Erdtman" />
          <date year="2020" month="June" />
        </front>
        <seriesInfo name="RFC" value="8785" />
      </reference>
      <reference anchor="RFC6376" target="https://www.rfc-editor.org/rfc/rfc6376">
        <front>
          <title>DomainKeys Identified Mail (DKIM) Signatures</title>
          <author initials="D." surname="Crocker" role="editor" />
          <author initials="T." surname="Hansen" role="editor" />
          <author initials="M." surname="Kucherawy" role="editor" />
          <date year="2011" month="September" />
        </front>
        <seriesInfo name="RFC" value="6376" />
      </reference>
      <reference anchor="RFC7638" target="https://www.rfc-editor.org/rfc/rfc7638">
        <front>
          <title>JSON Web Key (JWK) Thumbprint</title>
          <author initials="M." surname="Jones" />
          <author initials="N." surname="Sakimura" />
          <date year="2015" month="September" />
        </front>
        <seriesInfo name="RFC" value="7638" />
      </reference>
      <reference anchor="RFC5234" target="https://www.rfc-editor.org/rfc/rfc5234">
        <front>
          <title>Augmented BNF for Syntax Specifications: ABNF</title>
          <author initials="D." surname="Crocker" role="editor" />
          <author initials="P." surname="Overell" />
          <date year="2008" month="January" />
        </front>
        <seriesInfo name="STD" value="68" />
        <seriesInfo name="RFC" value="5234" />
      </reference>
      <reference anchor="RFC7405" target="https://www.rfc-editor.org/rfc/rfc7405">
        <front>
          <title>Case-Sensitive String Support in ABNF</title>
          <author initials="P." surname="Kyzivat" />
          <date year="2014" month="December" />
        </front>
        <seriesInfo name="RFC" value="7405" />
      </reference>
      <reference anchor="RFC8463" target="https://www.rfc-editor.org/rfc/rfc8463">
        <front>
          <title>A New Cryptographic Signature Method for DomainKeys Identified Mail (DKIM)</title>
          <author initials="J." surname="Levine" />
          <date year="2018" month="September" />
        </front>
        <seriesInfo name="RFC" value="8463" />
      </reference>
      <reference anchor="RFC9864" target="https://www.rfc-editor.org/rfc/rfc9864">
        <front>
          <title>Fully-Specified Algorithms for JSON Object Signing and Encryption (JOSE) and CBOR Object Signing and Encryption (COSE)</title>
          <author initials="M.B." surname="Jones" />
          <author initials="O." surname="Steele" />
          <date year="2025" month="October" />
        </front>
        <seriesInfo name="RFC" value="9864" />
      </reference>
      <reference anchor="RFC8259" target="https://www.rfc-editor.org/info/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" />
        </front>
        <seriesInfo name="STD" value="90" />
        <seriesInfo name="RFC" value="8259" />
        <seriesInfo name="DOI" value="10.17487/RFC8259" />
      </reference>
      <reference anchor="RFC4648" target="https://www.rfc-editor.org/info/rfc4648">
        <front>
          <title>The Base16, Base32, and Base64 Data Encodings</title>
          <author fullname="S. Josefsson" initials="S." surname="Josefsson" />
          <date month="October" year="2006" />
        </front>
        <seriesInfo name="RFC" value="4648" />
        <seriesInfo name="DOI" value="10.17487/RFC4648" />
      </reference>
      <reference anchor="RFC6234" target="https://www.rfc-editor.org/info/rfc6234">
        <front>
          <title>US Secure Hash Algorithms (SHA and SHA-based HMAC and HKDF)</title>
          <author fullname="D. Eastlake 3rd" initials="D." surname="Eastlake 3rd" />
          <author fullname="T. Hansen" initials="T." surname="Hansen" />
          <date month="May" year="2011" />
        </front>
        <seriesInfo name="RFC" value="6234" />
        <seriesInfo name="DOI" value="10.17487/RFC6234" />
      </reference>
      <reference anchor="RFC5321" target="https://www.rfc-editor.org/info/rfc5321">
        <front>
          <title>Simple Mail Transfer Protocol</title>
          <author fullname="J. Klensin" initials="J." surname="Klensin" />
          <date month="October" year="2008" />
        </front>
        <seriesInfo name="RFC" value="5321" />
        <seriesInfo name="DOI" value="10.17487/RFC5321" />
      </reference>
      <reference anchor="RFC5322" target="https://www.rfc-editor.org/info/rfc5322">
        <front>
          <title>Internet Message Format</title>
          <author fullname="P. Resnick" initials="P." role="editor" surname="Resnick" />
          <date month="October" year="2008" />
        </front>
        <seriesInfo name="RFC" value="5322" />
        <seriesInfo name="DOI" value="10.17487/RFC5322" />
      </reference>
      <reference anchor="RFC3339" target="https://www.rfc-editor.org/info/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" />
        </front>
        <seriesInfo name="RFC" value="3339" />
        <seriesInfo name="DOI" value="10.17487/RFC3339" />
      </reference>
      <reference anchor="RFC8725" target="https://www.rfc-editor.org/info/rfc8725">
        <front>
          <title>JSON Web Token Best Current Practices</title>
          <author fullname="Y. Sheffer" initials="Y." surname="Sheffer" />
          <author fullname="D. Hardt" initials="D." surname="Hardt" />
          <author fullname="M. Jones" initials="M." surname="Jones" />
          <date month="February" year="2020" />
        </front>
        <seriesInfo name="BCP" value="225" />
        <seriesInfo name="RFC" value="8725" />
        <seriesInfo name="DOI" value="10.17487/RFC8725" />
      </reference>
      <reference anchor="RFC5890" target="https://www.rfc-editor.org/info/rfc5890">
        <front>
          <title>Internationalized Domain Names for Applications (IDNA): Definitions and Document Framework</title>
          <author fullname="J. Klensin" initials="J." surname="Klensin" />
          <date month="August" year="2010" />
        </front>
        <seriesInfo name="RFC" value="5890" />
        <seriesInfo name="DOI" value="10.17487/RFC5890" />
      </reference>
      <reference anchor="RFC5891" target="https://www.rfc-editor.org/info/rfc5891">
        <front>
          <title>Internationalized Domain Names in Applications (IDNA): Protocol</title>
          <author fullname="J. Klensin" initials="J." surname="Klensin" />
          <date month="August" year="2010" />
        </front>
        <seriesInfo name="RFC" value="5891" />
        <seriesInfo name="DOI" value="10.17487/RFC5891" />
      </reference>
      <reference anchor="RFC8301" target="https://www.rfc-editor.org/info/rfc8301">
        <front>
          <title>Cryptographic Algorithm and Key Usage Update to DomainKeys Identified Mail (DKIM)</title>
          <author fullname="S. Kitterman" initials="S." surname="Kitterman" />
          <date month="January" year="2018" />
        </front>
        <seriesInfo name="RFC" value="8301" />
        <seriesInfo name="DOI" value="10.17487/RFC8301" />
      </reference>
      <reference anchor="RFC8553" target="https://www.rfc-editor.org/info/rfc8553">
        <front>
          <title>DNS Attrleaf Changes: Fixing Specifications That Use Underscored Node Names</title>
          <author fullname="D. Crocker" initials="D." surname="Crocker" />
          <date month="March" year="2019" />
        </front>
        <seriesInfo name="BCP" value="222" />
        <seriesInfo name="RFC" value="8553" />
        <seriesInfo name="DOI" value="10.17487/RFC8553" />
      </reference>
      <reference anchor="RFC8616" target="https://www.rfc-editor.org/info/rfc8616">
        <front>
          <title>Email Authentication for Internationalized Mail</title>
          <author fullname="J. Levine" initials="J." surname="Levine" />
          <date year="2019" month="June" />
        </front>
        <seriesInfo name="RFC" value="8616" />
        <seriesInfo name="DOI" value="10.17487/RFC8616" />
      </reference>
      <reference anchor="OIDCCore" target="https://openid.net/specs/openid-connect-core-1_0-errata2.html">
        <front>
          <title>OpenID Connect Core 1.0 incorporating errata set 2</title>
          <author initials="N." surname="Sakimura" />
          <author initials="J." surname="Bradley" />
          <author initials="M." surname="Jones" />
          <author initials="B." surname="de Medeiros" />
          <author initials="C." surname="Mortimore" />
          <date year="2023" month="December" day="15" />
        </front>
      </reference>
      <reference anchor="UTS46" target="https://www.unicode.org/reports/tr46/tr46-31.html">
        <front>
          <title>Unicode IDNA Compatibility Processing</title>
          <author initials="M." surname="Davis" />
          <author initials="M." surname="Suignard" />
          <date year="2023" month="September" day="5" />
        </front>
        <seriesInfo name="Unicode Technical Standard" value="46, revision 31, Unicode 15.1.0" />
      </reference>
      <reference anchor="IDNAMAP151" target="https://www.unicode.org/Public/idna/15.1.0/IdnaMappingTable.txt">
        <front>
          <title>Unicode IDNA Mapping Table Version 15.1.0</title>
          <author>
            <organization>Unicode Consortium</organization>
          </author>
          <date year="2023" month="August" day="10" />
        </front>
      </reference>
      <reference anchor="XCIMP1" target="https://xcim.org/standardization/p1/CONTRACT.md">
        <front>
          <title>XCIM P1-01: Recipient, Signer and Message Binding Contracts</title>
          <author fullname="Damian Saez" initials="D." surname="Saez">
            <organization>We Are 14 Inc</organization>
          </author>
          <date year="2026" month="October" day="19" />
        </front>
      </reference>
      <reference anchor="XCIMAS" target="https://xcim.org/standardization/as01/CONTRACT.md">
        <front>
          <title>XCIM AS01-F01: Authority and State Contract</title>
          <author fullname="Damian Saez" initials="D." surname="Saez">
            <organization>We Are 14 Inc</organization>
          </author>
          <date year="2026" month="October" day="19" />
        </front>
      </reference>
      <reference anchor="XCIMAN" target="https://xcim.org/standardization/an01/CONTRACT.md">
        <front>
          <title>XCIM AN01-F01: Anchoring Contract</title>
          <author fullname="Damian Saez" initials="D." surname="Saez">
            <organization>We Are 14 Inc</organization>
          </author>
          <date year="2026" month="October" day="19" />
        </front>
      </reference>
    </references>
    <references>
      <name>Informative References</name>
      <reference anchor="XCIMWD" target="https://xcim.org/spec/v0.1/wd-02-e1/">
        <front>
          <title>XCIM Protocol - Working Draft 02 with Erratum E1</title>
          <author>
            <organization>XCIM protocol editors</organization>
          </author>
          <date year="2026" month="October" day="15" />
        </front>
      </reference>
      <reference anchor="RFC7208" target="https://www.rfc-editor.org/info/rfc7208">
        <front>
          <title>Sender Policy Framework (SPF) for Authorizing Use of Domains in Email, Version 1</title>
          <author fullname="S. Kitterman" initials="S." surname="Kitterman" />
          <date month="April" year="2014" />
        </front>
        <seriesInfo name="RFC" value="7208" />
        <seriesInfo name="DOI" value="10.17487/RFC7208" />
      </reference>
      <reference anchor="RFC9989" target="https://www.rfc-editor.org/info/rfc9989">
        <front>
          <title>Domain-Based Message Authentication, Reporting, and Conformance (DMARC)</title>
          <author fullname="T. Herr" initials="T." role="editor" surname="Herr" />
          <author fullname="J. Levine" initials="J." role="editor" surname="Levine" />
          <date month="May" year="2026" />
        </front>
        <seriesInfo name="RFC" value="9989" />
        <seriesInfo name="DOI" value="10.17487/RFC9989" />
      </reference>
      <reference anchor="RFC8617" target="https://www.rfc-editor.org/info/rfc8617">
        <front>
          <title>The Authenticated Received Chain (ARC) Protocol</title>
          <author fullname="K. Andersen" initials="K." surname="Andersen" />
          <author fullname="B. Long" initials="B." role="editor" surname="Long" />
          <author fullname="S. Blank" initials="S." role="editor" surname="Blank" />
          <author fullname="M. Kucherawy" initials="M." role="editor" surname="Kucherawy" />
          <date month="July" year="2019" />
        </front>
        <seriesInfo name="RFC" value="8617" />
        <seriesInfo name="DOI" value="10.17487/RFC8617" />
      </reference>
      <reference anchor="RFC8058" target="https://www.rfc-editor.org/info/rfc8058">
        <front>
          <title>Signaling One-Click Functionality for List Email Headers</title>
          <author fullname="J. Levine" initials="J." surname="Levine" />
          <author fullname="T. Herkula" initials="T." surname="Herkula" />
          <date month="January" year="2017" />
        </front>
        <seriesInfo name="RFC" value="8058" />
        <seriesInfo name="DOI" value="10.17487/RFC8058" />
      </reference>
      <reference anchor="RFC3865" target="https://www.rfc-editor.org/info/rfc3865">
        <front>
          <title>A No Soliciting Simple Mail Transfer Protocol (SMTP) Service Extension</title>
          <author fullname="C. Malamud" initials="C." surname="Malamud" />
          <date month="September" year="2004" />
        </front>
        <seriesInfo name="RFC" value="3865" />
        <seriesInfo name="DOI" value="10.17487/RFC3865" />
      </reference>
      <reference anchor="RFC7942" target="https://www.rfc-editor.org/info/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" />
        </front>
        <seriesInfo name="BCP" value="205" />
        <seriesInfo name="RFC" value="7942" />
        <seriesInfo name="DOI" value="10.17487/RFC7942" />
      </reference>
      <reference anchor="RFC8126" target="https://www.rfc-editor.org/rfc/rfc8126">
        <front>
          <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
          <author initials="M." surname="Cotton" />
          <author initials="B." surname="Leiba" />
          <author initials="T." surname="Narten" />
          <date year="2017" month="June" />
        </front>
        <seriesInfo name="BCP" value="26" />
        <seriesInfo name="RFC" value="8126" />
      </reference>
      <reference anchor="RFC8141" target="https://www.rfc-editor.org/rfc/rfc8141">
        <front>
          <title>Uniform Resource Names (URNs)</title>
          <author initials="P." surname="Saint-Andre" />
          <author initials="J." surname="Klensin" />
          <date year="2017" month="April" />
        </front>
        <seriesInfo name="RFC" value="8141" />
      </reference>
    </references>
    <section anchor="experimental-anchor-appendix">
      <name>Experimental Anchor and Node Adapters</name>
      <t>This informative appendix
summarizes the anchor and node adapter work. The required MAIL01 publication
checks remain in force; synthetic observations do not replace them. No real
Amoy node admission, deployment or live-finality result is claimed.</t>
      <section anchor="anchor-adapter-proposal">
        <name>EVM Anchor Adapter</name>
        <t>The selected
AN01 design uses an immutable single-issuer/log EVM contract anchoring the
exact C4 commitment, sequence and predecessor. Its ABI has a monotonic
head, per-sequence records, idempotent retries and a distinct guardian with
irreversible halt. The anchor identifier uses Keccak-256 over abi.encode
of domain, chain ID, address, intent, identity, AS genesis, sequence,
checkpoint and predecessor commitments. AS JCS/SHA-256 commitments and
authorization signatures retain their algorithms.</t>
        <t>Genesis remains the existing five-field AS object. An AnchorIntent
        commits to network, ABI, creation-code template and build recipe
        before deployment. A root-signed DeploymentBinding subsequently
        binds the actual address, creation input, runtime and finalized
        deployment. Neither genesis nor intent contains that future binding;
        no checkpoint contains its own receipt. AN01-F01 supplies new schemas and a pinned Solidity build. Real network
        bootstrap, deployment evidence and binding lifecycle remain pending.</t>
        <t>The recommended opt-in trial is Amoy, chain ID 80002, with a
        receiver-operated node validating Bor/Heimdall execution and
        consensus. Polygon documents milestone finality separately from
        parent checkpoints and provides the finalized RPC tag in
        <eref target="https://docs.polygon.technology/pos/concepts/finality/finality/">its finality documentation</eref>.
        The receiver would verify event-block ancestry to the accepted
        finalized header, and compare code/getters at that same canonical
        block hash. Two remote RPC observations would be a separate test
        policy, never a consensus fallback. No production network is selected.</t>
        <t>Unmeasured trial limits preserve 300-second AS validity and propose
        a 120-second finalized-header age, 30-second locally timed view cache
        and 10-second RPC deadline. Publication cannot extend signed
        freshness. Finalized-state contradictions require quarantine rather
        than floor rollback. New AN01 C1/C7 wrappers separate authority evidence from anchor artifacts;
        the nested AS01-F01 evidence still requires a null slot. Durable
        storage and a complete live anchor verifier remain required.</t>
        <t>See the <eref target="https://xcim.org/standardization/anchor-adapter/">AN01-P01 proposal</eref>
        for historical alternatives, exact ABI and acyclic commitments. AN01-F01 implements and compiles the contract.
        Its 34 local EVM cases, 46 steps and two context checks test actual
        bytecode. Eight new schemas have 19 structural cases; 65 artifact
        cases (four positive, 61 adversarial) use synthetic node views and
        root-signed bindings. These are same-project checks, not consensus
        authentication or independent operator interoperability. No public
        contract is deployed and no live finality verification is claimed.
        Operational validation remains outstanding.</t>
        <t>AN01 binding signatures use the provisional type
        application/xcim-as-anchor-binding+jcs under distinct accepted root
        signers and the local policy epoch. The binding commitment is
        SHA-256 over the domain XCIM-AS-EVM-01-DEPLOYMENT-BINDING followed by
        one NUL and JCS payload bytes. A finalized-view reference cannot
        authenticate itself. The fixture checker always reports consensus
        verification false and cannot assert XCIM_PASS. See
        <eref target="https://xcim.org/standardization/an01/">AN01-F01</eref>
        for source, schemas, deterministic fixtures, build instructions and
        the partial coverage map of the original 20 network scenarios.</t>
      </section>
      <section anchor="node-bootstrap-adapter">
        <name>NB01-F01 Receiver Node and Authenticated Bootstrap</name>
        <t>the receiver's own administrator quorum
      admits the node, network, software/configuration/genesis files,
      checkpoints, endpoint certificate pins and validity windows. Issuer
      authority does not enroll the receiver node. The local policy pins the
      exact JCS/SHA-256 bootstrap and accepted AN anchor context. Bootstrap
      signatures use Ed25519 and the provisional type
      application/xcim-nb-bootstrap+jcs with distinct receiver_node_admin
      signers. It is not an IANA registration or a public accreditation.</t>
        <t>The read-only collector requires an existing local floor store,
      authenticated loopback HTTPS and bounded reads. It cross-checks Comet
      status and commit at H, requests the Heimdall-v2 latest milestone at H
      with an explicit height echo, and ties its end-block hash to a Bor
      finalized chain. Parent-hash traversal links the selected cut to the
      anchor receipt; code and getters use the same canonical block hash.
      Canonical checkpoints and deployment history rely on the admitted
      validating node. Stable read barriers and persistent floors detect
      contradictions. No latest/safe or two-provider fallback is enabled.</t>
        <t>SQLite node floors use transactions, compare-and-swap revision,
      monotonic hashes/heights and persistent quarantine. Missing stores,
      changed policy or failed recovery cannot silently reset trust. This
      does not protect against physical disk rollback or provide atomic
      multi-MX SMTP acceptance. Operators still must establish process and
      configuration provenance, secure channels, clocks and recovery.</t>
        <t>NB01-F01 supplies seven schemas, 62 synthetic wire/bootstrap cases
      (two positive, 60 adversarial), 12 structural cases, eight store checks
      and 18 transport checks, including a full mock round through actual
      pinned loopback TLS. No real Amoy node or bootstrap was installed or
      admitted. The adapter delegates consensus to an admitted node; it does
      not verify BFT signatures or return XCIM_PASS. See
      <eref target="https://xcim.org/standardization/nb01/">NB01-F01 contracts and closure gates</eref>.
      Live API compatibility, authenticated real checkpoints/node admission,
      integration with real-node AN/AS/P1 verification, measured operation and independent
      review remain open. Operational validation remains outstanding.</t>
      </section>
    </section>
  </back>
</rfc>