<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.39 (Ruby 3.2.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-chapman-a2a-mls-03" category="exp" submissionType="independent" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.0 -->
  <front>
    <title abbrev="Confidential Agent Messaging">End-to-End Encryption and Purpose-Bound Governance for Agent-to-Agent Messaging</title>
    <seriesInfo name="Internet-Draft" value="draft-chapman-a2a-mls-03"/>
    <author initials="L. D." surname="Chapman" fullname="Luke Daniel Chapman">
      <organization>Qwixl</organization>
      <address>
        <email>luke.chapman@qwixl.com</email>
      </address>
    </author>
    <date year="2026" month="August" day="01"/>
    <area>Security</area>
    <workgroup>Independent Submission</workgroup>
    <keyword>MLS</keyword>
    <keyword>agent</keyword>
    <keyword>end-to-end encryption</keyword>
    <keyword>data minimisation</keyword>
    <keyword>A2A</keyword>
    <abstract>
      <?line 64?>

<t>Agent-to-agent protocols increasingly carry messages between autonomous software
agents acting on behalf of distinct principals, including across organisational
boundaries. Existing protocols in this space secure the transport hop and
authenticate the calling party, but do not provide message-level
confidentiality, do not provide non-repudiable evidence of what a counterparty
asserted, and do not carry machine-enforceable constraints on how a recipient
may use the data conveyed.</t>
      <t>This document specifies a profile that addresses those three gaps. It defines a
Governed Object: a signed, purpose-bound, expiring message envelope identified
by a decentralised identifier. It specifies how such objects are exchanged
inside end-to-end encrypted sessions established using the Messaging Layer
Security (MLS) protocol <xref target="RFC9420"/>, and how the MLS credential is
cryptographically bound to the sending agent's identity. It defines the
encapsulation of these constructs as an extension to an agent-to-agent
transport, using the Agent2Agent (A2A) protocol <xref target="A2A"/> as the reference
binding, and specifies mandatory receiver-side processing rules including
replay rejection and purpose enforcement.</t>
    </abstract>
  </front>
  <middle>
    <?line 85?>

<section anchor="introduction">
      <name>Introduction</name>
      <section anchor="problem-statement">
        <name>Problem Statement</name>
        <t>Deployments of agent-to-agent messaging are moving from single-organisation
orchestration towards interactions between agents that represent different
principals: a person and a business, two businesses, or a citizen and a public
body. Three properties that are routinely required in such interactions are not
provided by the agent-to-agent protocols currently in use.</t>
        <dl>
          <dt>Confidentiality against intermediaries.</dt>
          <dd>
            <t>Current practice secures the transport hop, typically with TLS, and
authenticates the caller, typically with OAuth 2.0, OpenID Connect, or mutual
TLS. Any intermediary that terminates TLS -- a gateway, a broker, a hosting
provider, or the platform operating either agent -- can read the full message
content. Where the two principals are mutually independent and the message
content is confidential, commercially sensitive, or personal data, transport
security is insufficient.</t>
          </dd>
          <dt>Non-repudiable assertion.</dt>
          <dd>
            <t>A recipient frequently needs durable evidence of what the counterparty's
agent asserted, and needs it to remain verifiable after the session has
ended, after key rotation, and independently of any log held by an
intermediary. Transport-level authentication does not produce such evidence,
because it authenticates a connection rather than a statement.</t>
          </dd>
          <dt>Machine-enforceable use constraints.</dt>
          <dd>
            <t>When an agent discloses data to a counterparty, the disclosing principal
frequently intends the disclosure to be limited: to a stated purpose, and for
a bounded period. Today that intent, if expressed at all, is expressed in
prose outside the protocol and is therefore not available to the receiving
implementation at the moment of processing.</t>
          </dd>
        </dl>
        <t>These are not hypothetical requirements. In several jurisdictions the second and
third are closely related to statutory obligations; see <xref target="regulatory"/>.</t>
      </section>
      <section anchor="scope">
        <name>Scope</name>
        <t>This document specifies:</t>
        <ul spacing="normal">
          <li>
            <t>a signed message envelope, the Governed Object, carrying a semantic type, a
payload, a declared purpose, and an expiry (<xref target="governed-object"/>);</t>
          </li>
          <li>
            <t>an agent identity scheme based on Ed25519 <xref target="RFC8032"/> decentralised
identifiers, and a mandatory cryptographic binding between that identity and
the agent's MLS credential (<xref target="identity"/>);</t>
          </li>
          <li>
            <t>establishment of MLS <xref target="RFC9420"/> sessions between agents, including
publication and retrieval of MLS KeyPackages (<xref target="sessions"/>);</t>
          </li>
          <li>
            <t>encapsulation of MLS wire messages and Governed Objects as an extension to an
agent-to-agent transport, with A2A <xref target="A2A"/> as the reference binding
(<xref target="encapsulation"/>);</t>
          </li>
          <li>
            <t>mandatory receiver-side processing rules, including signature verification,
expiry rejection, replay rejection, and purpose enforcement
(<xref target="processing"/>).</t>
          </li>
        </ul>
      </section>
      <section anchor="non-goals">
        <name>Non-Goals</name>
        <t>This document does not:</t>
        <ul spacing="normal">
          <li>
            <t>define a new agent-to-agent transport, discovery mechanism, or capability
description format; it layers on an existing one;</t>
          </li>
          <li>
            <t>define agent tool invocation or local resource access, for which the Model
Context Protocol <xref target="MCP"/> and comparable mechanisms are used;</t>
          </li>
          <li>
            <t>provide cryptographic enforcement of purpose limitation. The purpose field is
signed, tamper-evident, and mandatory to enforce at the receiver, but a
non-conforming receiver that has decrypted a message can disregard it. This
is a deliberate limitation, discussed in <xref target="security"/>;</t>
          </li>
          <li>
            <t>specify authorisation policy, business semantics, or user interface
behaviour;</t>
          </li>
          <li>
            <t>specify how a decentralised identifier is bound to a legal or natural
identity. That binding, where required, is provided by credential
presentation layered above this specification and is out of scope.</t>
          </li>
        </ul>
      </section>
      <section anchor="relationship-to-existing-work">
        <name>Relationship to Existing Work</name>
        <t>MLS <xref target="RFC9420"/> provides the group key establishment and message protection
used here. This document does not modify MLS. It specifies a ciphersuite
constraint, a credential-binding requirement, and a transport encapsulation.</t>
        <t>A2A <xref target="A2A"/> provides agent discovery, capability description, and message
transport. A2A version 1.0 supports declared protocol extensions, and this
document is specified as such an extension; <xref target="protocol-version"/> states the
version this binding targets. Nothing here requires changes to A2A itself.</t>
        <t>The mechanism is transport-agnostic in principle. A2A is used as the reference
binding because it is widely deployed and because its extension mechanism makes
the binding expressible without protocol changes.</t>
      </section>
    </section>
    <section anchor="conventions-and-terminology">
      <name>Conventions and Terminology</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

<dl>
        <dt>Agent:</dt>
        <dd>
          <t>A software process that sends and receives messages on behalf of a principal.</t>
        </dd>
        <dt>Principal:</dt>
        <dd>
          <t>The natural person, legal person, or organisation on whose behalf an agent
acts.</t>
        </dd>
        <dt>Agent Identity:</dt>
        <dd>
          <t>A <tt>did:key</tt> identifier <xref target="DIDKEY"/> encoding an Ed25519 public key, used to
identify an agent and to verify its signatures.</t>
        </dd>
        <dt>Governed Object:</dt>
        <dd>
          <t>The signed message envelope specified in <xref target="governed-object"/>.</t>
        </dd>
        <dt>Purpose:</dt>
        <dd>
          <t>A short string in a Governed Object declaring the use for which the payload is
disclosed.</t>
        </dd>
        <dt>Relying Receiver:</dt>
        <dd>
          <t>An implementation that accepts a Governed Object and acts upon its payload.</t>
        </dd>
      </dl>
    </section>
    <section anchor="architecture-overview">
      <name>Architecture Overview</name>
      <t>Two agents, each holding an Ed25519 key pair, establish an MLS group containing
exactly two members (a pair session) or more than two members (a group
session). Application messages within that group carry Governed Objects
serialised as JSON <xref target="RFC8259"/>.</t>
      <t>The MLS wire bytes are carried inside the agent-to-agent transport as opaque
data. The transport therefore learns the identity of the endpoints and the size
and timing of messages, but not the content.</t>
      <figure anchor="fig-arch">
        <name>Confidential agent messaging</name>
        <artwork><![CDATA[
  Principal A                                     Principal B
      |                                                 |
  +---v-----------+                             +-------v-------+
  |   Agent A     |                             |   Agent B     |
  |               |                             |               |
  | Ed25519 key   |                             | Ed25519 key   |
  | did:key:zA..  |                             | did:key:zB..  |
  +---+-----------+                             +-----------+---+
      |                                                     |
      |  (1) retrieve KeyPackage                            |
      |---------------------------------------------------->|
      |  (2) MLS Welcome + ratchet tree                     |
      |---------------------------------------------------->|
      |                                                     |
      |  (3) MLS application message                        |
      |      = AEAD( JSON( GovernedObject ) )               |
      |<--------------------------------------------------->|
      |                                                     |
   +--+-----------------------------------------------------+--+
   |          agent-to-agent transport (e.g. A2A over HTTPS)   |
   |          sees: endpoints, size, timing. not: content      |
   +----------------------------------------------------------+
]]></artwork>
      </figure>
    </section>
    <section anchor="identity">
      <name>Agent Identity</name>
      <section anchor="identifier-construction">
        <name>Identifier Construction</name>
        <t>An Agent Identity is a <tt>did:key</tt> identifier <xref target="DIDKEY"/> encoding an Ed25519
public key. The identifier is the string <tt>did:key:</tt> followed by the multibase
base58btc encoding (prefix <tt>z</tt>) of the multicodec <tt>ed25519-pub</tt> header
(<tt>0xed 0x01</tt>) concatenated with the 32-byte public key.</t>
        <t>Verifiers <bcp14>MUST</bcp14> derive the public key from the identifier itself. Conforming
implementations <bcp14>MUST NOT</bcp14> require network resolution of the identifier in order
to verify a signature. This property is required so that a Governed Object
remains verifiable offline and after the issuer's service has ceased to
operate.</t>
        <t>Implementations <bcp14>MAY</bcp14> support additional DID methods. Implementations <bcp14>MUST</bcp14> support
<tt>did:key</tt>.</t>
      </section>
      <section anchor="mls-ciphersuite">
        <name>MLS Ciphersuite</name>
        <t>Implementations <bcp14>MUST</bcp14> support MLS ciphersuite
<tt>MLS_128_DHKEMX25519_AES128GCM_SHA256_Ed25519</tt> (value <tt>0x0001</tt> in the MLS
Ciphersuites registry established by <xref target="RFC9420"/>).</t>
        <t>This ciphersuite is mandatory because its signature scheme is Ed25519, matching
the Agent Identity key type and enabling the binding specified in
<xref target="credential-binding"/>. Implementations <bcp14>MAY</bcp14> negotiate other ciphersuites,
subject to that section.</t>
      </section>
      <section anchor="credential-binding">
        <name>Credential Binding</name>
        <t>An agent's MLS credential <bcp14>MUST</bcp14> be a <tt>basic</tt> credential whose identity is the
UTF-8 encoding of the agent's Agent Identity.</t>
        <t>Furthermore, the MLS <tt>signature_key</tt> in the agent's LeafNode <bcp14>MUST</bcp14> be the same
Ed25519 public key that is encoded in that Agent Identity.</t>
        <t>This requirement is the load-bearing element of this section. Without it, an
attacker who can publish a KeyPackage may assert an arbitrary DID string in the
credential, and a receiver has no cryptographic basis for concluding that
messages from that MLS member originate from the holder of the corresponding
DID. With it, MLS membership and Governed Object authorship are bound to a
single key.</t>
        <t>On receiving a KeyPackage or LeafNode, an implementation <bcp14>MUST</bcp14> verify that the
credential identity parses as a <tt>did:key</tt> Ed25519 identifier and that the
public key so derived is octet-for-octet equal to the LeafNode
<tt>signature_key</tt>. If the check fails, the implementation <bcp14>MUST</bcp14> reject the
KeyPackage and <bcp14>MUST NOT</bcp14> add the member to a group.</t>
        <t>Where a ciphersuite whose signature scheme is not Ed25519 is negotiated, the
binding of <xref target="credential-binding"/> cannot be expressed by key equality. In that
case implementations <bcp14>MUST</bcp14> instead require the credential identity to be
accompanied by a proof of possession: a signature, made with the Agent
Identity key, over the MLS <tt>signature_key</tt>. Definition of that proof's
encoding is deferred to a future revision of this document; until it is
specified, implementations that require the binding <bcp14>MUST</bcp14> use ciphersuite
<tt>0x0001</tt>.</t>
      </section>
    </section>
    <section anchor="governed-object">
      <name>The Governed Object</name>
      <section anchor="structure">
        <name>Structure</name>
        <t>A Governed Object is a JSON object <xref target="RFC8259"/> with the following members. All
listed members are mandatory unless stated otherwise.</t>
        <table>
          <thead>
            <tr>
              <th align="left">Member</th>
              <th align="left">Type</th>
              <th align="left">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <tt>version</tt></td>
              <td align="left">number</td>
              <td align="left">Format version. <bcp14>MUST</bcp14> be <tt>1</tt> for this specification.</td>
            </tr>
            <tr>
              <td align="left">
                <tt>id</tt></td>
              <td align="left">string</td>
              <td align="left">Unique object identifier. <bcp14>MUST</bcp14> be unique per issuer.</td>
            </tr>
            <tr>
              <td align="left">
                <tt>issuerDid</tt></td>
              <td align="left">string</td>
              <td align="left">Agent Identity of the signer.</td>
            </tr>
            <tr>
              <td align="left">
                <tt>issuedAt</tt></td>
              <td align="left">string</td>
              <td align="left">Issuance time, RFC 3339 date-time in UTC.</td>
            </tr>
            <tr>
              <td align="left">
                <tt>semantic</tt></td>
              <td align="left">object</td>
              <td align="left">Type descriptor; see below.</td>
            </tr>
            <tr>
              <td align="left">
                <tt>payload</tt></td>
              <td align="left">object</td>
              <td align="left">Application data.</td>
            </tr>
            <tr>
              <td align="left">
                <tt>governance</tt></td>
              <td align="left">object</td>
              <td align="left">Use constraints; see <xref target="governance"/>.</td>
            </tr>
            <tr>
              <td align="left">
                <tt>signatureAlgorithm</tt></td>
              <td align="left">string</td>
              <td align="left">
                <bcp14>MUST</bcp14> be <tt>"ed25519"</tt>.</td>
            </tr>
            <tr>
              <td align="left">
                <tt>signature</tt></td>
              <td align="left">string</td>
              <td align="left">Base64 <xref target="RFC4648"/> Ed25519 signature.</td>
            </tr>
          </tbody>
        </table>
        <t>The <tt>semantic</tt> member has a mandatory <tt>schema</tt> member containing an absolute
URI identifying the payload type, and <bcp14>OPTIONAL</bcp14> <tt>version</tt> and <tt>embeddingHint</tt>
members.</t>
        <t>The <tt>id</tt> member <bcp14>MUST</bcp14> be unique per issuer and <bcp14>SHOULD</bcp14> be a UUID or other value
with negligible collision probability. Receivers rely on this for replay
rejection (<xref target="replay"/>).</t>
      </section>
      <section anchor="governance">
        <name>Governance</name>
        <t>The <tt>governance</tt> member carries:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Member</th>
              <th align="left">Type</th>
              <th align="left">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <tt>purpose</tt></td>
              <td align="left">string</td>
              <td align="left">Mandatory. Declared use for the payload.</td>
            </tr>
            <tr>
              <td align="left">
                <tt>ttlSeconds</tt></td>
              <td align="left">number</td>
              <td align="left">
                <bcp14>OPTIONAL</bcp14>. Lifetime in seconds from <tt>issuedAt</tt>.</td>
            </tr>
            <tr>
              <td align="left">
                <tt>expiresAt</tt></td>
              <td align="left">string</td>
              <td align="left">
                <bcp14>OPTIONAL</bcp14>. Absolute expiry, RFC 3339 date-time.</td>
            </tr>
          </tbody>
        </table>
        <t>If both <tt>ttlSeconds</tt> and <tt>expiresAt</tt> are present, the earlier resulting instant
is the effective expiry. If neither is present, the object does not expire, and
receivers <bcp14>SHOULD</bcp14> apply a locally configured maximum lifetime.</t>
        <t>Purpose strings are lowercase, colon-delimited, and hierarchical, for example
<tt>comms:message</tt> or <tt>coordination:proposal</tt>. Purpose values are application
domain vocabulary; this document does not define a registry, but see
<xref target="iana"/> for a discussion of whether one is warranted.</t>
      </section>
      <section anchor="canonical">
        <name>Canonical Serialisation</name>
        <t>The signature is computed over a canonical serialisation of the object's
content, excluding <tt>signatureAlgorithm</tt> and <tt>signature</tt>.</t>
        <t>The input to canonicalisation is the JSON object <xref target="RFC8259"/> consisting of
exactly the members <tt>version</tt>, <tt>id</tt>, <tt>issuerDid</tt>, <tt>issuedAt</tt>, <tt>semantic</tt>,
<tt>payload</tt>, and <tt>governance</tt>. Members that are not present in that abstract
JSON object are omitted. The JSON value <tt>null</tt> is retained where present.
JSON has no <tt>undefined</tt> value; implementations in languages that expose an
undefined or missing-property concept <bcp14>MUST</bcp14> treat such properties as absent
members (omit them) before canonicalisation, and <bcp14>MUST NOT</bcp14> emit a distinct
undefined token.</t>
        <t>Interoperable implementations <bcp14>SHOULD</bcp14> produce the JSON Canonicalization Scheme
(JCS) serialisation of that object as specified in <xref target="RFC8785"/>.</t>
        <t>Absent a dedicated JCS library, an implementation <bcp14>MUST</bcp14> still:</t>
        <ul spacing="normal">
          <li>
            <t>omit absent members (and language-level undefined / missing properties);</t>
          </li>
          <li>
            <t>retain JSON <tt>null</tt> where present;</t>
          </li>
          <li>
            <t>order object member names lexicographically by UTF-16 code unit sequence;</t>
          </li>
          <li>
            <t>emit no insignificant whitespace; and</t>
          </li>
          <li>
            <t><bcp14>MUST NOT</bcp14> invent a parallel key-order or whitespace rule set for the same
abstract object that would diverge from <xref target="RFC8785"/> for those constraints.</t>
          </li>
        </ul>
        <t>The Atom reference implementation currently uses a deterministic key-sorted
JSON profile that satisfies these <bcp14>MUST</bcp14> constraints for the published vector
suite; it does not yet invoke a dedicated <xref target="RFC8785"/> library. See
<xref target="implementation-status"/>.</t>
        <t>Payload authors <bcp14>SHOULD</bcp14> avoid floating-point numbers, because canonical
serialisation of floating-point values is a known source of cross-language
interoperability failure (including under full JCS). Where numeric precision
matters, payloads <bcp14>SHOULD</bcp14> encode values as strings or as integers in a stated
minor unit.</t>
      </section>
      <section anchor="signing">
        <name>Signing</name>
        <t>The signature is <tt>Ed25519(privateKey, UTF8(canonicalForm))</tt> as specified in
<xref target="RFC8032"/>, encoded per <xref target="RFC4648"/> Section 4 (base64 with padding).</t>
      </section>
      <section anchor="verification">
        <name>Verification</name>
        <t>A verifier <bcp14>MUST</bcp14>:</t>
        <ol spacing="normal" type="1"><li>
            <t>confirm <tt>version</tt> equals <tt>1</tt>;</t>
          </li>
          <li>
            <t>confirm <tt>signatureAlgorithm</tt> equals <tt>"ed25519"</tt>;</t>
          </li>
          <li>
            <t>derive the Ed25519 public key from <tt>issuerDid</tt> per <xref target="identity"/>;</t>
          </li>
          <li>
            <t>recompute the canonical form per <xref target="canonical"/>;</t>
          </li>
          <li>
            <t>verify the signature.</t>
          </li>
        </ol>
        <t>Verification failure <bcp14>MUST</bcp14> cause the object to be rejected.</t>
      </section>
    </section>
    <section anchor="sessions">
      <name>Session Establishment</name>
      <section anchor="keypackage-publication">
        <name>KeyPackage Publication</name>
        <t>An agent that accepts incoming sessions publishes MLS KeyPackages. Where the
A2A binding of <xref target="encapsulation"/> is used, the agent <bcp14>SHOULD</bcp14> expose them at the
path <tt>/mls/key-package</tt> relative to its A2A service endpoint, returning a JSON
object with members <tt>did</tt> (the Agent Identity) and <tt>wire</tt> (the base64-encoded
MLS KeyPackage).</t>
        <t>Publishing endpoints <bcp14>MUST</bcp14> rate-limit KeyPackage retrieval. KeyPackages are
single-use in MLS; unbounded retrieval permits exhaustion of an agent's
pre-published supply.</t>
        <t>Retrievers <bcp14>MUST</bcp14> perform the credential binding check of
<xref target="credential-binding"/> on the retrieved KeyPackage before use.</t>
      </section>
      <section anchor="establishing-a-pair-session">
        <name>Establishing a Pair Session</name>
        <t>The initiating agent creates an MLS group containing itself, then commits an Add
proposal for the responding agent using the retrieved KeyPackage, and delivers
the resulting Welcome message and ratchet tree to the responder using the
handshake encapsulation of <xref target="handshake-part"/>.</t>
        <t>Where the responder's identity was learned from an out-of-band invitation that
asserted a specific Agent Identity, the initiator <bcp14>MUST</bcp14> verify that the
retrieved KeyPackage's credential identity equals the asserted identity, and
<bcp14>MUST</bcp14> abort establishment on mismatch. Absent this check, an attacker who
controls the endpoint named in an invitation can substitute their own identity.</t>
      </section>
      <section anchor="group-sessions">
        <name>Group Sessions</name>
        <t>Sessions with more than two members follow MLS <xref target="RFC9420"/> group semantics.
Implementations <bcp14>MUST</bcp14> apply the credential binding check of
<xref target="credential-binding"/> to every joining member.</t>
        <section anchor="designated-committer-profile">
          <name>Designated committer profile</name>
          <t>Deployments <bcp14>MAY</bcp14> adopt a <strong>designated committer</strong> profile in which a single
member (the committer) is the only party authorised to create MLS Commit
messages for the group. Atom room sessions use this profile with the room host
as committer. Under that profile:</t>
          <ul spacing="normal">
            <li>
              <t>Receivers <bcp14>MUST</bcp14> reject public MLS Commit messages whose claimed sender
identity (for example, the MLS wire part's <tt>senderDid</tt> member) is not the
designated committer.</t>
            </li>
            <li>
              <t>Receivers <bcp14>SHOULD</bcp14> additionally verify that the MLS-authenticated Commit
author matches the designated committer, and <bcp14>MUST NOT</bcp14> treat envelope
<tt>senderDid</tt> alone as cryptographic proof of Commit authorship.</t>
            </li>
            <li>
              <t>Other members <bcp14>MUST NOT</bcp14> create Add or Remove commits.</t>
            </li>
          </ul>
          <t>This document does not require MLS commit democracy. Deployments that grant
commit rights more broadly remain responsible for their own membership policy,
but <bcp14>MUST</bcp14> still apply <xref target="commit-fanout"/>.</t>
        </section>
        <section anchor="commit-fanout">
          <name>Membership change and commit fan-out</name>
          <t>When the designated committer (or other authorised committer) adds a member:</t>
          <ol spacing="normal" type="1"><li>
              <t>The committer creates an MLS Commit containing an Add proposal and advances
its local epoch.</t>
            </li>
            <li>
              <t>The committer <bcp14>MUST</bcp14> deliver the resulting <strong>public Commit</strong> to every other
<strong>current</strong> member (all members other than the committer and, until they
have joined, the new member) as an MLS message on the <strong>MLS wire</strong> part of
<xref target="mls-wire-part"/> (the same A2A part used for application messages).</t>
            </li>
            <li>
              <t>Each existing member that receives that Commit <bcp14>MUST</bcp14> process it before
relying on the new epoch for application traffic.</t>
            </li>
            <li>
              <t>The committer delivers the Welcome and ratchet tree to the joining member
using the handshake encapsulation of <xref target="handshake-part"/>.</t>
            </li>
          </ol>
          <t>The joining member <bcp14>MUST NOT</bcp14> treat Welcome alone as evidence that other members
have advanced to the new epoch. Absent Commit delivery to existing members,
those members remain on the prior epoch and cannot decrypt subsequent
application messages -- the N-member failure mode this section exists to
prevent.</t>
          <t>When a member is removed:</t>
          <ol spacing="normal" type="1"><li>
              <t>The committer creates an MLS Commit containing a Remove proposal.</t>
            </li>
            <li>
              <t>The committer <bcp14>MUST</bcp14> deliver the public Commit on the MLS wire to every
<strong>remaining</strong> member.</t>
            </li>
            <li>
              <t>The leaving member <bcp14>MUST NOT</bcp14> be required to process the Remove Commit.</t>
            </li>
          </ol>
          <t>Optional conveyance of a base64-encoded Commit inside a handshake object does
not replace <xref target="commit-fanout"/>. Where both a handshake <tt>commit</tt> member and an
MLS wire Commit are present, the MLS wire Commit is authoritative for existing
members.</t>
          <t>This document does not specify compensating recovery when Commit fan-out
reaches only a subset of members after the committer has already advanced
locally. Deployments <bcp14>MUST</bcp14> treat such epoch splits as out of scope for this
revision and recover by failing closed (drop session and re-establish), not by
silent continuation.</t>
        </section>
      </section>
      <section anchor="session-persistence">
        <name>Session Persistence</name>
        <t>Implementations that persist MLS group state across process restarts <bcp14>MUST</bcp14>
protect that state at rest under the same deployment controls used for the
agent's long-term private key material (for example, filesystem permissions
on a dedicated agent data directory). This document does not require
application-layer encryption of on-disk group state beyond those controls.</t>
        <t>Implementations <bcp14>SHOULD</bcp14> persist group state using an encoding that separates
the ratchet tree from the remaining group secrets, storing the tree alongside
the truncated state, and <bcp14>MAY</bcp14> accept a legacy encoding that embeds the tree
when migrating older stores.</t>
        <t>On restore failure (corrupt, truncated, or undecodable state), implementations
<bcp14>MUST</bcp14> fail closed: discard the unusable session, and require re-establishment
(re-join or re-handshake). Implementations <bcp14>MUST NOT</bcp14> continue with a partially
hydrated group session.</t>
      </section>
    </section>
    <section anchor="encapsulation">
      <name>Encapsulation</name>
      <t>This section specifies the A2A <xref target="A2A"/> binding.</t>
      <section anchor="protocol-version">
        <name>Protocol Version</name>
        <t>This binding is specified against A2A version 1.0. Two properties of that
version are relied upon: a message part carries a <tt>mediaType</tt> member of its own,
and a message may enumerate the extensions it depends upon.</t>
        <t>A2A version 0.3 provided neither. Implementations <bcp14>MAY</bcp14> interoperate with peers
speaking version 0.3 by applying <xref target="version-compat"/>, and the reference
implementation does so, but a conforming implementation of this document
transmits version 1.0.</t>
        <t>Throughout this section, part and message members are named as they appear in
the JSON serialisation on the wire. An implementation generated from the A2A
protocol buffer schema will present the part content as a language-level tagged
union; that representation is an artefact of code generation and is not
observable by a peer.</t>
      </section>
      <section anchor="extension-declaration">
        <name>Extension Declaration</name>
        <t>An agent supporting the <strong>Governed Object</strong> profile defined in this document
<bcp14>MUST</bcp14> declare the extension URI <tt>https://atom.qwixl.dev/a2a/data-object/v1</tt> in
the <tt>capabilities.extensions</tt> member of its Agent Card, with <tt>required</tt> set to
false.</t>
        <t>A message carrying one or more <strong>Governed Object</strong> parts <bcp14>SHOULD</bcp14> list that URI
in the message's <tt>extensions</tt> member. A message that carries only MLS wire or
MLS handshake parts <bcp14>MUST NOT</bcp14> stamp the Governed Object URI in <tt>extensions</tt>
(the GO claim stays narrow; MLS <bcp14>MAY</bcp14> later ship under its own extension URI).
A receiver <bcp14>MUST NOT</bcp14> require the <tt>extensions</tt> member to be present, since a peer
speaking A2A version 0.3 has no such member to populate, and <bcp14>MUST NOT</bcp14> rely upon
it to identify a part: the media type is authoritative.</t>
        <t>The A2A extension specification for the Governed Object profile alone (without
MLS) is published under <tt>spec/extensions/data-object-v1/</tt> in the reference
implementation repository. This Internet-Draft remains the broader provenance
document covering Governed Objects together with MLS session mechanics.</t>
        <t>Editor's note: this URI reflects the deployed reference implementation. Should
this document be adopted by a standards body, the URI is expected to be
reassigned under that body's namespace. Implementations <bcp14>SHOULD</bcp14> treat the URI as
an opaque identifier.</t>
      </section>
      <section anchor="media-type-placement">
        <name>Media Type Placement</name>
        <t>Each part specified below is identified by one of the media types in <xref target="iana"/>.
A sender <bcp14>MUST</bcp14> set the media type in the part's <tt>mediaType</tt> member, and <bcp14>SHOULD</bcp14>
also set a <tt>mediaType</tt> member within the part's <tt>data</tt> object with the identical
value.</t>
        <t>A receiver <bcp14>MUST</bcp14> determine the media type from the part's <tt>mediaType</tt> member when
that member is present and non-empty, and <bcp14>MUST</bcp14> fall back to the <tt>mediaType</tt>
member within the <tt>data</tt> object otherwise. Where both are present and they
disagree, the receiver <bcp14>MUST</bcp14> reject the part.</t>
        <t>The duplication exists because version 0.3 of A2A had no <tt>mediaType</tt> member on a
part, obliging deployments written against A2A version 0.3 to carry the
media type inside the payload. A receiver that reads only the inner member
therefore continues to interoperate. A sender <bcp14>MAY</bcp14> omit the inner member once no
such receiver remains reachable; this document retains it as a <bcp14>SHOULD</bcp14> rather
than a <bcp14>MUST</bcp14> for that reason.</t>
      </section>
      <section anchor="governed-object-part">
        <name>Governed Object Part</name>
        <t>A Governed Object <bcp14>MAY</bcp14> be carried unencrypted in an A2A message part whose <tt>data</tt>
member is a JSON object with members <tt>mediaType</tt>, set to
<tt>application/vnd.atom.data-object+json;version=1</tt> per
<xref target="media-type-placement"/>, and <tt>object</tt>, set to the Governed Object.</t>
        <artwork><![CDATA[
{
  "data": {
    "mediaType": "application/vnd.atom.data-object+json;version=1",
    "object": { ... Governed Object ... }
  },
  "mediaType": "application/vnd.atom.data-object+json;version=1"
}
]]></artwork>
        <t>Unencrypted carriage provides authenticity and governance metadata but not
confidentiality. Implementations <bcp14>MUST NOT</bcp14> use unencrypted carriage for personal
data or otherwise confidential payloads where an MLS session can be
established. Implementations <bcp14>SHOULD</bcp14> default to encrypted carriage.</t>
      </section>
      <section anchor="mls-wire-part">
        <name>MLS Wire Part</name>
        <t>MLS wire messages -- including application PrivateMessages and public Commit
messages used for <xref target="commit-fanout"/> -- are carried in an A2A message part whose
<tt>data</tt> member is a JSON object with members <tt>mediaType</tt>, set to
<tt>application/vnd.atom.mls-wire+cbor;version=1</tt> per <xref target="media-type-placement"/>,
and <tt>wire</tt>, set to the base64 encoding <xref target="RFC4648"/> of the MLSMessage as
serialised per <xref target="RFC9420"/>. For room or other multi-recipient fan-out, the
object <bcp14>MAY</bcp14> also carry a <tt>senderDid</tt> member naming the Agent Identity of the
sender; receivers under the designated committer profile of <xref target="group-sessions"/>
          <bcp14>MUST</bcp14> reject Commits whose claimed <tt>senderDid</tt> is not the designated committer,
and <bcp14>SHOULD</bcp14> bind that claim to MLS authentication of the Commit where available.</t>
        <artwork><![CDATA[
{
  "data": {
    "mediaType": "application/vnd.atom.mls-wire+cbor;version=1",
    "wire": "<base64 MLSMessage>"
  },
  "mediaType": "application/vnd.atom.mls-wire+cbor;version=1"
}
]]></artwork>
        <t>The decrypted application message plaintext is the UTF-8 encoding of a JSON
object with a member <tt>object</tt> containing a Governed Object. Implementations <bcp14>MAY</bcp14>
define additional members; receivers <bcp14>MUST</bcp14> ignore members they do not
recognise.</t>
      </section>
      <section anchor="handshake-part">
        <name>Handshake Part</name>
        <t>MLS Welcome messages and the accompanying ratchet tree are carried in an A2A
message part whose <tt>data</tt> member is a JSON object with member <tt>mediaType</tt> set to
<tt>application/vnd.atom.mls-handshake+json;version=1</tt> per
<xref target="media-type-placement"/>, and members conveying:</t>
        <ul spacing="normal">
          <li>
            <t><tt>initiatorDid</tt> -- the Agent Identity of the party that created the Welcome
(or, for commit-oriented handshake objects, the designated committer);</t>
          </li>
          <li>
            <t><tt>welcome</tt> -- base64-encoded Welcome (required when admitting a new member;
<bcp14>MAY</bcp14> be omitted for commit-only objects that are not the normative fan-out
path);</t>
          </li>
          <li>
            <t><tt>ratchetTree</tt> -- base64-encoded ratchet tree accompanying Welcome (<bcp14>REQUIRED</bcp14>
when <tt>welcome</tt> is present; <bcp14>OPTIONAL</bcp14> when <tt>welcome</tt> is absent);</t>
          </li>
          <li>
            <t><tt>commit</tt> -- optional base64-encoded public Commit. Existing members <bcp14>MUST</bcp14>
still receive Commits per <xref target="commit-fanout"/> on the MLS wire; a handshake
<tt>commit</tt> member alone is not sufficient for N-member correctness;</t>
          </li>
          <li>
            <t><tt>memberDids</tt> -- optional hint listing Agent Identities after the membership
change. Authoritative membership is the MLS ratchet tree after Welcome or
Commit processing.</t>
          </li>
        </ul>
        <t>Where both Welcome and <tt>ratchetTree</tt> are supplied, the joiner <bcp14>MUST</bcp14> abort if
MLS join fails to accept the tree with the Welcome (inconsistent or
substituted tree).</t>
      </section>
      <section anchor="agent-card">
        <name>Agent Card</name>
        <t>An agent's endpoints are declared in the <tt>supportedInterfaces</tt> member of its
Agent Card, an ordered list in which the first entry is the sender's preferred
interface and each entry states the A2A protocol version that interface speaks.
A2A version 0.3 instead declared a single endpoint in a top-level <tt>url</tt> member;
an implementation reading a card <bcp14>MUST NOT</bcp14> depend on that member.</t>
        <t>An agent <bcp14>MAY</bcp14> declare more than one interface at the same URL in order to serve
more than one protocol version, and the reference implementation does so.</t>
        <t>An Agent Card <bcp14>MAY</bcp14> carry one or more JWS signatures in its <tt>signatures</tt> member.
Where an agent's identity is a <tt>did:key</tt> as specified in <xref target="identity"/>, the
signature's <tt>kid</tt> header parameter <bcp14>SHOULD</bcp14> be that identifier, because the
verifying key is then recoverable from the identifier itself and card
verification requires no key distribution mechanism and no further network
retrieval.</t>
        <t>A relying party that verifies a card signature <bcp14>MUST</bcp14> treat the identifier in
<tt>kid</tt> as the identity that produced the card, and <bcp14>MUST NOT</bcp14> infer from a valid
signature that the card's contents are endorsed by any other identity named
within it. Transport security establishes control of the origin serving a card;
it establishes nothing about the agent the card describes. An unsigned card
therefore permits any party controlling an origin to publish a card asserting
any agent identity, and a relying party that acts on such an assertion -- for
instance, to associate a domain with an agent -- <bcp14>SHOULD</bcp14> require a signature whose
<tt>kid</tt> matches the asserted identity.</t>
      </section>
      <section anchor="version-compat">
        <name>Version Compatibility</name>
        <t>An implementation <bcp14>MAY</bcp14> accept and originate A2A version 0.3 messages in addition
to version 1.0. Where it does:</t>
        <ul spacing="normal">
          <li>
            <t>The version of a received message is determined by the <tt>A2A-Version</tt> header
field. Its absence denotes version 0.3.</t>
          </li>
          <li>
            <t>The version to use towards a given peer is determined by that peer's Agent
Card, per <xref target="agent-card"/>.</t>
          </li>
          <li>
            <t>A part received from a version 0.3 peer carries the media type only within
the <tt>data</tt> object, which <xref target="media-type-placement"/> accommodates.</t>
          </li>
        </ul>
        <t>Deployment order is not symmetric, and this has operational consequence. A
receiver that accepts both versions is compatible with senders of either, but a
sender that has begun transmitting version 1.0 is not compatible with a receiver
that accepts only version 0.3. In a network upgraded incrementally, every
receiver <bcp14>MUST</bcp14> therefore be capable of the newer version before any sender
originates it.</t>
      </section>
      <section anchor="transport-authentication">
        <name>Transport Authentication</name>
        <t>The transport carrying these parts <bcp14>MUST</bcp14> authenticate the calling party using a
mechanism defined by the underlying protocol, such as those enumerated in
<xref target="A2A"/>.</t>
        <t>An unauthenticated transport endpoint permits an unbounded set of parties to
consume the receiver's resources, to enqueue messages, and to attempt session
establishment. End-to-end encryption does not mitigate this: MLS protects
content, not availability. Implementations <bcp14>MUST NOT</bcp14> expose an unauthenticated
message-submission endpoint in production.</t>
      </section>
    </section>
    <section anchor="processing">
      <name>Receiver Processing Rules</name>
      <section anchor="mandatory-ordered-checks">
        <name>Mandatory Ordered Checks</name>
        <t>On receiving a Governed Object, whether from a decrypted MLS application message
or from unencrypted carriage, a Relying Receiver <bcp14>MUST</bcp14> perform the following
checks, and <bcp14>MUST</bcp14> perform them in this order:</t>
        <ol spacing="normal" type="1"><li>
            <t>Structural validation against <xref target="governed-object"/>. Reject on failure.</t>
          </li>
          <li>
            <t>Signature verification per <xref target="governed-object"/>. Reject on failure.</t>
          </li>
          <li>
            <t>Where the object arrived inside an MLS session, confirm that <tt>issuerDid</tt>
equals the Agent Identity in the credential of the MLS member that sent the
message. Reject on mismatch.</t>
          </li>
          <li>
            <t>Expiry evaluation per <xref target="governance"/>. Reject if expired.</t>
          </li>
          <li>
            <t>Replay rejection per <xref target="replay"/>. Reject if already seen.</t>
          </li>
          <li>
            <t>Purpose enforcement per <xref target="purpose-enforcement"/>. Reject if not permitted.</t>
          </li>
        </ol>
        <t>Only after all six checks succeed may the receiver act upon <tt>payload</tt>.</t>
        <t>Check 3 is essential and is easily omitted. Without it, any member of a group
can emit an object bearing another member's <tt>issuerDid</tt>; the signature check
alone does not detect this, because the signature is valid -- it is simply not
made by the party that sent it. Implementations <bcp14>MUST NOT</bcp14> treat a valid signature
as evidence of who transmitted the message.</t>
      </section>
      <section anchor="replay">
        <name>Replay Rejection</name>
        <t>A Relying Receiver <bcp14>MUST</bcp14> reject a Governed Object whose <tt>id</tt> it has previously
accepted from the same <tt>issuerDid</tt>.</t>
        <t>Receivers <bcp14>MUST</bcp14> retain accepted <tt>(issuerDid, id)</tt> pairs for at least the maximum
object lifetime they will accept. Where a receiver applies a maximum accepted
lifetime, retention for that period is sufficient, because an older object is
rejected by check 4 regardless.</t>
        <t>Absent this requirement, a passive observer of unencrypted carriage, or any
member of an MLS group, can re-present a previously valid object. Where objects
convey instructions with side effects -- a payment authorisation, a booking
confirmation, a consent grant -- replay is directly exploitable.</t>
      </section>
      <section anchor="purpose-enforcement">
        <name>Purpose Enforcement</name>
        <t>A Relying Receiver <bcp14>MUST</bcp14> maintain, per processing context, a set of permitted
purpose values, and <bcp14>MUST</bcp14> reject an object whose <tt>governance.purpose</tt> is not in
that set.</t>
        <t>The set <bcp14>MUST</bcp14> be determined by the receiver's own configuration for the context
in which the object is being processed. It <bcp14>MUST NOT</bcp14> be derived from the object
itself, nor from any value under the sender's control.</t>
        <t>Receivers <bcp14>MUST NOT</bcp14> use a payload for a purpose other than the one declared, and
<bcp14>MUST NOT</bcp14> retain it beyond its expiry, save where an independent legal obligation
requires retention.</t>
      </section>
      <section anchor="rejection-behaviour">
        <name>Rejection Behaviour</name>
        <t>A receiver rejecting an object <bcp14>SHOULD</bcp14> emit a diagnostic distinguishable by
cause, for operator use. A receiver <bcp14>SHOULD NOT</bcp14> return to the sender information
that distinguishes between rejection causes beyond what is necessary for
interoperability, because fine-grained rejection reasons assist an attacker in
probing receiver configuration -- in particular in enumerating the permitted
purpose set.</t>
      </section>
    </section>
    <section anchor="regulatory">
      <name>Regulatory Alignment</name>
      <t>This section is informative.</t>
      <t>The constructs specified here correspond to obligations that exist independently
of this document in several jurisdictions. In the European Union, <xref target="GDPR"/>
Article 5(1)(b) requires that personal data be collected for specified purposes
and not further processed incompatibly with them; Article 5(1)(c) requires data
minimisation; and Article 5(1)(e) requires that data be kept no longer than
necessary.</t>
      <t>A Governed Object carries the specified purpose and the retention limit as
signed metadata available to the receiving implementation at the moment of
processing, rather than as prose in an agreement negotiated out of band. The
mandatory receiver-side enforcement of <xref target="purpose-enforcement"/> makes those
constraints operative in code.</t>
      <t>This does not constitute compliance, and this document does not offer legal
advice. It observes only that the mechanism places the relevant facts where an
implementation can act on them, which is a precondition for compliance being
demonstrable rather than merely asserted.</t>
    </section>
    <section anchor="security">
      <name>Security Considerations</name>
      <section anchor="what-this-specification-provides">
        <name>What This Specification Provides</name>
        <t>Within an MLS session, message content is confidential from the transport and
from any intermediary, with the forward secrecy and post-compromise security
properties of <xref target="RFC9420"/>. Governed Objects are authenticated and integrity
protected by Ed25519 signatures that remain verifiable independently of the
session and after it ends, providing durable evidence of authorship. The
credential binding of <xref target="credential-binding"/> ties MLS membership to the same
key, so that transmission and authorship cannot be separated.</t>
      </section>
      <section anchor="what-it-does-not-provide">
        <name>What It Does Not Provide</name>
        <t>Purpose limitation is not cryptographically enforced. A receiver that has
decrypted a message is in possession of the plaintext and can disregard the
declared purpose and expiry. The mechanism provides a signed, non-repudiable
record of the constraint under which disclosure was made, which converts an
undetectable breach into an attributable one. It does not prevent the breach.
Constructions that would provide stronger enforcement, such as purpose-bound
decryption keys or confidential computing attestation, are out of scope.</t>
        <t>A DID is not an identity. It denotes control of a key. Binding a DID to a legal
or natural person requires a credential presentation layer above this
specification.</t>
        <t>Compromise of an agent's Ed25519 private key compromises both its MLS
membership and its ability to sign Governed Objects, precisely because
<xref target="credential-binding"/> unifies them. Implementations <bcp14>MUST</bcp14> protect this key
accordingly, and <bcp14>SHOULD</bcp14> use non-exportable key storage where the platform
provides it. The unification is a deliberate trade: it eliminates a class of
impersonation attack at the cost of concentrating key-compromise impact.</t>
        <t>MLS provides no protection against traffic analysis, and this specification adds
none. Endpoints, message sizes, and timing are visible to the transport.</t>
      </section>
      <section anchor="availability">
        <name>Availability</name>
        <t>An unauthenticated message-submission endpoint is a denial-of-service vector
regardless of encryption; see <xref target="encapsulation"/>. KeyPackage exhaustion is a
related vector; see <xref target="sessions"/>.</t>
        <t>Implementations that queue messages for offline recipients <bcp14>MUST</bcp14> bound queue size
and <bcp14>MUST</bcp14> apply the checks of <xref target="processing"/> on dequeue rather than only on
enqueue. Deferring validation to dequeue without bounding the queue permits an
attacker to cause unbounded storage consumption with unvalidated input.</t>
      </section>
      <section anchor="group-session-threats">
        <name>Group Session Threats</name>
        <t>The following threats are specific to N-member sessions and motivate
<xref target="group-sessions"/> and <xref target="session-persistence"/>:</t>
        <ul spacing="normal">
          <li>
            <dl>
              <dt>Epoch skew after Add (T1).</dt>
              <dd>
                <t>Mitigated by <xref target="commit-fanout"/>. Partial delivery after the committer has
already advanced remains a deployment recovery problem; this revision does
not specify compensating fan-out.</t>
              </dd>
            </dl>
          </li>
          <li>
            <dl>
              <dt>Peer-injected Commit (T2).</dt>
              <dd>
                <t>Mitigated under the designated committer profile by rejecting Commits whose
claimed sender is not the committer. Binding that claim to MLS-authenticated
Commit authorship is <bcp14>RECOMMENDED</bcp14>; envelope-only checks are weaker against a
compromised or spoofed transport path.</t>
              </dd>
            </dl>
          </li>
          <li>
            <dl>
              <dt>Half-restored group secrets (T3).</dt>
              <dd>
                <t>Mitigated by <bcp14>MUST</bcp14> fail-closed restore in <xref target="session-persistence"/>.</t>
              </dd>
            </dl>
          </li>
          <li>
            <dl>
              <dt>Spec ahead of code (T4).</dt>
              <dd>
                <t>This revision limits normative group behaviour to surfaces proven in the
reference implementation's three-agent loopback suite.</t>
              </dd>
            </dl>
          </li>
          <li>
            <dl>
              <dt>Folding offline delivery into MLS (T5).</dt>
              <dd>
                <t>Offline / asleep-queue behaviour is specified separately and <bcp14>MUST NOT</bcp14> be
inferred from this document's MLS sections.</t>
              </dd>
            </dl>
          </li>
          <li>
            <dl>
              <dt>Roster versus MLS membership desync.</dt>
              <dd>
                <t>Application rosters that diverge from MLS leaves (for example, host
self-leave without a Remove Commit) are out of scope for this revision;
deployments <bcp14>MUST</bcp14> treat MLS membership as authoritative for decryption.</t>
              </dd>
            </dl>
          </li>
          <li>
            <dl>
              <dt>Handshake ratchet-tree substitution.</dt>
              <dd>
                <t>Joiners <bcp14>MUST</bcp14> abort when Welcome does not accept the supplied ratchet tree.</t>
              </dd>
            </dl>
          </li>
          <li>
            <dl>
              <dt>Stale Commit replay.</dt>
              <dd>
                <t>MLS processing rejects Commits already applied to local state; deployments
<bcp14>SHOULD</bcp14> retain that failure mode rather than inventing a separate
application-layer Commit replay cache.</t>
              </dd>
            </dl>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="iana">
      <name>IANA Considerations</name>
      <section anchor="media-types">
        <name>Media Types</name>
        <t>This document uses three media types, currently registered in neither the
standards nor the vendor tree. The deployed reference implementation uses
vendor-tree names.</t>
        <t>If this document advances, the author requests registration of the following in
the standards tree, with the vendor-tree names retained as deprecated aliases:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Proposed</th>
              <th align="left">Deployed</th>
              <th align="left">Purpose</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <tt>application/governed-object+json</tt></td>
              <td align="left">
                <tt>application/vnd.atom.data-object+json</tt></td>
              <td align="left">Governed Object</td>
            </tr>
            <tr>
              <td align="left">
                <tt>application/mls-wire+cbor</tt></td>
              <td align="left">
                <tt>application/vnd.atom.mls-wire+cbor</tt></td>
              <td align="left">MLS wire message</td>
            </tr>
            <tr>
              <td align="left">
                <tt>application/mls-handshake+json</tt></td>
              <td align="left">
                <tt>application/vnd.atom.mls-handshake+json</tt></td>
              <td align="left">Welcome and ratchet tree</td>
            </tr>
          </tbody>
        </table>
        <t>Complete registration templates will be supplied in a subsequent revision.</t>
      </section>
      <section anchor="purpose-value-registry">
        <name>Purpose Value Registry</name>
        <t>This document requests the creation of a new IANA registry entitled
<strong>Governed Object Purpose Values</strong>.</t>
        <t>Each entry has: Value (string), Prefix, Description, Payload schema (HTTPS
URI), Reference, Status (<tt>provisional</tt>, <tt>permanent</tt>, or <tt>obsolete</tt>), and
Change Controller.</t>
        <t>Registration procedures: Expert Review for <tt>provisional</tt> and <tt>obsolete</tt>
entries; Standards Action for <tt>permanent</tt> entries (<xref target="RFC8126"/>).
Provisional entries <bcp14>MUST</bcp14> be revised, promoted, or obsoleted within 24 months
of last substantive change.</t>
        <t>IANA registration of a purpose <bcp14>MUST NOT</bcp14> be interpreted as (i) permission to
process, (ii) default allowlist membership, or (iii) authorisation for side
effects. Receivers that move money, mutate durable external state, or disclose
secrets <bcp14>MUST</bcp14> apply separate confirmation and policy controls; purpose alone is
insufficient. Registered purposes remain subject to receiver-configured
allowlists; an empty or absent allowlist is a deployment profile that does not
grant cross-implementation purpose alignment (see also the Atom Governed Object
A2A extension deployment-profile note).</t>
        <t>Purpose values identify the <em>kind</em> of Governed Object. Strings such as
<tt>action:reserve</tt>, <tt>room:receipt</tt>, and <tt>room:checkpoint</tt> may appear in
implementations but are not part of the initial IANA contents; they remain
implementation-defined until proposed with a stable payload contract.
<tt>action:qualify</tt> is intentionally omitted from the initial contents.</t>
        <t>Initial provisional contents (payment rail cluster):</t>
        <table>
          <thead>
            <tr>
              <th align="left">Value</th>
              <th align="left">Prefix</th>
              <th align="left">Description (summary)</th>
              <th align="left">Payload schema</th>
              <th align="left">Status</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <tt>action:hold</tt></td>
              <td align="left">action</td>
              <td align="left">Authorization hold on a payment rail. <bcp14>MUST NOT</bcp14> auto-place holds from purpose alone.</td>
              <td align="left">https://atom.qwixl.dev/schema/ActionHold</td>
              <td align="left">provisional</td>
            </tr>
            <tr>
              <td align="left">
                <tt>action:confirm</tt></td>
              <td align="left">action</td>
              <td align="left">Party confirmation before capture. <bcp14>MUST NOT</bcp14> capture funds.</td>
              <td align="left">https://atom.qwixl.dev/schema/ActionConfirm</td>
              <td align="left">provisional</td>
            </tr>
            <tr>
              <td align="left">
                <tt>action:capture</tt></td>
              <td align="left">action</td>
              <td align="left">Capture of a previously placed hold. <bcp14>MUST NOT</bcp14> capture without prior hold + confirm policy.</td>
              <td align="left">https://atom.qwixl.dev/schema/ActionCapture</td>
              <td align="left">provisional</td>
            </tr>
            <tr>
              <td align="left">
                <tt>action:release</tt></td>
              <td align="left">action</td>
              <td align="left">Compensating release of a hold.</td>
              <td align="left">https://atom.qwixl.dev/schema/ActionRelease</td>
              <td align="left">provisional</td>
            </tr>
            <tr>
              <td align="left">
                <tt>action:receipt</tt></td>
              <td align="left">action</td>
              <td align="left">Signed receipt after capture.</td>
              <td align="left">https://atom.qwixl.dev/schema/ActionReceipt</td>
              <td align="left">provisional</td>
            </tr>
          </tbody>
        </table>
        <t>Additional application-specific purposes (for example product UI verbs under
vendor or product prefixes) are implementation-defined and <bcp14>MUST NOT</bcp14> be claimed
as registered solely because they appear in a particular deployment.</t>
      </section>
    </section>
    <section anchor="implementation-status">
      <name>Implementation Status</name>
      <t>This section is to be removed before publication as an RFC, per <xref target="RFC7942"/>.</t>
      <t>An open source implementation exists under the Apache License 2.0 at
<tt>https://github.com/Qwixl/Atom</tt>, and is deployed in a small public network.</t>
      <t>Implemented and interoperability-tested between two independent processes over
HTTP:</t>
      <ul spacing="normal">
        <li>
          <t>Governed Object construction, canonical serialisation, Ed25519 signing, and
verification, including tamper and expiry rejection. Canonical form is a
deterministic key-sorted JSON profile (<tt>stableStringify</tt> in
<tt>@qwixl/protocol</tt>) that meets the <bcp14>MUST</bcp14> constraints of <xref target="canonical"/> for the
published vector suite; adoption of a dedicated <xref target="RFC8785"/> JCS library
(byte-identical JCS for all JSON types, including floats) remains deferred.</t>
        </li>
        <li>
          <t><tt>did:key</tt> Ed25519 identity derivation without network resolution.</t>
        </li>
        <li>
          <t>MLS pair and group sessions using ciphersuite <tt>0x0001</tt> via the <tt>ts-mls</tt>
library in a single open-source implementation (<tt>https://github.com/Qwixl/Atom</tt>),
including KeyPackage publication and retrieval, Welcome and ratchet tree
delivery to joiners, public Commit fan-out to existing members on the MLS
wire for Add and Remove, application message encryption and decryption,
designated-committer admission of room Commits via host <tt>senderDid</tt> gating
on inbound public Commits (MLS-authenticated Commit author binding remains
a <bcp14>SHOULD</bcp14>), WithoutTree-style group snapshot restore with optional
ratchet-tree sidecar, fail-closed discard of corrupt snapshots, and a
three-agent loopback restart proof. Compensating recovery after partial
Commit fan-out, and host self-leave without a Remove Commit, remain deferred.</t>
        </li>
        <li>
          <t>The A2A binding of <xref target="encapsulation"/> at protocol version 1.0, including
extension declaration in the Agent Card and per message, all three part
encodings, and media type placement in both positions per
<xref target="media-type-placement"/>.</t>
        </li>
        <li>
          <t>Version compatibility with A2A version 0.3 per <xref target="version-compat"/>, in both
directions, tested against the published version 0.3 implementation rather
than against a substitute: a version 1.0 sender delivering to a version 0.3
receiver, and a version 0.3 sender delivering to a version 1.0 receiver.</t>
        </li>
        <li>
          <t>Agent Card signing and verification per <xref target="agent-card"/>, with <tt>kid</tt> set to the
agent's <tt>did:key</tt> and the verifying key recovered from that identifier without
network retrieval. The relying check described there -- requiring the signing
identity to match an asserted identity before associating a domain with an
agent -- is applied.</t>
        </li>
        <li>
          <t>Purpose enforcement by receiver-configured allowlist, and expiry rejection.</t>
        </li>
        <li>
          <t>Out-of-band invitation with identity assertion, and abort on identity
mismatch.</t>
        </li>
        <li>
          <t>Transport authentication on the message-submission endpoint
(<xref target="encapsulation"/>): Agent Cards declare an HTTP Bearer scheme
(<tt>atomDidBearer</tt>), and <tt>/a2a/jsonrpc</tt> requires an Atom DID Bearer token
(<tt>Authorization: Bearer atom.&lt;payload&gt;.&lt;sig&gt;</tt>) signed by the caller's
<tt>did:key</tt>, with audience bound to the peer's public base URL.</t>
        </li>
      </ul>
      <t>Previously deferred and now implemented in the reference libraries:</t>
      <ul spacing="normal">
        <li>
          <t>The credential binding key-equality check of <xref target="credential-binding"/>
(<tt>@qwixl/protocol</tt> + <tt>@qwixl/mls-session</tt> KeyPackage generation and admission).</t>
        </li>
        <li>
          <t>Replay rejection (<xref target="replay"/>) via <tt>ReplayGuard</tt> in <tt>@qwixl/protocol</tt>, wired
through the agent backend receive paths.</t>
        </li>
        <li>
          <t>Check 3 of <xref target="processing"/>, confirming <tt>issuerDid</tt> against the sending MLS
member's LeafNode credential (<tt>decrypt</tt> returns <tt>senderDid</tt>;
<tt>verifyDataObject({ expectedMlsSenderDid })</tt>).</t>
        </li>
        <li>
          <t>Validation on dequeue for messages queued to offline recipients
(<xref target="security"/>): <tt>dequeueAsleepMessages</tt> applies <xref target="processing"/> when the
agent wakes; the queue remains size-bounded at enqueue.</t>
        </li>
      </ul>
      <t>The author notes that several of these items were identified by the exercise
of writing this specification, having not been apparent from the working
implementation. This is offered as evidence for the general proposition that
specification and implementation are not redundant activities.</t>
      <t>A further instance arose in preparing this document. The reference
implementation's own documentation described a part using the tagged-union form
produced by its code generator, rather than the JSON actually transmitted. The
discrepancy was invisible to that implementation, which both produced and
consumed the same internal representation, and would have been discovered only
by a second implementation in another language attempting to interoperate from
the description. The requirement in <xref target="protocol-version"/> that members be named
as they appear on the wire, and the encapsulation vectors of <xref target="vectors"/>, exist
to prevent a recurrence.</t>
    </section>
    <section anchor="changes-from-draft-chapman-a2a-mls-02">
      <name>Changes from draft-chapman-a2a-mls-02</name>
      <ul spacing="normal">
        <li>
          <t>Expanded <xref target="group-sessions"/> with a designated committer profile and
normative <xref target="commit-fanout"/> requiring public Commit delivery on the MLS wire
for Add/Remove, correcting the N-member epoch-skew failure mode.</t>
        </li>
        <li>
          <t>Replaced thin <xref target="session-persistence"/> text with deployment/OS at-rest
controls, <bcp14>RECOMMENDED</bcp14> WithoutTree-style encoding, and <bcp14>MUST</bcp14> fail-closed
restore.</t>
        </li>
        <li>
          <t>Clarified <xref target="handshake-part"/> optional <tt>commit</tt> / <tt>memberDids</tt> and that MLS
wire Commits remain authoritative for existing members.</t>
        </li>
        <li>
          <t>Honest <xref target="implementation-status"/> for group persistence and three-agent
proofs; deferred partial fan-out recovery and host self-leave without Remove.</t>
        </li>
        <li>
          <t>Clarified <xref target="canonical"/>: <bcp14>SHOULD</bcp14> <xref target="RFC8785"/> JCS; <bcp14>MUST</bcp14> deterministic
key-order / no whitespace / omit absent members; removed JS-specific
"undefined" wording; Implementation Status notes reference <tt>stableStringify</tt>
until a dedicated JCS library lands.</t>
        </li>
      </ul>
    </section>
    <section anchor="changes-from-draft-chapman-a2a-mls-01">
      <name>Changes from draft-chapman-a2a-mls-01</name>
      <ul spacing="normal">
        <li>
          <t>Replaced the Purpose Value Registry solicit-input text with a concrete IANA
registry request for <strong>Governed Object Purpose Values</strong>, Expert Review /
Standards Action procedures, and five provisional payment-rail purposes
(<tt>action:hold</tt>, <tt>action:confirm</tt>, <tt>action:capture</tt>, <tt>action:release</tt>,
<tt>action:receipt</tt>). Registration is not authorisation; empty allowlists remain
a deployment-profile choice.</t>
        </li>
        <li>
          <t>Added <xref target="RFC8126"/> as a normative reference for registration procedures.</t>
        </li>
      </ul>
    </section>
    <section anchor="changes-from-draft-chapman-a2a-mls-00">
      <name>Changes from draft-chapman-a2a-mls-00</name>
      <ul spacing="normal">
        <li>
          <t>Clarified <xref target="encapsulation"/> Extension Declaration: messages carrying only MLS
wire or MLS handshake parts <bcp14>MUST NOT</bcp14> stamp the Governed Object extension URI;
GO-carrying messages <bcp14>SHOULD</bcp14> list it. The Agent Card declaration for the GO
URI uses <tt>required</tt> false.</t>
        </li>
        <li>
          <t>Noted the separately published GO-only A2A extension profile under
<tt>spec/extensions/data-object-v1/</tt> in the reference implementation repository.
This document remains the broader GO+MLS provenance draft.</t>
        </li>
      </ul>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC9420">
          <front>
            <title>The Messaging Layer Security (MLS) Protocol</title>
            <author fullname="R. Barnes" initials="R." surname="Barnes"/>
            <author fullname="B. Beurdouche" initials="B." surname="Beurdouche"/>
            <author fullname="R. Robert" initials="R." surname="Robert"/>
            <author fullname="J. Millican" initials="J." surname="Millican"/>
            <author fullname="E. Omara" initials="E." surname="Omara"/>
            <author fullname="K. Cohn-Gordon" initials="K." surname="Cohn-Gordon"/>
            <date month="July" year="2023"/>
            <abstract>
              <t>Messaging applications are increasingly making use of end-to-end security mechanisms to ensure that messages are only accessible to the communicating endpoints, and not to any servers involved in delivering messages. Establishing keys to provide such protections is challenging for group chat settings, in which more than two clients need to agree on a key but may not be online at the same time. In this document, we specify a key establishment protocol that provides efficient asynchronous group key establishment with forward secrecy (FS) and post-compromise security (PCS) for groups in size ranging from two to thousands.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9420"/>
          <seriesInfo name="DOI" value="10.17487/RFC9420"/>
        </reference>
        <reference anchor="RFC8032">
          <front>
            <title>Edwards-Curve Digital Signature Algorithm (EdDSA)</title>
            <author fullname="S. Josefsson" initials="S." surname="Josefsson"/>
            <author fullname="I. Liusvaara" initials="I." surname="Liusvaara"/>
            <date month="January" year="2017"/>
            <abstract>
              <t>This document describes elliptic curve signature scheme Edwards-curve Digital Signature Algorithm (EdDSA). The algorithm is instantiated with recommended parameters for the edwards25519 and edwards448 curves. An example implementation and test vectors are provided.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8032"/>
          <seriesInfo name="DOI" value="10.17487/RFC8032"/>
        </reference>
        <reference anchor="RFC8259">
          <front>
            <title>The JavaScript Object Notation (JSON) Data Interchange Format</title>
            <author fullname="T. Bray" initials="T." role="editor" surname="Bray"/>
            <date month="December" year="2017"/>
            <abstract>
              <t>JavaScript Object Notation (JSON) is a lightweight, text-based, language-independent data interchange format. It was derived from the ECMAScript Programming Language Standard. JSON defines a small set of formatting rules for the portable representation of structured data.</t>
              <t>This document removes inconsistencies with other specifications of JSON, repairs specification errors, and offers experience-based interoperability guidance.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="90"/>
          <seriesInfo name="RFC" value="8259"/>
          <seriesInfo name="DOI" value="10.17487/RFC8259"/>
        </reference>
        <reference anchor="RFC4648">
          <front>
            <title>The Base16, Base32, and Base64 Data Encodings</title>
            <author fullname="S. Josefsson" initials="S." surname="Josefsson"/>
            <date month="October" year="2006"/>
            <abstract>
              <t>This document describes the commonly used base 64, base 32, and base 16 encoding schemes. It also discusses the use of line-feeds in encoded data, use of padding in encoded data, use of non-alphabet characters in encoded data, use of different encoding alphabets, and canonical encodings. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4648"/>
          <seriesInfo name="DOI" value="10.17487/RFC4648"/>
        </reference>
        <reference anchor="RFC8126">
          <front>
            <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
            <author fullname="M. Cotton" initials="M." surname="Cotton"/>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <author fullname="T. Narten" initials="T." surname="Narten"/>
            <date month="June" year="2017"/>
            <abstract>
              <t>Many protocols make use of points of extensibility that use constants to identify various protocol parameters. To ensure that the values in these fields do not have conflicting uses and to promote interoperability, their allocations are often coordinated by a central record keeper. For IETF protocols, that role is filled by the Internet Assigned Numbers Authority (IANA).</t>
              <t>To make assignments in a given registry prudently, guidance describing the conditions under which new values should be assigned, as well as when and how modifications to existing values can be made, is needed. This document defines a framework for the documentation of these guidelines by specification authors, in order to assure that the provided guidance for the IANA Considerations is clear and addresses the various issues that are likely in the operation of a registry.</t>
              <t>This is the third edition of this document; it obsoletes RFC 5226.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="26"/>
          <seriesInfo name="RFC" value="8126"/>
          <seriesInfo name="DOI" value="10.17487/RFC8126"/>
        </reference>
        <reference anchor="RFC8785">
          <front>
            <title>JSON Canonicalization Scheme (JCS)</title>
            <author fullname="A. Rundgren" initials="A." surname="Rundgren"/>
            <author fullname="B. Jordan" initials="B." surname="Jordan"/>
            <author fullname="S. Erdtman" initials="S." surname="Erdtman"/>
            <date month="June" year="2020"/>
            <abstract>
              <t>Cryptographic operations like hashing and signing need the data to be expressed in an invariant format so that the operations are reliably repeatable. One way to address this is to create a canonical representation of the data. Canonicalization also permits data to be exchanged in its original form on the "wire" while cryptographic operations performed on the canonicalized counterpart of the data in the producer and consumer endpoints generate consistent results.</t>
              <t>This document describes the JSON Canonicalization Scheme (JCS). This specification defines how to create a canonical representation of JSON data by building on the strict serialization methods for JSON primitives defined by ECMAScript, constraining JSON data to the Internet JSON (I-JSON) subset, and by using deterministic property sorting.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8785"/>
          <seriesInfo name="DOI" value="10.17487/RFC8785"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC7942">
          <front>
            <title>Improving Awareness of Running Code: The Implementation Status Section</title>
            <author fullname="Y. Sheffer" initials="Y." surname="Sheffer"/>
            <author fullname="A. Farrel" initials="A." surname="Farrel"/>
            <date month="July" year="2016"/>
            <abstract>
              <t>This document describes a simple process that allows authors of Internet-Drafts to record the status of known implementations by including an Implementation Status section. This will allow reviewers and working groups to assign due consideration to documents that have the benefit of running code, which may serve as evidence of valuable experimentation and feedback that have made the implemented protocols more mature.</t>
              <t>This process is not mandatory. Authors of Internet-Drafts are encouraged to consider using the process for their documents, and working groups are invited to think about applying the process to all of their protocol specifications. This document obsoletes RFC 6982, advancing it to a Best Current Practice.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="205"/>
          <seriesInfo name="RFC" value="7942"/>
          <seriesInfo name="DOI" value="10.17487/RFC7942"/>
        </reference>
        <reference anchor="A2A" target="https://a2a-protocol.org/">
          <front>
            <title>Agent2Agent (A2A) Protocol Specification, Version 1.0</title>
            <author>
              <organization>A2A Project (Linux Foundation)</organization>
            </author>
            <date year="2026"/>
          </front>
        </reference>
        <reference anchor="DIDKEY" target="https://w3c-ccg.github.io/did-method-key/">
          <front>
            <title>The did:key Method</title>
            <author>
              <organization>W3C Credentials Community Group</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="MCP" target="https://modelcontextprotocol.io/">
          <front>
            <title>Model Context Protocol</title>
            <author>
              <organization>Anthropic</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="GDPR" target="https://eur-lex.europa.eu/eli/reg/2016/679/oj">
          <front>
            <title>Regulation (EU) 2016/679 (General Data Protection Regulation)</title>
            <author>
              <organization>European Union</organization>
            </author>
            <date year="2016"/>
          </front>
        </reference>
      </references>
    </references>
    <?line 1073?>

<section anchor="vectors">
      <name>Test Vectors</name>
      <t>Machine-readable test vectors accompany this document, comprising: signed
Governed Objects with known Ed25519 key pairs and their canonical
serialisations; objects with mutated payloads that <bcp14>MUST</bcp14> fail verification;
expired objects; objects whose declared purpose is outside a stated permitted
set; a replayed object pair; and a KeyPackage whose credential identity does not
match its signature key, which <bcp14>MUST</bcp14> be rejected per <xref target="credential-binding"/>.</t>
      <t>A second group of vectors covers the encapsulation of <xref target="encapsulation"/> as
serialised JSON, independently of any Governed Object contained within: parts
carrying the media type in the part member, in the <tt>data</tt> member, and in both;
a part whose two media type members disagree, which <bcp14>MUST</bcp14> be rejected per
<xref target="media-type-placement"/>; and a part bearing no media type in either position.
These vectors exist because the encapsulation is the layer at which two
implementations in different languages first fail to interoperate, and it is the
layer least well served by reading either implementation's source.</t>
      <t>Vectors are published at <tt>https://github.com/Qwixl/Atom</tt> under <tt>spec/vectors/</tt>.
An implementation claiming conformance to this document <bcp14>SHOULD</bcp14> produce the
specified outcome for every vector.</t>
      <t>Governed Object signature vectors exercise the deterministic canonical profile
described in <xref target="implementation-status"/>, not a certified <xref target="RFC8785"/>
implementation. The vectors were otherwise derived from this document's text
rather than generated from the reference implementation, so that the two are
capable of disagreeing. On first execution they did: the reference
implementation treated <tt>governance.expiresAt</tt> as authoritative whenever present
and never compared it to the interval implied by <tt>ttlSeconds</tt>, so a sender
could extend a short-lived object's lifetime indefinitely by supplying an
additional distant absolute expiry. Because the governance block is covered by
the signature, the resulting object was valid under every other check. This is
the origin of the requirement in <xref target="governance"/> that the earlier instant
govern, and it is offered as a concrete instance of why vectors written from
specification text are worth the effort of producing.</t>
    </section>
    <section numbered="false" anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>This work builds directly on the MLS protocol <xref target="RFC9420"/> and on the A2A
protocol <xref target="A2A"/>. The author thanks the authors and contributors of both.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA8V963bbVpLufzwFjv0jkkPSl1w6kXp6RrHdibvt2GPZndNr
1qwQJCEJbRJgA6BktuJ5lvMs58lOfV/VvoGk487MWsdziUgCGxt7167rV1Xj
8Tjrq35ZnuR3ntaLcd+M5T/503rebtd91dR5IR9fbdp105Xj75qNfPq+uS7b
uqjnZX7RtPnZZVn3uJF/5C/Krisuq/ryTlbMZm15LSM/buqLaiG/VsUy37ls
0czrYiUzWLTFRT+eXxXrVVGPi0fFeLXsxg++yOZFX1427fYkL9+vs24zW1Vd
J5N7s13LbVW9KNdljfGzrFq3J3nfbrr+0YMH3z54lBVtWZzk5+V801b9Nrtp
2neXbbNZn+TPwn35uR8ze1du5aLFSZaP8xfPz/GfAlPGH6UukfxH/nRLhB8W
RV/kq6quZJTCfXn26CzLul5W8Odi2dQy1W3ZZd2qaPuf/75p+rI7yesmW1cn
+X/0zXyUd03bt+VFJ39tV/jjP7Os2PRXTYvZZLn8q2q56fkkfzLJH+tC8Wtd
wOebd2X+pKircpn82rSX8uU/OLGT/N9vqvdLfl+uimp5ki/ltokt+7/9Hb9O
5s0qy+qmXck916U8PX/9x8ePHj781v785uHvvrQ/v/3y0QP37YMvHrk/H33l
rv3y6y+/8bc9+tr9+btvvjqR/aovBk/5nQyIP2X1TjhLR58knEdKPkfy63H+
qm1k3Zplfr4u59VFNecbjvK/lC22Mn84eXBHhyjay7I/ya/6ft2d3L8P2lrb
zRNZnfu8yi81/42xbHjsozM86G/lXB77vKo37/M/4hzwWcc6vnyQGT568Ohr
+fjk2ZM/P/1rOvc3V2W+qBYnQlxC+vKYxf6J3XwxH8/nl5PLqr/azCZVc1/u
Gq94x1hu/thEf/ricf64Le2cdfnjZrXa1EL0+fcgeDzwxeNX6bxeNAvQSlP3
5fver+f+ua1w7Vwv9YsnM/zY2tX9VdusqzlG/P7Jq9fp01+Xl5sl1zE/evr2
WBbw4df3v/7dt/nR92VdtsIsnuBcYVqy+rgs3HG8f5Llph0vy/cT+W+zLuQ/
98tldb8tL++7we83f/vIjJ/ivrKo87e1PCTd3YdfZ9l4LOxg1vVtMRdu43kf
OUTuVqWTYzoXvtMJf1tu83nRttt8RY5Xdvms7G/KssYEmrpZNZtODv5FfyOc
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
pCN31bED80TTwSYFf2bsVggeb4uIyJU2q5Hc0iMieJl5EEg4vaBKBGm4fULo
s6UzIZwvIjZVstvbXZeV6LK7OyK7WJeXjVwn024YqoxepBsBGEup0jfOzpyb
U0s2LSAD8+9sGrd39zyZ/OhA8IX7OoPHfSq8oZpP4x/VuKwiHgZv09s3fxx/
E/iHHSk3frpyMtE/blq8GMyJkYcFTf1W/Kz8sE4GeV4WFz8K+/HTI58rVmW2
a5BauKnTGamtyK92ZkJCiTyHjoHCAhvPSrULy6X3rauX1VY8/8k8TBU9jlnR
96JulTAeG/q2OSPYXbEqBhCaRuBpI7ezSiSmUCUOarBTsaph2Z1D07vVwRTq
Zhh0k93qaL2C/VpIB++deRvM+GihB1YtOGF21SVhG4HNwqDELxdmrrTCMMVA
ZcRJJqqvzvcO49CbvCf+Zc54/RkGm3eTZ4oiMkHwsg4h43TJ5I3c9mMlhiY2
KcIYdW/YhyxGmTlqXRctAvVFKngd/UQSQA06GymiK+HvKp/UsT7vy34s6z3m
X7mQkTzNot9uwtmAruXI26JelfN3+UVRwaVGzr/nrTS6xmlE64HpedEmvN5g
K9xMhh9oXsuSKggmcaTbCd7H92Cd+sXoAhtacH7ebytEsZ+bgeYxxqyMsAQz
ZZVcG8Xt6VnM5kU3fGeTKYBDAd7jhDZXa8920vuZFXPGzepKH0a8ZkPH2rrp
zCVxEgtw8PVFGbQSMoUsZuwjVVgPcKZJ/gQhwSpoD0WvD/2syzwPhKsWLu+2
tJDQxYbL3ZbXVefvjBy6p/lGJrBUd3jmhcdoZ40MNBfWxm0MF4+AlVgQm0il
P+nNLvxA5MPQiaY4B6quMmMRFTv3UHWlY6axQYJ/Jiys6pyKbCWDEGNgucyE
JfZ07an7iHgsL5s39ZIBOoW4UP7dVMTN/ZK/UAr/JUdGiPznSRTN/SWDDen/
T66eWghkKlfWG7vzjwz6uijNxAuT6cMpGeduFG2Sc7BqgXGMP/8C3PjfRV+x
t4+RuG7EjV6xplIOlc4NxA9PBuMNlAvju3SCJjcuzvrkvmfyJXN0xFgSwpZN
yL/44otvCWYf4zvIkrdvHtsYLu6JMWzutpouvtW0Cn2ZlbJ1dpd5JJObYg+f
etB46aXPGkqufpuiqBy6JlwNVUhn6I7a2fJS5FJ/tUre1+/XHbNB7kyHNybX
fydM5usvlTyRoSLk6ThcpND/oi7FaHmMmV5RVATqnJJZFv734EOlLJ/RqBB1
6PUz7wh3WqFzIxuwRzi4izFElIqvpxh6gQP9g6zVNHNnx+YIwrGnHyQ1jmPR
ESpyb9+KcoFQAfVJ6toZj6nw+KUIf8XOL5fKmYSXzSzuOfHebahJgPJZGAqH
RREgWQAmHwEwhe88xCPKInN8htttLxOTi1tSOnEBpPqnD7wBHFKCcXsHrm1R
WOfjj7bFiKjvl+eEjXUJ13A7NcmfVxelO1YKMDOdKhxPG4qAmbIbnNcw0pkR
iyFr9p1dEqZoCzPZtnRuSifhCRp8IjZAdQnRXJdQZOQ72O3UKZGj1mem4JYX
F9i0a/d8qiW1IW1p3kaj2Tn2IXt9sgKMW08fRnBwokEMExeDvBi4VC43WPhV
8b5abVb50lYxBGtshVQawFHRQj0A0HbZ1GMgQQiAtGQCeTM4bYAIVKBN+b6A
kMymAOZ2J6buTkHy8pUY81BvoQfAam+6Yim75J7M06APjvx/2aJRKKy8xWwj
dLM9HcRf/Wp4gJIzTtXXLyxOrL6qqAthOhfEpht0xaT/zVXJ1W5qal83Qviy
QQwtwZIr6qYm5vHcwiHKbMWcc7/YKQqqHHHKq/WGohMaTJH7i/MuGcYkjO6s
6C3mX0M2irMc9vJiUl7gtcaVqloeCjXHP849x8jtkK4AoeDgVhchDuXV2S4w
xxF53yiWoKPo2I0i9j3KvMxSiokZzcTYSgT/V1Sx5iA4U9Gnf8VTx8WNUCJ2
icoUfzTfRb1ZLqfqDoJQgOOL6reNPNGRzHKbAqYLuhF2zvtPd/S8ChCf+nJD
w41zknMHihVT09/NsFxFXN3Yu6Rg/pXrXgVE35bwEgBCEqU+QLDNMK3Mh/Hw
Ylj61bEIDQa/hrs5Si2PEjcUPmUtmlTfvCvhkXgGZAJdVpAwwxc0huHw3J5O
POlbMmt+ThMlO/rT4/PjfXQs7+c2qBtGiC0JlXHDM74xUVwLQsMXuQwp7GgG
C/ygaSmvt1wSi8gl0nWLwp+yJm6jDLoeVuK+251o8QnPVCLRFzbSScgF19AL
6V7N5CNygLt8Wb6v5mnW1DaHF+bh1zlcHtAJwIKALp8TxsjNEsJDcPSypnor
L3GD8DLzAk/Jze+F3a0IkIE9VbRIGFnCMhrblNroTsJI5Vm9F6p0y+T+CLk3
4EbdNJvlQmhGzuOlORyiTbIhmiHqnlzmrJeLAwJ2sFUh1WZDI182WfNRKgKU
MHlkXpcLPYdJVh+IqbvQlCBgz7kIcTKhVxc2zul4LW/UtBmNLIJIvTzYlj0h
ou/KhNLitzSKmwhvp5BI3mRMRHqnWAbTGs2F4mXsdVMt8gv5qefBR9zE1BVE
ms2/6Y9vtnNmBreaDKRZ964GtMfQrHIpM07HjsCzKhxpRcbBgwHhcxRgxCD/
VjNzcGRdMo5MUOYxB4XPqWlmYov1nLKxa/+C6rjzsrnz+gHkqOaUXeLwVT6H
Y5EBv9WS8A2pDzqvL/cIyanZAEfrtrqWe/8Mk19OzzdHfslgKB4fT4cMJYvw
8SPvXlwzZhNMjHPTh7/Mj2ZqgFDZXhdU6001/kuEsIaNfW1xEBKfcJuHE1Wd
2lVkINCN0sFcPc0eRRfsE9Xu2mAqnWZfTOIAyx7PaaTMqpGq7xbQ+KfZlxP4
6VTPsHwyp2MwcUvvCFqK3PLVJPjnor3w0R8zJB0p6fErXKpu4x3es9I8Yqol
yUKrNvU0gaLe3vW4fa505Dl7FRIAggs8xegIGTdEb/iMAnfou2GKQJRlRkRp
4iEbYPIdHnIUvNqe2FWsQ/TmzudYQOW/v1p298G41vrAqeatcPsahi/wVBco
cgFUQPNlddUqpYDJbAVJhV6xWmB7j3ZDG8eqMgFcY78rEY+N3LN0FY6pxXOF
6Cz3qBh1YMKYofYeb4PPu5gkGRfIjbfEUsZnCFeCX8xlNYV8jTVYO2GhV0In
jq0VPqiRCZMZB26NMNVyS9CWgiNcuFHGIdEOfIxuJ9VJK6rpAY9nUxu4VUdd
xC9pSpRmfQoZeiLVjXkFdJURsNOiK/hbfbozJqT5a/txWxYBJUXVzEmsCEbK
zxaLzFk6XnQFD76NHvKb903fMu7F8sJiZTaCGZMO4uFAEkQ5xmAPnwLGZ5Zt
eFh2JRd3V8W7cjed5vbW/zhG8hxFYEjk9KNFeeBiNnUK0pLZk3nJ+zebftxc
jGeaiXhdRVA8X1EAcsP8fAP6N2+8bkbT7g8v7FsymdY+N7XxYR579/DKPwta
F59QzAhUT/OcaqiPDEPSY6DMCmYe6JIKaxx0ohXXNvYwdxKpMlIbhn4blgMR
qm4jOlrVGycXgoTsr0J8DC4cUt25Y4a3d0mG44jF+t+Uv+wFCaoveCdrS0na
p2NM9geZ1aXwG48osleYF/S3Rk+NTokvdxcuJUqjcmEHCHF40w3T7HhEZotF
s4ZKfO/eYs999+55rbKqDUFaWKa8mVnKT/0dx84+JvSa+aI+dUXjBsoCNBjP
u6JYnh1sDfaYdtwgN9/thwpQBStwWt41z+uQhZ0VXZjOJH/Lw+oiGriHdk9w
AsZRKVMbwtwirKeq8MuiWrGqBIaNcmDyo8hrE0LAxHNiFeQkTfWmJ8Hfeexi
VDh/zOXa2YFJMlenLHswhKzx4BzjseM4WXjhltmVjlEQgCW/7HvmwChWc9vh
lWWY+EVYIAo6ZRq49RErW8YQMMULvaSXyB0k/yCjDOH1UIpflytkAZkQ2Kln
4o0TFzdizF+ftpBb52Kn0UUa6N1wuvAZ2oVtdXklP/CAz1pR15lISzeZsmbN
uzC6NGYSxYYtDSuDdywY1na65fTyKeMLURw3vaXb3nXOGtyv+RsuVQ4zkmvH
CMDf3k1vptSoD25ZfuR94dFpi06lkAwd/3y26uJv4nM7lMy2b2k4ADvjpTDj
94treKCAI6fyppmD5boR7g5tPn2EoaGWlQtFBvF7754dPX2u8B3P5PhWeMC9
e2YQy6+O9xQslaB0pK+vfDp5boGaNBqKZBaIjHVVCGmBfTr1FamY7lAWfhWc
NmBK0b177kyDMcqpBpOW0W5vUfAN35uQV6YIpwH1WV7KjAJ6TfdAyUXlFEPm
KZDvPlvThb81OGoJF/xkm6PqnmVoVL2pZ5hQa0B+mzdejpuy8/y+LVCzYQIT
KN0spydxAKcdHdKKUkGEGQRV7J/Vjt7sjDdkRX42jvf4UhHqOIu5S8adNjr1
NXj8gngd5LHjHHxrzRBNN6IbZerGcfRmjMLWWAxvCACuMs+zIgcsSZRqiVZG
yPbtP4qAYJQfx/bKznBE8bIEo6PTQkobDIJrxdxrAQe3XHTYgnkufttBd6zX
HfVPOcrJ8XVr4iWgO8x6jHXh5FH+IJP68QTRe6/3bfws5JNisJCWVLrJ6pMB
ulkbTlBLYRVWQqQY2HxuqpZaUUR0GgWHMpUw6yW8grsM3axlhrPiEaZ6oQ8B
alGDzK+Hk4rDINfwArivlJ33aiSrkqF0mcRR94pGl+gL10ZZd2qIwdNBEkde
nHuQiR0xAgqqBtTeCqXaXrM+DNvgYZ2BGBhTXqJ+zdaftMyCZakEHrrv9bh0
ch60pkCc2OvRC5kHmFjqGQNBM/XTUV9m/lJ+tBB69UVd9Nqxtz6OR1yS2Vbs
8SVNUaH4qt64/Nm7wffyCr6pri81xmsDjtfh2w+70FFVMPWSyLSlI8/VuHNU
22JSrS1HZqnF5rbV63teY15HL0oWfiVzbxZ5qQIV0iELhS9ejuEqzs0dSEeY
qH10mg5UVajE3VZebKUuCNW0Myxh5Ou1TGIUhFkIgcJTvD0+mAFtZzVmdWMm
d0flR7HRiIRW3btksWbltiFYzVzmfM896GAXa7E1j4dQ4YP0YoddMlwpHP+9
JdgmcszDBD1v8oac8Esi+OWNnUjjLZA+l+AdmX61qXWlOAVToWFg0QlnCfTz
7WBKREZ0ftCMZ3JVXVqdKMUs4tHMLCSekJ+CjxpIxs0a/MPNQCsACOnIgxil
4oyOd2BXaqRjIDtBJwznonAB5rOpN53ergdgZEdKte34aLEkxpF8A7GdE0Yx
9rzw+ABGmwq/HkGz4hiX6VmBKrvaLlquptsFToEe0qeJFnF7N/VKGi90wjLk
3tMrGOXImzk9cWXkNKHaVWC9vbuTjG4jOyM9zWi3imeDfHk5H6zU5WOUFtvz
ueys1CZSFBCOtYL6fMUB6IwGHQG4k0WlgBrxQkUGA9sUk2SUWe0auxeA3JKx
CVf0MmTnM7DDSlaaoWmlA9yMHky+CMUaDD2xH9Mdwia9beC6hMIlq1K8wwrF
QwLGCKOI8O1b+2VMmGPvKir2SU79IBZG1tI1Vp4jjwpzDC4cghC1nAH9iPHO
YDeFtC6Jdo71q5GufFz8Icb1qedJKwDwnTSfPPOh3kFgShUhyPTJnlTaS5aL
7Z2jz2g08/n9sw3KByqgtZBRxNpxUX2F+rS9zyMisGsQte2LS9TH3NSssJDW
JvRoBmK2+/KCcc0LDbbaxKKaGygS2MzgmSdTUFxqaV6n/KmvZaCYpGE8wpIq
HAO9d2+Av4wcTS7OPCwPkJnOSchTStQ54GlTXyS5b1YTLQe9KK9RM/k+5JZh
Qe9fMxmDGzb15TBQnzCckeERU2/qY+GMVsdo6pTRKaPEootfFEt6xc+iUjBW
AwtGiks13vvi1AVMnAFKqhsl75RZxoANCR/S7iSFrvwzeaNjGtThvEbZtFQ/
g4669ioIeXGHijl82hAaS+xfnTw6o337/Uv1h+HerVCIPLe5OeUjwSBQj0xo
F34OVWSMW6X7JpbvWcgC2Elv4jbt2RkNnXnlWQQ+avmQIgMHGjI2Q6pQ9Qzj
rJs1pEc5cHsRHAgOmWklwVAHgEt3YjsjXFmzZoa6ugvxyxzCC6flbJy/c7ji
7iiogXtkZT8yVqStuihkr+s6xaj3wyLF5D6+fnjfZ54c5K7CFJquUlAhpRxh
LnXZj5+gtn3ucr0YOoOfTF3KYn1C2Q9lXqiaY+V3Cob1zaViw3h+QCJOUbfi
J3CVZ08XmMRn5DbliZ5/kJ9MfKnDXJWhoMoh4MQkP78CJiNL4W3AjcLb7VD1
rHDPgq4opqoGGGmdhQMZkjVAPkpiW/mGTXAn4y5MFfAVoEZ2xaSdaTV43PBF
lyGgw1T9GGetKWqkJ4JDX8HmtOgvyWwMMhuv3deikNBfRCEQVBHCnFmP05da
xuuSCV0MaLZTQJEi+nAO1bFrrsyy3yHx2osd8KIdlWQUwXQzYYgNB9mrvPjS
CWE4UO00jwO7vc9iBOSD0Amy2JRdOFRMOZyul6kHJ0wbOONuBt+Jk7AsJSpa
SrlaW1grN41ZxPCsmL9z3qRo3Gz39dL3Cvj/xHcQHAFOFdpmoowXl2IUjOzs
xu8csmj4csZrFpvgWTI3kUPOxGxQ6ABc6apYELe3R7MUsZ1h3JFWkMSJXkRm
/E0Lw7/eq/biAYRNtqyhizBRRD+h8qZDKUe7afoJQDOUXRq0rL0zDzLbilg4
y4GlnWJNFAM6KhYZ5BCAyTg5wIToYEFB4B/vmBx9IFByhvhYBbhRg6ayZcdb
y69mVn5VSaQJb9M598KQy7+SBd6XioJ5z0Ltj00diplrxBPLnZgJGptSQssC
IacJLSlUImz6yKkw08hav39dLyZUpCJZ8vnf5F1ObaP/5SGRNNnt7V7mZDr9
VO/0D9kn7qxmyG2W53fwtDsn+S3rAdzxk5Sv7vyTs7sz0jH0R4yZTyaTncXG
dx/kyg+4/L/3wOwD3yN7G20YN9EKyFlJNheas7KheQDyIqu5oIvFKqsMew98
xJTGGd/se/BFVMGZlWF81gS4UFIFOmDWFLdpHmInqBFdF2EY5SkflHiiwxeb
Za91FodTCsnYP0HDwzGAiEsiKFnwlcYu8qhtROREf6VOrhdxxdLEHx0izN5d
tuPLZW3vpOTO4aOWGU//Hz5qbgk+n8+adnDO8oPnLAvYpuSUGU7P+5tiOJ9p
ArLGLxzeJSlS5OF/CmqYIMtMI+w+zMjqCeOojrd6kDWxsgmcjGqASoNiTwgc
6pOzCvemjGV6y2ke0jKCW3RvKNRpzwwwDaAdH7JYfD42gFEa248nGeLz+yPl
WZyXVLkcW7WKZB9YgiUt+m1Lb353O2iu0PR/hxUeoB7HB/ET7v290UXY+z/c
+Sf436GnOOZHNSQURt1TfkZot9KSsYYU2U2134Px88EtJ1HSiNVQpOzzWGUu
rSWUkrAzGhOX5ute1k0bHD/09WirFmQHNZd15SBwP3h72vjYIKKpjGyALgv1
tVyqLx0FiUd6Ly/KDor9T+FFiar3q5zIv8hvEPtu4TQEJ+9GzM3UI9B4tizk
uT9RVJFDepoYsFzEgWgUYG7akVUGIB8Xu7tErtFOHM9y0fcdX6YtTG90TE5o
ECN0+3bkg4900BcL3K+UF4ADp2hUpbqbZdQk84NG69rXJHk6DEi7ZmI+Eocy
6f2VztAI443Qxb5ZpnQTU5SfvytUKcPyDcJLB4PnNORv7l6jKSI6HRfclJk0
Ltg6mFIifqMWTjHmB9WaCZexw+fZscGtB/J5EFM+jQOuACUNQ65Ly0JjINR3
puCW+Cg7y0DMe1RQ5pvp10KdXfp2VwAdLu0dEoKld97HRAM0CL02CO4RgySJ
4EboIeN/eKN0Czme2zu2QTBxkTQViOzHGJ+RUguIjFDhyiFdiHoxM1IRmtUF
mRSjN6zewPR+jVv5cJc3yD1NAVZea0i0z5k44pCXC95iWQHBeSrcUStrIcaU
FmyJKg+2Zagu7Exocx+Xi2eupvXQR5vFPtrCyh3JCPSneuwiBruo2g5wNtTc
ccWlSsPgrlsrcJD54tlaDYfAHN4SKhIrtMe56kN5YmtMoXfTF9lNdmIsriKE
f1UHqwwgV2aC9M3afPnTTbucelazm9gFw1lZEkN43jLQYE/upuaxot43D57l
3OoB6srTExahD2Hot6+f+4JSbDdRttdi5id3DpdlT4RnOH+L8EyiwmIkGkxP
9cfYkf6nn86jqquYDzhHyBoJ7nFXMiQQW1zrJy6bsptqF5JEVK/1w8Ob9A5C
TGuFMaNsBT9UlKQedYiAgy9kMfVazdpS6RGaVzqsHbiBEZbDBcIMX9Qusrin
Qah6XTccFFmMbTXb9JGXtVuZWyu/0IpFrn5YFhIY1MOmsbpIDFs2T+cILOQf
RaiO4XzrTJepGBQcdXhcpEkqXczt5EaUW9UIfikEHolT1SJsQO7xrrjxs86F
waw1XL1oWqvVgj49arL4pzOIl5mPjkX6fYU/39EomLmdQyH4FGNWF9IsFX/g
ThEmiG+qrSK58NiNztSl5uicc1fVumNkcFObh5kbGzxdLi0Er6G7YbNZGsbB
ZoNAhi/OxPGt5VJ9meHetFtKKL+0s8+s3dvUvkS779wEiYimPJp3P4dfssGv
zZyVvYrcEsxVX3fcRW5yfjIL6USFa5w5TRqJYck7aQU+w4wc9DEDx5Xl693e
HQSUyUKGea8RFgPs0FeIGnJmr6OD/5qpYHXzQlxfeYrlSFK5heHjLqEJY1pN
CCOzfo65qn3Vwqk8fvwXlwxnlQdz7WiB7gGmec0hFBEU6eK5TgbPlVmSv1if
uiK/lAnUDIrtezoRS5R7Z1ZQW8Wn6l+RqP6ABxmM1b+WO5cxcKAM5S6Gzngt
xc4jZ51yEsf4yCT0IbtC9dpVg1ISiBQFVJkJIqfpbVcrcLJ56ELAsJ/1XnPA
QJdHLEcvS/3PLmmOepW9XOfqEIDmXNKBKg3EdChMwrUOMfez7xMyKy83de5g
CH0MjUBPBZv4cPhQGi1L5sV1jGkA5acKXwZys75sCy0QN9cCcMDTjAx+mQYR
ApOhu3ltNRxzQ8iiroo9xxK/wEcs88GfH7jD9XAGJnqWuDzUKRCKqPrAeM/M
5CgO/fFerQ7WlQVZ5rACdpjoGDKGZgrIyPiY627qYTGW+0owkOocmzpNm4h7
bZhKFphxlMJnCEmClxiQYGcPeUwSt/ms8x11upE6RoUEN8EnMHJ15ZFBvAJk
2DLpEpyV2FL7enlHzUeEYV3q+lXdCY0LQxhGJTGi7mbVrziWfYWG4fo4X8Q4
9DVPdNe179RJ2JZLYgHWynVres2+oMRauU5K6hv25Ylemhr/GClR3U5FvZ3G
Y64CiTGn4Ik6UAxZ6Fiv3ec7HxEKnZbE382x9DXBMuZtdZESE1228ngWsisF
ZruKZMKTqN4Y4Maiavt6Acg8NIzoU4sJzj7f2+XKGPmnjfJF3GDSFwexyoCG
kU7iASOfq03+FGVYw+EYpQgOiwRbekbIewve6CTnwcGcMJxtVzxzn0aI3IWn
2swL+utm991dPS67WdsFwp0zQR7362E3Wr3V1X2Kb3Mo565EMZCvQ8mduGGV
3u5aIke/pGOxRAv5ieZ+vyTkmqY/Asxd9V4TAdksZ16y2NA2DQUDscUuC744
DLqxMnvwC8IYus6W2EBcaO0NN5Qr+JKW+9xGJrXrgICgj1ZFqR1VuCKiRR1n
WsAiCiRwquaiJ0u+SaY+majMkAGfqy4xjtLSBjwZDP5oGyHodVu6Yln00Fh/
pMBq0Zt9PuA0jcRsivC0LE4lYTmjJojtMmml6rpOkXJee8q5vWtUAxtqP+uw
0MNu3wzz5jLqoIoD8juqZtMtt5lK/xgnSFM8WnFmgg9yGlmPxd86PfJXj0Sv
Pp6yHYZmXcpyLIU4DPGhRa2c/93VtlI3OEGIOqbjGFEVV7LYUkvMaWUs9/jM
DcNk/rKOAFCKnK8akmhw1QWaAO0to8IxzAnQoglsKEaK/zLXrmuothgq4/SD
crgjwreEgV2Dy9F1QXrfz/+xMvU2i45FlLc+sra9Y4/ciHbMaKuxcIQulLl/
M3WL0wdk1dQt01jbmLOQWafNhuVga2+kuP0bWw83zTsKHWXC/nsqt7XlOWIM
62oI/Z/AfZmbcL9lU/UWcQL+2djY04iNiVjew8IOEzZsPxCc2g9RT8a5dggc
sRmoqkqO7WXrpGRZJDrdMfFcx45HYOgTXxzPNOjKkDzyEMPD4HGupOCu6RVp
ZkAluqpuKTTPJp8lLkRPhjKwKZtz1oZlv7c4acnV1vXHVm/NXJ2D2ukf4L5a
dStK+nBuSbP4d4+4i/wXvhijlmVzyzpIiST3NYdjlKevaEcyC2YRMv9CS1Fo
Ib8OOXQeExB3mLaugL7NbOadUP6QO1bpeOR3rhVhguQy6WsuDV1fV0zEFeXy
rdm0PtflRnRiAyNnZBQaEFJTT7sgJvii0F3L6om4ULlZbFWtHTRp8IOSoueU
oQ1rUBT40M6t2I2V6K5LEAMKYKu3JK0uFLgaTJfxZauF1cKgChlCOhTzWuKC
CELhqGRZxe0oU7IlRkJNkTlq/OGTM3l83c6d06cnBpvkegPnZ7KjtfGBqGXw
IL2Cbb8vXOzKTt3cdYmI3akknlB1GysfNSfOrRicOuujRtvZEM6vZSqvdzsk
Wxlm4WEbLLcs29uaLPH29vsnr15/+JCdYVGEWr46enh8NDsO/lKfu+W7nNMg
Fr1eRQyIKryJLVqXqSO1955UzwW04I5a81sfOFmd5skM5tEM8ExUe6pWxuFZ
uyy9vhzO2E30HXxadcOsLzvtmafByT6EWeyi2XmxyFPvxLRWuwFExPUwM5zS
4Q7Zv9YfOwsCYpQ2MO+sT3dlLcnbUuVRKN7t0gRRDYVpo9mhzsCDPrIHtHLt
uqgOgqgrp3caXXMyCGyGVMvSeW1qV20EW76s1DHqXU+7qXENMzrIN7NigTJH
FBqmi3jko1sv7+qgL8w1nlyKoUPMzbwPYK0hqBvaSTF3ybgr52Fj0AMFy1A6
x8u6MHuVaRlqKHAlsLvxBgkvATLeeWitapV5zdEhRha+tWON7ElrZksp8BPe
iyt4ngDhXxk6Lst+Uqf80NT0SRWW7EJ/XIRc8/I16ocm4s2LVnJhehYhz6J6
3u0NYxnI8psrHk/oo6cjWe6tyBz1DbI0jyuBR+32x8aOJN4krdzTl5durN7r
rzv1m31FdC3YGhqsJLwxAKRCxqvajxVdVihCx3UlfHejOxnbN1FRDp6iPaVo
DlfG5zoMWiU4cYpiiSw677rHmBUVzTM0UAgl9l1+ptWLJbHI0XiCo/Nj0zsq
CSV2QxNl70WNq5CwPIqd9D1I4yt2Ft3t4UyhFpXa95AUD1yy/P6o0zP2YdjL
XiPHVov4TXqYPRrUN6wG0lxU9c2CO02YkYzr21U4pmTqoR5l693IQErRsQmA
O+U0MVq6KlnFFNSmuhLhzSDFxnQLxgjV91srM/LMyioMKJ6QN06yuAmUEapW
wHStvOVXlUQRkw1uWMeB6T11649VFoJhMcTkXGtRPqqForF0rmM2q9amTaDP
2G7EyKCISj7xhSx2EgXyCu025XrKFLw9dLrOQqdrUw2C9I2bNe9pYB21r87S
wvtZ9jjwlaS4WyhcGCVsByZk4Qjo5GggNOhOQo+0xcIQjxeK2uFII6tRCdZt
Cuih8lKb2mfMrg44UULOuiz4u5L+Cdakvlxu4yQQGifMoXgPnkwiY9cRkdU4
ajfe4yiHq4cimfmjoc3TS53OPGQrxl3Ue8Q6TsjvwAs0HlEAf9mBSUMiqlpn
Ogj0aKeKzIXPa75jrQ3Qe4vGx8xfBiiIUDc/uk6tbqKG4N5fa7VU5PWL5bar
oj7Ywy7miwUKS+CwPQ0t4hz7Qas4d6823QS1owJCpGeFHt2KsYl8+XtjGR/1
1eui1qCC5mLsii9aOdjgVGGky0ccXMeDQVHIuPxhXMoQD8lY69FXmnUjBHDu
nix/8pc0UKJGnrUa8wBko0xtxaM3+Oalw5Jr6lZVhTCEHggxW5R6b6zxKHSv
zixiw24pZUsfaOS27xt/s+vTzck4s0t/ChGk0FyJ6TIK4PcxJTsgGklSBkmt
ZVPbI2lmCG/cU9JOjg0cnJ2aY6FnSa9fKybMVQqUh3s4nC+zRgynaNtgRdku
iJq/+41LKmN8YDD8qdb1eFfemEaCylFHbx4eT7I8P8lfWIzKGp3tVFV5pXUA
QjWeA1VHiGweVh7xeTxFXDDDVz2BAb2EMWaeQSstwmIvGO5g3RQDZqI7eP6q
FAujqs0FaeC8ozePdt7vE6Hqs23kAElQ6ZxTWnUuBqVHhe6cJNtBoKfV4Djg
TlU2jBl1Ej/15d4Ut2onBoRzUxagWcf0Cp2g55gs3SacqblIIqjAsnLlfiiW
F2MrYrFIa2zIAn6xj0B8mYqxFXpxNTAI0dpLhHwUTIy8AKTCp7UfvfnSnvAm
2X0qkl2EwtWJzZyrimJ1o8BDS3x1Lc1yltvaj2n7rOOZK62P6LJp1swbZIlt
zvGP1ubasTNP8dTPIHSO3nxlU35p19wXNWpZluuxcpQwyaQkhVOml9sUVDXT
KRNb1QbPZGSrWv888/F0nOdrEZaGB9jsqP1C2tt6rpOMu+i0vMl5K+L66BgA
pZ5kNdNiNCzgqB1UhU54ieemvi6VUu/xjhYY+h25jT3lWIv9FYiGfd721VoK
+qlRr8OWG8h2TGysR77yOizDnwiy7WKULTHVDjzrNewIZutgugkYWCm5L5Y+
ZUT9+XZOVCtxnnblIZ3nIJ412sB9YxX6CGI9jReGC+WBWvQFc9uSOmSxUNRi
+qo6O1pTfrxT8yeZuIg6eTl6DZ6d/Xi26zFgNvIgGboblrii35VnK05nHkUl
87V1SWkoYtcHhvayz/uuzcl/Tbygrnf+5lNSzDmBTO9TGmAa+ITdbVLPj6uR
aGWytQQnbIkS+bnWYSXJDQoS2+pUhBn3zAf2/oudCYROHQXwXtD51fuwrIrO
ehC9Ylk3+fIXq83FP51NvacLUZwiMgATMDcE/YA+LXkUVw6dkTuPSFKMDo+9
c9kwY3D/yGlay8eH3732YCHEX9S2W4qhne4psDxL2iWMnM6ic66l/n1hQM+1
0pjcXxgVem2deIYHwROSYSo8IWlmCo9YaDFbsyn0ItspQ5I+rbt3b2LVBRT0
LrrWiU3kSPsWHI+EjtBSeRT3sJIvLQ5lJWuO2CIb7cPkhtfuMI3A0XoRJEdT
2lQdcXloeAP1uKjloVMGX6cNekrJmk6PNV71WAumPjYILIHsr+PlJjdcwId2
AlAIepK+lmWVpQA7Tx7nEpTtCRleVezeU0zOjtvZ3DtIo6nldiW6g6F3wsNH
X7M92KswuL/EhR+5t/DzQE9qXJUu9/CFKxjw6EvhtHV/1SHwsURAnrIFtaRR
C1czSoTJRNsa7bhzPMURSHo+1y0fIjzhqDqOyrxpFUnKj5H8JL+5zN0CLIjJ
E0FEcspylVyWhKM1QALPnIWu4x5rmnQAsS0vBp/gasMabd4h+R6VRpxM4iPM
rQXPpiqGkf3mRE0ex73Nb4tavL5i3Glww1kmEIDLHlwwsRNVRg47X9Izakjs
4wmh6Vfm16Y7ZZE51IcgVMCa8filqwZGSNKhxakAmUbqtSnJQMqEV3DRuKOO
pec6dQOwQvawMXdacSY8fuweD1/YcdSpzPVKcQVuMPK9d2JO3ANZ7aRWnlvj
EvPoZdOCp+QEjrD2GlnIU6QKn3Dp1r1rWMXvaEjQ7TDVtsG+gNawlRKxtK6T
lZba1RQC5hAulbM50P+pYlN0+wZDjR1IVCsAr530M5Rtp14pFz8n+dDl416L
bV4vtlP1C1tIjK5ln+XnMzVsbm5a7BdVmZsw8AafqnDk0B2tFuHbgB6PKaSV
2f5iTHbQKfCo26xWRbs9xgUpw/3FsdaBHE/kub4YOiJDpulHdMDUQ20tqvAz
K4Hk8SwnUZveTd8oRJvXWtvA5NRNZNQDZbl0vveVw/6AZ/2SLFI8UzvryWRf
uVyIwAV8j6+1NsEMdQb1m/xCzPHuU+f02NCNH5mWDptM67E9SvlxgANxnRZc
qD0TcyaOFhHmyn/u4ZXK2D552jbk4WkjfFh0g2mnFWJ5gb6DzvjTnv3abvzY
s5UnxM8+16Cy/WS+Hr+Jn/pkvXn45OwsJHvHhol3f3nWH9uhDrucv30Gk3dm
JQdM3werdxeseTzLTo3RA4xnYH87dw7ghpGVAk0gOOeVoXn26IpjKqgj8HS1
o1KhYQxALKm9Tbh2IRyuDRFLRrtTtA59hawguqg6o1AZ4nfffvnIIefF9vb9
tQYSzMoQBT/Y2Rr2X/68mgu9lfmjyYO86DNfvO9STsJmNhEl+/6/Y6vvQ8SZ
CGEKixksqjuvgJS1XGPLgIh9yFHYNYbgjBFJ4psqoAddPWJQkwNydGw5mUGF
pVdzB0YRRcJGh/pSjpLwLuEOUGTzBKk9iiqboA6flYzW4GHABk2iHpoEltOr
nh/sC5cnfeGOpirrVH6rSEMuzvTfeKjuu5SJ6bEpbWVpdsVO8zgNC4d+WL4C
cb7TTy63fnIsveY11f1N5KLWhcjwn237cuzrf/FXwtvQhA0vZjZ/WDr2gOuO
vQfYtStH+lJI8/QN4R0inSC9wvvYwYhdOg1SNpbm17mn7hY0OWLdnrgybWfJ
KXFbetenPL+GfwIJT303FrMS+Hh7SyNjTfzFKRrvP0VHv3I+jlG9I6xDFIJJ
jnEd9ZsaHbRlSVChDL7miyOAmJR4d40q9hTKj1L1UW8AJjn2DTEAPEu9eKO9
xUGijBZt1uQ+jpL+KOOoucPC2TJCWCxR47xfWHb4E5OCLpcUcTIYWJ+GW9IX
E0lwqIOKc944cISRGRqrmOtMrFSD1CP7Xjjudul8yV1drLurpvfea+qfrsKA
jJF6FIU45wUqXER+b1edmd5sVn32o1rAsGBq3R6Ps5Uc174sk6G4t9CISl4r
whyKDvjKPuxUjAX9defsyJlS8RF8YznzH20qp3nBaU79w8mD6JjLzGLzxpeb
dZklUe447UKmKJC8RuQd6jbEa2IkKzvTucIlPmHRJx9iXIbfWSOTh33NJM1D
uYp4V5epOk8yVbnnO+WWKVJ3ayLbY0H4BG7jyaPcZJcPOl+lLTyjCgOD8gBa
pS43lJ0L30T9sk6ibE4kJlq0yXgBRVOTJnyCas0+dgnF8Qx+ZQA8w93OBNOw
byYqOeaejKY4NdVV5GUKcSh/hUNp0Ioowd+QjWnyvdF/MOSStH1H4TJgEAq+
198bheNtQ9sul9W90PRKReADOOLiwPZuce8omTJTmUK6dZT57JMvLdNaXe5p
rrV7W+J/O+fvx6LuS1Cabfe5NYLfYrRf+UDjpv1t6DgLP1+fMG40wehHExA5
MtmQu3UvShsdVspKih/vgy5ASdjhIMcnESV1vrKFLC0Uufw7UahdSW3WEZrC
rhDZoD+YozGfsm403L7tej6NsD+1Ol2AFrKh2BqaIyUG9In7nXbL783B8IfJ
74UA/iA6lmFpLRkBYDVg/aGPOXo10i6E6zEEodLKECCWuW2yC+V3UJgDXp1g
dDrmazUfbgJPCLVVQoRDdZIqymffAwiEcsncPuy0a1R3ACPINRkql2LYuu/g
Yjf9aRrrLIPi417CH2sztEG23lFI1TumzJ/qJd9vZP9Z+nhnDiMqJQsVligC
n4fyDBCXZb3wRYkQue7wYJdXtwMb8YmQWJ+40WzMo8EL8bvqRD5l7nlZXPyI
0Fq01EdTU3umlqaQtI5DSHOqDOxJ0Rdqihzd+pLFL5bdubs4/3A85aL9JcBU
IowLlDIPquFXisvfgdboOfNQXhyxqQ1yxlC0K7049QlgA2TNjTUv84zqBpDr
0wgY43R2gHbGDgbDvnMKulEwi2lgiuazbB9NBlD3ICBbfbnq8hvWZ0hKIONZ
5fuyBQoO7nVUsVWmPERojdAfDD8pMBUVv9aiL2De3tcHSQA2Piw9TeMaab7A
eavP3WNufX9DErjzRSoIm30hBjgxcNkBjN48ojKyrBD8xnCjXGsBe4AgXTKC
K9IhdxiYft3Cde5f2EWQnAzbXxnccqPcxVapx4u4wrU2851R2HBgzIYDucPz
aZEX2QFo13F7AZRwi2PKGIGWnbzUhi7WKP1SMcrQgfEi9VwbpUIKRcg4iO7k
BRweVhU4NxdY4JakvwjZlPQTwFOU9khQgaAYV3YTI0VgIqY2ACKTaUlxouqH
m0Y8u6Ziuf4MLsnflKKklwZILDPIkHP5ul3yeYwKftlpUvLBme5qiM2sYUU2
aFjRhLYUoTJT2p5NrXcz9e0DO4TD2MvYg0uxwcz+ZNh9rmF9jdGZO3iB+vHj
+VWxXokZITIVFvD4waMsGyM+V/CY70GYmXf+o6gp9aME0M5uzbigeaXGq7dv
m7SoHCqvqKV631mpViLOEbjHyrF11ZgQtxgjMZH3el2at5chvQMQpZxIcr5m
cOfdf3kulEF8FArIWShrFEOz9hiYzoZJapR7s5FKOk1OzO2xKEPKEXeb74V6
d76Y3v20Jl7hKpxGpr0zm83gO9yvzFElpvFDU5cscbDfR6kOJTWco1Wz53v7
Fu4mGLTdaVB1zHz1/olg3X7EetXNHq5P5OA6cdiYgbvqNC1BTweczApakpal
uQ+wsLCgXnsEyGeWJLdQYVR/VJ2vfzr3rmnUY4UUpA/5DuQN9vj0gLdXJWJQ
5nZ8fTKcBsBi51vkcANrWnSffIAfZimhlwfwCnBro9b1mGDViOiZqYzwbslQ
HqnUbjFMA2ng15EKo0Gc/74MtRPBD7AAPSQX1XWZhAosxjVmJM6n+NE8iKJl
o52Q1GgnGjTaCbTAdzUMgBy7ALTzXRgcLI6rn1poOcSbXYQzT+LKPrA7v2qQ
TyY7IxzM+1YJT9CK9YFXBkq5IBxpL4Tik6nhQTY4OkOvzt7+QCdB+4ya5WjT
Gsdd0K38t7WtSbrMQGv+/uXYP8Y/OG674zIOIkdE7F7y3VpeymDo5EEQ2jS0
ArIeQGMkKzm9IqAwg5dGJsLXTAP1bhM31ln6n+/qslsR0nd1kfGGuKHdji7f
v/zcpTloYxfdbqGCMYvOzt+BHt7gaP7FtAOUXlPVIMteFPMrpDQDc6g5objS
6RG+Lm2qfo4UO1xBgzwxmzjbSacjx3hXQxV13nt4brR+hekvVRtCMFkSghH+
2sQDKQJlEcrdq0jz3fBij9NpZqVi3BDRWKxIsJP1VbGNpTUV7exJPuW6K/tT
qkwwUf2ofJNTc6FFlrAVJg+2YYhZOPSIOo4ggEPVFObeqd4b8EcGVrfiunvM
ddoPpsGq6BXdz20fhWi3R0/c78RNqslDpR/t5i6CFvaE1Ay/qICoEz3vWVwz
7EBHGt+DJu27EnemMY/qaVbEBbQR/ouGdLpzaL9yeCUPlsF2e8nHuII5dTOY
uoFSnQ04gYnblX7NNR8+LoyTLr1Vr7Wks94VqLhpdsA0cMRXNEgRFDAbpLNS
uKT5gRFi6+VqtGf6DC0Rc1Mul1r0daGuRK07ay+zYz9qREuIy/GMoo1d1igd
9fHgVtLlytbm/nSyp8YjA+tWcoRVCdgTuhkAcl3jUDUGFRLsYfNydBkUo+JK
vVGfKPMf0moXFd1yG6beBUv4iIOyITpsfD4LVrSWmt2vCFuttnwOl6oJV6+B
7nE+hMnQAxIafQwqkaR4f5Y4iS3xPY0JD4mZKMv3Sg+TbHAWlRN0BwlVq/OX
tSvA/F6sRvN8sFjt4iR9zDCdvbcy8HEJGOXN3Vk/3YXvw+WEHXQZmlqvodSa
Gau11pf23TJI/NfgsCsF5wplT/t+eU5+2E35loWrfjinM4CymZWb5bH9eMn1
VYaOJryubFKlSnxFLUCGJf53q+GNLGpGgGoj9OjMGHMufe7wdxEHiLrFzJbN
/J1mwqsfYrbNXICBdOkaR3Vo1QHdyirpFK6olh4sJXP1T9Cj651YHM7qyxr8
bscFEVdYC2QgHG9ZeTdUn+lVMVeJ/GORKeDdViy/tQ3EbB2n6BtJvWSakd3S
I2ew+PLiolHEoB5yrZd+V4wB6BDLcnFZatLD7Um9AbcvF/9yh9rbHQePYaBn
tqmAa/N1kyJvgY9RRnUAtLCsBSHjNp6uzGQeuTBxzN51UU6AKjK0+ZGQbb4X
yKtJ9v8AIGg6Gu/OAAA=

-->

</rfc>
