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


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

]>


<rfc ipr="trust200902" docName="draft-oga-musubi-settlement-02" category="info" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="MUSUBI Settlement">MUSUBI Settlement: Recomputing Whether an Agent Acted Within a Signed Grant</title>

    <author fullname="Toshikatsu Oga">
      <organization>The HORIZONs Co., Ltd.</organization>
      <address>
        <postal>
          <country>Japan</country>
        </postal>
        <email>thehorizon.nnovation@icloud.com</email>
      </address>
    </author>

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

    
    
    <keyword>settlement</keyword> <keyword>agents</keyword> <keyword>Ed25519</keyword> <keyword>Bitcoin anchoring</keyword> <keyword>canonical JSON</keyword>

    <abstract>


<?line 202?>

<t>MUSUBI settlement is a deterministic function that takes a contract
signed by two parties, a set of signed records of what an agent did
under that contract, and a view of Bitcoin block headers, and
computes whether the recorded acts stayed within the grant the
contract gives. Anyone holding the same bytes can recompute the
result without trusting the party that produced it. This document
specifies one well defined part of that function, settle core v0,
precisely enough that a second implementation can be written from
the text and the published test vectors alone. Settlement is not
runtime enforcement and is not a judgement of liability.</t>



    </abstract>



  </front>

  <middle>


<?line 215?>

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

<section anchor="what"><name>What Settlement Is</name>

<t>A principal and a contractor sign a contract. The contract carries a
grant: the actions the contractor is authorized to take, the actions
it is prohibited from taking, the actions that need a separate
approval from the principal, the parties to whom work may be
delegated, an expiry height and a revocation policy. While the
contractor (or a witness named in the grant) works, it signs records
of what it did, and each record is committed to the Bitcoin block
chain <xref target="BITCOIN"/> through an anchor. Later, anyone who holds the
contract, the records and a view of the relevant block headers can
settle: walk the records in the order the block chain gives them,
compare each act with the grant, and produce a verdict, a status and
a bond outcome.</t>

<t>In the terms of the agent auditing architecture
<xref target="I-D.kuehlewind-audit-architecture"/>, settlement is an Auditor's
evaluation of whether recorded actions stayed within the authorization
in force at the time; <xref target="related-audit"/> maps the two.</t>

<t>The record schema names carry the prefix "a2a" because the format was
designed for agents that interact over the Agent2Agent (A2A) protocol
<xref target="A2A"/>. Settlement reads no A2A message and does not depend on A2A.</t>

</section>
<section anchor="why"><name>Why a Second Implementation Needs a Text</name>

<t>Until this document, the MUSUBI settle function was defined only by
Python code (settle_v1.py to settle_v1_16.py, each layer importing the
ones below it) <xref target="MUSUBI-REF"/>. A function that only one program can
compute is a tool, not a protocol. This document states one well
defined part of it, settle core v0, in plain language. A stranger
should be able to write a second implementation from this text and
the vectors alone, without reading the reference.</t>

<t>The text was written from the reference code, not from intent.
Writing it against settle_v1_10.py found places where the code
accepted input a careful second implementation would read
differently, and one place where a record nobody signed could change
the verdict (items N1 to N11 of <xref target="MUSUBI-NOTES"/>). settle_v1_16.py was
written to close them, and this document describes it.
<xref target="written-behaviour"/> lists what changed. Where the reference still
does something surprising, this document says so and marks it
WRITTEN BEHAVIOUR. Written behaviour is still normative for core v0:
a second implementation that differs on it will disagree with the
vectors.</t>

<t>This document is an adaptation of <xref target="MUSUBI-SETTLE-CORE"/> into the
Internet-Draft format. Where the two differ in meaning, that is an
error in this document. This version follows revision 0.8 of that
text. Revisions 0.1 to 0.3 answered questions and implementation notes
from the first separately written implementation
(<xref target="impl-independent"/>); revision 0.4 checked which underspecified
reasons the vectors actually produce (<xref target="exercise"/>); revisions 0.5 to
0.8 corrected statements about the reference, stated two sentences a
third implementation asked for, stated a consequence of the unsigned
anchor, and named the commit of the reference's file list. No rule of
the reference and no vector changed in any of them. <xref target="clarifications"/>
lists each place.</t>

</section>
<section anchor="not"><name>What Settlement Is Not</name>

<t>Settlement is not runtime enforcement. It never stops an agent from
acting; it reads records after the fact and says whether the recorded
acts were within the grant.</t>

<t>Settlement is not a judgement of liability or fault, and it does not
make the contract a legal contract. The verdict is a function anyone
can recompute from the same bytes. <xref target="not-established"/> lists what the
verdict does not establish.</t>

</section>
<section anchor="scope"><name>Scope of Core v0</name>

<t>Settle core v0 is exactly what the reference computes when the
contract carries none of the following:</t>

<t><list style="symbols">
  <t><spanx style="verb">requirements.spine</spanx> (the spine gate, settle v1.8),</t>
  <t><spanx style="verb">requirements.convergence</spanx> (drawn measurers, settle v1.9),</t>
  <t><spanx style="verb">grant.approval_policy.approvers</spanx> (pinned approvers, settle v1.10),</t>
  <t><spanx style="verb">grant.limits</spanx> (which forces <spanx style="verb">requirements.admission</spanx>),</t>
  <t><spanx style="verb">requirements.admission</spanx> (settle v1.11 to v1.14 read it; the
admissions input is passed through unchanged).</t>
</list></t>

<t>It is computed in binding mode "strict" over exactly one header view.</t>

<t>Out of scope, and not defined here:</t>

<t><list style="symbols">
  <t>choosing between several header views (fork choice by work above
the checkpoint),</t>
  <t>binding mode "legacy" (records bound by contract_id only),</t>
  <t>fetching anything. Settle core v0 never touches the network. Every
key it uses is inside the contract.</t>
</list></t>

<t>A key is carried when it is present with a value other than null,
with two exceptions. <spanx style="verb">requirements.spine</spanx> and
<spanx style="verb">requirements.convergence</spanx> are carried whenever the key is present,
null included: their gates then answer <spanx style="verb">spine_requirement_incomplete</spanx>
and <spanx style="verb">convergence_requirement_incomplete</spanx>. And
<spanx style="verb">grant.approval_policy.approvers</spanx> is carried only when it is a well
formed approver list (rule 10 of <xref target="contract-door"/>); any other value
that is present, null and <spanx style="verb">[]</spanx> included, refuses the contract in
<xref target="contract-door"/> (WRITTEN BEHAVIOUR). Vectors <spanx style="verb">synth_limits_null</spanx>,
<spanx style="verb">synth_admission_null</spanx>, <spanx style="verb">synth_approvers_object</spanx>,
<spanx style="verb">synth_approvers_string</spanx>, <spanx style="verb">synth_approvers_zero</spanx>.</t>

<t>If a contract carries any of the keys above, this document does not
define the result. An implementation MUST NOT claim core v0
conformance for such an input.</t>

</section>
</section>
<section anchor="conventions"><name>Conventions and Terminology</name>

<section anchor="bcp14"><name>Requirements Language</name>

<t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
"OPTIONAL" in this document are to be interpreted as described in
BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they appear in all
capitals, as shown here.</t>

<t>Most rules in this document are stated in the indicative ("is",
"gives", "adds"). They are normative all the same: they determine the
core fields (<xref target="core-fields"/>) that a second implementation MUST
reproduce exactly.</t>

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

<dl>
  <dt>contract:</dt>
  <dd>
    <t>A JSON object with schema <spanx style="verb">a2a-contract-v0</spanx>, signed by a principal
and a contractor, that carries the grant.</t>
  </dd>
  <dt>principal, contractor:</dt>
  <dd>
    <t>The two parties to a contract, identified by their <spanx style="verb">role</spanx> and holding
the Ed25519 <xref target="RFC8032"/> keys pinned in the contract.</t>
  </dd>
  <dt>witness:</dt>
  <dd>
    <t>A key named in <spanx style="verb">grant.witnesses</spanx> that may sign execution records.</t>
  </dd>
  <dt>record:</dt>
  <dd>
    <t>An execution (<spanx style="verb">a2a-execution-v0</spanx>), a revocation
(<spanx style="verb">a2a-revocation-v0</spanx>) or a revocation acknowledgement
(<spanx style="verb">a2a-revocation-ack-v0</spanx>).</t>
  </dd>
  <dt>header view:</dt>
  <dd>
    <t>A list of raw 80 byte Bitcoin block headers <xref target="BITCOIN-HEADERS"/> with
their heights.</t>
  </dd>
  <dt>walk:</dt>
  <dd>
    <t>A NENRIN walk record <xref target="NENRIN-VERIFIER"/> cited by an execution
through <spanx style="verb">nenrin_ref</spanx>.</t>
  </dd>
  <dt>the reference:</dt>
  <dd>
    <t>settle_v1_16.py and the files it imports, at the versions listed in
<xref target="impl-status"/> <xref target="MUSUBI-REF"/>.</t>
  </dd>
  <dt>WRITTEN BEHAVIOUR:</dt>
  <dd>
    <t>A behaviour of the reference that may surprise a reader, kept
because the vectors pin it, or would.</t>
  </dd>
  <dt>integer:</dt>
  <dd>
    <t>A JSON value written as an integer token: no fraction, no exponent.
<spanx style="verb">true</spanx> and <spanx style="verb">false</spanx> are never integers.</t>
  </dd>
</dl>

<t>The following notation is used for byte strings. A string in double
quotes, such as <spanx style="verb">"a2a-contract-v0\n"</spanx>, denotes the ASCII bytes between
the quotes, where <spanx style="verb">\n</spanx> stands for one line feed (0x0A). When A and B
are byte strings, <spanx style="verb">A + B</spanx> is their concatenation. <spanx style="verb">sha256(x)</spanx> is SHA-256
<xref target="FIPS180-4"/> of the bytes x. Byte ranges such as "bytes 4 to 36" are
zero-based and exclude the upper bound, so they name the 32 bytes at
offsets 4 through 35. "Lowercase hex" means the characters <spanx style="verb">0</spanx> to <spanx style="verb">9</spanx>
and <spanx style="verb">a</spanx> to <spanx style="verb">f</spanx>, two per byte.</t>

</section>
</section>
<section anchor="shape"><name>Inputs, Outputs and the Shape of the Computation</name>

<section anchor="inputs"><name>Inputs</name>

<t><list style="numbers" type="1">
  <t><spanx style="verb">contract</spanx>: one JSON object (schema <spanx style="verb">a2a-contract-v0</spanx>).</t>
  <t><spanx style="verb">events</spanx>: a list of JSON values. Each is meant to be a record: an
execution (<spanx style="verb">a2a-execution-v0</spanx>), a revocation (<spanx style="verb">a2a-revocation-v0</spanx>)
or a revocation acknowledgement (<spanx style="verb">a2a-revocation-ack-v0</spanx>). Anything
else is ignored. Order carries no meaning.</t>
  <t><spanx style="verb">view</spanx>: one JSON object
<spanx style="verb">{"headers": [{"height": H, "hex": "&lt;160 lowercase hex&gt;"}, ...]}</spanx>,
raw 80 byte Bitcoin block headers. Other keys are ignored.</t>
  <t><spanx style="verb">nenrin_records</spanx>: optional list of JSON values (walk records cited
by executions). Absent and empty mean the same thing. A value that
is not a list is treated as absent.</t>
  <t><spanx style="verb">parent</spanx>: optional, the parent contract, needed only when
<spanx style="verb">contract.parent_contract</spanx> is present (<xref target="strict-terms"/>).</t>
</list></t>

<t>If <spanx style="verb">contract</spanx> is not an object, the settlement is underspecified with
the single reason <spanx style="verb">contract_not_verified</spanx>. If <spanx style="verb">events</spanx> is not a list,
it is underspecified with <spanx style="verb">input_not_settleable</spanx>. Nothing else is
computed in either case.</t>

<t>Keys are not a separate input. The principal's and contractor's
Ed25519 public keys are <spanx style="verb">parties[i].public_key_ed25519_b64</spanx> inside the
contract, and witness keys are <spanx style="verb">grant.witnesses[i].public_key_ed25519_b64</spanx>.
<spanx style="verb">key_url</spanx> is never fetched. Checking that the key served at <spanx style="verb">key_url</spanx>
equals the pinned key is outside settle core.</t>

</section>
<section anchor="reading-json"><name>Reading JSON</name>

<t>Inputs are parsed as JSON <xref target="RFC8259"/> with one extra rule: an object
with a duplicate key is an error and no settlement is produced. Text
nested deeper than 512 levels of <spanx style="verb">[</spanx> or <spanx style="verb">{</spanx> (counted outside strings)
is also an error.</t>

<t>Numbers MUST be integers within plus or minus (2^53 - 1). The contract
is checked for this in <xref target="contract-door"/>, records in <xref target="triage"/>, the
view in <xref target="view-verify"/> and walks in <xref target="nenrin"/>. A JSON value with a
non-integer number is not "strict" in the sense of <xref target="triage"/>.</t>

<t>The tokens <spanx style="verb">NaN</spanx>, <spanx style="verb">Infinity</spanx> and <spanx style="verb">-Infinity</spanx> are read as numbers that
are not integers (WRITTEN BEHAVIOUR of the reference's reader,
Python's json module). A value holding one is therefore not strict. It
is not a parse error. Vectors <spanx style="verb">synth_nan_in_signed_body</spanx>,
<spanx style="verb">synth_infinity_in_signed_body</spanx>,
<spanx style="verb">synth_negative_infinity_in_signed_body</spanx>. Exactly these three
spellings are read, case sensitive. <spanx style="verb">nan</spanx>, <spanx style="verb">+Infinity</spanx> or <spanx style="verb">infinity</spanx>
is a parse error, and no settlement is produced. A number token whose
value is too large for a double (for example <spanx style="verb">1e400</spanx>) is read as an
infinity, so it too is a non-integer number.</t>

<t>An integer token longer than 4300 digits is an error, and no
settlement is produced: the reader raises (WRITTEN BEHAVIOUR). There
is no vector, because there is no settlement to compare.</t>

<t>A JSON value is an "integer" in this document only if it is written
as an integer token: no fraction, no exponent. <spanx style="verb">true</spanx> and <spanx style="verb">false</spanx> are
never integers.</t>

<t>These rules are close to, but not the same as, I-JSON <xref target="RFC7493"/>.</t>

</section>
<section anchor="computation"><name>The Computation in One Paragraph</name>

<t>Compute contract_sha256 (<xref target="digests"/>) and bind records by it
(<xref target="binding"/>). Triage every bound record (<xref target="triage"/>): records not
strictly signed by a party are rejected or set aside here, and no
later step sees them. Check the contract's terms (<xref target="contract"/>) and
verify the header view (<xref target="view"/>). Every problem found so far is
collected; none of them stops the other checks in this paragraph. If
a problem was found in <xref target="contract-door"/>, <xref target="settleable-terms"/> or rules
1 to 8 of <xref target="view-verify"/>, no record is examined further. Otherwise:
collapse copies of one signed body (<xref target="collapse"/>), check conformance
(<xref target="conformance"/>), check anchors (<xref target="anchors"/>). Records that pass are
the event set, ordered by anchor height then record sha256
(<xref target="event-set"/>). Walk the event set against the grant (<xref target="grant"/>), add
the NENRIN checks (<xref target="nenrin"/>), and decide the verdict (<xref target="verdict"/>),
status (<xref target="status"/>) and bond outcome (<xref target="bond-outcome"/>). The checks of
<xref target="strict-terms"/>, rule 9 of <xref target="view-verify"/>, <xref target="triage"/> (a record that
fails closed), <xref target="anchor-block"/> (below the lower bound) and <xref target="nenrin"/>
(a cited walk) are collected in the same way and make the settlement
underspecified; they never stop the computation of the event set.</t>

</section>
<section anchor="output-overview"><name>Output</name>

<t>The output is one JSON object. <xref target="output"/> lists the core fields a
second implementation MUST reproduce exactly. Everything else the
reference writes is informative.</t>

</section>
</section>
<section anchor="crypto"><name>Canonical Form, Digests and Signatures</name>

<section anchor="canonical"><name>Canonical JSON (musubi-canonical-v0)</name>

<t><spanx style="verb">canonical(v)</spanx> is the UTF-8 <xref target="RFC3629"/> encoding of this text:</t>

<t><list style="numbers" type="1">
  <t>Objects: keys sorted by Unicode code point, at every level.
Written <spanx style="verb">{"k":v,...}</spanx> with no whitespace.</t>
  <t>Arrays: <spanx style="verb">[a,b,...]</spanx> with no whitespace.</t>
  <t>Strings: written between <spanx style="verb">"</spanx>. Escape only <spanx style="verb">"</spanx> as <spanx style="verb">\"</spanx>, <spanx style="verb">\</spanx> as <spanx style="verb">\\</spanx>,
and U+0000 to U+001F. Of those, U+0008 is <spanx style="verb">\b</spanx>, U+000C is <spanx style="verb">\f</spanx>,
U+000A is <spanx style="verb">\n</spanx>, U+000D is <spanx style="verb">\r</spanx>, U+0009 is <spanx style="verb">\t</spanx>, and the rest are
<spanx style="verb">\u00xx</spanx> with lowercase hex. Every other character is written as
itself, including U+007F, U+2028, U+2029 and all non-ASCII. A lone
surrogate code unit (U+D800 to U+DFFF not part of a valid pair) is
written <spanx style="verb">\udxxx</spanx> with lowercase hex.</t>
  <t>Integers: decimal, <spanx style="verb">-</spanx> only for negatives, no leading zeros, no
fraction, no exponent.</t>
  <t><spanx style="verb">true</spanx>, <spanx style="verb">false</spanx>, <spanx style="verb">null</spanx> as literals.</t>
  <t>A number that is not an integer can only occur in a value that is
not strict, but such a value can still be signed (<xref target="triage"/> needs
its signing bytes). It is written as Python's json module writes
it: <spanx style="verb">NaN</spanx>, <spanx style="verb">Infinity</spanx>, <spanx style="verb">-Infinity</spanx>, and a finite float as Python's
<spanx style="verb">repr</spanx> (<spanx style="verb">1.5</spanx>, <spanx style="verb">1e+16</spanx>, <spanx style="verb">1.0</spanx>). Not <spanx style="verb">nan</spanx>, not <spanx style="verb">null</spanx>. A signature
over a body holding one verifies only over these spellings (vectors
<spanx style="verb">synth_nan_in_signed_body</spanx>, <spanx style="verb">synth_infinity_in_signed_body</spanx>,
<spanx style="verb">synth_negative_infinity_in_signed_body</spanx>).</t>
</list></t>

<t>The reference ships fixed inputs for this rule
(musubi-v0/canonical_vectors.json) and a Node twin (canonical_v0.mjs)
<xref target="MUSUBI-REF"/>.</t>

<t>This form is not the JSON Canonicalization Scheme <xref target="RFC8785"/>. Among
other differences, RFC 8785 sorts keys by UTF-16 code units, which
gives a different order for keys with characters above U+FFFF, and
serializes non-integer numbers by the rules of ECMAScript, while this
form writes a non-integer number only inside a value that is not
strict, in the spellings of item 6, and does so only so that a
signature over such a value can be checked.</t>

</section>
<section anchor="base64-keys"><name>Base64 and Keys</name>

<t>Base64 is standard base64 (<xref section="4" sectionFormat="of" target="RFC4648"/>) with padding, and
MUST be canonical: decoding then re-encoding gives the same text. A
public key is 32 bytes after decoding, a signature 64 bytes. Any other
length, any non-canonical text, or any non-string is "unusable".</t>

<t>A public key is also unusable if it is not the canonical encoding of a
point on edwards25519, if it is the identity point, or if the point is
not in the prime order subgroup (small order or mixed order points).</t>

</section>
<section anchor="digests"><name>The Digests</name>

<texttable title="Digests">
      <ttcol align='left'>name</ttcol>
      <ttcol align='left'>definition</ttcol>
      <c>contract signing bytes</c>
      <c><spanx style="verb">"a2a-contract-v0\n" + canonical(contract without its "signatures" key)</spanx></c>
      <c>contract_sha256</c>
      <c>lowercase hex sha256 of the contract signing bytes</c>
      <c>record_sha256</c>
      <c>lowercase hex sha256 of <spanx style="verb">canonical(record)</spanx>, the whole record including <spanx style="verb">anchor</spanx> and <spanx style="verb">signatures</spanx></c>
      <c>body digest</c>
      <c>sha256 of <spanx style="verb">canonical(record without its "anchor" key)</spanx>. It includes <spanx style="verb">signatures</spanx>. Anchor proofs start from these 32 bytes</c>
      <c>record signing bytes</c>
      <c>context + <spanx style="verb">canonical(record without "signatures" and without "anchor")</spanx>. Context is <spanx style="verb">"a2a-execution-v0\n"</spanx>, <spanx style="verb">"a2a-revocation-v0\n"</spanx> or <spanx style="verb">"a2a-revocation-ack-v0\n"</spanx> by the record's schema</c>
</texttable>

<t>contract_sha256 is the identity of the terms. It does not change when
a signature is added. A record is bound to a contract only by it
(<xref target="binding"/>).</t>

</section>
<section anchor="ed25519"><name>Ed25519 Verification</name>

<t><spanx style="verb">verify(pub_b64, sig_b64, message)</spanx> returns one of: true, false,
unusable. It returns unusable when the key or signature fails
<xref target="base64-keys"/>. Otherwise it is Ed25519 verification (<xref target="RFC8032"/>) of
the 64 byte signature over the message bytes. The reference uses the
Python <spanx style="verb">cryptography</spanx> package (OpenSSL). See item N9 of
<xref target="MUSUBI-NOTES"/> on libraries that differ for adversarial signatures.</t>

<t>A 64 byte signature is "strict" when its last 32 bytes, read as a
little-endian integer S, are below the group order
L = 2^252 + 27742317777372353535851937790883648493, and its first 32
bytes R pass the public key test of <xref target="base64-keys"/> (a canonical
encoding of a point of prime order, not the identity). "Strictly
verifies" means the signature is strict and verify returned true.
Libraries that disagree on lax signatures all agree on strict ones.</t>

<t>Everywhere below, "verifies" means verify returned true. False and
unusable are both "does not verify", except in the contract door
(<xref target="contract-door"/>), which names them differently.</t>

</section>
</section>
<section anchor="contract"><name>The Contract</name>

<section anchor="contract-door"><name>The Contract Door (Contract Verification)</name>

<t>The contract is accepted only if every check below passes. Any failure
gives the single underspecified reason <spanx style="verb">contract_not_verified</spanx>
(<xref target="settleable-terms"/> is then skipped). The reference reports a list
of refusal codes alongside; those codes are informative. Only
<spanx style="verb">contract_not_verified</spanx> is core.</t>

<t><list style="numbers" type="1">
  <t><spanx style="verb">schema</spanx> is <spanx style="verb">"a2a-contract-v0"</spanx>.</t>
  <t><spanx style="verb">contract_id</spanx> and <spanx style="verb">nonce</spanx> are each 32 lowercase hex characters.</t>
  <t><spanx style="verb">parties</spanx> is a list of exactly two objects whose <spanx style="verb">role</spanx> values are
exactly one <spanx style="verb">"principal"</spanx> and one <spanx style="verb">"contractor"</spanx>.</t>
  <t>Each party's <spanx style="verb">domain</spanx> normalizes to a bare hostname: leading and
trailing whitespace removed (every character Python's <spanx style="verb">str.strip()</spanx>
removes, not only U+0020), then lowercased, then one or more
trailing dots removed. The result has no <spanx style="verb">/</spanx>, <spanx style="verb">@</spanx>, <spanx style="verb">:</spanx> or space, at
least two labels, each label matching
<spanx style="verb">^[a-z0-9]([a-z0-9-]*[a-z0-9])?$</spanx>. The two normalized domains
differ.</t>
  <t>Each party's <spanx style="verb">key_url</spanx> is an <spanx style="verb">https://</spanx> URL. (Whether its host is
under the domain is a finding, not a refusal.)</t>
  <t>Each party's <spanx style="verb">public_key_ed25519_b64</spanx> decodes as canonical base64
to 32 bytes. (The point check of <xref target="base64-keys"/> is applied later,
when signatures are verified.)</t>
  <t><spanx style="verb">task</spanx> is an object with a non-empty string <spanx style="verb">purpose</spanx>.
<spanx style="verb">task.payload_digest</spanx>, when present and not null, is 64 lowercase
hex.</t>
  <t><spanx style="verb">grant</spanx> is an object. Its keys are only: <spanx style="verb">authorized_actions</spanx>,
<spanx style="verb">prohibited_actions</spanx>, <spanx style="verb">conditional</spanx>, <spanx style="verb">delegation</spanx>, <spanx style="verb">data_access</spanx>,
<spanx style="verb">max_hops</spanx>, <spanx style="verb">privacy</spanx>, <spanx style="verb">revocation</spanx>, <spanx style="verb">finality</spanx>, <spanx style="verb">witnesses</spanx>,
<spanx style="verb">expiry_height</spanx>, <spanx style="verb">ordering</spanx>, <spanx style="verb">approval_policy</spanx>, <spanx style="verb">limits</spanx>. Any other
key refuses the contract.</t>
  <t><spanx style="verb">grant.authorized_actions</spanx> and <spanx style="verb">grant.prohibited_actions</spanx> are both
lists of non-empty strings, and no action is in both.</t>
  <t>Typed grant keys, each checked only when present and not null:
  <list style="symbols">
      <t><spanx style="verb">data_access</spanx>: list of non-empty strings.</t>
      <t><spanx style="verb">max_hops</spanx>, <spanx style="verb">expiry_height</spanx>: integer &gt;= 0.</t>
      <t><spanx style="verb">delegation</spanx>: object with exactly one key, <spanx style="verb">allowed</spanx>, a list of
non-empty strings. <spanx style="verb">{}</spanx> refuses the contract (vector
<spanx style="verb">synth_delegation_empty_object</spanx>).</t>
      <t><spanx style="verb">conditional</spanx>: list of objects, each with a non-empty string
<spanx style="verb">action</spanx>; actions unique; <spanx style="verb">requires</spanx>, when present, a string.</t>
      <t><spanx style="verb">finality</spanx>: object with keys only from <spanx style="verb">depth</spanx>,
<spanx style="verb">max_target_bits</spanx>. <spanx style="verb">depth</spanx>, when present, integer &gt;= 1.
<spanx style="verb">max_target_bits</spanx>, when present, 8 lowercase hex that decodes
(<xref target="compact-target"/>) to a positive target.</t>
      <t><spanx style="verb">witnesses</spanx>: list of objects, each with a non-empty string
<spanx style="verb">name</spanx> and a <spanx style="verb">public_key_ed25519_b64</spanx> that decodes to 32 bytes.</t>
      <t><spanx style="verb">privacy</spanx>: non-empty string.</t>
      <t><spanx style="verb">ordering</spanx>: object with no key other than <spanx style="verb">same_height</spanx>, which
is optional (<spanx style="verb">{}</spanx> is accepted, vector
<spanx style="verb">synth_ordering_empty_object</spanx>); <spanx style="verb">same_height</spanx>, when present, a
string or null.</t>
      <t><spanx style="verb">approval_policy</spanx>: object with keys only from <spanx style="verb">allow_unscoped</spanx>
(boolean) and <spanx style="verb">approvers</spanx>. <spanx style="verb">approvers</spanx>, when present, must be a
list of 1 to 16 objects, each with keys only from <spanx style="verb">name</spanx>,
<spanx style="verb">public_key_ed25519_b64</spanx> and <spanx style="verb">actions</spanx>: a non-empty string
<spanx style="verb">name</spanx>, a canonical 32 byte <spanx style="verb">public_key_ed25519_b64</spanx>, names and
keys unique across the list, and <spanx style="verb">actions</spanx> a non-empty list of
distinct non-empty strings, each the <spanx style="verb">action</spanx> of an entry of
<spanx style="verb">conditional</spanx>. Anything else refuses. A list that passes is
carried and out of scope (<xref target="scope"/>).</t>
      <t><spanx style="verb">revocation</spanx>: an object whose <spanx style="verb">effective_at</spanx> is <spanx style="verb">"anchor"</spanx> or
<spanx style="verb">"delivery_ack"</spanx>, with keys only from <spanx style="verb">effective_at</spanx>,
<spanx style="verb">ack_window</spanx>; <spanx style="verb">ack_window</spanx>, when present, integer &gt;= 1.</t>
    </list></t>
  <t>No number anywhere in the contract (signatures included) is a
non-integer, NaN, an infinity, or an integer outside plus or minus
(2^53 - 1).</t>
  <t>Every object key anywhere in the contract is printable ASCII
(U+0020 to U+007E).</t>
  <t><spanx style="verb">establishes</spanx> is a non-empty list. No string in it matches,
case-insensitively, any of the patterns listed after this list.</t>
  <t><spanx style="verb">does_not_establish</spanx> is a non-empty list. Lowercased, its strings
together contain: one of <spanx style="verb">runtime</spanx> or <spanx style="verb">enforce</spanx>; one of <spanx style="verb">judge</spanx>,
<spanx style="verb">liability</spanx> or <spanx style="verb">fault</spanx>; <spanx style="verb">deviat</spanx>; and <spanx style="verb">legal</spanx>. Each of the four
groups must be hit by at least one string.</t>
  <t><spanx style="verb">signatures</spanx> is a list. For each object in it: its <spanx style="verb">domain</spanx>
normalizes (rule 4) to a party's normalized domain, or the contract
is refused. Its <spanx style="verb">signature</spanx> is verified (<xref target="ed25519"/>) with that
party's key over the contract signing bytes. False or unusable
refuses the contract, even if the same party also has a good
signature (WRITTEN BEHAVIOUR). <spanx style="verb">alg</spanx> is not read.</t>
  <t>Each party has at least one signature that verifies.</t>
</list></t>

<t>The patterns of rule 13, one per line, are:</t>

<figure title="Patterns refused in establishes"><artwork><![CDATA[
\bperformed\b
\bdeliver(ed|y)\b
\bmoney (moved|was sent)\b
\bfunds? (moved|were sent|were transferred)\b
\bpaid\b(?!\s+for\s+(this|the)\s+record)
\bpayment (was|has been) (made|completed|settled|received)\b
\bcontract\b
\bbinding\b
\bguarantee
\bescrow\b
\bcustody\b
\bsolvent\b
\blawful\b
\bfair\b
\bcertified\b
]]></artwork></figure>

<t>Not read by the door, and not read anywhere in core v0: <spanx style="verb">expiry</spanx> (a
wall clock), <spanx style="verb">agreed_at</spanx>, <spanx style="verb">requirements.recovery</spanx>,
<spanx style="verb">selection_provenance</spanx>, <spanx style="verb">liability_boundary</spanx>, <spanx style="verb">settlement</spanx>.
<spanx style="verb">lower_bound</spanx> is not checked here; <xref target="view"/> checks it.
<spanx style="verb">requirements.evidence</spanx> is read in <xref target="nenrin"/>, <spanx style="verb">bond</spanx> and
<spanx style="verb">parent_contract</spanx> in <xref target="strict-terms"/>.</t>

</section>
<section anchor="settleable-terms"><name>Settleable Terms</name>

<t>Only when <xref target="contract-door"/> accepts, each of these adds the
underspecified reason shown:</t>

<texttable title="Settleable terms">
      <ttcol align='left'>condition</ttcol>
      <ttcol align='left'>reason</ttcol>
      <c><spanx style="verb">grant.authorized_actions</spanx> is not a list</c>
      <c><spanx style="verb">authorized_actions_missing</spanx></c>
      <c>an action name in <spanx style="verb">authorized_actions</spanx>, <spanx style="verb">prohibited_actions</spanx> or <spanx style="verb">conditional[].action</spanx> does not match <spanx style="verb">^[a-z][a-z0-9_.:-]{0,63}$</spanx> (see <xref target="written-behaviour"/> and item N1 of <xref target="MUSUBI-NOTES"/>)</c>
      <c><spanx style="verb">grant_action_name_invalid</spanx></c>
      <c>more than 32 witnesses</c>
      <c><spanx style="verb">too_many_witnesses</spanx></c>
      <c>a witness key does not decode to 32 bytes</c>
      <c><spanx style="verb">witness_key_invalid</spanx></c>
      <c>two witnesses share a name, or any two of {principal key, contractor key, each witness key} decode to the same 32 bytes</c>
      <c><spanx style="verb">key_conflict</spanx></c>
      <c><spanx style="verb">grant.ordering.same_height</spanx> is present and is neither null nor <spanx style="verb">"conservative"</spanx></c>
      <c><spanx style="verb">tie_policy_refused</spanx></c>
      <c><spanx style="verb">grant.revocation</spanx> is an object and <spanx style="verb">effective_at</spanx> is not <spanx style="verb">"anchor"</spanx> or <spanx style="verb">"delivery_ack"</spanx></c>
      <c><spanx style="verb">revocation_policy_not_recomputable</spanx></c>
      <c><spanx style="verb">effective_at</spanx> is <spanx style="verb">"delivery_ack"</spanx> and <spanx style="verb">ack_window</spanx> is not an integer &gt;= 1</c>
      <c><spanx style="verb">ack_window_missing</spanx></c>
      <c><spanx style="verb">grant.finality.depth</spanx> is not an integer &gt;= 1 (including a missing <spanx style="verb">finality</spanx> or <spanx style="verb">depth</spanx>)</c>
      <c><spanx style="verb">finality_policy_missing</spanx></c>
      <c><spanx style="verb">grant.expiry_height</spanx> is present, not null, and not an integer &gt;= 0</c>
      <c><spanx style="verb">bad_expiry_height</spanx></c>
      <c><spanx style="verb">allow_unscoped</spanx> in <spanx style="verb">grant.approval_policy</spanx> is truthy</c>
      <c><spanx style="verb">unscoped_approvals_refused</spanx></c>
</texttable>

<t>An empty <spanx style="verb">authorized_actions</spanx> list means nothing is authorized. It is
not an error.</t>

<t>Four rows of this table cannot add their reason in core v0:
<spanx style="verb">authorized_actions_missing</spanx>, <spanx style="verb">witness_key_invalid</spanx>,
<spanx style="verb">revocation_policy_not_recomputable</spanx> and <spanx style="verb">bad_expiry_height</spanx>. Rules 9
and 10 of <xref target="contract-door"/> refuse the same inputs first, and this
table applies only when <xref target="contract-door"/> accepts, so the input
settles as <spanx style="verb">contract_not_verified</spanx>. The rows are kept so that no code
changes meaning; an implementation that never emits these four agrees
with the reference (revision 0.4, <spanx style="verb">exercise_inputs.py</spanx> cases D1 to D6,
<xref target="exercise"/>).</t>

</section>
<section anchor="strict-terms"><name>Strict Terms</name>

<t>Whether or not <xref target="contract-door"/> accepts, each of these adds the
underspecified reason shown:</t>

<texttable title="Strict terms">
      <ttcol align='left'>condition</ttcol>
      <ttcol align='left'>reason</ttcol>
      <c>a <spanx style="verb">signatures[].signature</spanx> decodes to 64 bytes and is not strict (<xref target="ed25519"/>)</c>
      <c><spanx style="verb">contract_signature_not_strict</spanx></c>
      <c><spanx style="verb">bond</spanx> is present and not null, and is not an object whose <spanx style="verb">amount</spanx> is an integer from 1 to 2^53 - 1 (<spanx style="verb">true</spanx> is not an integer)</c>
      <c><spanx style="verb">bond_malformed</spanx></c>
      <c><spanx style="verb">parent_contract</spanx> is present and not null, and no parent was supplied</c>
      <c><spanx style="verb">parent_not_supplied</spanx></c>
      <c><spanx style="verb">parent_contract</spanx> is present and not null, and the parent is not an object, or does not pass <xref target="contract-door"/> on its own, or the contract does not pass <xref target="contract-door"/> with the parent supplied (the reference's door then also checks that <spanx style="verb">parent_contract.contract_id</spanx> equals the parent's <spanx style="verb">contract_id</spanx> and that the child's grant is a subset of the parent's: <spanx style="verb">contract_v0.grant_subset</spanx>, stated in <xref target="parent-narrowing"/>)</c>
      <c><spanx style="verb">parent_narrowing_failed</spanx></c>
</texttable>

<t>These checks do not stop the walk; the event set and dispositions are
still computed (<xref target="computation"/>). In the last row, "does not pass
<xref target="contract-door"/> with the parent supplied" is judged by
<xref target="parent-narrowing"/> and adds only <spanx style="verb">parent_narrowing_failed</spanx>; whether
the settlement is <spanx style="verb">contract_not_verified</spanx> is decided by
<xref target="contract-door"/> on the contract on its own (vectors
<spanx style="verb">synth_parent_full_*</spanx>).</t>

<section anchor="parent-narrowing"><name>Parent Narrowing (grant_subset)</name>

<t>This applies when <spanx style="verb">parent_contract</spanx> is present and not null. The
contract passes <xref target="contract-door"/> with the parent supplied if and only
if it passes <xref target="contract-door"/> on its own, <spanx style="verb">parent_contract</spanx> is an
object whose <spanx style="verb">contract_id</spanx> equals the parent's <spanx style="verb">contract_id</spanx> (a
missing <spanx style="verb">contract_id</spanx> fails), and the child grant C is within the
parent grant P. C is within P when none of the following holds. In
each rule, a list that is absent or null counts as empty, "has an
integer" means the key is present with an integer that is not a
boolean, and "the parent sets" a key means the key is present with a
value other than null. Both grants have already passed rule 10 of
<xref target="contract-door"/>, so every value has its declared type.</t>

<t><list style="numbers" type="1">
  <t>An entry of <spanx style="verb">C.authorized_actions</spanx> is not in
<spanx style="verb">P.authorized_actions</spanx>.</t>
  <t>An entry of <spanx style="verb">P.prohibited_actions</spanx> is not in
<spanx style="verb">C.prohibited_actions</spanx>.</t>
  <t>An entry of <spanx style="verb">C.data_access</spanx> is not in <spanx style="verb">P.data_access</spanx>. A child
without <spanx style="verb">data_access</spanx> is narrower, not wider.</t>
  <t>P has an integer <spanx style="verb">max_hops</spanx> p, and C has no integer <spanx style="verb">max_hops</spanx> or
one above p - 1. A child that copies the parent's <spanx style="verb">max_hops</spanx> is not
within (vector <spanx style="verb">synth_parent_full_identical</spanx>), and under a parent
with <spanx style="verb">max_hops</spanx> 0 no child is within.</t>
  <t>An entry of <spanx style="verb">C.delegation.allowed</spanx> is not in
<spanx style="verb">P.delegation.allowed</spanx>.</t>
  <t>For each entry of <spanx style="verb">P.conditional</spanx>, with <spanx style="verb">a</spanx> its <spanx style="verb">action</spanx> and r its
<spanx style="verb">requires</spanx> (a missing <spanx style="verb">requires</spanx> is null, on either side): skip it
when either (i) <spanx style="verb">a</spanx> is in <spanx style="verb">C.prohibited_actions</spanx>, or (ii) <spanx style="verb">a</spanx> is
not in <spanx style="verb">C.authorized_actions</spanx> and is not the <spanx style="verb">action</spanx> of any entry
of <spanx style="verb">C.conditional</spanx> (the child cannot do <spanx style="verb">a</spanx> at all). Otherwise it
is a violation if no entry of <spanx style="verb">C.conditional</spanx> has the action <spanx style="verb">a</spanx>,
or the one that has it (actions are unique, rule 10 of
<xref target="contract-door"/>) has a <spanx style="verb">requires</spanx> other than r. An action that C
both authorizes and makes conditional is judged by this rule like
any other.</t>
  <t>The <spanx style="verb">action</spanx> of an entry of <spanx style="verb">C.conditional</spanx> is in neither
<spanx style="verb">P.authorized_actions</spanx> nor the actions of <spanx style="verb">P.conditional</spanx>.</t>
  <t>P has an integer <spanx style="verb">expiry_height</spanx> e, and C has no integer
<spanx style="verb">expiry_height</spanx> or one above e.</t>
  <t>P has a <spanx style="verb">revocation</spanx> object; let m be its <spanx style="verb">effective_at</spanx>. Then C
must have a <spanx style="verb">revocation</spanx> object with an <spanx style="verb">effective_at</spanx>. If m is
<spanx style="verb">"anchor"</spanx>, C's must be <spanx style="verb">"anchor"</spanx>. If m is <spanx style="verb">"delivery_ack"</spanx>, C's
may be <spanx style="verb">"anchor"</spanx> (authority ends sooner) or <spanx style="verb">"delivery_ack"</spanx>; in
the second case, when P has an integer <spanx style="verb">ack_window</spanx> w, C must have
an integer <spanx style="verb">ack_window</spanx> of at most w (a child without one is a
violation), and when P has none, C's <spanx style="verb">ack_window</spanx> is not compared.
Anything else is a violation.</t>
  <t>P has a <spanx style="verb">finality</spanx> object. Then C must have one; when P has an
integer <spanx style="verb">depth</spanx> d, C must have an integer <spanx style="verb">depth</spanx> of at least d;
when P's <spanx style="verb">max_target_bits</spanx> decodes (<xref target="compact-target"/>), C's must
be present and decode to a target no larger (absent, or not
decoding, is a violation). Both grants passed rule 10 of
<xref target="contract-door"/>, so a target that is present is positive.</t>
  <t>P has a witness with a string <spanx style="verb">public_key_ed25519_b64</spanx>. Then C
must have at least one witness with such a key, and every such key
of P must equal, as a string, the key of one of C's witnesses.
Witnesses are compared by key; the names are labels (vector
<spanx style="verb">synth_parent_full_witness_renamed</spanx>).</t>
  <t>For each of <spanx style="verb">privacy</spanx> and <spanx style="verb">ordering</spanx> separately: when the parent
sets it, C must set it to an equal JSON value. After rule 10 of
<xref target="contract-door"/> these values hold only strings, objects and
null, so equality is exact: <spanx style="verb">{}</spanx> is not equal to
<spanx style="verb">{"same_height": null}</spanx>. No order is defined for these two, so
they are held equal. An <spanx style="verb">ordering</spanx> of <spanx style="verb">{"same_height": null}</spanx>
counts as set (vector <spanx style="verb">synth_parent_full_without_ordering</spanx>).</t>
  <t><spanx style="verb">C.approval_policy.allow_unscoped</spanx> is <spanx style="verb">true</spanx> and
<spanx style="verb">P.approval_policy.allow_unscoped</spanx> is not (absent counts as not
true). (In core v0 a true <spanx style="verb">allow_unscoped</spanx> already gives
<spanx style="verb">unscoped_approvals_refused</spanx>, <xref target="settleable-terms"/>.)</t>
  <t>The pinned approvers differ: the parent's
<spanx style="verb">approval_policy.approvers</spanx> and the child's, each taken as the
empty list when absent, compared as sets of canonical entries. The
order of the entries does not matter; each entry is compared as
its canonical bytes (<xref target="canonical"/>), so the order of the strings
in its <spanx style="verb">actions</spanx> does, as for any array. A child that carries
approvers is out of scope (<xref target="scope"/>), so in core v0 this applies
when the parent pins approvers and the child has none: a violation
(vector <spanx style="verb">synth_parent_approvers_child_drops</spanx>). No core v0 input
can reach the order of <spanx style="verb">actions</spanx>.</t>
</list></t>

<t>The parent must also pass <xref target="contract-door"/> on its own. Vectors
<spanx style="verb">synth_parent_full_*</spanx> take a parent that sets every axis and change
one axis per vector.</t>

</section>
</section>
</section>
<section anchor="view"><name>The Header View</name>

<section anchor="view-verify"><name>Verifying the View</name>

<t>The view is checked under two contract terms: the difficulty floor
<spanx style="verb">grant.finality.max_target_bits</spanx> and the checkpoint <spanx style="verb">lower_bound</spanx>
(<spanx style="verb">height</spanx>, <spanx style="verb">hash</spanx>). Any failure below gives the underspecified reason
<spanx style="verb">chain_view_rejected</spanx>. The view is checked even when <xref target="contract"/>
already failed.</t>

<t><list style="numbers" type="1">
  <t><spanx style="verb">grant.finality.max_target_bits</spanx> is 8 lowercase hex and decodes
(<xref target="compact-target"/>) to a target, the floor.</t>
  <t><spanx style="verb">lower_bound</spanx> is an object with an integer <spanx style="verb">height</spanx> and a 64
lowercase hex <spanx style="verb">hash</spanx>.</t>
  <t><spanx style="verb">view.headers</spanx> is a non-empty list.</t>
  <t>Each header is an object with an integer <spanx style="verb">height</spanx> &gt;= 0 and a <spanx style="verb">hex</spanx>
of 160 lowercase hex characters, optionally followed by one line
feed (WRITTEN BEHAVIOUR of the lower layers; rule 9 below then
refuses the line feed under its own reason).</t>
  <t>Heights are consecutive in list order: each is the previous plus
one.</t>
  <t>From the second header on, bytes 4 to 36 of the header, reversed,
as hex, equal the previous header's hash.</t>
  <t>The header's own nBits (bytes 72 to 76, little-endian unsigned 32
bit) decode to a target; that target is not above the floor; the
header hash read as a big-endian 256 bit number is not above that
target.</t>
  <t>The view holds a header at <spanx style="verb">lower_bound.height</spanx> whose hash equals
<spanx style="verb">lower_bound.hash</spanx>.</t>
</list></t>

<t>The header hash is sha256(sha256(80 raw bytes)), byte-reversed, as
lowercase hex (the usual display order). The merkle root used by
anchors (<xref target="anchor-proof"/>) is bytes 36 to 68 of the raw header, not
reversed. The tip is the height of the last header. The view may
start below the checkpoint. The first header's previous-hash field is
not checked. Consensus rules beyond these (retargeting, timestamps,
transactions) are not checked.</t>

<t><list style="numbers" start="9" type="1">
  <t>Separately, when <spanx style="verb">view</spanx> is an object whose <spanx style="verb">headers</spanx> is a list,
every header is an object with an integer <spanx style="verb">height</spanx> and a <spanx style="verb">hex</spanx> of
exactly 160 lowercase hex characters, and every string, key and
number in the view is strict (first paragraph of <xref target="triage"/>). If
not, the reason <spanx style="verb">view_not_strict</spanx> is added. A header in upper case
therefore gives both <spanx style="verb">chain_view_rejected</spanx> and <spanx style="verb">view_not_strict</spanx>;
one that ends in a line feed gives only <spanx style="verb">view_not_strict</spanx>. A view
that is not an object, or whose <spanx style="verb">headers</spanx> is not a list, gives
<spanx style="verb">chain_view_rejected</spanx> only (vectors <spanx style="verb">synth_view_not_an_object</spanx>,
<spanx style="verb">synth_view_headers_not_a_list</spanx>). Rule 9 does not stop the walk.</t>
</list></t>

<t>If the view verifies but holds more than 200000 headers, the reason
is <spanx style="verb">input_too_large</spanx> instead, and no record is examined.</t>

</section>
<section anchor="compact-target"><name>Compact Target Decoding</name>

<t>For a 32 bit value <spanx style="verb">bits</spanx>: <spanx style="verb">exp = bits &gt;&gt; 24</spanx>,
<spanx style="verb">mant = bits &amp; 0x007fffff</spanx>. If <spanx style="verb">bits &amp; 0x00800000</spanx> is set, or <spanx style="verb">mant</spanx>
is 0, there is no target (invalid). Otherwise the target is
<spanx style="verb">mant &lt;&lt; (8 * (exp - 3))</spanx> when <spanx style="verb">exp &gt;= 3</spanx>, else
<spanx style="verb">mant &gt;&gt; (8 * (3 - exp))</spanx>.</t>

</section>
</section>
<section anchor="records"><name>Records Before Their Anchors</name>

<section anchor="triage"><name>Strict Records and Triage</name>

<t>A JSON value is strict when, at every depth up to 512 levels: every
string and every object key is free of U+0000 to U+001F and U+007F;
every key is ASCII; every number is an integer within plus or minus
(2^53 - 1). A value nested deeper is not strict.</t>

<t>A record's parts:</t>

<t><list style="symbols">
  <t>the body: the record without <spanx style="verb">signatures</spanx> and <spanx style="verb">anchor</spanx>. This is what
its signers signed (<xref target="digests"/>, record signing bytes).</t>
  <t>the anchor: <spanx style="verb">anchor</spanx>. Nobody signed it.</t>
  <t>the signatures list: <spanx style="verb">signatures</spanx>. Nobody signed it either.</t>
</list></t>

<t>The body is not strict when the body as a value is not strict, or
(when present) <spanx style="verb">nenrin_ref</spanx> is neither null nor 64 lowercase hex, or
<spanx style="verb">contract_ref.contract_sha256</spanx> or <spanx style="verb">contract_ref.payload_digest</spanx> is
present and not 64 lowercase hex, or, for an execution:
<spanx style="verb">performed_actions</spanx> or <spanx style="verb">delegated_to</spanx> is present and not a list of
strings; <spanx style="verb">approvals</spanx> is present and not a list of objects; or an
approval has a <spanx style="verb">sig_b64</spanx> or a <spanx style="verb">signature</spanx> that decodes to 64 bytes and
is not strict (<xref target="ed25519"/>). Each of the two keys is checked on its
own, whichever are present: a strict <spanx style="verb">sig_b64</spanx> does not excuse a
<spanx style="verb">signature</spanx> that is not strict. This is the only place an approval's
<spanx style="verb">signature</spanx> is read; <xref target="approvals"/> never verifies it.</t>

<t>The anchor is not strict when it is present and: it is not strict as
a value; or its <spanx style="verb">block_hash</spanx> is present and not exactly 64 lowercase
hex; or a proof operation's <spanx style="verb">hex</spanx> is present and is not exactly pairs
of lowercase hex digits (the empty string is allowed).</t>

<t>A record is strictly signed when one entry of <spanx style="verb">signatures</spanx> has a role
its schema allows (<xref target="authentication"/>), a signature that strictly
verifies (<xref target="ed25519"/>) with the matching key over the record signing
bytes, and is itself a strict value.</t>

<t>First, a record of one of the three schemas whose record_sha256
cannot be computed at all (for example an integer too long to write
out) is set aside with reason <spanx style="verb">record_not_strict</spanx>. The others are
bound (<xref target="binding"/>). Each bound record is then triaged, in this order:</t>

<texttable title="Triage">
      <ttcol align='left'>condition</ttcol>
      <ttcol align='left'>result</ttcol>
      <c>not strictly signed, body not strict</c>
      <c>set aside, <spanx style="verb">record_not_strict</spanx></c>
      <c>not strictly signed, but a signature verifies under <xref target="ed25519"/> alone (lax)</c>
      <c>set aside, <spanx style="verb">signature_not_strict</spanx></c>
      <c>not strictly signed otherwise</c>
      <c>rejected (disposition <spanx style="verb">rejected</spanx>)</c>
      <c>strictly signed, body not strict</c>
      <c>set aside, <spanx style="verb">record_not_strict</spanx>, and the underspecified reason <spanx style="verb">record_not_strict</spanx> is added: the record is a party's own statement, so setting it aside does not make the input settleable</c>
      <c>strictly signed, anchor not strict, and another bound record with the same record signing bytes is kept by this table and anchors validly (<xref target="collapse"/>)</c>
      <c>set aside, <spanx style="verb">anchor_not_strict</spanx></c>
      <c>strictly signed, anchor not strict, otherwise</c>
      <c>underspecified reason <spanx style="verb">anchor_not_strict</spanx></c>
      <c>a revocation, and <spanx style="verb">grant.revocation</spanx> is not an object</c>
      <c>set aside, <spanx style="verb">revocation_not_provided_for</spanx> (the contract cannot be revoked)</c>
      <c>otherwise</c>
      <c>kept</c>
</texttable>

<t>Only the fourth row both sets a record aside and adds a reason; the
first three set aside or reject without one (vectors
<spanx style="verb">synth_nan_in_signed_body</spanx> and <spanx style="verb">synth_unsigned_float_beside_good</spanx>).</t>

<t>Set aside and rejected records are never examined again: no collapse
(<xref target="collapse"/>), size limit (<xref target="size-limit"/>), conformance check, anchor
check or NENRIN check sees them. They are listed with their
disposition (<xref target="dispositions"/>). Problems in the signatures list of a
strictly signed record (an extra entry that does not verify or is not
strict) are ignored.</t>

<t>A third party holding copies of genuine records can change their
anchors and signature lists but not their bodies. The table is
arranged so that such copies are set aside or rejected whenever the
genuine record is in the input.</t>

</section>
<section anchor="binding"><name>Binding</name>

<t>Let <spanx style="verb">cid = contract.contract_id</spanx>, <spanx style="verb">pdg = contract.task.payload_digest</spanx>
(it may be absent), <spanx style="verb">csha = contract_sha256</spanx>. Walk <spanx style="verb">events</spanx> in the
given order. Skip anything that is not an object, or whose <spanx style="verb">schema</spanx> is
not one of the three record schemas. Skip a record whose record_sha256
was already seen (identical bytes are one record). Then, with
<spanx style="verb">ref = contract_ref</spanx> if it is an object, else empty:</t>

<texttable title="Binding">
      <ttcol align='left'>condition, in this order</ttcol>
      <ttcol align='left'>class</ttcol>
      <c><spanx style="verb">ref.contract_sha256</spanx> absent or null, and <spanx style="verb">ref.contract_id == cid</spanx></c>
      <c>unbound (not settled in strict mode)</c>
      <c><spanx style="verb">ref.contract_sha256</spanx> absent or null otherwise</c>
      <c>not ours: dropped silently</c>
      <c><spanx style="verb">ref.contract_sha256</spanx> is not 64 lowercase hex</c>
      <c>inconsistent</c>
      <c><spanx style="verb">ref.contract_sha256 != csha</spanx></c>
      <c>foreign</c>
      <c><spanx style="verb">ref.contract_id != cid</spanx></c>
      <c>inconsistent</c>
      <c><spanx style="verb">pdg</spanx> is present and not null, and <spanx style="verb">ref.payload_digest != pdg</spanx></c>
      <c>inconsistent</c>
      <c>otherwise</c>
      <c>bound</c>
</texttable>

<t>Only bound records go further. Foreign, inconsistent and unbound
records are listed (<xref target="output"/>) and never settled. Binding runs even
when <xref target="contract"/> or <xref target="view"/> failed; its classes are then still
reported. Binding is by <spanx style="verb">contract_sha256</spanx> alone, so a record made
under earlier terms with the same <spanx style="verb">contract_id</spanx> is foreign and is
never triaged (<xref target="triage"/>).</t>

</section>
<section anchor="size-limit"><name>Size Limit</name>

<t>If more than 10000 records are kept by <xref target="triage"/>, the reason
<spanx style="verb">input_too_large</spanx> is added and no record is examined further. Records
are counted after identical bytes are merged (<xref target="identical-bytes"/>):
10001 copies of one record are one record (revision 0.4,
<spanx style="verb">exercise_inputs.py</spanx> cases E4 to E6, <xref target="exercise"/>).</t>

</section>
<section anchor="identical-bytes"><name>Identical Bytes</name>

<t>Two inputs with the same record_sha256 are one record. Supplying a
record twice changes nothing.</t>

</section>
<section anchor="collapse"><name>Several Copies of One Signed Body</name>

<t>The same signed body can reach the input more than once: anchored
twice (two calendars, two batches), or with another <spanx style="verb">signatures</spanx> list.
These copies differ only in their unsigned parts. Group the records
kept by <xref target="triage"/> by their record signing bytes (<xref target="digests"/>). In a
group with more than one distinct record_sha256:</t>

<t><list style="symbols">
  <t>A copy "anchors validly" if: its <spanx style="verb">anchor.height</spanx> is an integer &gt;= 0
that the view holds; <spanx style="verb">anchor.block_hash</spanx> equals the view's hash at
that height; the proof (<xref target="anchor-proof"/>) reaches that block's
merkle root; and the batch leg rule (<xref target="batch-leg"/>) accepts it.</t>
  <t>If at least one copy anchors validly, keep the one with the smallest
(height, record_sha256) and drop the others. Dropped copies are
listed (disposition <spanx style="verb">duplicate_dropped</spanx>).</t>
  <t>If none does, keep them all. Each is then examined on its own.</t>
</list></t>

<t>This is done when rules 1 to 8 of <xref target="view-verify"/> passed, whether or
not <xref target="contract"/> did. Note that "anchors validly" does not compare the
height with the checkpoint (see item N7 of <xref target="MUSUBI-NOTES"/>).</t>

</section>
<section anchor="authentication"><name>Authentication</name>

<t>Authentication is part of <xref target="triage"/>: only strictly signed records are
kept. The roles and keys are:</t>

<texttable title="Signers by schema">
      <ttcol align='left'>schema</ttcol>
      <ttcol align='left'>signer it needs</ttcol>
      <ttcol align='left'>key</ttcol>
      <c>a2a-execution-v0</c>
      <c>a signature with <spanx style="verb">role</spanx> <spanx style="verb">"contractor"</spanx>, or with <spanx style="verb">role</spanx> <spanx style="verb">"witness"</spanx> and a <spanx style="verb">witness_name</spanx></c>
      <c>the contractor's party key, or the key of the grant witness with that exact name</c>
      <c>a2a-revocation-v0</c>
      <c><spanx style="verb">role</spanx> <spanx style="verb">"principal"</spanx></c>
      <c>the principal's party key</c>
      <c>a2a-revocation-ack-v0</c>
      <c><spanx style="verb">role</spanx> <spanx style="verb">"contractor"</spanx></c>
      <c>the contractor's party key</c>
</texttable>

<t><spanx style="verb">signatures</spanx> must be a non-empty list. Each entry is an object with
<spanx style="verb">role</spanx>, <spanx style="verb">sig_b64</spanx> and, for a witness, <spanx style="verb">witness_name</spanx>. An entry with
another role, or one that does not strictly verify, is skipped.</t>

<t>Then, for a kept revocation: if its <spanx style="verb">revoked_by</spanx> field is not
<spanx style="verb">"principal"</spanx>, it is ignored (disposition <spanx style="verb">ignored</spanx>), even though the
principal signed it.</t>

</section>
<section anchor="conformance"><name>Conformance</name>

<t>Allowed top-level fields:</t>

<t><list style="symbols">
  <t>execution: <spanx style="verb">schema</spanx>, <spanx style="verb">contract_ref</spanx>, <spanx style="verb">performed_actions</spanx>,
<spanx style="verb">approvals</spanx>, <spanx style="verb">delegated_to</spanx>, <spanx style="verb">nenrin_ref</spanx>, <spanx style="verb">outcomes</spanx>, <spanx style="verb">anchor</spanx>,
<spanx style="verb">signatures</spanx>,</t>
  <t>revocation: <spanx style="verb">schema</spanx>, <spanx style="verb">contract_ref</spanx>, <spanx style="verb">revoked_by</spanx>, <spanx style="verb">anchor</spanx>,
<spanx style="verb">signatures</spanx>,</t>
  <t>acknowledgement: <spanx style="verb">schema</spanx>, <spanx style="verb">contract_ref</spanx>, <spanx style="verb">revocation_sha256</spanx>,
<spanx style="verb">acked_by</spanx>, <spanx style="verb">anchor</spanx>, <spanx style="verb">signatures</spanx>.</t>
</list></t>

<t>A record has a conformance problem if:</t>

<t><list style="symbols">
  <t>it has a field outside its list,</t>
  <t>(execution) <spanx style="verb">performed_actions</spanx> is not a list of strings,</t>
  <t>(execution) <spanx style="verb">outcomes</spanx> is present, not null, and not an object; or
one of its keys is not in <spanx style="verb">performed_actions</spanx>; or one of its values
is not <spanx style="verb">"ok"</spanx>, <spanx style="verb">"error"</spanx>, <spanx style="verb">"timeout"</spanx> or <spanx style="verb">"partial"</spanx>,</t>
  <t>(execution) it lists more than 256 performed actions,</t>
  <t>(execution) a performed action, or the <spanx style="verb">action</spanx> of an approval that
is an object, does not match <spanx style="verb">^[a-z][a-z0-9_.:-]{0,63}$</spanx>. An
approval object with no <spanx style="verb">action</spanx> counts as not matching. (A name
ending in a line feed never gets here: its body is not strict,
<xref target="triage"/>.)</t>
</list></t>

<t>If an execution with a problem has a contractor signature that
verifies, it is a charge: the deviation <spanx style="verb">nonconforming_record</spanx> is
added, and the record continues to <xref target="anchors"/>. Its acts are still
judged. Any other record with a problem is rejected (disposition
<spanx style="verb">rejected</spanx>). The computation is then repeated without the rejected
records, until no new record is rejected, so no check reads a
rejected record.</t>

<t>The types of <spanx style="verb">approvals</spanx>, <spanx style="verb">delegated_to</spanx>, <spanx style="verb">nenrin_ref</spanx> and
<spanx style="verb">contract_ref</spanx> are checked in <xref target="triage"/>.</t>

</section>
</section>
<section anchor="anchors"><name>Anchors</name>

<section anchor="anchor-what"><name>What an Anchor Is</name>

<t>An anchor says where a record's body was committed to Bitcoin:</t>

<figure><artwork><![CDATA[
"anchor": {"height": H, "block_hash": "<64 hex>", "proof": [op, ...]}
]]></artwork></figure>

<t>The anchor is not signed. Anyone holding a record can change it. The
checks below decide whether the claim holds against the verified
view.</t>

</section>
<section anchor="anchor-height"><name>Height</name>

<t>The height of a record is <spanx style="verb">anchor.height</spanx> when <spanx style="verb">anchor</spanx> is an object
and <spanx style="verb">height</spanx> is an integer &gt;= 0. Otherwise the record has no height.</t>

</section>
<section anchor="anchor-order"><name>Order of the Checks</name>

<t>For each record that passed <xref target="records"/>, apply <xref target="anchor-block"/>,
<xref target="anchor-proof"/> and <xref target="batch-leg"/> in this order. The first failure
decides what happens to the record. Every record that reaches this
section is strictly signed by a party (<xref target="triage"/>).</t>

</section>
<section anchor="anchor-block"><name>Height and Block</name>

<texttable title="Height and block">
      <ttcol align='left'>condition, in this order</ttcol>
      <ttcol align='left'>result</ttcol>
      <c>no height (<xref target="anchor-height"/>), or <spanx style="verb">anchor.block_hash</spanx> is not 64 lowercase hex</c>
      <c>underspecified reason <spanx style="verb">anchor_incomplete</spanx></c>
      <c>height &lt; <spanx style="verb">lower_bound.height</spanx></c>
      <c>underspecified reason <spanx style="verb">anchor_below_lower_bound</spanx>. The body names this contract, and the contract names the checkpoint's block hash, so no honest anchor can be below it</c>
      <c>height &gt; tip, or the view holds no header at that height</c>
      <c>underspecified reason <spanx style="verb">anchor_beyond_observed_chain</spanx></c>
      <c><spanx style="verb">anchor.block_hash</spanx> != the view's hash at that height</c>
      <c>disposition <spanx style="verb">orphaned</spanx>: excluded, no reason added, but its height counts for finality (<xref target="status"/>)</c>
</texttable>

</section>
<section anchor="anchor-proof"><name>The Proof</name>

<t><spanx style="verb">anchor.proof</spanx> must be a non-empty list of at most 512 operations.
Start with the 32 byte body digest (<xref target="digests"/>) as the current bytes,
and apply each operation:</t>

<texttable title="Proof operations">
      <ttcol align='left'>op</ttcol>
      <ttcol align='left'>effect</ttcol>
      <c><spanx style="verb">{"op": "sha256"}</spanx></c>
      <c>current = sha256(current)</c>
      <c><spanx style="verb">{"op": "hexlify"}</spanx></c>
      <c>current = the ASCII bytes of the lowercase hex of current</c>
      <c><spanx style="verb">{"op": "append", "hex": X}</spanx></c>
      <c>current = current + bytes(X)</c>
      <c><spanx style="verb">{"op": "prepend", "hex": X}</spanx></c>
      <c>current = bytes(X) + current</c>
</texttable>

<t><spanx style="verb">X</spanx> is a string of pairs of lowercase hex digits (the empty string is
allowed) of at most 4096 bytes, and bytes(X) is the byte string that X
encodes. (An operand with anything else, a line feed included, never
gets here: the anchor is not strict, <xref target="triage"/>.) Any other op, a
missing or malformed operand, a non-object entry, or current bytes
longer than 65536 at any step, fails the proof. The proof holds if the
final bytes equal the merkle root of the header at the record's
height (<xref target="view-verify"/>). If it fails: underspecified reason
<spanx style="verb">anchor_proof_invalid</spanx>.</t>

<t>The operation set resembles a subset of the operations used by
OpenTimestamps <xref target="OPENTIMESTAMPS"/>; only the operations above are
defined here.</t>

</section>
<section anchor="batch-leg"><name>The Batch Leg Rule</name>

<t>A ledger lists records by their hex sha inside a batch, and stamps
the batch. A proof can pass through such a batch with <spanx style="verb">hexlify</spanx>. A hex
digest that merely appears somewhere in stamped bytes is not a
listing. So:</t>

<t><list style="numbers" type="1">
  <t>If no op in the proof is <spanx style="verb">hexlify</spanx>, the rule accepts.</t>
  <t>If any <spanx style="verb">hexlify</spanx> is not the first op, or there is more than one,
refuse (<spanx style="verb">hexlify_not_leading</spanx>).</t>
  <t>Rebuild the batch: walk the ops after the first one, up to the
first <spanx style="verb">sha256</spanx>. Each must be <spanx style="verb">append</spanx> or <spanx style="verb">prepend</spanx>, else refuse
(<spanx style="verb">batch_leg_malformed</spanx>). If there is no <spanx style="verb">sha256</spanx>, refuse
(<spanx style="verb">batch_leg_malformed</spanx>). The batch is (all prepend operands, the
later one in front) + the ASCII lowercase hex of the body digest +
(all append operands, in order).</t>
  <t>The batch bytes must be UTF-8 text that parses as strict JSON
(<xref target="reading-json"/>; so <spanx style="verb">NaN</spanx> is read as a number, vector
<spanx style="verb">synth_batch_bytes_with_nan</spanx>) into an object whose <spanx style="verb">schema</spanx> is one of
<spanx style="verb">nenrin-agreement-batch-v1</spanx> (typed), <spanx style="verb">nenrin-witness-batch-v1</spanx>,
<spanx style="verb">nenrin-trace-pin-batch-v0</spanx>. Else refuse (<spanx style="verb">batch_not_json</spanx> or
<spanx style="verb">batch_schema_unknown</spanx>).</t>
  <t><spanx style="verb">records</spanx> is a list of objects (else <spanx style="verb">batch_schema_unknown</spanx>). If
<spanx style="verb">count</spanx> is present it equals the length of <spanx style="verb">records</spanx> (else
<spanx style="verb">batch_count_mismatch</spanx>).</t>
  <t>Exactly one <spanx style="verb">records[i]</spanx> has <spanx style="verb">sha</spanx> equal to the hex digest. None:
<spanx style="verb">record_not_listed_in_batch</spanx>. More: <spanx style="verb">record_listed_twice</spanx>.</t>
  <t>For a typed batch: the record's schema maps to a kind
(<spanx style="verb">a2a-execution-v0</spanx> to <spanx style="verb">execution</spanx>; revocations and
acknowledgements have no kind, so they are refused with
<spanx style="verb">record_kind_unknown</spanx>, WRITTEN BEHAVIOUR). <spanx style="verb">records[i].kind</spanx> equals
that kind (else <spanx style="verb">record_kind_mismatch</spanx>). If <spanx style="verb">records[i].schema</spanx> is
present it equals the record's schema (else
<spanx style="verb">record_schema_mismatch</spanx>).</t>
  <t>The string value of <spanx style="verb">records[i].sha</spanx> must be written in the raw
text as the 64 hex characters themselves, with no escapes (else
refuse, code <spanx style="verb">internal</spanx>), and its first character must sit at byte
offset equal to the total length of the prepend operands (else
refuse, <spanx style="verb">batch_leg_splice_not_at_listing</spanx>).</t>
</list></t>

<t>If the rule refuses: underspecified reason <spanx style="verb">anchor_batch_leg_refused</spanx>.
The refusal code is informative detail.</t>

<t>If all of <xref target="anchor-block"/> to <xref target="batch-leg"/> pass, the record is
accepted (disposition <spanx style="verb">accepted</spanx>).</t>

</section>
</section>
<section anchor="event-set"><name>The Event Set and Finality</name>

<section anchor="event-order"><name>Order</name>

<t>The event set is the accepted records sorted by (height, record_sha256
as a lowercase hex string). Arrival order plays no part.</t>

</section>
<section anchor="event-kinds"><name>Kinds</name>

<t>Each event has a kind: <spanx style="verb">execution</spanx>, <spanx style="verb">revocation</spanx> or <spanx style="verb">revocation_ack</spanx>,
by schema.</t>

</section>
<section anchor="same-block"><name>Same Block</name>

<t>Two records in the same block are not ordered by their bytes for any
rule that matters. <xref target="grant"/> says how same-block cases are decided.
The order of <xref target="event-order"/> only fixes the listing and the order in
which single use approvals are consumed (<xref target="approvals"/>).</t>

<t>That order is not a signed fact: the anchor is unsigned
(<xref target="anchor-what"/>) and an extra key in it passes <xref target="triage"/>, so whoever
holds the copies can change a record's record_sha256 without touching
its body or its proof. When two executions in one block compete for
one single use approval carried by an earlier record, the holder can
therefore choose which of the two is reported <spanx style="verb">conditional</spanx>. The
verdict, the deviation codes and the bond outcome do not change
(<xref target="sec-unsigned"/>).</t>

</section>
<section anchor="horizon"><name>Horizon</name>

<t>With tip T and <spanx style="verb">grant.finality.depth</spanx> k, the finality horizon is
<spanx style="verb">T - k + 1</spanx>.</t>

</section>
<section anchor="status"><name>Status</name>

<t><list style="symbols">
  <t>If the verdict is <spanx style="verb">underspecified</spanx>: <spanx style="verb">undetermined</spanx>.</t>
  <t>Otherwise <spanx style="verb">final</spanx> if every accepted record's height and every
orphaned record's height is at or below the horizon; else
<spanx style="verb">provisional</spanx>.</t>
</list></t>

<t>With no accepted and no orphaned record, the status is <spanx style="verb">final</spanx>.
Foreign, rejected, ignored and set aside records do not affect status.</t>

</section>
</section>
<section anchor="output"><name>Output</name>

<section anchor="core-fields"><name>Core Fields</name>

<t>A second implementation MUST reproduce these exactly. They are what
the vectors' expected.json files hold.</t>

<texttable title="Core fields">
      <ttcol align='left'>field</ttcol>
      <ttcol align='left'>value</ttcol>
      <c><spanx style="verb">contract_sha256</spanx></c>
      <c><xref target="digests"/>, computed even for a contract the door refuses; null when the contract is not a JSON object (vector <spanx style="verb">synth_contract_not_object</spanx>)</c>
      <c><spanx style="verb">verdict</spanx></c>
      <c><spanx style="verb">within_grant</spanx>, <spanx style="verb">deviation</spanx>, <spanx style="verb">nothing_to_settle</spanx> or <spanx style="verb">underspecified</spanx> (<xref target="verdict"/>)</c>
      <c><spanx style="verb">status</spanx></c>
      <c><spanx style="verb">final</spanx>, <spanx style="verb">provisional</spanx> or <spanx style="verb">undetermined</spanx> (<xref target="status"/>)</c>
      <c><spanx style="verb">bond_outcome</spanx></c>
      <c><xref target="bond-outcome"/></c>
      <c><spanx style="verb">deviation_codes</spanx></c>
      <c>the sorted set of deviation codes (<xref target="codes"/>). Empty when the verdict is not <spanx style="verb">deviation</spanx></c>
      <c><spanx style="verb">underspecified_reasons</spanx></c>
      <c>the sorted set of underspecified reasons (<xref target="codes"/>). Empty unless the verdict is <spanx style="verb">underspecified</spanx></c>
      <c><spanx style="verb">event_set</spanx></c>
      <c>the list of <xref target="event-order"/>, each item <spanx style="verb">{"kind", "sha256", "height"}</spanx> with sha256 the record_sha256. Empty when the walk did not run. A reason from <xref target="strict-terms"/>, rule 9 of <xref target="view-verify"/>, <xref target="triage"/>, <xref target="anchor-block"/> (below the lower bound) or <xref target="nenrin"/> (a cited walk) does not empty it</c>
      <c><spanx style="verb">dispositions</spanx></c>
      <c>an object mapping record_sha256 to one code, for every record the computation classified (<xref target="dispositions"/>)</c>
</texttable>

<t><spanx style="verb">deviation_codes</spanx> and <spanx style="verb">underspecified_reasons</spanx> are sets. The reference
may list a code more than once (one per action); that multiplicity is
informative.</t>

</section>
<section anchor="dispositions"><name>Dispositions</name>

<texttable title="Dispositions">
      <ttcol align='left'>code</ttcol>
      <ttcol align='left'>meaning</ttcol>
      <c><spanx style="verb">foreign</spanx>, <spanx style="verb">inconsistent</spanx>, <spanx style="verb">unbound</spanx></c>
      <c><xref target="binding"/></c>
      <c><spanx style="verb">record_not_strict</spanx>, <spanx style="verb">signature_not_strict</spanx>, <spanx style="verb">anchor_not_strict</spanx>, <spanx style="verb">revocation_not_provided_for</spanx></c>
      <c><xref target="triage"/>, set aside, or (for <spanx style="verb">record_not_strict</spanx> and <spanx style="verb">anchor_not_strict</spanx>) failing closed with the same reason added to the settlement</c>
      <c><spanx style="verb">duplicate_dropped</spanx></c>
      <c><xref target="collapse"/></c>
      <c><spanx style="verb">rejected</spanx></c>
      <c><xref target="triage"/> or <xref target="conformance"/></c>
      <c><spanx style="verb">ignored</spanx></c>
      <c><xref target="authentication"/>, a revocation whose <spanx style="verb">revoked_by</spanx> is not <spanx style="verb">"principal"</spanx></c>
      <c><spanx style="verb">anchor_incomplete</spanx>, <spanx style="verb">anchor_beyond_observed_chain</spanx>, <spanx style="verb">anchor_proof_invalid</spanx>, <spanx style="verb">anchor_batch_leg_refused</spanx></c>
      <c><xref target="anchor-block"/> to <xref target="batch-leg"/>, with the same reason added to the settlement</c>
      <c><spanx style="verb">anchor_below_lower_bound</spanx></c>
      <c><xref target="anchor-block"/>, with the same reason added</c>
      <c><spanx style="verb">orphaned</spanx></c>
      <c><xref target="anchor-block"/></c>
      <c><spanx style="verb">accepted</spanx></c>
      <c>in the event set</c>
</texttable>

<t>A bound record that the computation never examined (because
<xref target="contract"/>, <xref target="view"/> or <xref target="size-limit"/> failed) has no disposition. A
record that is not ours (<xref target="binding"/>, dropped silently) has no
disposition. A record set aside because it cannot be digested has no
record_sha256 and so no disposition; it is counted in the informative
<spanx style="verb">v1_16.refused</spanx>. Every record has at most one disposition.</t>

</section>
<section anchor="bond-outcome"><name>Bond Outcome</name>

<t>If <spanx style="verb">contract.bond</spanx> is absent or null: <spanx style="verb">n/a</spanx>. A bond of any other form
than an object with a positive integer <spanx style="verb">amount</spanx> makes the settlement
underspecified (<xref target="strict-terms"/>) and the outcome is then
<spanx style="verb">undetermined</spanx> when the value is one the lower layers read as a bond
(an object with a truthy <spanx style="verb">amount</spanx>), else <spanx style="verb">n/a</spanx>.</t>

<t>For a well formed bond: <spanx style="verb">undetermined</spanx> if the verdict is
<spanx style="verb">underspecified</spanx>; else <spanx style="verb">pending_finality</spanx> if the status is
<spanx style="verb">provisional</spanx>; else <spanx style="verb">held</spanx> for <spanx style="verb">within_grant</spanx> and
<spanx style="verb">nothing_to_settle</spanx>, and <spanx style="verb">forfeited</spanx> for <spanx style="verb">deviation</spanx>.</t>

</section>
<section anchor="informative-fields"><name>Informative Fields</name>

<t>Everything else the reference writes is informative: <spanx style="verb">schema</spanx>,
<spanx style="verb">settled_under</spanx>, <spanx style="verb">v1_16</spanx>, <spanx style="verb">signed_body_collapse</spanx>, <spanx style="verb">contract_id</spanx>,
<spanx style="verb">binding_mode</spanx>, <spanx style="verb">bound_by_label_only</spanx>, <spanx style="verb">ordering_rule</spanx>,
<spanx style="verb">approval_rule</spanx>, <spanx style="verb">anchor_rule</spanx>, <spanx style="verb">view_rules</spanx>, <spanx style="verb">chain_tip</spanx>,
<spanx style="verb">finality_horizon</spanx>, <spanx style="verb">pinned_blocks</spanx>, <spanx style="verb">revocations</spanx>, <spanx style="verb">approvals</spanx>,
<spanx style="verb">binding</spanx>, <spanx style="verb">orphaned</spanx>, <spanx style="verb">predates_contract</spanx>, <spanx style="verb">ignored</spanx>, <spanx style="verb">rejected</spanx>,
<spanx style="verb">duplicate_anchorings</spanx>, <spanx style="verb">establishes</spanx>, <spanx style="verb">does_not_establish</spanx>,
<spanx style="verb">spine_gate</spanx>, <spanx style="verb">convergence_gate</spanx>, <spanx style="verb">approval_gate</spanx>, <spanx style="verb">signatures</spanx>, the
full <spanx style="verb">underspecified</spanx> and <spanx style="verb">deviations</spanx> objects (heights, <spanx style="verb">why</spanx> texts,
details), and their order. The informative fields are useful when
comparing implementations. They are not part of conformance.</t>

</section>
</section>
<section anchor="grant"><name>Grant Evaluation</name>

<t>The walk runs over the event set (<xref target="event-order"/>) only. Let
<spanx style="verb">g = contract.grant</spanx>.</t>

<section anchor="revocation"><name>Revocation</name>

<t>For each accepted revocation at height h, its effective height E is:</t>

<t><list style="symbols">
  <t><spanx style="verb">effective_at</spanx> <spanx style="verb">"anchor"</spanx>: E = h.</t>
  <t><spanx style="verb">effective_at</spanx> <spanx style="verb">"delivery_ack"</spanx>: E = the smallest of h +
<spanx style="verb">ack_window</spanx> and the heights of every accepted acknowledgement whose
<spanx style="verb">revocation_sha256</spanx> names this revocation.</t>
</list></t>

<t>An acknowledgement names a revocation if its <spanx style="verb">revocation_sha256</spanx>
equals the lowercase hex body digest of the revocation, or the
record_sha256 of a copy of that revocation that is still in the input
after <xref target="collapse"/>. A copy <xref target="collapse"/> dropped no longer names the
revocation (WRITTEN BEHAVIOUR: settle v1.4 collects every anchored
copy, but since settle v1.15 the copies of one signed body are reduced
before v1.4 sees them). Vector <spanx style="verb">synth_ack_names_dropped_copy</spanx>.
An acknowledgement anchored
before its revocation makes E earlier than h (WRITTEN BEHAVIOUR, see
item N5 of <xref target="MUSUBI-NOTES"/>).</t>

<t>Sort the revocations by (E, record_sha256). An execution at height h
is revoked if some revocation has E &lt;= h. Authority ends at block E
inclusive: an act in the same block as an anchor-mode revocation is
revoked. For a revoked execution, every string in <spanx style="verb">performed_actions</spanx>
gives the deviation <spanx style="verb">revoked</spanx>, and nothing else in that record is
judged (no expiry, prohibited, conditional, unauthorized or
delegation check, and no approval nonce is consumed).</t>

<t>If the grant has no <spanx style="verb">revocation</spanx> object, a revocation never gets
here: it is set aside in <xref target="triage"/> (<spanx style="verb">revocation_not_provided_for</spanx>).</t>

</section>
<section anchor="expiry"><name>Expiry</name>

<t>If <spanx style="verb">g.expiry_height</spanx> is present and not null, every string action of
an execution with height h &gt; expiry_height gives <spanx style="verb">after_expiry</spanx>. This
does not stop the other checks for that action: an expired prohibited
action gives both <spanx style="verb">after_expiry</spanx> and <spanx style="verb">prohibited</spanx>. An execution at
exactly expiry_height is not expired.</t>

</section>
<section anchor="actions"><name>Actions and Delegation</name>

<t>For each accepted, unrevoked execution, for each string <spanx style="verb">a</spanx> in
<spanx style="verb">performed_actions</spanx>, in order, after <xref target="expiry"/>:</t>

<t><list style="numbers" type="1">
  <t>If <spanx style="verb">a</spanx> is in <spanx style="verb">g.prohibited_actions</spanx>: deviation <spanx style="verb">prohibited</spanx>. Next
action.</t>
  <t>Else if <spanx style="verb">a</spanx> is the <spanx style="verb">action</spanx> of some <spanx style="verb">g.conditional</spanx> entry: apply
<xref target="approvals"/>. Next action. (A conditional action does not need to
be in <spanx style="verb">authorized_actions</spanx>.)</t>
  <t>Else if <spanx style="verb">a</spanx> is not in <spanx style="verb">g.authorized_actions</spanx>: deviation
<spanx style="verb">unauthorized</spanx>.</t>
</list></t>

<t>Every entry of <spanx style="verb">performed_actions</spanx> and <spanx style="verb">delegated_to</spanx> is a string here
(<xref target="triage"/>). Comparison is exact string equality. There is no case
folding or Unicode normalization.</t>

<t>Then, for each entry <spanx style="verb">d</spanx> of <spanx style="verb">delegated_to</spanx> not in
<spanx style="verb">g.delegation.allowed</spanx> (empty when absent): deviation <spanx style="verb">delegation</spanx>. An
outcome (<spanx style="verb">outcomes</spanx>) never excuses an act. An attempt that errored is
judged like one that succeeded.</t>

</section>
<section anchor="approvals"><name>Conditional Actions and Approvals</name>

<t>Every approval carried by an accepted execution (revoked or not) is
classified. With <spanx style="verb">pk</spanx> the principal's key and <spanx style="verb">csha</spanx> this contract's
contract_sha256:</t>

<t><list style="numbers" type="1">
  <t>Not an object, or no principal key: <spanx style="verb">forged</spanx> (<xref target="forged"/>). (Once
<xref target="contract-door"/> accepts, the principal always has a usable key,
so in core v0 only "not an object" can apply.)</t>
  <t>If <spanx style="verb">valid_until_height</spanx> is an integer &gt;= 0, <spanx style="verb">nonce</spanx> is a string of
32 lowercase hex characters (a nonce with a line feed never gets
here, <xref target="triage"/>), <spanx style="verb">single_use</spanx> is a boolean, and <spanx style="verb">contract_sha256</spanx>
is 64 lowercase hex: compute the v2 approval bytes shown after this
list. If <spanx style="verb">sig_b64</spanx> verifies over them with <spanx style="verb">pk</spanx>: <spanx style="verb">counted</spanx> when its
contract_sha256 equals csha, else <spanx style="verb">other_terms</spanx>.</t>
  <t>Otherwise, if <spanx style="verb">sig_b64</spanx> verifies with <spanx style="verb">pk</spanx> over either older form,
it is <spanx style="verb">label_bound</spanx>:
  <list style="symbols">
      <t>the v1 approval bytes, with contract_id and payload_digest from
the contract, only when the field checks of step 2 other than
contract_sha256 hold, or</t>
      <t>the v0 approval bytes.</t>
    </list></t>
  <t>Otherwise <spanx style="verb">forged</spanx>.</t>
</list></t>

<t>The three forms of approval bytes are:</t>

<figure title="Approval signing bytes"><artwork><![CDATA[
v2: "a2a-approval-v2\n" + canonical({
      "contract_sha256": <its contract_sha256>,
      "action": <its action>,
      "valid_until_height": ..,
      "nonce": ..,
      "single_use": ..})

v1: "a2a-approval-v1\n" + canonical({
      "contract_id", "payload_digest", "action",
      "valid_until_height", "nonce", "single_use"})

v0: "a2a-approval-v0\n" + canonical({
      "contract_id", "payload_digest", "action"})
]]></artwork></figure>

<t>A missing field is canonicalized as null. The approval's <spanx style="verb">by</spanx> field
is not read. Only <spanx style="verb">sig_b64</spanx> is verified. An approval whose signature
is only under another key, such as <spanx style="verb">signature</spanx>, is <spanx style="verb">forged</spanx>
(<xref target="forged"/>), even when that value would verify. <spanx style="verb">label_bound</spanx> and <spanx style="verb">other_terms</spanx> approvals are listed
(informative) and never count. They are not deviations.</t>

<t>A conditional action <spanx style="verb">a</spanx> in an execution at height h with record sha
s is approved if some counted approval, taken in event set order
(records by <xref target="event-order"/>, approvals in list order within a record),
satisfies all of:</t>

<t><list style="symbols">
  <t>its <spanx style="verb">action</spanx> equals <spanx style="verb">a</spanx>,</t>
  <t>it is carried by the same record s, or by a record at a height
strictly below h (a record in the same block does not count),</t>
  <t>h &lt;= its <spanx style="verb">valid_until_height</spanx>,</t>
  <t>if its <spanx style="verb">single_use</spanx> is true, its <spanx style="verb">nonce</spanx> has not been consumed yet.</t>
</list></t>

<t>The first approval that satisfies all four is used. If it is single
use, its nonce is consumed. The set of consumed nonces is shared
across all actions and all executions (see item N5 of
<xref target="MUSUBI-NOTES"/>). If no approval satisfies all four: deviation
<spanx style="verb">conditional</spanx>. The value of <spanx style="verb">requires</spanx> in the conditional entry is
not read: every conditional action needs a counted approval.</t>

</section>
<section anchor="forged"><name>Forged Approvals</name>

<t>Every approval classified <spanx style="verb">forged</spanx> adds the deviation
<spanx style="verb">forged_approval</spanx>, whatever its action, whether or not the action was
needed.</t>

</section>
</section>
<section anchor="nenrin"><name>NENRIN Checks</name>

<section anchor="nenrin-cross"><name>Cross Check</name>

<t>Only when <spanx style="verb">nenrin_records</spanx> is a non-empty list. A walk that is not
strict (first paragraph of <xref target="triage"/>) is left out. Index every other
object in it by its record_sha256 (<xref target="digests"/>). For each execution
kept by <xref target="triage"/> and not rejected by <xref target="conformance"/>, left after
<xref target="collapse"/> (once per record_sha256), whatever <xref target="anchors"/> then
decides about its anchor (an orphaned execution is still read:
WRITTEN BEHAVIOUR, vector <spanx style="verb">synth_cited_walk_orphaned_execution</spanx>), look
up the walk whose
record_sha256 equals the execution's <spanx style="verb">nenrin_ref</spanx>. If found, and the
walk's <spanx style="verb">context</spanx> is an object whose <spanx style="verb">contract_sha256</spanx> is present, not
null, and not equal to csha: deviation
<spanx style="verb">evidence_names_other_contract</spanx>. If an execution's <spanx style="verb">nenrin_ref</spanx> names
a walk that was left out for not being strict: underspecified reason
<spanx style="verb">walk_not_strict</spanx>. The contractor chose what to cite, and leaving the
walk out silently could hide a deviation.</t>

<t>Records that were rejected or set aside are never checked here (item
N2 of <xref target="MUSUBI-NOTES"/>).</t>

</section>
<section anchor="nenrin-required"><name>Required Evidence</name>

<t>When <spanx style="verb">requirements.evidence</spanx> is <spanx style="verb">"nenrin_required"</spanx>, each accepted
execution whose <spanx style="verb">nenrin_ref</spanx> is not 64 lowercase hex gives the
deviation <spanx style="verb">evidence_missing</spanx>. This is applied after <xref target="verdict"/> found
<spanx style="verb">within_grant</spanx> or <spanx style="verb">deviation</spanx>.</t>

</section>
</section>
<section anchor="verdict"><name>Verdict</name>

<t><list style="symbols">
  <t><spanx style="verb">underspecified</spanx> if any underspecified reason was found
(<xref target="contract"/>, <xref target="view"/>, <xref target="triage"/>, <xref target="size-limit"/>, <xref target="anchors"/>,
<xref target="nenrin"/>). Then <spanx style="verb">deviations</spanx> is empty and status is
<spanx style="verb">undetermined</spanx>.</t>
  <t>Else <spanx style="verb">deviation</spanx> if any deviation was found (<xref target="conformance"/>,
<xref target="grant"/>, <xref target="nenrin"/>).</t>
  <t>Else <spanx style="verb">nothing_to_settle</spanx> if the event set is empty: no record was
read, so nothing was found within the grant or outside it. Status is
as <xref target="status"/> gives it (<spanx style="verb">final</spanx> with no orphaned record).</t>
  <t>Else <spanx style="verb">within_grant</spanx>.</t>
</list></t>

<t><spanx style="verb">within_grant</spanx> covers only the accepted records. One strictly signed
record whose anchor fails <xref target="anchor-block"/> (first, second or third
row), <xref target="anchor-proof"/> or <xref target="batch-leg"/> makes the whole settlement
<spanx style="verb">underspecified</spanx>. A record that is not strictly signed never does.</t>

</section>
<section anchor="written-behaviour"><name>Written Behaviour and Changes from Earlier Settle Versions</name>

<section anchor="wb-list"><name>Written Behaviour</name>

<t>These are what the reference still does. They are normative for core
v0 because the vectors pin them, or would.</t>

<texttable title="Written behaviour">
      <ttcol align='left'>item</ttcol>
      <ttcol align='left'>vector</ttcol>
      <c>An extra bad signature from a party refuses the contract even when that party also signed correctly</c>
      <c>none</c>
      <c>Revocations and acknowledgements cannot pass a typed batch leg (no kind)</c>
      <c>none</c>
      <c>An acknowledgement anchored before its revocation ends authority at the acknowledgement's height</c>
      <c>none</c>
      <c>An orphaned record is excluded without making the settlement underspecified, yet its claimed height still counts for status</c>
      <c><spanx style="verb">real_p31_anchor_names_other_height</spanx></c>
      <c>A header ending in a line feed passes rules 1 to 8 of <xref target="view-verify"/> and is refused only by rule 9 (<spanx style="verb">view_not_strict</spanx>); one in upper case is refused by both</c>
      <c><spanx style="verb">synth_view_header_trailing_newline</spanx></c>
      <c>A party-signed record that names this contract_sha256 with another contract_id or payload_digest is inconsistent (<xref target="binding"/>) and is never triaged, so a deviation it shows is not read</c>
      <c>none</c>
</texttable>

</section>
<section anchor="changes"><name>Changes in Settle v1.16</name>

<t>Each item below was written behaviour of settle v1.10 to v1.15;
<xref target="MUSUBI-NOTES"/> has the details under the item numbers given.</t>

<texttable title="Changes in settle v1.16">
      <ttcol align='left'>item</ttcol>
      <ttcol align='left'>before</ttcol>
      <ttcol align='left'>now</ttcol>
      <c>N2</c>
      <c>The NENRIN cross check read every bound execution, also rejected and unsigned ones: anyone could add a charge and forfeit a bond</c>
      <c>only records strictly signed and not rejected are read by any check</c>
      <c>N1</c>
      <c>A trailing line feed passed in block_hash, proof operands, headers, action names and approval nonces</c>
      <c>strict forms (<xref target="triage"/>, rule 9 of <xref target="view-verify"/>)</c>
      <c>N3, N6</c>
      <c><spanx style="verb">delegated_to</spanx> and <spanx style="verb">approvals</spanx> were not type checked; an object in <spanx style="verb">delegated_to</spanx> stopped the reference</c>
      <c><xref target="triage"/></c>
      <c>N4</c>
      <c>Floats and unsafe integers in records, views and walks were accepted</c>
      <c><xref target="triage"/>, rule 9 of <xref target="view-verify"/>, <xref target="nenrin-cross"/></c>
      <c>N6</c>
      <c>A revocation against a grant with no revocation block stopped the reference</c>
      <c>set aside</c>
      <c>N8</c>
      <c>The bond test used truthiness, so <spanx style="verb">[]</spanx> was no bond in Python and a bond in JavaScript</c>
      <c><spanx style="verb">bond_malformed</spanx></c>
      <c>N9</c>
      <c>Signatures were checked by OpenSSL alone</c>
      <c>strict signatures (<xref target="ed25519"/>)</c>
      <c>N10</c>
      <c>A copy with a junk signatures entry was a second body that blocked the verdict (fixed in v1.15)</c>
      <c>copies of one signed body collapse (<xref target="collapse"/>)</c>
      <c>N11</c>
      <c>An anchor below the checkpoint was dropped without a word; <spanx style="verb">parent_contract</spanx> and <spanx style="verb">requirements.evidence</spanx> were never read; an empty event set was <spanx style="verb">within_grant</spanx></c>
      <c><spanx style="verb">anchor_below_lower_bound</spanx>; <xref target="strict-terms"/>; <xref target="nenrin-required"/>; <spanx style="verb">nothing_to_settle</spanx></c>
</texttable>

<t>The vectors that pin each change are:</t>

<texttable title="Vectors for the changes in settle v1.16">
      <ttcol align='left'>item</ttcol>
      <ttcol align='left'>vectors</ttcol>
      <c>N2</c>
      <c><spanx style="verb">synth_nenrin_check_reads_rejected_record</spanx>, <spanx style="verb">synth_unsigned_copies_anchored_first</spanx></c>
      <c>N1</c>
      <c><spanx style="verb">real_p31_proof_operand_trailing_newline</spanx>, <spanx style="verb">real_p31_proof_operand_trailing_newline_beside_good</spanx>, <spanx style="verb">real_p31_block_hash_trailing_newline</spanx>, <spanx style="verb">synth_action_name_trailing_newline</spanx>, <spanx style="verb">synth_approval_nonce_trailing_newline</spanx>, <spanx style="verb">synth_view_header_trailing_newline</spanx></c>
      <c>N3, N6</c>
      <c><spanx style="verb">synth_delegated_to_object</spanx></c>
      <c>N4</c>
      <c><spanx style="verb">synth_float_in_signed_body</spanx>, <spanx style="verb">synth_unsafe_integer_in_signed_body</spanx>, <spanx style="verb">synth_unsigned_float_beside_good</spanx>, <spanx style="verb">synth_cited_walk_not_strict</spanx></c>
      <c>N6</c>
      <c><spanx style="verb">synth_revocation_irrevocable_grant</spanx></c>
      <c>N8</c>
      <c><spanx style="verb">synth_bond_empty_list</spanx>, <spanx style="verb">synth_bond_amount_string</spanx></c>
      <c>N9</c>
      <c><spanx style="verb">synth_signature_s_plus_l</spanx>, <spanx style="verb">synth_strict_signature_beside_malleated</spanx>, <spanx style="verb">real_p31_contract_bad_principal_signature</spanx></c>
      <c>N10</c>
      <c><spanx style="verb">real_p31_copy_with_junk_signature_entry</spanx></c>
      <c>N11</c>
      <c><spanx style="verb">real_p31_anchor_below_checkpoint</spanx>, <spanx style="verb">synth_parent_not_supplied</spanx>, <spanx style="verb">synth_parent_supplied_narrows</spanx>, <spanx style="verb">synth_parent_widened</spanx>, <spanx style="verb">synth_nenrin_required_without_ref</spanx>, <spanx style="verb">synth_nothing_to_settle</spanx></c>
</texttable>

</section>
<section anchor="clarifications"><name>Clarifications in Revisions 0.1 to 0.8 of the Source Text</name>

<t>None of the revisions below changed the reference. Each says what the
reference already did where the text had been silent, unclear or
wrong.</t>

<t>Revision 0.1. The first separately written implementation
(<xref target="impl-independent"/>, <xref target="ISSUE-49"/>) asked which reading was meant
(item N13 of <xref target="MUSUBI-NOTES"/>). For each, what a reader could take
the text to mean, what the reference does, and the vector:</t>

<t><list style="symbols">
  <t>An approval signed only under <spanx style="verb">signature</spanx> counts. The reference
verifies only <spanx style="verb">sig_b64</spanx>, so such an approval is <spanx style="verb">forged</spanx>
(<xref target="approvals"/>, <xref target="forged"/>). Vector
<spanx style="verb">synth_approval_signature_key_only</spanx>.</t>
  <t>A strict <spanx style="verb">sig_b64</spanx> makes a malleated <spanx style="verb">signature</spanx> beside it harmless.
The reference checks each key for strictness on its own; the body is
not strict (<xref target="triage"/>). Vector
<spanx style="verb">synth_approval_lax_signature_beside_good_sig_b64</spanx>.</t>
  <t>(Control.) <spanx style="verb">sig_b64</spanx> and <spanx style="verb">signature</spanx> with the same strict value: the
approval is counted. Vector
<spanx style="verb">synth_approval_signature_key_same_value</spanx>.</t>
</list></t>

<t>Revision 0.2, from the 25 implementation notes of the same
implementation (item N14 of <xref target="MUSUBI-NOTES"/>):</t>

<texttable title="Clarified in revision 0.2">
      <ttcol align='left'>note</ttcol>
      <ttcol align='left'>what the text now says</ttcol>
      <ttcol align='left'>vector</ttcol>
      <c>A1</c>
      <c><spanx style="verb">contract_sha256</spanx> is null when the contract is not a JSON object (<xref target="core-fields"/>)</c>
      <c><spanx style="verb">synth_contract_not_object</spanx></c>
      <c>A3</c>
      <c>an integer token longer than 4300 digits stops the computation, no settlement (<xref target="reading-json"/>)</c>
      <c>none</c>
      <c>A6</c>
      <c>domain normalization strips all leading and trailing whitespace (rule 4 of <xref target="contract-door"/>)</c>
      <c><spanx style="verb">synth_domain_leading_tab</spanx></c>
      <c>A7</c>
      <c><spanx style="verb">delegation</spanx> must carry <spanx style="verb">allowed</spanx>; <spanx style="verb">ordering</spanx> may be <spanx style="verb">{}</spanx> (rule 10 of <xref target="contract-door"/>)</c>
      <c><spanx style="verb">synth_delegation_empty_object</spanx>, <spanx style="verb">synth_ordering_empty_object</spanx></c>
      <c>A10</c>
      <c>parent narrowing stated in full (<xref target="parent-narrowing"/>)</c>
      <c><spanx style="verb">synth_parent_full_*</spanx> (25)</c>
      <c>A12, A15</c>
      <c><spanx style="verb">NaN</spanx>, <spanx style="verb">Infinity</spanx>, <spanx style="verb">-Infinity</spanx> are read as numbers, in records and in batch bytes (<xref target="reading-json"/>, <xref target="batch-leg"/>)</c>
      <c><spanx style="verb">synth_nan_in_signed_body</spanx>, <spanx style="verb">synth_batch_bytes_with_nan</spanx></c>
      <c>A14</c>
      <c>the cross check reads an execution whatever its anchor result (<xref target="nenrin-cross"/>)</c>
      <c><spanx style="verb">synth_cited_walk_orphaned_execution</spanx></c>
      <c>A16</c>
      <c><spanx style="verb">view_not_strict</spanx> only for a view that is an object with a <spanx style="verb">headers</spanx> list (rule 9 of <xref target="view-verify"/>)</c>
      <c><spanx style="verb">synth_view_not_an_object</spanx>, <spanx style="verb">synth_view_headers_not_a_list</spanx></c>
      <c>A20</c>
      <c>what "carries" means for each out of scope key (<xref target="scope"/>)</c>
      <c><spanx style="verb">synth_limits_null</spanx>, <spanx style="verb">synth_admission_null</spanx></c>
      <c>A21</c>
      <c>a floor whose mantissa is zero decodes to no target: both the door and the view refuse</c>
      <c><spanx style="verb">synth_floor_zero_mantissa</spanx></c>
      <c>A22</c>
      <c>a copy dropped by <xref target="collapse"/> no longer names its revocation (<xref target="revocation"/>)</c>
      <c><spanx style="verb">synth_ack_names_dropped_copy</spanx></c>
      <c>A24</c>
      <c>step 1 "no principal key" of <xref target="approvals"/> cannot apply once <xref target="contract-door"/> accepts</c>
      <c>none</c>
</texttable>

<t>Revision 0.3, from 10 more notes of the same implementation (item N15
of <xref target="MUSUBI-NOTES"/>):</t>

<texttable title="Clarified in revision 0.3">
      <ttcol align='left'>note</ttcol>
      <ttcol align='left'>what the text now says</ttcol>
      <ttcol align='left'>vector</ttcol>
      <c>B2</c>
      <c>non-finite numbers are written <spanx style="verb">NaN</spanx>, <spanx style="verb">Infinity</spanx>, <spanx style="verb">-Infinity</spanx> in canonical form (item 6 of <xref target="canonical"/>)</c>
      <c><spanx style="verb">synth_infinity_in_signed_body</spanx>, <spanx style="verb">synth_negative_infinity_in_signed_body</spanx></c>
      <c>B7</c>
      <c>only a well formed approver list is carried; <spanx style="verb">{}</spanx>, <spanx style="verb">""</spanx>, <spanx style="verb">0</spanx>, null and <spanx style="verb">[]</spanx> refuse in <xref target="contract-door"/> (<xref target="scope"/>, rule 10 of <xref target="contract-door"/>)</c>
      <c><spanx style="verb">synth_approvers_object</spanx>, <spanx style="verb">synth_approvers_string</spanx>, <spanx style="verb">synth_approvers_zero</spanx></c>
      <c>B5</c>
      <c>rule 14 of <xref target="parent-narrowing"/> applies when the parent pins approvers and the child has none</c>
      <c><spanx style="verb">synth_parent_approvers_child_drops</spanx></c>
      <c>C3</c>
      <c>rule 14 of <xref target="parent-narrowing"/> compares each approver entry as canonical bytes, so the order of <spanx style="verb">actions</spanx> inside an entry counts; core v0 cannot reach it</c>
      <c>none (out of scope)</c>
      <c>B8</c>
      <c>exactly three spellings; <spanx style="verb">nan</spanx> and <spanx style="verb">+Infinity</spanx> stop the reader; <spanx style="verb">1e400</spanx> is an infinity (<xref target="reading-json"/>)</c>
      <c>none (no settlement to compare)</c>
</texttable>

<t>Revision 0.4 (item N17 of <xref target="MUSUBI-NOTES"/>) checked which
underspecified reasons the vectors actually produce. <xref target="exercise"/> has
the result.</t>

<t>Revisions 0.5 to 0.8:</t>

<t><list style="symbols">
  <t>0.5 (item N18): two statements about the reference were wrong. The
file list named the copy of agreement_verify.py vendored into
another package instead of the copy the reference imports (this
document already gave the right one), and the source text said
settle_v1_15.py gives the same core fields outside a listed set of
vectors, which it does not (<xref target="not-established"/>).</t>
  <t>0.6 (item N20): a strictly signed record whose body is not strict is
set aside as well as adding its reason (<xref target="triage"/>); failing
<xref target="contract-door"/> with the parent supplied adds only
<spanx style="verb">parent_narrowing_failed</spanx> (<xref target="strict-terms"/>). Both say what the
vectors already expected.</t>
  <t>0.7 (item N21): the same-block order is not a signed fact
(<xref target="same-block"/>, <xref target="sec-unsigned"/>).</t>
  <t>0.8 (item N22): two files the reference imports changed after
revision 0.4, in layers outside settle core; on the 128 vectors the
complete output of the reference is the same before and after. The
file list now names its commit (<xref target="impl-ref"/>).</t>
</list></t>

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

<section anchor="vectors-contents"><name>Contents</name>

<t>The vectors are published beside the source text of this document,
unchanged since commit dd64d0e2 (revision 0.4) and cited here at
commit d7f5a91e <xref target="MUSUBI-VECTORS"/>, in the folder
settle-core-v0/vectors/ under
<eref target="https://github.com/ogasurfproject-jpg/horizon-shield/tree/d7f5a91e/workers/hs-ledger/nenrin/musubi-v0/settle-core-v0">https://github.com/ogasurfproject-jpg/horizon-shield/tree/d7f5a91e/workers/hs-ledger/nenrin/musubi-v0/settle-core-v0</eref>.
They are not reproduced here.</t>

<t>There are 128 vectors: 22 real and 106 synthetic. Their expected
verdicts are <spanx style="verb">within_grant</spanx> for 38, <spanx style="verb">deviation</spanx> for 21,
<spanx style="verb">nothing_to_settle</spanx> for 8 and <spanx style="verb">underspecified</spanx> for 61. Their expected
statuses are <spanx style="verb">final</spanx> for 65, <spanx style="verb">provisional</spanx> for 2 and <spanx style="verb">undetermined</spanx>
for 61.</t>

<t>The 76 vectors of the first release are unchanged, byte for byte.
Revision 0.1 of the source text added 3, revision 0.2 added 38,
revision 0.3 added 6 and revision 0.4 added 5 (<xref target="clarifications"/>,
<xref target="exercise"/>). All added vectors are synthetic.</t>

<t>The folder holds one subfolder per vector:</t>

<t><list style="symbols">
  <t><spanx style="verb">contract.json</spanx>, <spanx style="verb">view.json</spanx>, <spanx style="verb">events/eNN.json</spanx> (the events, in any
order), <spanx style="verb">nenrin/nNN.json</spanx> when the vector supplies walks,
<spanx style="verb">parent.json</spanx> when it supplies a parent contract,</t>
  <t><spanx style="verb">expected.json</spanx>: the core fields (<xref target="core-fields"/>).</t>
</list></t>

<t>The index vectors/vectors.json lists, for each vector, its id, its
family (real or synthetic), the section of the source text it tests,
a description, the expected verdict, status and code sets, and the
sha256 of each of its files. It also lists the four synthetic public
keys.</t>

<t>Real vectors use the real records, contracts and Bitcoin headers of
two settled engagements, with one change each (the record bodies
cannot change without breaking the real Bitcoin anchors).
<spanx style="verb">real_p31_baseline</spanx> is the first MUSUBI contract settled with no
party from the project that publishes the reference
(agent-passport.org and kuangmi-bit.github.io, Bitcoin block 970480),
with its 359 header view.</t>

<t>Synthetic vectors use keys named synthetic-principal,
synthetic-contractor, synthetic-witness and synthetic-stranger,
derived from fixed seeds, and a synthetic header chain at regtest
difficulty (<spanx style="verb">max_target_bits</spanx> <spanx style="verb">207fffff</spanx>, checkpoint height 800001).
The public keys are:</t>

<texttable title="Synthetic keys">
      <ttcol align='left'>name</ttcol>
      <ttcol align='left'>public_key_ed25519_b64</ttcol>
      <c>synthetic-principal</c>
      <c><spanx style="verb">rrXBDf5mF249t6wdmMvKtkcBXZmVVfcfYFBBjIpSttE=</spanx></c>
      <c>synthetic-contractor</c>
      <c><spanx style="verb">hl3xmxz86HFYXTczn/5HZw4Jkb3i0nL7iig/2GXZrcs=</spanx></c>
      <c>synthetic-witness</c>
      <c><spanx style="verb">gMKIYPPIjG6r9mt8ybr3dIGGm6LYxkngSym9ltvHNtY=</spanx></c>
      <c>synthetic-stranger</c>
      <c><spanx style="verb">YmzNu/v6K9wUOtcmnssHABVLBDuLBqMcZnM0NL+32rU=</spanx></c>
</texttable>

<t>gen_vectors.py regenerates every vector from the two real inputs and
the reference; it is deterministic. run_reference.py runs the
reference over every vector and checks every file hash and every core
field. exercise_inputs.py <xref target="MUSUBI-EXERCISE"/> builds in memory the
inputs the vector layout cannot carry (events that are not a list,
10001 records) and the inputs of the four rows of
<xref target="settleable-terms"/> that cannot fire, runs the reference on them,
and compares its lines with EXERCISE.txt (<spanx style="verb">--check</spanx>).</t>

</section>
<section anchor="projection"><name>The Core-Field Projection</name>

<t>expected.json holds exactly the eight core fields of <xref target="core-fields"/>
and nothing else. The reference's full settlement object is projected
onto them as follows:</t>

<t><list style="symbols">
  <t><spanx style="verb">contract_sha256</spanx>, <spanx style="verb">verdict</spanx>, <spanx style="verb">status</spanx> and <spanx style="verb">bond_outcome</spanx> are copied.</t>
  <t><spanx style="verb">deviation_codes</spanx> and <spanx style="verb">underspecified_reasons</spanx> are the sorted sets
of the codes in the reference's <spanx style="verb">deviations</spanx> and <spanx style="verb">underspecified</spanx>
lists. Repetitions are removed.</t>
  <t><spanx style="verb">event_set</spanx> keeps, for each accepted record in the order of
<xref target="event-order"/>, only <spanx style="verb">kind</spanx>, <spanx style="verb">sha256</spanx> and <spanx style="verb">height</spanx>.</t>
  <t><spanx style="verb">dispositions</spanx> is one object from record_sha256 to one disposition
code (<xref target="dispositions"/>), with keys sorted. A record that would
receive two different codes is an error of the projection.</t>
</list></t>

<t>An implementation conforms on a vector when its eight core fields are
equal to expected.json as JSON values. The informative fields
(<xref target="informative-fields"/>) are not compared.</t>

</section>
<section anchor="exercise"><name>Exercised and Unexercised Rejection Paths</name>

<t>Revision 0.4 of the source text checked every underspecified reason
against the expected results of the vectors (item N17 of
<xref target="MUSUBI-NOTES"/>). It was prompted by
<xref target="I-D.he-agentproto-verifier-evidence"/>, under which a rejecting path
counts as exercised only when an identified input drove it.</t>

<t>All ten deviation codes (<xref target="codes"/>) are produced by at least one
vector. Of the 28 underspecified reasons, the 123 vectors of revision
0.3 produced 18 and did not produce 10. Each of the ten was then
driven through the reference. For each, what was missing, and the
vector or exercise that now drives it:</t>

<t><list style="symbols">
  <t><spanx style="verb">grant_action_name_invalid</spanx>: no vector; <xref target="contract-door"/> accepts any
non-empty string, and <xref target="settleable-terms"/> applies the name pattern.
Vector <spanx style="verb">synth_grant_action_name_invalid</spanx>.</t>
  <t><spanx style="verb">too_many_witnesses</spanx>: no vector; 33 witnesses refuse, 32 are
accepted. Vectors <spanx style="verb">synth_too_many_witnesses</spanx> and
<spanx style="verb">synth_witnesses_32</spanx>.</t>
  <t><spanx style="verb">ack_window_missing</spanx>: no vector; <xref target="contract-door"/> allows
<spanx style="verb">delivery_ack</spanx> without <spanx style="verb">ack_window</spanx>. Vector
<spanx style="verb">synth_delivery_ack_without_window</spanx>.</t>
  <t><spanx style="verb">finality_policy_missing</spanx>: no vector; <xref target="contract-door"/> allows
<spanx style="verb">finality</spanx> without <spanx style="verb">depth</spanx>. Vector <spanx style="verb">synth_finality_without_depth</spanx>.</t>
  <t><spanx style="verb">input_not_settleable</spanx>: events that are not a list cannot be written
as event files. <spanx style="verb">exercise_inputs.py</spanx> cases E1 to E3.</t>
  <t><spanx style="verb">input_too_large</spanx> (records): 10001 records would be 10001 files; the
count is after <xref target="identical-bytes"/>. <spanx style="verb">exercise_inputs.py</spanx> cases E4 to
E6.</t>
  <t><spanx style="verb">input_too_large</spanx> (headers): more than 200000 verified headers. None:
not exercised.</t>
  <t><spanx style="verb">authorized_actions_missing</spanx>, <spanx style="verb">witness_key_invalid</spanx>,
<spanx style="verb">revocation_policy_not_recomputable</spanx>, <spanx style="verb">bad_expiry_height</spanx>: cannot
fire, because <xref target="contract-door"/> refuses first
(<xref target="settleable-terms"/>). <spanx style="verb">exercise_inputs.py</spanx> cases D1 to D6 show
<spanx style="verb">contract_not_verified</spanx>.</t>
</list></t>

<t>So the 128 vectors produce 22 of the 28 underspecified reasons. Four
reasons are reachable and now have vectors; <spanx style="verb">synth_witnesses_32</spanx>
(<spanx style="verb">within_grant</spanx>) pins the boundary beside <spanx style="verb">synth_too_many_witnesses</spanx>.</t>

<t>Two reasons are reachable only through inputs the vector layout cannot
carry, and exercise_inputs.py <xref target="MUSUBI-EXERCISE"/> drives them in
memory. Cases E1 to E3 pass events that are an object, null and the
string <spanx style="verb">"[]"</spanx>, and each gives <spanx style="verb">input_not_settleable</spanx>. Case E4 passes
10001 distinct records and gives <spanx style="verb">input_too_large</spanx>; case E5 passes
10000 distinct records and does not give it (the limit is more than
10000); case E6 passes 10001 copies of one record and does not give
it either, because identical bytes are one record
(<xref target="identical-bytes"/>) and are counted once (<xref target="size-limit"/>). Driving
these inputs is how the last point was found; <xref target="size-limit"/> did not
say it before revision 0.4. The headers branch of <spanx style="verb">input_too_large</spanx>
(<xref target="view-verify"/>, more than 200000 verified headers) is still not
exercised by any vector or exercise.</t>

<t>Four rows of <xref target="settleable-terms"/> can never produce their reason in
core v0: <spanx style="verb">authorized_actions_missing</spanx>, <spanx style="verb">witness_key_invalid</spanx>,
<spanx style="verb">revocation_policy_not_recomputable</spanx> and <spanx style="verb">bad_expiry_height</spanx>. Each
row describes an input that rules 9 or 10 of <xref target="contract-door"/>
already refuse, and <xref target="settleable-terms"/> applies only after
<xref target="contract-door"/> accepts. Cases D1 to D6 run those inputs (an
<spanx style="verb">authorized_actions</spanx> that is the string <spanx style="verb">"read"</spanx>, an absent
<spanx style="verb">authorized_actions</spanx>, a witness key that decodes to 31 bytes, an
<spanx style="verb">effective_at</spanx> of <spanx style="verb">"immediately"</spanx>, an <spanx style="verb">expiry_height</spanx> of -1, an
<spanx style="verb">expiry_height</spanx> that is the string <spanx style="verb">"800010"</spanx>) and each gives
<spanx style="verb">contract_not_verified</spanx>. The rows are kept so that no code changes
meaning.</t>

<t>Each line of EXERCISE.txt names the case, the input, what the text
says, and the verdict, status and codes the reference returns.
<spanx style="verb">python3 exercise_inputs.py --check</spanx> recomputes the lines and compares
them with EXERCISE.txt byte for byte. These lines are a record of
which input drove which outcome. They are not vectors and have no
expected.json (<xref target="projection"/>).</t>

<t>Every unexercised path was on the refusal side. A verifier that never
returns <spanx style="verb">underspecified</spanx> for a malformed policy goes on to compute a
verdict it has no basis for, so these are the paths worth pinning.</t>

</section>
<section anchor="disagreement"><name>Reporting a Disagreement</name>

<t>A disagreement is valuable. It means either the text, the reference
or the implementation is wrong, and only a comparison finds out
which.</t>

<t><list style="numbers" type="1">
  <t>Run the implementation over the vectors. For each vector, compare
its core fields (<xref target="core-fields"/>) with <spanx style="verb">expected.json</spanx>.</t>
  <t>Run <spanx style="verb">python3 run_reference.py</spanx> from the folder holding the source
text, to confirm the reference still gives the expected values on
the same machine.</t>
  <t>For each vector with a disagreement, write down: the vector id;
the core field; the expected value and the implementation's; the
section of this document followed; and, if possible, the step
where the computation first diverged (for example "conformance: the
name was treated as nonconforming").</t>
  <t>Say whether the vector is listed in <xref target="written-behaviour"/>. If it
is, say whether the behaviour should change.</t>
  <t>For a disagreement on an input that is not a vector, attach the
input files (contract, events, view, walks) so the reference can be
run on them.</t>
  <t>Open an issue on the repository that publishes the source text (at
the time of writing github.com/ogasurfproject-jpg/horizon-shield)
titled <spanx style="verb">settle core v0 disagreement: &lt;vector id&gt;</spanx>, with the above.</t>
</list></t>

<t>An implementer should not change an implementation to match a vector
believed to be wrong without saying so. A silent match hides a
defect. A reported disagreement is resolved by changing this text,
the reference, or the vector, and the change is recorded with a new
version of this document.</t>

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

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

<t>This section records the status of known implementations of the
protocol defined by this specification at the time of posting of this
Internet-Draft, and is based on a proposal described in <xref target="RFC7942"/>.
The description of implementations in this section is intended to
assist the IETF in its decision processes in progressing drafts to
RFCs. Please note that the listing of any individual implementation
here does not imply endorsement by the IETF. Furthermore, no effort
has been spent to verify the information presented here that was
supplied by IETF contributors. This is not intended as, and must not
be construed to be, a catalog of available implementations or their
features. Readers are advised to note that other implementations may
exist.</t>

<t>According to <xref target="RFC7942"/>, "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. It is up to the individual working groups to use this
information as they see fit".</t>

<t>The sections below separate implementations written by others
(<xref target="impl-independent"/>), runs of the reference by others
(<xref target="impl-reruns"/>), and the reference itself (<xref target="impl-ref"/>). A
public table of the same rows, with a link for each, is kept at
<xref target="INTEROP-TABLE"/>.</t>

<section anchor="impl-independent"><name>Implementations by Others</name>

<t>Two implementations of settle core v0 by authors other than the
publisher of the reference agree with it on all 128 vectors, on the
eight core fields (<xref target="core-fields"/>). Neither was written from the
source text alone: one also read NOTES.md, and the other had the
expected outputs and let them decide where the text could be read two
ways. The Independence entries below say which. No implementation has
yet been written from the text and the vector inputs with the expected
outputs withheld and its code fixed by hash before comparison; that
test is open. The vectors have not changed since
revision 0.4; revisions 0.5 to 0.8 of the source text changed no rule,
reason or vector (<xref target="changes-since-01"/>).</t>

<section anchor="impl-aeoess"><name>aeoess/musubi-settle-core-check</name>

<dl>
  <dt>Organization:</dt>
  <dd>
    <t>aeoess (Agent Passport System).</t>
  </dd>
  <dt>Implementation:</dt>
  <dd>
    <t>musubi-settle-core-check <xref target="AEOESS-CHECK"/>, written from
SETTLE_CORE_v0.md and NOTES.md alone, with an AI coding agent under
its author's direction, from an input copy without the expected
outputs.</t>
  </dd>
  <dt>Maturity and coverage:</dt>
  <dd>
    <t>The eight core fields on every vector.</t>
  </dd>
  <dt>Implementation experience:</dt>
  <dd>
    <t>Updated to revision 0.4 by its author (commit 53cfafb), it agrees
with all 128 vectors with no field left unassessed (item N19 of
<xref target="MUSUBI-NOTES"/>). Its earlier runs (76, 117 and 123 vectors) and
the notes that led to revisions 0.1 to 0.3 are recorded in items
N13 to N16.</t>
  </dd>
  <dt>Independence:</dt>
  <dd>
    <t>Written without the expected outputs, but from NOTES.md as well as
the source text. Its author declared that, and the public tally
<xref target="ERRATA-K001"/> does not count it as independent for that reason.
Run by its author, who maintains a party to the contract behind
<spanx style="verb">real_p31_baseline</spanx> (<xref target="vectors-contents"/>).</t>
  </dd>
  <dt>Licensing:</dt>
  <dd>
    <t>Apache-2.0.</t>
  </dd>
  <dt>Contact:</dt>
  <dd>
    <t>aeoess, through <xref target="ISSUE-49"/>.</t>
  </dd>
  <dt>Last updated:</dt>
  <dd>
    <t>2026-10-22</t>
  </dd>
</dl>

</section>
<section anchor="impl-kuangmi"><name>kuangmi-bit/nenrin-independent-verifiers</name>

<dl>
  <dt>Organization:</dt>
  <dd>
    <t>kuangmi-bit.</t>
  </dd>
  <dt>Implementation:</dt>
  <dd>
    <t>The settle-core-v0 directory of nenrin-independent-verifiers
<xref target="KUANGMI-CHECK"/>, at commit bbe455c, in Python. Written from
revision 0.5 of the source text and the published vectors only,
without reading the reference or musubi-settle-core-check. Standard
library at run time; Ed25519 through the Python package cryptography
when present and through its own RFC 8032 verifier otherwise.</t>
  </dd>
  <dt>Maturity and coverage:</dt>
  <dd>
    <t>The eight core fields on every vector.</t>
  </dd>
  <dt>Implementation experience:</dt>
  <dd>
    <t>Agrees with all 128 vectors, including <spanx style="verb">real_p31_baseline</spanx>,
<spanx style="verb">real_cross_record_names_other_contract</spanx> and the 25 parent vectors.
Its author also ran the reference on the same machine and got 128 of
128. The publisher of the reference reran it at bbe455c and got the
same. Its README lists the readings where the text could be read two
ways and the vectors decided; revision 0.6 states two of those
places in the text, and neither changed a vector (item N20 of
<xref target="MUSUBI-NOTES"/>).</t>
  </dd>
  <dt>Independence:</dt>
  <dd>
    <t>Written without reading the reference or musubi-settle-core-check,
as its author records (item N20 of <xref target="MUSUBI-NOTES"/>). The expected
outputs were available to it and settled the readings listed in its
README, so it is not a test of the text without the vectors. It is
the one implementation that <xref target="ERRATA-K001"/> counts as independent
under that tally's rule, which allows the vectors.</t>
  </dd>
  <dt>Licensing:</dt>
  <dd>
    <t>MIT.</t>
  </dd>
  <dt>Contact:</dt>
  <dd>
    <t>kuangmi-bit, through <xref target="ISSUE-49"/>.</t>
  </dd>
  <dt>Last updated:</dt>
  <dd>
    <t>2026-10-22</t>
  </dd>
</dl>

</section>
</section>
<section anchor="impl-reruns"><name>Runs by Others</name>

<t>These are not further implementations of this document. They are
outside runs of the reference, or outside checks of records that a
settlement reads, listed because each was done on the reader's own
machine from published bytes.</t>

<dl>
  <dt>Recomputation of a live settlement:</dt>
  <dd>
    <t>Poke-nushi recomputed the settlement of the 22 October run of the
cA2A companion pilot (horizon-shield Issue #51, set 2) from the
published bundle at commit b85029de, with the companion's settler
(pilot_v0.py, which reads records of the kinds this document
defines but is not settle core v0 itself) and ca2a-runtime 0.4.0,
and reproduced the published output sha256. The
same reader checked the signatures and the OpenTimestamps proof of
the log checkpoint, and rebuilt the header view from Blockstream and
mempool.space headers up to block 972564: the verdicts did not
change and only <spanx style="verb">anchor_depth</spanx> moved, from 9 to 14 <xref target="RUN-POKE"/>.
This shows which part of a settlement rests on the reader's header
range, a point that applies to settle core as well (<xref target="horizon"/>).</t>
  </dd>
  <dt>Byte identity of the audits a settlement names:</dt>
  <dd>
    <t>In the same run, aeoess, which ran the same calls through its own
row of the testbed (Agent Passport System), reported that the A and B audit files of its
run are byte identical to those of ours (sha256 <spanx style="verb">c2920477...</spanx>,
1,532 bytes, and <spanx style="verb">40bc2a46...</spanx>, 1,101 bytes) <xref target="RUN-AEOESS"/>.</t>
  </dd>
  <dt>Acceptance of the executions:</dt>
  <dd>
    <t>babyblueviper1 reported issuing four acceptance records for the
same run, A and B of each of the two rows, and that A passes all four
criteria and B fails three, matching the expected A accept and B
reject <xref target="RUN-BBV"/>. The records themselves are not public; their
author will publish them once everyone in the run agrees.</t>
  </dd>
  <dt>A neighbouring record format:</dt>
  <dd>
    <t>Pico, the AI agent that maintains Agent Errata, reproduced its part
of a decision record exchange (E6 of the agent governance vocabulary
boundary map) on fresh clones: 12 of 12 cases agree with the record
published by this document's author <xref target="RUN-PICO"/>. This does not
exercise settle core; it is listed because it uses the same
publish-and-recompute procedure as <xref target="disagreement"/>.</t>
  </dd>
</dl>

</section>
<section anchor="impl-ref"><name>Reference Implementation</name>

<dl>
  <dt>Organization:</dt>
  <dd>
    <t>The HORIZONs Co., Ltd.</t>
  </dd>
  <dt>Implementation:</dt>
  <dd>
    <t>settle_v1_16.py (output schema a2a-settlement-v1.16) and the modules
it imports, at commit d7f5a91e <xref target="MUSUBI-REF"/>. It is called as a
library, <spanx style="verb">settle_v1_16.settle_v1_16(contract, events, view,
parent=..., nenrin_records=...)</spanx>. Its command line (<spanx style="verb">--settle</spanx>,
<spanx style="verb">--event</spanx>, <spanx style="verb">--view</spanx>, <spanx style="verb">--nenrin</spanx>, <spanx style="verb">--parent</spanx>) first checks each
view's strict form and runs fork choice, and for a view that does
not pass prints why and writes no settlement. The vectors use the
library.</t>
  </dd>
  <dt>Description:</dt>
  <dd>
    <t>The implementation from which this document was written. It covers
all of settle core v0 and the gates outside its scope (<xref target="scope"/>).</t>
  </dd>
  <dt>Maturity:</dt>
  <dd>
    <t>Reference. Its behaviour defines the expected values of the vectors.</t>
  </dd>
  <dt>Coverage:</dt>
  <dd>
    <t>All of settle core v0. The canonical form (<xref target="canonical"/>) is also
implemented in JavaScript (canonical_v0.mjs), which covers only that
section.</t>
  </dd>
  <dt>Licensing:</dt>
  <dd>
    <t>MIT.</t>
  </dd>
  <dt>Implementation experience:</dt>
  <dd>
    <t>run_reference.py reports "128/128 vectors agree with the reference"
with Python 3.14.7 and the Python package cryptography 50.0.1, and
<spanx style="verb">exercise_inputs.py --check</spanx> reports "EXERCISE.txt agrees"
(<xref target="exercise"/>).</t>
  </dd>
  <dt>Contact:</dt>
  <dd>
    <t>Toshikatsu Oga, thehorizon.nnovation@icloud.com</t>
  </dd>
  <dt>Last updated:</dt>
  <dd>
    <t>2026-10-22</t>
  </dd>
</dl>

<t>Two imported files changed after draft -01 (commit dd64d0e2):
admission_verify_v0.py, which gained a third record version for an
admission layer outside settle core, and recovery_verify.py, which
gained the v2.4 witness draw of the recovery layer. On the 128 vectors
the complete output of the reference, not only the core fields, is the
same at dd64d0e2 and at 9ab4a004, and the commit d7f5a91e changed only the text. The reference, as run for the vectors,
consists of these files (first 16 hex digits of each file's sha256):</t>

<texttable title="Reference files">
      <ttcol align='left'>file</ttcol>
      <ttcol align='left'>sha256 prefix</ttcol>
      <c>settle_v1.py</c>
      <c><spanx style="verb">0e51350331c8931c</spanx></c>
      <c>settle_v1_1.py</c>
      <c><spanx style="verb">a2391a5db199bcda</spanx></c>
      <c>settle_v1_2.py</c>
      <c><spanx style="verb">6c674fd54a1a5c89</spanx></c>
      <c>settle_v1_3.py</c>
      <c><spanx style="verb">17119bbc7802647f</spanx></c>
      <c>settle_v1_4.py</c>
      <c><spanx style="verb">ef3779d05fc98e40</spanx></c>
      <c>settle_v1_5.py</c>
      <c><spanx style="verb">f9b313566713cdc4</spanx></c>
      <c>settle_v1_6.py</c>
      <c><spanx style="verb">6752a748ed7b6e3b</spanx></c>
      <c>settle_v1_7.py</c>
      <c><spanx style="verb">878a3a3697775d3a</spanx></c>
      <c>settle_v1_8.py</c>
      <c><spanx style="verb">fe61f67c1593c776</spanx></c>
      <c>settle_v1_9.py</c>
      <c><spanx style="verb">7a84302be1ec38a1</spanx></c>
      <c>settle_v1_10.py</c>
      <c><spanx style="verb">34beeebaa1397059</spanx></c>
      <c>settle_v1_11.py</c>
      <c><spanx style="verb">fb03687cbacd2713</spanx></c>
      <c>settle_v1_12.py</c>
      <c><spanx style="verb">40a8fbb82a8e7680</spanx></c>
      <c>settle_v1_13.py</c>
      <c><spanx style="verb">eb02b3a6544b1bf1</spanx></c>
      <c>settle_v1_14.py</c>
      <c><spanx style="verb">7d0704fa060adafd</spanx></c>
      <c>settle_v1_15.py</c>
      <c><spanx style="verb">a2be5de8ba60656e</spanx></c>
      <c>settle_v1_16.py</c>
      <c><spanx style="verb">ec332ecb387e9b56</spanx></c>
      <c>admission_verify_v0.py</c>
      <c><spanx style="verb">4bc36aa7a34ec024</spanx></c>
      <c>agreement_verify.py</c>
      <c><spanx style="verb">fd8c34ce8a11cf42</spanx></c>
      <c>anchor_compose.py</c>
      <c><spanx style="verb">a661f673c05dbe6e</spanx></c>
      <c>approval_v3.py</c>
      <c><spanx style="verb">e8dde985dbe6fbf4</spanx></c>
      <c>clause_eval_v0.py</c>
      <c><spanx style="verb">fee48c3a66c28fe1</spanx></c>
      <c>contract_v0.py</c>
      <c><spanx style="verb">211a568783705e11</spanx></c>
      <c>convergence_v0.py</c>
      <c><spanx style="verb">65a267380fa623f5</spanx></c>
      <c>corroboration_v0.py</c>
      <c><spanx style="verb">62ae1d6c27a92228</spanx></c>
      <c>independence_v0.py</c>
      <c><spanx style="verb">50964883c27896de</spanx></c>
      <c>recovery_verify.py</c>
      <c><spanx style="verb">fd4c93f015f6b495</spanx></c>
      <c>spine_verify.py</c>
      <c><spanx style="verb">ad2076d49be6763e</spanx></c>
      <c>terms_v0.py</c>
      <c><spanx style="verb">6532d5c6160a3974</spanx></c>
</texttable>

</section>
</section>
<section anchor="related"><name>Relationship to Other Work</name>

<section anchor="related-audit"><name>The Agent Auditing Architecture</name>

<t><xref target="I-D.kuehlewind-audit-architecture"/> describes roles and four record
types for auditing agents across domains. Its Auditor "determines
whether recorded behaviour matched the User's intent and the
authorization in force at the time", without trusting the Agent. The
work items it proposes specify record formats, a profile of SCITT and
a query interface; none of them specifies the procedure by which an
Auditor reaches that determination, so that two Auditors holding the
same records reach the same one. This document specifies such a
procedure for one record set, with test vectors, and is offered as an
input to that question, not as a replacement for the architecture's
records.</t>

<texttable title="Roles">
      <ttcol align='left'>architecture role</ttcol>
      <ttcol align='left'>in this document</ttcol>
      <c>User</c>
      <c>the principal, who signs the contract and its grant</c>
      <c>Agent</c>
      <c>the contractor, which signs execution records; a witness named in the grant</c>
      <c>Sub-Agent</c>
      <c>a party to whom work may be delegated under <spanx style="verb">grant.delegation</spanx></c>
      <c>Audit Recorder, Auditing Service</c>
      <c>no separate role: each record is signed by the party that acted (<xref target="sec-unsigned"/>)</c>
      <c>Audit Store</c>
      <c>any source of records; a settler trusts none of them</c>
      <c>Transparency Log</c>
      <c>not required by core v0; see <xref target="related-scitt"/></c>
      <c>Auditor</c>
      <c>the settler</c>
</texttable>

<texttable title="Record types">
      <ttcol align='left'>architecture record type</ttcol>
      <ttcol align='left'>in this document</ttcol>
      <c>Delegation Record</c>
      <c>the contract's grant: authorized, prohibited and conditional actions, delegation, expiry and revocation policy, signed by both parties (<xref target="contract"/>)</c>
      <c>Action Record</c>
      <c>an execution record, <spanx style="verb">a2a-execution-v0</spanx></c>
      <c>Authorization Transition Record</c>
      <c>a revocation, <spanx style="verb">a2a-revocation-v0</spanx>, and its acknowledgement, <spanx style="verb">a2a-revocation-ack-v0</spanx>; a principal's approval carried by an execution, and its consumption when single use (<xref target="approvals"/>); expiry by height (<xref target="expiry"/>)</c>
      <c>Interaction Record</c>
      <c>none; settlement reads no conversation</c>
</texttable>

<t>The two also differ in ways a profile would have to settle. The
records here are JSON with this document's canonical form and
detached Ed25519 signatures, where the architecture asks for CBOR/COSE
or JSON/JWS. Parties are identified by raw Ed25519 keys, not by
workload identity credentials. Records are linked by the contract and
by digests, not by a shared audit context identifier. And a settler
reads every record in full: selective disclosure, which the
architecture treats as a core design consideration, is not addressed
here.</t>

</section>
<section anchor="related-scitt"><name>Transparency: SCITT</name>

<t>SCITT <xref target="RFC9943"/> registers signed statements with a Transparency
Service, whose receipts show that a statement existed and in what
order, and prevent an inconsistent history from being shown to
different readers. This document does not use a Transparency Service.
It orders records by Bitcoin anchors <xref target="OPENTIMESTAMPS"/>, which bound
when a record existed, but it does not prevent a holder from
withholding records (<xref target="sec-unsigned"/>).</t>

<t>The two are meant to be combined, not substituted. Records can be
registered as signed statements, so that a receipt gives existence and
order within a Transparency Service; a Bitcoin anchor of the record,
or of the service's checkpoint, then adds evidence of time that does
not rest on any one Transparency Service. A profile that carries
SCITT receipts as anchors is not defined in core v0.</t>

</section>
<section anchor="related-authz"><name>Authorization: GNAP and OAuth</name>

<t>GNAP <xref target="RFC9635"/>, and OAuth with token exchange <xref target="RFC8693"/> and its
<spanx style="verb">act</spanx> claim for delegation, define how a party obtains authorization
and how a delegation is carried in a token. They do not define how a
third party decides, after the fact, whether a recorded action stayed
within that authorization. Settlement does the second, over a grant
both parties signed. A profile could take the grant from a GNAP access
right, or from an OAuth access token's scope, <spanx style="verb">authorization_details</spanx>
<xref target="RFC9396"/> and <spanx style="verb">act</spanx> chain, instead of from <spanx style="verb">a2a-contract-v0</spanx>; such a
profile is not defined in core v0.</t>

</section>
<section anchor="related-drafts"><name>Other Internet-Drafts</name>

<t><list style="symbols">
  <t><xref target="I-D.gilda-audit-agent-audit-record"/> defines a record format for
an agent's authorization decisions. Such records are inputs of the
kind settlement evaluates.</t>
  <t><xref target="I-D.he-agentproto-verifier-evidence"/> defines evidence of what a
verifier exercised and how completely. <xref target="exercise"/> and the vectors
of this document are among the material it discusses.</t>
  <t><xref target="I-D.kroehl-agentic-trust-aae"/> defines a machine-evaluable
authorization envelope, a candidate form for the grant a settler
reads.</t>
  <t><xref target="I-D.gravit-gevp"/> defines verification records of its own. It and
this document are separate rows of the same testbed (<xref target="ISSUE-55"/>),
answering the same questions on the same traces.</t>
  <t><xref target="I-D.birkholz-verifiable-agent-conversations"/> defines records of
agent conversations, the architecture's Interaction Records, which
settlement does not read.</t>
</list></t>

<t>None of these defines a procedure for reaching an Auditor's
determination from a set of records, which is the part this document
specifies.</t>

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

<section anchor="sec-unsigned"><name>Unsigned Parts of a Record</name>

<t>A record has three parts (<xref target="triage"/>): the body, which its signer
signed, and the anchor and the signatures list, which nobody signed.
A third party that holds copies of genuine records, the contract and
the walks can therefore change anchors and signature lists at will,
but cannot change a body without the signer's key. The rules are
arranged around this:</t>

<t><list style="symbols">
  <t>A copy whose signatures list holds no strict, verifying entry from
an allowed role is never examined: it is set aside or rejected in
<xref target="triage"/>, and no later step (collapse, size limit, conformance,
anchors, NENRIN checks) sees it. An unsigned record cannot add a
charge or forfeit a bond.</t>
  <t>A copy that keeps the genuine signature but adds junk entries to
<spanx style="verb">signatures</spanx> has the same record signing bytes as the genuine
record. Junk entries are ignored, and copies of one signed body are
collapsed (<xref target="collapse"/>), keeping the copy that anchors validly at
the smallest (height, record_sha256).</t>
  <t>A copy with an anchor that is not strict is set aside when a
validly anchored copy of the same body is present. A copy whose
anchor is strict but wrong is dropped by the collapse when a
validly anchored copy is present.</t>
  <t>Binding is by contract_sha256 alone (<xref target="binding"/>): a record made
under earlier terms with the same contract_id is foreign and is
never triaged.</t>
</list></t>

<t>What remains is a liveness property, not a safety one. When the
genuine copy is not in the input, a copy with an incomplete or wrong
anchor from a strictly signed record makes the whole settlement
<spanx style="verb">underspecified</spanx> (<xref target="verdict"/>); a party can delay a verdict in the
same way by handing the settler such a record. A copy whose
<spanx style="verb">block_hash</spanx> was edited to disagree with the view at a held height is
<spanx style="verb">orphaned</spanx> and excluded without an underspecified reason
(<xref target="wb-list"/>); a settler that has only such a copy does not see the
act. Settlers that collect records from more than one source reduce
both risks. <spanx style="verb">underspecified</spanx> must not be read as a statement that
the terms are bad.</t>

<t>The record_sha256 covers the unsigned parts, so it identifies a copy,
not an act. The record signing bytes identify the act. One
consequence reaches the listing: the same-block order of
<xref target="same-block"/> sorts by record_sha256, so the holder of the copies
chooses which of two same-block executions is blamed for a single use
approval. A later version that wants this order to be a signed fact
would sort same-height records by the body digest instead; that
changes the expected results of the vectors with two records in one
block, so it is not done in core v0.</t>

</section>
<section anchor="sec-ed25519"><name>Signature Malleability and Strict Ed25519</name>

<t>Ed25519 implementations differ on adversarial signatures: a
non-canonical S (for example S + L), a small order or mixed order R or
public key, and cofactored versus cofactorless verification equations
<xref target="EDDSA-TAMING"/>. Honest signatures verify everywhere. Settle core v0
counts a signature only when it is strict (<xref target="ed25519"/>): S, read as a
little-endian integer, is below L, and R and the public key are
canonical encodings of points of prime order that are not the
identity. With all points in the prime order subgroup and S below L,
the libraries that disagree on lax signatures agree.</t>

<t>A lax signature that a library accepts is not ignored silently: the
record is set aside as <spanx style="verb">signature_not_strict</spanx>, and a contract
signature that is not strict makes the settlement underspecified
(<spanx style="verb">contract_signature_not_strict</spanx>). Anyone can turn a genuine
signature into a lax one (S + L) without a key; that changes the
record_sha256 but not the body, and the genuine copy, if present,
still settles (vectors <spanx style="verb">synth_signature_s_plus_l</spanx> and
<spanx style="verb">synth_strict_signature_beside_malleated</spanx>).</t>

<t>Item N9 of <xref target="MUSUBI-NOTES"/> records that the behaviour of the
reference's OpenSSL on published Ed25519 edge cases was not tested
beyond the strictness rule. The strictness rule is what conformance
depends on.</t>

</section>
<section anchor="sec-numbers"><name>Number and Canonicalization Divergence</name>

<t>Settlement depends on byte-exact digests computed by different
runtimes. JSON readers differ: some accept the tokens <spanx style="verb">NaN</spanx> and
<spanx style="verb">Infinity</spanx>, some read <spanx style="verb">970480.0</spanx> as a float and others as the integer
970480, integers above 2^53 are exact in some and rounded in others,
duplicate keys are resolved differently, and key order by code point
differs from order by UTF-16 code unit above U+FFFF. A pattern ending
in <spanx style="verb">$</spanx> in some regular expression engines also accepts a trailing line
feed, and some hex decoders skip whitespace.</t>

<t>The rules of <xref target="reading-json"/>, <xref target="canonical"/> and <xref target="triage"/> remove
these differences for the values that matter: only integers within
plus or minus (2^53 - 1) are strict, keys in the contract and in
strict values are ASCII, fixed forms such as hex digests are matched
whole, and a value that is not strict is set aside or makes the
settlement underspecified instead of being read two ways. An
implementer has to parse numbers to an exact integer representation,
read the tokens <spanx style="verb">NaN</spanx>, <spanx style="verb">Infinity</spanx> and <spanx style="verb">-Infinity</spanx> as non-integer
numbers rather than as errors (<xref target="reading-json"/>), write them in the
spellings of item 6 of <xref target="canonical"/> when a signature over a value
that is not strict is checked, match fixed forms against the whole
string, and refuse whitespace in hex.</t>

<t>Some divergence remains possible outside strict values. The
record_sha256 of a record that is set aside, foreign or unbound is still
reported in <spanx style="verb">dispositions</spanx>, and its canonical form can depend on the
runtime for values that are not strict. A record whose record_sha256
"cannot be computed at all" is set aside without a disposition; in
the reference this happens, for example, for an integer too long for
the Python runtime to write out, and another runtime may reach that
limit at a different length. Item N4 of <xref target="MUSUBI-NOTES"/> also records
that JSON batches reached through a proof (<xref target="batch-leg"/>) are parsed
as the lower layers of the reference parse them.</t>

</section>
<section anchor="sec-reorg"><name>Reorganizations Deeper Than the Finality Depth</name>

<t>Settle core v0 takes one header view as given. It checks linkage,
proof of work against each header's own nBits, the grant's difficulty
floor and the signed checkpoint, and nothing else of Bitcoin
consensus. It does not establish that the view is the heaviest chain.
A status of <spanx style="verb">final</spanx> means that every accepted and orphaned record is
at least <spanx style="verb">grant.finality.depth</spanx> blocks below the tip of the view; a
reorganization deeper than that depth can still change a final
settlement. Choosing between several views (fork choice) is out of
scope (<xref target="scope"/>). The difficulty floor and the checkpoint limit what
a party can forge cheaply, but a view supplied by an adversary with
enough work is accepted.</t>

</section>
<section anchor="not-established"><name>What the Verdict Does Not Establish</name>

<t><list style="symbols">
  <t>That any record is true. A signature proves which key signed, not
that the act happened as described.</t>
  <t>That no key was stolen. A stolen key signs validly. Key rotation
and compromise are outside settle.</t>
  <t>That acts nobody recorded did not happen. <spanx style="verb">within_grant</spanx> covers the
accepted records only.</t>
  <t>That a foreign, unbound, inconsistent, rejected, orphaned or
predated record is false. Only that it was not settled here.</t>
  <t>Full Bitcoin consensus validity. Only linkage, proof of work against
each header's own nBits, the grant's difficulty floor and the signed
checkpoint are checked.</t>
  <t>That the view is the heaviest chain. Core v0 takes one view as
given. A reorganization deeper than the finality depth can change a
final settlement.</t>
  <t>That the key at a party's <spanx style="verb">key_url</spanx> is the key in the contract.
Settle never fetches.</t>
  <t>That the walk cited by <spanx style="verb">nenrin_ref</spanx> is correct. <xref target="nenrin"/> only
compares the contract it names.</t>
  <t>That anyone judged liability or fault, or that this is a legal
contract. The verdict is a function anyone can recompute from the
same bytes.</t>
  <t>That the parts out of scope (<xref target="scope"/>) hold. A contract that relies
on the spine gate, convergence, pinned approvers or limits must be
settled by a settler that reads them.</t>
  <t>That settle layers before v1.16 agree. They do not: over the 128
vectors, settle_v1_15.py gives different core fields (dispositions
aside) on 51 and stops with an exception on 3. This document
specifies v1.16 only.</t>
  <t>That a record set aside or rejected is false. Only that it was not
strictly signed, or not readable strictly, so it was not settled
here.</t>
</list></t>

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

<t>A contract names both parties by domain and pins their public keys,
and records carry action names, delegation targets, payload digests
and references to walks. Anyone who is given these bytes can settle,
so anyone who is given them learns who contracted with whom and what
the agent did. Anchoring commits only a digest to the Bitcoin block
chain, but the commitment is public and permanent, and publishing a
record later links it to a block and so to a time. Parties should
treat the inputs of a settlement as disclosed to every settler they
hand them to. Settlement itself fetches nothing (<xref target="scope"/>), so
computing it reveals nothing to a network observer.</t>

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

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

</section>


  </middle>

  <back>


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

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



<reference anchor="RFC2119">
  <front>
    <title>Key words for use in RFCs to Indicate Requirement Levels</title>
    <author fullname="S. Bradner" initials="S." surname="Bradner"/>
    <date month="March" year="1997"/>
    <abstract>
      <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="14"/>
  <seriesInfo name="RFC" value="2119"/>
  <seriesInfo name="DOI" value="10.17487/RFC2119"/>
</reference>
<reference anchor="RFC8174">
  <front>
    <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
    <author fullname="B. Leiba" initials="B." surname="Leiba"/>
    <date month="May" year="2017"/>
    <abstract>
      <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="14"/>
  <seriesInfo name="RFC" value="8174"/>
  <seriesInfo name="DOI" value="10.17487/RFC8174"/>
</reference>
<reference anchor="RFC8259">
  <front>
    <title>The JavaScript Object Notation (JSON) Data Interchange Format</title>
    <author fullname="T. Bray" initials="T." role="editor" surname="Bray"/>
    <date month="December" year="2017"/>
    <abstract>
      <t>JavaScript Object Notation (JSON) is a lightweight, text-based, language-independent data interchange format. It was derived from the ECMAScript Programming Language Standard. JSON defines a small set of formatting rules for the portable representation of structured data.</t>
      <t>This document removes inconsistencies with other specifications of JSON, repairs specification errors, and offers experience-based interoperability guidance.</t>
    </abstract>
  </front>
  <seriesInfo name="STD" value="90"/>
  <seriesInfo name="RFC" value="8259"/>
  <seriesInfo name="DOI" value="10.17487/RFC8259"/>
</reference>
<reference anchor="RFC3629">
  <front>
    <title>UTF-8, a transformation format of ISO 10646</title>
    <author fullname="F. Yergeau" initials="F." surname="Yergeau"/>
    <date month="November" year="2003"/>
    <abstract>
      <t>ISO/IEC 10646-1 defines a large character set called the Universal Character Set (UCS) which encompasses most of the world's writing systems. The originally proposed encodings of the UCS, however, were not compatible with many current applications and protocols, and this has led to the development of UTF-8, the object of this memo. UTF-8 has the characteristic of preserving the full US-ASCII range, providing compatibility with file systems, parsers and other software that rely on US-ASCII values but are transparent to other values. This memo obsoletes and replaces RFC 2279.</t>
    </abstract>
  </front>
  <seriesInfo name="STD" value="63"/>
  <seriesInfo name="RFC" value="3629"/>
  <seriesInfo name="DOI" value="10.17487/RFC3629"/>
</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="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="FIPS180-4" >
  <front>
    <title>Secure Hash Standard (SHS)</title>
    <author >
      <organization>National Institute of Standards and Technology</organization>
    </author>
    <date year="2015" month="August"/>
  </front>
  <seriesInfo name="FIPS" value="PUB 180-4"/>
  <seriesInfo name="DOI" value="10.6028/NIST.FIPS.180-4"/>
</reference>
<reference anchor="MUSUBI-REF" target="https://github.com/ogasurfproject-jpg/horizon-shield/tree/d7f5a91e/workers/hs-ledger/nenrin/musubi-v0/settle_v1_16.py">
  <front>
    <title>MUSUBI reference settler: settle_v1_16.py and the modules it imports</title>
    <author fullname="Toshikatsu Oga">
      <organization>The HORIZONs Co., Ltd.</organization>
    </author>
    <date year="2026" month="October" day="17"/>
  </front>
</reference>


    </references>

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



<reference anchor="RFC7493">
  <front>
    <title>The I-JSON Message Format</title>
    <author fullname="T. Bray" initials="T." role="editor" surname="Bray"/>
    <date month="March" year="2015"/>
    <abstract>
      <t>I-JSON (short for "Internet JSON") is a restricted profile of JSON designed to maximize interoperability and increase confidence that software can process it successfully with predictable results.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="7493"/>
  <seriesInfo name="DOI" value="10.17487/RFC7493"/>
</reference>
<reference anchor="RFC7942">
  <front>
    <title>Improving Awareness of Running Code: The Implementation Status Section</title>
    <author fullname="Y. Sheffer" initials="Y." surname="Sheffer"/>
    <author fullname="A. Farrel" initials="A." surname="Farrel"/>
    <date month="July" year="2016"/>
    <abstract>
      <t>This document describes a simple process that allows authors of Internet-Drafts to record the status of known implementations by including an Implementation Status section. This will allow reviewers and working groups to assign due consideration to documents that have the benefit of running code, which may serve as evidence of valuable experimentation and feedback that have made the implemented protocols more mature.</t>
      <t>This process is not mandatory. Authors of Internet-Drafts are encouraged to consider using the process for their documents, and working groups are invited to think about applying the process to all of their protocol specifications. This document obsoletes RFC 6982, advancing it to a Best Current Practice.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="205"/>
  <seriesInfo name="RFC" value="7942"/>
  <seriesInfo name="DOI" value="10.17487/RFC7942"/>
</reference>
<reference anchor="RFC8785">
  <front>
    <title>JSON Canonicalization Scheme (JCS)</title>
    <author fullname="A. Rundgren" initials="A." surname="Rundgren"/>
    <author fullname="B. Jordan" initials="B." surname="Jordan"/>
    <author fullname="S. Erdtman" initials="S." surname="Erdtman"/>
    <date month="June" year="2020"/>
    <abstract>
      <t>Cryptographic operations like hashing and signing need the data to be expressed in an invariant format so that the operations are reliably repeatable. One way to address this is to create a canonical representation of the data. Canonicalization also permits data to be exchanged in its original form on the "wire" while cryptographic operations performed on the canonicalized counterpart of the data in the producer and consumer endpoints generate consistent results.</t>
      <t>This document describes the JSON Canonicalization Scheme (JCS). This specification defines how to create a canonical representation of JSON data by building on the strict serialization methods for JSON primitives defined by ECMAScript, constraining JSON data to the Internet JSON (I-JSON) subset, and by using deterministic property sorting.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8785"/>
  <seriesInfo name="DOI" value="10.17487/RFC8785"/>
</reference>

<reference anchor="MUSUBI-SETTLE-CORE" target="https://github.com/ogasurfproject-jpg/horizon-shield/tree/d7f5a91e/workers/hs-ledger/nenrin/musubi-v0/settle-core-v0">
  <front>
    <title>MUSUBI settle core v0 (SETTLE_CORE_v0.md), revision 0.8</title>
    <author fullname="Toshikatsu Oga">
      <organization>The HORIZONs Co., Ltd.</organization>
    </author>
    <date year="2026" month="October" day="22"/>
  </front>
</reference>
<reference anchor="MUSUBI-NOTES" target="https://github.com/ogasurfproject-jpg/horizon-shield/tree/d7f5a91e/workers/hs-ledger/nenrin/musubi-v0/settle-core-v0">
  <front>
    <title>Notes on settle core v0 (NOTES.md)</title>
    <author fullname="Toshikatsu Oga">
      <organization>The HORIZONs Co., Ltd.</organization>
    </author>
    <date year="2026" month="October" day="22"/>
  </front>
</reference>
<reference anchor="MUSUBI-VECTORS" target="https://github.com/ogasurfproject-jpg/horizon-shield/tree/d7f5a91e/workers/hs-ledger/nenrin/musubi-v0/settle-core-v0">
  <front>
    <title>MUSUBI settle core v0 test vectors</title>
    <author fullname="Toshikatsu Oga">
      <organization>The HORIZONs Co., Ltd.</organization>
    </author>
    <date year="2026" month="October" day="18"/>
  </front>
</reference>
<reference anchor="MUSUBI-EXERCISE" target="https://github.com/ogasurfproject-jpg/horizon-shield/tree/d7f5a91e/workers/hs-ledger/nenrin/musubi-v0/settle-core-v0">
  <front>
    <title>MUSUBI settle core v0 exercised inputs (exercise_inputs.py and EXERCISE.txt)</title>
    <author fullname="Toshikatsu Oga">
      <organization>The HORIZONs Co., Ltd.</organization>
    </author>
    <date year="2026" month="October" day="18"/>
  </front>
</reference>
<reference anchor="I-D.he-agentproto-verifier-evidence" target="https://datatracker.ietf.org/doc/html/draft-he-agentproto-verifier-evidence-00">
  <front>
    <title>Exercise and Completeness Evidence for Agent Protocol Verifier Results</title>
    <author fullname="James Siyuan He">
      <organization></organization>
    </author>
    <date year="2026" month="October" day="17"/>
  </front>
  <seriesInfo name="Internet-Draft" value="draft-he-agentproto-verifier-evidence-00"/>
</reference>
<reference anchor="AEOESS-CHECK" target="https://github.com/aeoess/musubi-settle-core-check">
  <front>
    <title>musubi-settle-core-check: a second implementation of MUSUBI settle core v0</title>
    <author >
      <organization>aeoess (Agent Passport System)</organization>
    </author>
    <date year="2026" month="October"/>
  </front>
</reference>
<reference anchor="ISSUE-49" target="https://github.com/ogasurfproject-jpg/horizon-shield/issues/49">
  <front>
    <title>horizon-shield issue 49: call for an independent implementation of settle core v0</title>
    <author >
      <organization>The HORIZONs Co., Ltd.</organization>
    </author>
    <date year="2026" month="October"/>
  </front>
</reference>


<reference anchor="RFC9943">
  <front>
    <title>An Architecture for Trustworthy and Transparent Digital Supply Chains</title>
    <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
    <author fullname="A. Delignat-Lavaud" initials="A." surname="Delignat-Lavaud"/>
    <author fullname="C. Fournet" initials="C." surname="Fournet"/>
    <author fullname="Y. Deshpande" initials="Y." surname="Deshpande"/>
    <author fullname="S. Lasker" initials="S." surname="Lasker"/>
    <date month="June" year="2026"/>
    <abstract>
      <t>Traceability in supply chains is a growing security concern. While Verifiable Data Structures (VDSs) have addressed specific issues, such as equivocation over digital certificates, they lack a universal architecture for all supply chains. This document defines such an architecture for single-issuer signed statement transparency. It ensures extensibility and interoperability between different transparency services as well as compliance with various auditing procedures and regulatory requirements.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9943"/>
  <seriesInfo name="DOI" value="10.17487/RFC9943"/>
</reference>
<reference anchor="RFC9635">
  <front>
    <title>Grant Negotiation and Authorization Protocol (GNAP)</title>
    <author fullname="J. Richer" initials="J." role="editor" surname="Richer"/>
    <author fullname="F. Imbault" initials="F." surname="Imbault"/>
    <date month="October" year="2024"/>
    <abstract>
      <t>The Grant Negotiation and Authorization Protocol (GNAP) defines a mechanism for delegating authorization to a piece of software and conveying the results and artifacts of that delegation to the software. This delegation can include access to a set of APIs as well as subject information passed directly to the software.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9635"/>
  <seriesInfo name="DOI" value="10.17487/RFC9635"/>
</reference>
<reference anchor="RFC8693">
  <front>
    <title>OAuth 2.0 Token Exchange</title>
    <author fullname="M. Jones" initials="M." surname="Jones"/>
    <author fullname="A. Nadalin" initials="A." surname="Nadalin"/>
    <author fullname="B. Campbell" initials="B." role="editor" surname="Campbell"/>
    <author fullname="J. Bradley" initials="J." surname="Bradley"/>
    <author fullname="C. Mortimore" initials="C." surname="Mortimore"/>
    <date month="January" year="2020"/>
    <abstract>
      <t>This specification defines a protocol for an HTTP- and JSON-based Security Token Service (STS) by defining how to request and obtain security tokens from OAuth 2.0 authorization servers, including security tokens employing impersonation and delegation.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8693"/>
  <seriesInfo name="DOI" value="10.17487/RFC8693"/>
</reference>
<reference anchor="RFC9396">
  <front>
    <title>OAuth 2.0 Rich Authorization Requests</title>
    <author fullname="T. Lodderstedt" initials="T." surname="Lodderstedt"/>
    <author fullname="J. Richer" initials="J." surname="Richer"/>
    <author fullname="B. Campbell" initials="B." surname="Campbell"/>
    <date month="May" year="2023"/>
    <abstract>
      <t>This document specifies a new parameter authorization_details that is used to carry fine-grained authorization data in OAuth messages.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9396"/>
  <seriesInfo name="DOI" value="10.17487/RFC9396"/>
</reference>

<reference anchor="I-D.kuehlewind-audit-architecture">
   <front>
      <title>An Architecture for Auditing Agent Delegation and Interactions</title>
      <author fullname="Mirja Kühlewind" initials="M." surname="Kühlewind">
         <organization>Ericsson</organization>
      </author>
      <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
         <organization>Fraunhofer SIT</organization>
      </author>
      <date day="7" month="September" year="2026"/>
      <abstract>
	 <t>   This document describes an architecture for auditing of agent-driven
   interactions on the Internet.  Autonomous and semi-autonomous
   software agents, including those based on artificial intelligence,
   increasingly act on behalf of users, organizations, and services.
   Existing auditing mechanisms often capture isolated system events but
   do not consistently represent delegation relationships, user intent,
   or evolving authorization.  In agent-driven systems, auditability
   requires linking intent, delegation, authorization, and execution.
   The proposed architecture enables this through distributed audit
   record generation, propagation of audit context, optional
   attestation, and additional logging for transparency.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-kuehlewind-audit-architecture-01"/>
   
</reference>

<reference anchor="I-D.gilda-audit-agent-audit-record">
   <front>
      <title>An Audit Record Format for AI Agent Authorization Decisions</title>
      <author fullname="Sankalp Gilda" initials="S." surname="Gilda">
         </author>
      <date day="16" month="October" year="2026"/>
      <abstract>
	 <t>   This document defines a record format for AI agent authorization
   decisions and the effects that followed them.  The format is one in-
   toto predicate type, signed inside a DSSE envelope.  A record carries
   the decision and the observed effect with a derived agreement between
   them, whether the decision point could evaluate the request and how
   fresh each input it relied on was, and a canonicalization contract
   under which a party that trusts neither the agent nor its operator
   recomputes the record&#x27;s consistency from its bytes.  The document
   also defines what a party that retains a record keeps beside it, so
   that the record can later be dated from anchors that party does not
   control.  The format carries the seven minimum audit fields of the
   WIMSE AI Identity Management System framework, and it is offered as a
   data model for the audit records the proposed AUDIT working group
   would specify.  It defines no policy.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-gilda-audit-agent-audit-record-00"/>
   
</reference>

<reference anchor="I-D.kroehl-agentic-trust-aae">
   <front>
      <title>Agent Authorization Envelope (AAE): A Machine-Evaluable Authorization Structure for Autonomous AI Agents</title>
      <author fullname="Lars Kersten Kroehl" initials="L. K." surname="Kroehl">
         <organization>CryptoKRI GmbH</organization>
      </author>
      <date day="6" month="September" year="2026"/>
      <abstract>
	 <t>   Autonomous AI agents now operate at production scale across
   financial, commercial, and infrastructure domains — executing
   transactions, invoking APIs, and taking consequential actions without
   direct human oversight at each step.  Existing authorization
   mechanisms (OAuth 2.0, API keys, ACLs) were designed for human-
   initiated requests and do not capture the machine-evaluable semantics
   required for autonomous agent authorization: what the agent is
   mandated to do, what constraints bound its actions, and for how long
   the authorization is valid.

   This document specifies the Agent Authorization Envelope (AAE), a
   structured authorization container for autonomous AI agents.  AAE
   defines three mandatory blocks — MANDATE, CONSTRAINTS, and VALIDITY —
   that together constitute a machine-evaluable, cryptographically
   verifiable authorization assertion.  AAE is designed to be protocol-
   agnostic, binding to W3C Decentralized Identifiers (DIDs) for agent
   identity and W3C Verifiable Credentials (VCs) for issuance and
   signature, and is independent of any specific AI framework, transport
   protocol, or blockchain.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-kroehl-agentic-trust-aae-02"/>
   
</reference>

<reference anchor="I-D.gravit-gevp">
   <front>
      <title>Gravit Epistemic Verification Protocol (GEVP)</title>
      <author fullname="Alex Konviser" initials="A." surname="Konviser">
         <organization>Gravit Open Network</organization>
      </author>
      <date day="22" month="October" year="2026"/>
      <abstract>
	 <t>   The Gravit Epistemic Verification Protocol (GEVP) defines how signed
   evidence Records about an Artifact are screened, grouped by
   independent source and evaluated, so that a claim is never promoted
   beyond what independent evidence supports.  It specifies the
   Epistemic State Machine, the Record format and its signature, the
   meaning of the signed result of a Record, a verifier registry
   accepted under a threshold of root keys, a content-addressed Decision
   Record that anyone can reproduce, and optional signed receipts that
   let an auditor check a history of decisions offline.  It maps these
   states to the evidence taxonomy of the Gravit Verifiable Epistemic
   Decision Standard (VEDS).

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-gravit-gevp-10"/>
   
</reference>

<reference anchor="I-D.birkholz-verifiable-agent-conversations">
   <front>
      <title>Verifiable Agent Conversation Records</title>
      <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
         </author>
      <author fullname="Tobias Heldt" initials="T." surname="Heldt">
         </author>
      <author fullname="Orie Steele" initials="O." surname="Steele">
         </author>
      <date day="31" month="August" year="2026"/>
      <abstract>
	 <t>   Autonomous agents based on large language models increasingly perform
   consequential tasks on behalf of humans and other agents.
   Demonstrating that recorded agent behavior truthfully represents
   actual behavior is essential for accountability, compliance, and
   human oversight.  This document defines a data format for verifiable
   agent conversation records using CDDL, with representations in both
   JSON and CBOR.  The format captures session metadata, message
   exchanges, tool invocations, reasoning traces, and system events in a
   structured, extensible CDDL definition for verifiable agent
   conversation records.  COSE is used as the signing method to allow
   for native interoperability in SCITT Transparency Services and the
   CDDL definition allows for seemless integration in Evidence as
   specified in RFC 9334.  The specification supports cross-vendor
   interoperability by defining a common representation that
   accommodates translation from multiple existing agent implementations
   with distinct data structure layouts that are typically represented
   in JSON.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-birkholz-verifiable-agent-conversations-01"/>
   
</reference>

<reference anchor="ISSUE-55" target="https://github.com/ogasurfproject-jpg/horizon-shield/issues/55">
  <front>
    <title>horizon-shield issue 55: testbed for decision records and settlement records on the same traces</title>
    <author fullname="Toshikatsu Oga">
      <organization>The HORIZONs Co., Ltd.</organization>
    </author>
    <date year="2026" month="October"/>
  </front>
</reference>
<reference anchor="KUANGMI-CHECK" target="https://github.com/kuangmi-bit/nenrin-independent-verifiers/tree/bbe455c/settle-core-v0">
  <front>
    <title>nenrin-independent-verifiers: settle-core-v0, a third implementation of MUSUBI settle core v0</title>
    <author >
      <organization>kuangmi-bit</organization>
    </author>
    <date year="2026" month="October"/>
  </front>
</reference>
<reference anchor="ERRATA-K001" target="https://github.com/piiiico/agent-errata/blob/a28e50d76a8a59fcec844a10869d7b16d04de919/claims/K001.md">
  <front>
    <title>Agent Errata claim K001: three programs compute the same MUSUBI settlement on all 128 test vectors</title>
    <author >
      <organization>Agent Errata</organization>
    </author>
    <date year="2026" month="October" day="22"/>
  </front>
</reference>
<reference anchor="INTEROP-TABLE" target="https://github.com/ogasurfproject-jpg/horizon-shield/blob/main/docs/INTEROP_TABLE.md">
  <front>
    <title>Interop table: implementations and runs checked against the same bytes</title>
    <author fullname="Toshikatsu Oga">
      <organization>The HORIZONs Co., Ltd.</organization>
    </author>
    <date year="2026" month="October" day="22"/>
  </front>
</reference>
<reference anchor="RUN-POKE" target="https://github.com/ogasurfproject-jpg/horizon-shield/issues/51#issuecomment-6332669484">
  <front>
    <title>horizon-shield issue 51: recomputation of the set 2 settlement</title>
    <author >
      <organization>Poke-nushi</organization>
    </author>
    <date year="2026" month="October" day="22"/>
  </front>
</reference>
<reference anchor="RUN-AEOESS" target="https://github.com/ogasurfproject-jpg/horizon-shield/issues/51#issuecomment-6330218168">
  <front>
    <title>horizon-shield issue 51: byte identity of the set 2 audits</title>
    <author >
      <organization>aeoess</organization>
    </author>
    <date year="2026" month="October" day="22"/>
  </front>
</reference>
<reference anchor="RUN-BBV" target="https://github.com/ogasurfproject-jpg/horizon-shield/issues/51#issuecomment-6331414511">
  <front>
    <title>horizon-shield issue 51: acceptance records for set 2</title>
    <author >
      <organization>babyblueviper1</organization>
    </author>
    <date year="2026" month="October" day="22"/>
  </front>
</reference>
<reference anchor="RUN-PICO" target="https://github.com/aeoess/agent-governance-vocabulary/pull/179#issuecomment-6332546428">
  <front>
    <title>agent-governance-vocabulary pull request 179: Agent Errata confirmation of E6</title>
    <author >
      <organization>Agent Errata</organization>
    </author>
    <date year="2026" month="October" day="22"/>
  </front>
</reference>
<reference anchor="NENRIN-VERIFIER" >
  <front>
    <title>NENRIN provenance verifier: normative procedure (VERIFIER.md), interoperability vectors and reference verifiers</title>
    <author fullname="Toshikatsu Oga">
      <organization>The HORIZONs Co., Ltd.</organization>
    </author>
    <date year="2026" month="October" day="04"/>
  </front>
  <seriesInfo name="DOI" value="10.5281/zenodo.23136978"/>
</reference>
<reference anchor="BITCOIN" target="https://bitcoin.org/bitcoin.pdf">
  <front>
    <title>Bitcoin: A Peer-to-Peer Electronic Cash System</title>
    <author fullname="Satoshi Nakamoto">
      <organization></organization>
    </author>
    <date year="2008"/>
  </front>
</reference>
<reference anchor="BITCOIN-HEADERS" target="https://developer.bitcoin.org/reference/block_chain.html">
  <front>
    <title>Bitcoin Developer Reference: Block Headers</title>
    <author >
      <organization>Bitcoin Project</organization>
    </author>
    <date />
  </front>
</reference>
<reference anchor="OPENTIMESTAMPS" target="https://opentimestamps.org">
  <front>
    <title>OpenTimestamps</title>
    <author >
      <organization>OpenTimestamps</organization>
    </author>
    <date />
  </front>
</reference>
<reference anchor="A2A" target="https://a2a-protocol.org">
  <front>
    <title>Agent2Agent (A2A) Protocol Specification</title>
    <author >
      <organization>A2A Project</organization>
    </author>
    <date />
  </front>
</reference>
<reference anchor="EDDSA-TAMING" >
  <front>
    <title>Taming the many EdDSAs</title>
    <author initials="K." surname="Chalkias">
      <organization></organization>
    </author>
    <author initials="F." surname="Garillot">
      <organization></organization>
    </author>
    <author initials="V." surname="Nikolaenko">
      <organization></organization>
    </author>
    <date year="2020"/>
  </front>
  <seriesInfo name="DOI" value="10.1007/978-3-030-64357-7_4"/>
</reference>


    </references>

</references>


<?line 2327?>

<section anchor="codes"><name>Codes</name>

<t>Underspecified reasons in core v0:
<spanx style="verb">contract_not_verified</spanx>, <spanx style="verb">input_not_settleable</spanx>,
<spanx style="verb">contract_signature_not_strict</spanx>, <spanx style="verb">bond_malformed</spanx>,
<spanx style="verb">parent_not_supplied</spanx>, <spanx style="verb">parent_narrowing_failed</spanx>, <spanx style="verb">view_not_strict</spanx>,
<spanx style="verb">record_not_strict</spanx>, <spanx style="verb">anchor_not_strict</spanx>, <spanx style="verb">anchor_below_lower_bound</spanx>,
<spanx style="verb">walk_not_strict</spanx>, <spanx style="verb">authorized_actions_missing</spanx>,
<spanx style="verb">grant_action_name_invalid</spanx>, <spanx style="verb">too_many_witnesses</spanx>,
<spanx style="verb">witness_key_invalid</spanx>, <spanx style="verb">key_conflict</spanx>, <spanx style="verb">tie_policy_refused</spanx>,
<spanx style="verb">revocation_policy_not_recomputable</spanx>, <spanx style="verb">ack_window_missing</spanx>,
<spanx style="verb">finality_policy_missing</spanx>, <spanx style="verb">bad_expiry_height</spanx>,
<spanx style="verb">unscoped_approvals_refused</spanx>, <spanx style="verb">chain_view_rejected</spanx>,
<spanx style="verb">input_too_large</spanx>, <spanx style="verb">anchor_incomplete</spanx>,
<spanx style="verb">anchor_beyond_observed_chain</spanx>, <spanx style="verb">anchor_proof_invalid</spanx>,
<spanx style="verb">anchor_batch_leg_refused</spanx>.</t>

<t>Of these, <spanx style="verb">authorized_actions_missing</spanx>, <spanx style="verb">witness_key_invalid</spanx>,
<spanx style="verb">revocation_policy_not_recomputable</spanx> and <spanx style="verb">bad_expiry_height</spanx> cannot be
reached in core v0 (<xref target="settleable-terms"/>, <xref target="exercise"/>).</t>

<t>Deviation codes in core v0:
<spanx style="verb">revoked</spanx>, <spanx style="verb">after_expiry</spanx>, <spanx style="verb">prohibited</spanx>, <spanx style="verb">conditional</spanx>,
<spanx style="verb">unauthorized</spanx>, <spanx style="verb">delegation</spanx>, <spanx style="verb">forged_approval</spanx>,
<spanx style="verb">nonconforming_record</spanx>, <spanx style="verb">evidence_names_other_contract</spanx>,
<spanx style="verb">evidence_missing</spanx>.</t>

<t>Verdicts: <spanx style="verb">within_grant</spanx>, <spanx style="verb">deviation</spanx>, <spanx style="verb">nothing_to_settle</spanx>,
<spanx style="verb">underspecified</spanx>.</t>

<t>Dispositions: <xref target="dispositions"/>.</t>

</section>
<section anchor="changes-since-01"><name>Changes since -01</name>

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

<t>This version follows revision 0.8 of <xref target="MUSUBI-SETTLE-CORE"/> at commit
d7f5a91e; -01 followed revision 0.4 at commit dd64d0e2. No rule of the
reference and no vector changed between the two commits. The changes
in meaning are:</t>

<t><list style="symbols">
  <t><xref target="triage"/>: the row "strictly signed, body not strict" sets the
record aside as well as adding <spanx style="verb">record_not_strict</spanx>.</t>
  <t><xref target="strict-terms"/>: the parent row adds only
<spanx style="verb">parent_narrowing_failed</spanx>; <spanx style="verb">contract_not_verified</spanx> is decided on the
contract alone.</t>
  <t><xref target="same-block"/> and <xref target="sec-unsigned"/>: the same-block order can be
chosen by whoever holds the copies; the verdict does not move.</t>
  <t><xref target="not-established"/>: the earlier settle layers disagree with v1.16
on 51 of the 128 vectors and stop on 3.</t>
</list></t>

<t>New informative section <xref target="related"/>: settlement as an Auditor's
evaluation in the agent auditing architecture, with the roles and
record types mapped; SCITT combined with, not replaced by, the Bitcoin
anchors; GNAP and OAuth as the source of a grant; and related
Internet-Drafts. <xref target="what"/> carries one sentence pointing to it.</t>

<t>Other changes: the date; the pinned commit of every repository
reference; the title of <xref target="MUSUBI-SETTLE-CORE"/>; <xref target="why"/> and
<xref target="clarifications"/> carry revisions 0.5 to 0.8; <xref target="impl-status"/> is
rewritten, with a second implementation by another author
(<xref target="impl-kuangmi"/>) and what each implementation read before it was
written, runs by others (<xref target="impl-reruns"/>), the run of the
first implementation against all 128 vectors, the reference's run
environment and its file list at the new commit; new references
<xref target="KUANGMI-CHECK"/>, <xref target="ERRATA-K001"/>, <xref target="INTEROP-TABLE"/>, <xref target="RUN-POKE"/>,
<xref target="RUN-AEOESS"/>, <xref target="RUN-BBV"/>, <xref target="RUN-PICO"/>, <xref target="RFC9943"/>, <xref target="RFC9635"/>, <xref target="RFC8693"/>,
<xref target="RFC9396"/>, <xref target="ISSUE-55"/> and five Internet-Drafts of related work;
and the acknowledgements.</t>

</section>
<section anchor="changes-since-00"><name>Changes since -00</name>

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

<t>This version follows revision 0.4 of <xref target="MUSUBI-SETTLE-CORE"/> at commit
dd64d0e2; -00 followed the first release at commit 4100d52a. The
reference did not change between the two commits. The changes in
meaning are:</t>

<t><list style="symbols">
  <t><xref target="scope"/>: what it means for a contract to carry an out of scope
key; a malformed <spanx style="verb">approvers</spanx> value refuses the contract instead of
making the input out of scope.</t>
  <t><xref target="reading-json"/>: <spanx style="verb">NaN</spanx>, <spanx style="verb">Infinity</spanx> and <spanx style="verb">-Infinity</spanx> are read as
non-integer numbers; other spellings are parse errors; <spanx style="verb">1e400</spanx> is an
infinity; an integer token over 4300 digits produces no settlement.</t>
  <t><xref target="canonical"/>: item 6, how a non-integer number is written.</t>
  <t><xref target="contract-door"/>: rule 4 (domain whitespace); rule 10
(<spanx style="verb">delegation</spanx> needs <spanx style="verb">allowed</spanx>, <spanx style="verb">ordering</spanx> may be <spanx style="verb">{}</spanx>, well formed
<spanx style="verb">approvers</spanx>).</t>
  <t><xref target="settleable-terms"/>: four rows that cannot fire are named.</t>
  <t><xref target="parent-narrowing"/>: new; parent narrowing stated in full, replacing
the pointer to the reference's <spanx style="verb">grant_subset</spanx>.</t>
  <t><xref target="view-verify"/>: rule 9 applies only to an object view with a
<spanx style="verb">headers</spanx> list.</t>
  <t><xref target="triage"/>: an approval's <spanx style="verb">sig_b64</spanx> and <spanx style="verb">signature</spanx> are each checked
for strictness on their own.</t>
  <t><xref target="size-limit"/>: records are counted after identical bytes are
merged.</t>
  <t><xref target="batch-leg"/>: rule 4 reads <spanx style="verb">NaN</spanx> as a number.</t>
  <t><xref target="core-fields"/>: <spanx style="verb">contract_sha256</spanx> is null for a contract that is
not an object.</t>
  <t><xref target="revocation"/>: a copy dropped by <xref target="collapse"/> no longer names its
revocation.</t>
  <t><xref target="approvals"/>: step 1 can apply only to an approval that is not an
object; only <spanx style="verb">sig_b64</spanx> is verified.</t>
  <t><xref target="nenrin-cross"/>: an orphaned execution is still read.</t>
  <t><xref target="codes"/>: the four unreachable reasons are named.</t>
</list></t>

<t>Other changes: the date, the pinned commit of every repository
reference, the vector counts and verdict breakdown (<xref target="vectors-contents"/>),
new sections <xref target="clarifications"/> and <xref target="exercise"/>, the independent
implementation in <xref target="impl-independent"/>, the reference's run results in
<xref target="impl-ref"/>, references <xref target="MUSUBI-EXERCISE"/>,
<xref target="I-D.he-agentproto-verifier-evidence"/> and <xref target="AEOESS-CHECK"/>, the
comparison with RFC 8785 in <xref target="canonical"/>, the advice to implementers
in <xref target="sec-numbers"/>, and the acknowledgements.</t>

</section>
<section numbered="false" anchor="acks"><name>Acknowledgements</name>

<t>The parties behind agent-passport.org and kuangmi-bit.github.io
published the contract, the anchored record and the header view of
the first MUSUBI contract settled with no party from the project that
publishes the reference; the real vectors are built from them. Two independent
adversarial reviews of the reference found defects that this
document now describes as closed. Tima (aeoess) wrote the first
separately written implementation, and its questions and notes led to
revisions 0.1 to 0.3 of the source text. Revision 0.4 was prompted by
<xref target="I-D.he-agentproto-verifier-evidence"/>. kuangmi-bit wrote a third
implementation from the text and the vectors alone, and its two notes
led to revision 0.6. Poke-nushi recomputed a live settlement from the
published bytes with headers fetched independently.</t>

</section>


  </back>

<!-- ##markdown-source:
H4sIAIE62moAA+S9e3cb15Ev+n9/ih76rGtgDEB8SyKTzNGDijmRKV2RdpJJ
fIAm0CTbBNEYdIMUTWk++6n6VdV+NBqUPDMn96x1nRWbALr3s3btevyqqt/v
J3VRT/ODdOOHH09/fHmcnuY1fb7JZ/VB+iEflzfzZV3MLtM/X+X1Vb5Is1n6
4pJ+TV+M63yS/rmor4pZmqWnxeWMPv9xkc3qjSQ7P1/kt22tbiSTcjzLbqjL
ySK7qPvlZda/WVbL86Jfuaf6m9vJOKvzy3Jxf5AWs4syoSduiqoqyll9P6e3
j4/O3iTFfHGQ1otlVW9vbj6nlyb00kG6vbm939/a7G9vJzSIneQ6v78rF5OD
JE37qe8FHzOeTYU/jybbe3tbz/H3y6Ielzyz2fiqXNAK4NtxNitnxTibpv96
+u4kyZY1/Yhm6f9perGcTmVuZ2V1VVxndbVM311m+LFcXGaz4tespinQypxd
5en37z4c/9u7kyp9VQ566dt6MtjAo/lNVkxpYlc59/1rORvMZuUt3vyfxXha
LicD2hk8Oi6Xs5oX6V+zeTZLklm5uKEHb3Me1Yc3r7a3tp7rn8+2nu7an9t7
9u3O/rb9ubu/+8we2NzZ5j/fHL8/3Xq22ceLaWrEcpqPlwsaf1Zdpad1Nptk
i0naOf3+tCsT8AujMz9ITzB8WrnjWUXNLOs8LS/cyxUt9CQ9y8dXs3JaXt7j
TdvMrb3+5jN8U+WLIq+YHqxtHuBB+v7HlymGqd++fnd8kG5tDvY3t589OTk+
PRvwcwN7RKiy/+HoTTwtpdZFfpEv8tk4V1ohGpM/hrdbw639wfweo6XtSW/K
yXKaV2lRp8XNvFzUVdsCPEoXv4kyYvreeirDzxaXOZ3Xq7qeVwdPnlzSoVye
M4k8odNVLRcX80X5Sz6u+7/ML58oSfVpIPl08qRe5PmTydOLvez5Vv6Ejsl1
vqieXFX9aT65zBdPZvmMyP+JHtHbzSeNpUgS3o6Y6J7uPt+xP5/vbhtNPX22
d+BX//To7OztUf/Vuw9Hrbsg/RCBE6HdbhJ14fkhPz+83RzcTLo92qnbgllC
ujl49o9ceGIs/18tfJ8XhD76hTx5d3Z0Gi/hSVkTUdK6NBcRz/La/f92tX46
enX27sPp15AcrWGd3tKAysU/9lg/+79ovY7+cvTh1fHpV53R/GO+GBcVyQHF
jOSGKu3YN0P5wlinNTqoP9b/UFL8v2Npj/uvB1d5H6IHdVSX/Vu62C6KfNEn
hjbhqyde7iNdRizeKxLKpnmdz/KqSo/0+ZR4sEpm77nFcTlNf9JGSZCrltMv
XU3/Sv+uSI67X5KM932+/rpZvYSPZ3W+mOV1/zWLdCbZfWGG/c3N1r2gPrN6
kY1pVQdFXl8MaLOfkND45Kq+mT75DU2/OHp3dHraf/X90as/xcsZyZuyL+Or
fHx9QIJsRUIvLXLBa8xCImiMRZVWkl8r7mR5ydvT0S3Jqoqlg/T0vqrzm+7q
4n6JLKW9J+tGzkR1evrjUX/3eTzVmHZTkqCXeUoPkSg7nYJoaLeL2SSf5/Sv
Wd0y8a+c8defwv/6EcQ0qie7z0WyeP581+SN5/s7eyZv7Dsp5PnO8/0DPXjX
y/xqmt/RnPvZclLU/Wwxvipq6olEWnvosphOMvudt1D/XhB1iCKBphYltSUP
FOM+FJF+lvlWFtktvXSZ387tq/NicX1VTn9Vos3Op0rKtJkz+q7CslcHbkP3
9r5iQ+kh3FbnxHp5Tyf5WOQiGa9I117xcV/TEyzFVnT0Uz5z+T/ynvtvI4O9
PWrqTz++OPnjD8dtx10Ycj+gcscyKhPtjTv3iAWQSrv4r3OAa+KjlzdF/7yo
f/vcg5efPDZ8uYzOz/Pdvb3x6kVz9OHDi7MX/T9tbm7FSyJs6WixIGabjqdZ
cZPiIZo7NZjSmhPt3lSpGAByTyXRGoCWaG2YlWxtP/uiwIR1Cbv+TwmL84L+
GZdP5NjkaOjJ+bQ8f5JtP8v3NidP97Nn2d7zi3E+fra7m21tEieYPD3f2p9s
7k7y51vPn2DG1ROeMgnDfNZOzo4+vHvfP3vx8m1D1MHlVs5pROf8OSYLOVmL
Jf0BPkznL7vMClJx/ZKd39f/0HP13yJvYz1vaCZ89VZPdH2GWB9Zsg8/nvTf
v/vT0dewJyKshRqT3GnC+uR1uh0Q01qieV9e5/3Zklr9PzRfYyVb3+Avegl2
qP2dne39/ee7z3Z1xiJUfOWceedTFknoyft4zrhO1h8Sue7/4XPd3N56trX/
TOf68uVPXznRbDzO53XGcqhdLXwNYapr53iend+fT5cktM3zxdY/fK5bu1u7
e1tbRsnHr97FkxX2clkSr53xzPq35Tg7X06zxX06p5NLM/33JTO8rafPY65G
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
VyHq0VyMmJYu0VU29YgNW3oZj9ZfNGgLizKQAiXfFUnwl5mC+TTOE7gd8Ulj
uB3pAVIKySe0y4kK+PqU+fPPaRgOR4chWd+KKqZtDby/dJ7F66r3n5x0YfPe
nmvjVCBIIsBFZ65W5q0udb2oGvd70qEZkjbEECC+6AflQgyo10sa/03RPy/q
gd4LRdlzoxY55PnTzd1nm91eghHwxu3sPTe8nlZ/PHWbFe4MSuWKyOx2s++M
Hr3Ef+mB/L3gUSv/DXi1+5bkLl71BeesWhQcL4fFEDRHxYFEPQWteBLS0SJ5
WIo8KZdM3cmkuCDuRToEHZLRTfZxKJamIS0IqXmj7c2nF/wPsZYAyqGwx2eb
9M9WV3LTC43G9dilSrn+BAeEwlrY99HANbSsDxy2i7+8fH2xd/Nme/d5vX83
ufnh9k/19fjlX/7t5qefLsYXf33z8uUvx/PTuj76vajCbWvKLV1Ndz7efPz1
2f73b/76l7Pxr7Mne9//293uv16f7xSbs7dPi+LyyfYf//Jvi3G10pLtAzVz
+cOfjv/6/v3xL3/cXzy/qZ/dny92Jsd//OPN/tu/fryeXZ7e3zyf1rffn9R/
XWnGNo7b+evNryfLJ7f7f3p+9+O7enwzq6rvX7z86e3L18u3L//9h/G/zX7Y
PHn73c724sffx/5fT2q82KyJEm0PjTXOGUVHX3A5rdzyLSkvd2emRlUD9iFx
MiiprhIdGEsIadc0FxQg0WOxRNSE+na5q+XMckGZLCs2hbBb8ET1xuF7iLJS
LNFysQtKGtx/kNoFOpThDZCUSqW/o78cfXh1fHpEGgzqTcGlfZPflAuokInO
KLjBSGRn3mQcC46MjtyImmdGhbNMy21vMVkbM/X5HrVlk0qYRbPTX2IMhUkx
xML0IWlbeyXOlvfcagWSf6n470QuDjXQSOnvmUXz25wH9UcOJuj3sZqW64dP
HydE7iM9Ihd5/EVvtYdv5u4DkUmclF1kDW95IV6vxSYDTVhsacG9nDQzLzW8
yt9W4n0JjCsGVayMVZPYWM4kuexNijgL9ipVsXjj6q37bOs9nxUdUmSc3VwK
WMwLUS3/EymhRQCw3OOsczvzxCR31T/CmUaxMG1ScyKpIiqujjanI6sweviN
bjjSWdLf+WTk13k+D2WaRnyHDcIsclDsG7HO4stH2aKeq3OWhsWDZX2iVN5W
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
AA==

-->

</rfc>

