<?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 4.0.6) -->


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

]>


<rfc ipr="trust200902" docName="draft-wildfeuer-rapp-1-00" category="info" submissionType="independent" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="RAPP/1">RAPP/1: The RAPP Protocol Suite</title>

    <author initials="K." surname="Wildfeuer" fullname="Kody Wildfeuer">
      <organization>Wildhaven Homes LLC</organization>
      <address>
        <email>wildhavenhomesllc@gmail.com</email>
      </address>
    </author>

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

    <area>Applications</area>
    
    <keyword>agents</keyword> <keyword>content-addressing</keyword> <keyword>canonicalization</keyword> <keyword>JCS</keyword> <keyword>provenance</keyword>

    <abstract>


<?line 45?>

<t>RAPP/1 is a profile over existing standards that lets independent programs exchange
verifiable, content-addressed records about agents: one canonicalization (JCS), one
domain-separated hash, one mint-once identity, one eleven-key event envelope, one wire,
and one package format. Two independent implementations that follow this document
produce byte-identical artifacts with no out-of-band agreement. The normative text of
record is the append-only specification chain published by the author; this document
is a stable, archival rendering of it: revision rev-18, chain frame 83bec7762a04959dc91e252055d79f67690c605383018d23b26b99982916dd6a, normative
SHA-256 e81e20ba9402ee96422f73e9ef737eba100264155c8f77521600766be8fb21e9. Any later revision supersedes this rendering; the chain, not
this document, says which is current.</t>



    </abstract>



  </front>

  <middle>


<?line 57?>

<section anchor="introduction"><name>Introduction</name>
<t>RAPP is a content-addressed distributed organism. Its integrity rests on one invariant: <strong>the same
concept has the same bytes everywhere.</strong> This document specifies, normatively and completely, five
load-bearing primitives so any two independent implementations interoperate <strong>byte-for-byte with no
out-of-band agreement</strong>: canonicalization (§4), content addressing (§5), identity (§6), the frame (§7),
the egg (§9) — all riding one wire (§8): <spanx style="verb">POST /chat</spanx>, or a signed append-only frame. Implementations add
agents, cartridges, and registered <spanx style="verb">kind</spanx>s — never new endpoints, never new envelopes.</t>

<t><strong>Repository scope.</strong> <spanx style="verb">kody-w/RAPP</spanx> is the canonical public RAPP foundation,
product home, reference implementation, organism model, and philosophy.
<spanx style="verb">kody-w/rapp-1</spanx> is the canonical interoperable protocol authority. This
specification governs wire-compatible bytes and conformance; it does not absorb
the RAPP product or any downstream Rappter/RapterBox LLC product.</t>

<t><strong>Specification authority.</strong> The append-only DOGG chain at
<spanx style="verb">anchor/chain.jsonl</spanx> carries the normative revision content. Its hashes prove
integrity, not authority or ratification. Until an authenticated RAPP
registry/checkpoint exists, the chain accepted by the owner onto protected
canonical <spanx style="verb">kody-w/rapp-1</spanx> main is authoritative; an immutable accepted commit
plus head frame hash is the portable checkpoint. <spanx style="verb">SPEC.md</spanx> is the byte-exact
materialized human view, and <spanx style="verb">orient.json</spanx> is only a discovery beacon. The
selected chain-frame hash, not a mutable path or <spanx style="verb">rev-N</spanx> label, is the durable
identity of a protocol revision (§12.2).</t>

<section anchor="the-layered-model"><name>The layered model</name>
<t><spanx style="verb">
  L5  EGG        cartridge packaging (§9)          — MIME-multipart analogue
  L4  FRAME      universal event envelope (§7)     — the IP packet of RAPP
  L3  WIRE       transport: /chat + frames (§8)    — HTTP-analogue single method
  L2  IDENTITY   rappid namespace + trust (§6,§10) — URI + PKI analogue
  L1  ADDRESS    canonicalization + hash (§4,§5)   — the git object model
</spanx>
A higher layer <strong>MUST NOT</strong> redefine a lower one. Every layer names exactly one canonical form.</t>

</section>
</section>
<section anchor="requirements-language"><name>Requirements language</name>
<t>The key words <strong>MUST</strong>, <strong>MUST NOT</strong>, <strong>REQUIRED</strong>, <strong>SHALL</strong>, <strong>SHOULD</strong>, <strong>MAY</strong> are as in <xref target="RFC2119"/>/
<xref target="RFC8174"/> when in <strong>bold caps</strong>. (The Federal Constitution adopts the same clause.)</t>

</section>
<section anchor="terminology"><name>Terminology</name>
<t><strong>organism</strong> — a running brainstem with persistent identity. <strong>rappid</strong> — the eternal, mint-once name of an
organism/door/object (§6): minted once from a UUIDv4 or a public key, never derived from content or name.
<strong>frame</strong> — one immutable content-addressed event (§7). <strong>stream</strong> — an append-only hash-chained frame
sequence sharing one <spanx style="verb">stream_id</spanx>. <strong>particle / wave</strong> — a frame's two domain-separated addresses:
payload-hash / whole-frame-hash (§7.3). <strong>canonical form</strong> — the one <xref target="RFC8785"/> byte string for a value
(§4). <strong>legacy form</strong> — any other historical encoding; legacy is drift and <strong>MUST</strong> be migrated out
(Fed. Const. Art. III), except sealed re-genesis history (§12.1).
<strong>Grail kernel</strong> — an estate-declared, byte-pinned runtime substrate. Its <spanx style="verb">grail_id</spanx> is
<spanx style="verb">"grail:" || Hb("rapp/1:grail", kernel_bytes)</spanx>; repository, immutable ref, commit, path, raw SHA-256,
and byte length are provenance and verification data, not alternate identities. Once activated through
§13.3, those bytes are permanent (Protocol Constitution Art. 15); capabilities evolve outside them.
<strong>release capsule</strong> — the canonical <spanx style="verb">rapp-cicd/1-release</spanx> payload identifying one immutable candidate.
<strong>serving lineage</strong> — the sequence of qualified release identities that have received user traffic;
the currently served release is immutable even while a separate candidate lineage grows.
<strong>deployment cell</strong> — an independently observable and isolatable runtime failure domain governed by
<spanx style="verb">rapp-deploy/1</spanx>.</t>

</section>
<section anchor="canonicalization-l1"><name>Canonicalization (L1)</name>
<t><spanx style="verb">canonical(v)</spanx> is the UTF-8 byte string produced by <strong><xref target="RFC8785"/> JCS</strong> for the value <spanx style="verb">v</spanx>, defined <strong>only</strong>
over I-JSON <xref target="RFC7493"/>. JCS fixes member-name ordering (UTF-16 code-unit), string escaping, and number
serialization (ECMAScript <spanx style="verb">Number::toString</spanx>, ECMA-262); there is no insignificant whitespace and no
byte-order mark. Input JSON text <strong>MUST</strong> be well-formed UTF-8 <xref target="RFC7493"/> §2.1; an implementation <strong>MUST</strong>
refuse (not strip) a leading byte-order mark and <strong>MUST NOT</strong> transcode UTF-16 or UTF-32 input.
(Insignificant whitespace in input text is accepted; it is absent only from the canonical form.)</t>

<t><strong>RAPP input-domain profile (parse-side interoperability — this is a RAPP rule, not a JCS mandate).</strong> An
implementation <strong>MUST</strong> refuse (never repair) any JSON value that, at any depth, contains: (a) duplicate
member names in one object; (b) an unpaired UTF-16 surrogate, or a Unicode noncharacter (U+FDD0-U+FDEF, or
any code point whose low 16 bits are FFFE or FFFF) <xref target="RFC7493"/> §2.1, in any string or member name; (c) a number token that does
not survive the binary64 round-trip — let <spanx style="verb">d</spanx> be the token's nearest binary64 value under <spanx style="verb">roundTiesToEven</spanx>
(the IEEE-754 default; ±∞ are admissible results); the token is refused iff <spanx style="verb">d</spanx> is not finite, or the
<xref target="RFC8785"/> serialization of <spanx style="verb">d</spanx> (ECMA-262 <spanx style="verb">Number::toString</spanx>) denotes a different mathematical value than
the token (so <spanx style="verb">0.1</spanx> is accepted — it round-trips — while <spanx style="verb">9007199254740993</spanx> and <spanx style="verb">1e999</spanx> (→ +∞) are refused;
field range and type rules, such as <spanx style="verb">uint53</spanx>, are not part of this domain: the rule that types the field
applies them); (d) canonical form exceeding 1 MiB or JSON nesting depth
exceeding 64 (the root value is depth 1; each nested object/array adds 1). Refusal is whole (§7.5-style),
never partial.</t>

<t><strong>No normalization.</strong> RAPP applies <strong>no</strong> Unicode normalization when hashing, storing, or re-emitting an
existing value; strings are code-point sequences preserved verbatim and equality everywhere is code-point
equality (no canonical-equivalence matching). A producer creating a <strong>new</strong> human-or-identifier string
(slug, kind, label, <spanx style="verb">payload</spanx> object key) <strong>MUST</strong> emit it in Unicode NFC. A producer that builds a frame or
packs an egg from given fields treats every <spanx style="verb">payload</spanx> object member name, at any depth, as new: it
<strong>MUST</strong> refuse (never normalize) a name that is not in NFC. Consumers do not test frame contents for NFC
(egg paths excepted, §9.1). NFC is Unicode Normalization Form C [UAX #15] in the Unicode version the
producer implements. A producer <strong>MUST</strong> also refuse a name containing a code point that is unassigned
(General_Category <spanx style="verb">Cn</spanx>) in that version. By the Unicode normalization stability policy, a name that passes
this test for one producer then passes it for every producer on the same or a later Unicode version.</t>

<ul empty="true"><li>
  <t><strong>Migration note (drift C4):</strong> the <spanx style="verb">twin</spanx>/<spanx style="verb">rapp-body</spanx> <spanx style="verb">_frame.mjs::canonicalize()</spanx> (sorted-key
<spanx style="verb">JSON.stringify</spanx>) coincides with JCS only for string-only payloads; it <strong>MUST</strong> be replaced by the JCS
implementation of record, imported (not re-typed) by every repo that content-addresses.</t>
</li></ul>

</section>
<section anchor="content-addressing-l1-domain-separated"><name>Content addressing (L1) — domain-separated</name>
<t>Every hash is <strong>domain-separated</strong> (git's <spanx style="verb">type\0</spanx>, Nix's tagged store — collisions across address spaces
are made unconstructible):
<spanx style="verb">
H(space, v) = lowercase_hex( SHA-256( utf8(space) || 0x0A || canonical(v) ) )     ; v a value (§4)
Hb(space, b) = lowercase_hex( SHA-256( utf8(space) || 0x0A || b ) )                ; b raw octets
</spanx>
<spanx style="verb">space</spanx> is an exact ASCII tag, none containing <spanx style="verb">0x0A</spanx>: <spanx style="verb">"rapp/1:particle"</spanx>, <spanx style="verb">"rapp/1:wave"</spanx>, <spanx style="verb">"rapp/1:egg"</spanx>,
<spanx style="verb">"rapp/1:egg-manifest"</spanx>, <spanx style="verb">"rapp/1:rappid"</spanx>, <spanx style="verb">"rapp/1:grail"</spanx>, <spanx style="verb">"rapp/1:seal"</spanx>,
<spanx style="verb">"rapp/1:sealed-aad"</spanx>, <spanx style="verb">"rapp/1:sealed-key-request"</spanx>. A tag is used by either <spanx style="verb">H</spanx> or <spanx style="verb">Hb</spanx>, never
both: <spanx style="verb">H</spanx> uses <spanx style="verb">rapp/1:particle</spanx>, <spanx style="verb">rapp/1:wave</spanx>, <spanx style="verb">rapp/1:egg-manifest</spanx>, <spanx style="verb">rapp/1:sealed-aad</spanx> and
<spanx style="verb">rapp/1:sealed-key-request</spanx>; <spanx style="verb">Hb</spanx> uses <spanx style="verb">rapp/1:egg</spanx>, <spanx style="verb">rapp/1:rappid</spanx>, <spanx style="verb">rapp/1:grail</spanx> and <spanx style="verb">rapp/1:seal</spanx>. An
implementation <strong>MUST</strong> refuse to compute a hash under any other tag or with the other function. Output is always exactly 64 lowercase hex, <strong>never truncated or uppercased</strong>. Two values
are treated as the same object iff their same-space hashes are equal; SHA-256 collision resistance
FIPS 180-4 is a security assumption of this standard (§14). A <spanx style="verb">name/X.Y</spanx> label is never identity — only
a hash is. A bare 64-hex is meaningful <strong>only</strong> within its space; an implementation <strong>MUST NOT</strong> dereference
a hash from one space as an object of another, and content-addressed stores <strong>MUST</strong> key by <spanx style="verb">(space, hash)</spanx>.</t>

</section>
<section anchor="identity-the-rappid-l2"><name>Identity — the rappid (L2)</name>
<t>## Grammar (case-sensitive, <xref target="RFC7405"/>)
<spanx style="verb">abnf
rappid    = %s"rappid:@" owner "/" slug ":" hash
owner     = lclabel                       ; the lowercase GitHub login (1-39 chars)
slug      = lclabel                        ; 1-100 chars
lclabel   = lcalnum *( ["-"] lcalnum )     ; no leading/trailing/adjacent hyphen
lcalnum   = LCALPHA / DIGIT
LCALPHA   = %x61-7A                         ; a-z
hash      = 64HEXDIGLC
HEXDIGLC  = DIGIT / %x61-66                 ; 0-9 a-f
</spanx>
<spanx style="verb">owner</spanx> <strong>MUST</strong> be the lowercase form of the GitHub login (logins are case-insensitive; display casing is
presentation, never identity). Lengths are normative: <spanx style="verb">owner</spanx> 1–39, <spanx style="verb">slug</spanx> 1–100; an implementation
<strong>MUST</strong> refuse longer. This self-locating form is the <strong>only</strong> conformant rappid; <spanx style="verb">rappid:&lt;slug&gt;:&lt;hash&gt;</spanx>,
<spanx style="verb">rappid:v2:…</spanx>, bare UUIDs, <spanx style="verb">moment:</spanx>/name-hash derivations are legacy and <strong>MUST</strong> be migrated out
(Art. III), not read forever.</t>

<section anchor="streamid-and-kind-grammar"><name>stream_id and kind grammar</name>
<t><spanx style="verb">abnf
stream_id   = memory-stream / body-stream / swarm-stream
memory-stream = rappid ":" instance      ; one organism instance's memory
body-stream   = rappid                    ; an organism's biography
swarm-stream  = %s"net:" lclabel          ; a planetary-wire stream
instance      = lclabel                   ; 1-64 chars
kind          = lclabel "." lclabel       ; each label 1-64 chars
</spanx>
A <spanx style="verb">kind</spanx> string carries <strong>no intrinsic family</strong>; the §13 registry binds each registered <spanx style="verb">kind</spanx> to exactly
one family. Membership is tested by exact-match against the registry — never prefix inference, never wildcards.</t>

</section>
<section anchor="minting-mint-once"><name>Minting (mint-once)</name>
<t>The 64-hex tail is minted <strong>exactly once</strong> per identity, then immutable:
- <strong>keyless:</strong> <spanx style="verb">tail = Hb("rapp/1:rappid", uuid4_octets)</spanx>, where <spanx style="verb">uuid4_octets</spanx> is the 16-octet binary
  UUIDv4 <xref target="RFC9562"/> §5.4 (field/byte order per §4 of that RFC).
- <strong>keyed:</strong> <spanx style="verb">tail = Hb("rapp/1:rappid", SPKI_DER)</spanx>, the DER <spanx style="verb">SubjectPublicKeyInfo</spanx> <xref target="RFC5280"/> of the master key.
  A minter <strong>MUST</strong> refuse octets that are not the DER SPKI of a §10 key (an id-Ed25519 key <xref target="RFC8410"/>, or an
  id-ecPublicKey prime256v1 key with an uncompressed point); likewise a keyless mint <strong>MUST</strong> refuse 16 octets
  whose <xref target="RFC9562"/> version is not 4 or whose variant is not 0b10.</t>

<t>A producer <strong>MUST NOT</strong> derive the tail from owner/slug or any name (<spanx style="verb">sha256("owner/slug")</spanx> is prohibited —
drift ID-01/C3). On read of an existing <spanx style="verb">rappid.json</spanx> an implementation <strong>MUST</strong> reuse the stored tail
(canonicalize-on-read) and <strong>MUST NOT</strong> re-mint — with exactly one mechanism: the owner-authorized
<strong>re-anchor</strong> (§6.3), which mints a fresh 64-hex tail once per authorization and records the superseded id
in <spanx style="verb">_migrated_from</spanx>. Re-anchor is lawful in exactly three cases: (a) a 128→256-bit provisional upgrade
(§6.3); (b) §10 key rotation or compromise; (c) migrating a pre-rev-3 keyed tail minted with the un-tagged
<spanx style="verb">sha256(SPKI)</spanx> formula (which fails §10 discovery and <strong>MUST</strong> be re-anchored like a provisional identity).</t>

</section>
<section anchor="canonicalization-on-read-provisional-identifiers"><name>Canonicalization on read; provisional identifiers</name>
<t><spanx style="verb">canonicalize_rappid(s)</spanx> restructures any legacy form into §6.1, <strong>preserving the existing hash</strong> (never
inventing one). A restructured identifier whose tail is not exactly 64 lowercase hex (e.g. a legacy 32-hex
tail) is <strong>provisional</strong>: it exists only inside the reading process and <strong>MUST NOT</strong> appear in any emitted
frame, <spanx style="verb">stream_id</spanx>, egg, or registry entry. The one-time owner-authorized 128→256-bit re-anchor mints a
fresh 64-hex, records the old id in <spanx style="verb">_migrated_from</spanx>, and is the only way a provisional identity becomes
usable. A provisional identifier found in a stored artifact is a drift finding (Art. III). Re-anchor is the
single re-mint mechanism (§6.2), lawful only in the enumerated cases: provisional 128→256-bit upgrade,
§10 key rotation/compromise, and pre-rev-3 un-tagged-<spanx style="verb">sha256(SPKI)</spanx> keyed-tail migration.</t>

<t><strong>A re-anchor is valid only with a verifiable authorization</strong> — a self-asserted <spanx style="verb">_migrated_from</spanx> is
insufficient (it would let anyone hijack an identity). A re-anchor <strong>MUST</strong> be recorded as an owner-signed
§13.3 <strong>re-anchor record</strong> <spanx style="verb">{old_rappid, new_rappid, case, utc, sig, old_key_sig?}</spanx>; a consumer <strong>MUST</strong>
refuse a <spanx style="verb">new_rappid</spanx> (and treat <spanx style="verb">_migrated_from</spanx> as drift) unless that record is present and:
- <spanx style="verb">case:"rotation"</spanx> (uncompromised): <spanx style="verb">old_key_sig</spanx> (a §10 JWS by the <strong>old</strong> key) verifies — proof of
  continuity;
- <spanx style="verb">case:"compromise"</spanx>: <spanx style="verb">old_key_sig</spanx> is waived but a §10 <strong>tombstone</strong> for <spanx style="verb">old_rappid</spanx> is registered in the
  same append;
- <spanx style="verb">case:"tag-migrate"</spanx> (pre-rev-3 keyed tail): the verifier checks <spanx style="verb">lowercase_hex(SHA-256(SPKI_DER_old))</spanx> ==
  the old tail;
- <spanx style="verb">case:"upgrade"</spanx> (provisional 128→256): the old provisional id resolved to this owner at read time.
Each mints one fresh tail. The <strong>estate_owner's own</strong> re-anchor record <strong>MUST</strong> be signed by the outgoing
<spanx style="verb">estate_owner</spanx> key (§13.2); root-key compromise is recovered only by out-of-band re-anchoring (§13.1).</t>

</section>
</section>
<section anchor="the-frame-l4"><name>The Frame (L4)</name>
<t>## The envelope — exactly eleven keys
<spanx style="verb">json
{
  "spec":         "rapp/1",
  "kind":         "&lt;klabel.klabel&gt;",
  "stream_id":    "&lt;stream_id&gt;",
  "seq":          &lt;uint53&gt;,
  "utc":          "YYYY-MM-DDTHH:MM:SS.mmmZ",
  "payload":      { },
  "payload_hash": "&lt;64hex&gt;",
  "frame_hash":   "&lt;64hex&gt;",
  "prev":         "&lt;64hex|null&gt;",
  "prev_wave":    "&lt;64hex|null&gt;",
  "sig":          "&lt;jws|null&gt;"
}
</spanx>
- <strong><spanx style="verb">spec</spanx> MUST be the exact string <spanx style="verb">"rapp/1"</spanx></strong> in every frame. <spanx style="verb">rapp-frame/2.0</spanx>/<spanx style="verb">2.1</spanx> are legacy tokens
  and <strong>MUST NOT</strong> be emitted. Any revision changing the key set, any field's grammar, or either hash rule
  <strong>MUST</strong> change this token and land an Art. III total migration; revisions adding only new registered
  <spanx style="verb">kind</spanx>s/registry entries keep the token (Fed. Const. Art. II).
- <strong>Exactly these eleven keys, always present</strong>, none missing, none extra. A field that does not apply is
  present with value <spanx style="verb">null</spanx> (<spanx style="verb">prev</spanx>/<spanx style="verb">prev_wave</spanx> at genesis and on non-swarm streams; <spanx style="verb">sig</spanx> when unsigned) — never omitted,
  because <xref target="RFC8785"/> hashes <spanx style="verb">null</spanx> and an absent key differently. Extra or missing keys are refused (§7.5).
- <strong><spanx style="verb">payload</spanx> MUST be a JSON object</strong> (possibly empty <spanx style="verb">{}</spanx>); never <spanx style="verb">null</spanx>, array, string, number, or bool.
- <spanx style="verb">seq</spanx> is <spanx style="verb">uint53</spanx> (§7.4). A producer <strong>MUST NOT</strong> emit a frame whose canonical form exceeds 1 MiB or
  nesting depth 64 (§4).</t>

<section anchor="kind-families-one-envelope-registry-bound-families"><name>Kind families (one envelope, registry-bound families)</name>
<t>| family | example registered kinds | <spanx style="verb">stream_id</spanx> form | logs |
|---|---|---|---|
| <spanx style="verb">memory</spanx> | <spanx style="verb">memory.chat-turn</spanx>, <spanx style="verb">memory.tool-call</spanx>, <spanx style="verb">memory.save</spanx>, <spanx style="verb">memory.reconstructed</spanx> | memory-stream | one organism's life |
| <spanx style="verb">swarm</spanx>  | <spanx style="verb">swarm.guidance</spanx>, <spanx style="verb">swarm.echo</spanx>, <spanx style="verb">swarm.telemetry</spanx>, <spanx style="verb">swarm.reconstructed</spanx> | swarm-stream | the planetary wire |
| <spanx style="verb">body</spanx>   | <spanx style="verb">body.pulse</spanx>, <spanx style="verb">body.twin-pulse</spanx>, <spanx style="verb">body.reconstructed</spanx>, <spanx style="verb">body.re-genesis</spanx> | body-stream | an organism's biography |
Each family also has a <spanx style="verb">*.re-genesis</spanx> kind (<spanx style="verb">memory.re-genesis</spanx>, <spanx style="verb">swarm.re-genesis</spanx>, <spanx style="verb">body.re-genesis</spanx>)
used only by §12.1. The family is <strong>not</strong> the kind's prefix — it is the §13 registry binding (so
<spanx style="verb">body.twin-pulse</spanx> is family <spanx style="verb">body</spanx>). Adding a family or event is a new registered <spanx style="verb">kind</spanx> on the <strong>same</strong> envelope (Art. IV), never a
new frame type. A frame's <spanx style="verb">kind</spanx> family <strong>MUST</strong> be compatible with its <spanx style="verb">stream_id</spanx> form (table column 3).</t>

</section>
<section anchor="particle-and-wave-the-unification"><name>Particle and wave (the unification)</name>
<t>A frame carries <strong>both</strong> of its domain-separated addresses; a reader collapses it to whichever it needs.
Computed in order:
- <strong>particle</strong> — <spanx style="verb">payload_hash = H("rapp/1:particle", payload)</spanx>. The <strong>worldline identity and chain link</strong>.
- <strong>wave</strong> — <spanx style="verb">frame_hash = H("rapp/1:wave", frame \ {frame_hash, sig})</spanx> — the frame with <strong>exactly</strong> the
  <spanx style="verb">frame_hash</spanx> and <spanx style="verb">sig</spanx> keys removed, all nine remaining keys (including <spanx style="verb">payload_hash</spanx>) present.
Because <spanx style="verb">payload_hash</spanx> is in the wave pre-image, <spanx style="verb">frame_hash</spanx> attests the particle; because only
<spanx style="verb">frame_hash</spanx> (cannot hash itself) and <spanx style="verb">sig</spanx> (signs the result) are removed, the pre-image is unambiguous
and non-circular. Both hashes are always present (never <spanx style="verb">null</spanx>).</t>

</section>
<section anchor="chaining-time-and-merge-order"><name>Chaining, time, and merge order</name>
<t><list style="symbols">
  <t><strong><spanx style="verb">utc</spanx></strong> <strong>MUST</strong> be exactly the 24-byte form <spanx style="verb">YYYY-MM-DDTHH:MM:SS.mmmZ</spanx> — every <spanx style="verb">Y</spanx>, <spanx style="verb">M</spanx>, <spanx style="verb">D</spanx>, <spanx style="verb">H</spanx>,
<spanx style="verb">S</spanx> and <spanx style="verb">m</spanx> is an ASCII digit (%x30-39; Unicode digits such as U+0660-0669 or U+FF10-FF19 are refused),
<spanx style="verb">YYYY</spanx> is any year 0000-9999, uppercase <spanx style="verb">T</spanx>/<spanx style="verb">Z</spanx>, exactly three fractional digits, no numeric offset; the
seconds field <strong>MUST NOT</strong> be <spanx style="verb">60</spanx> (a leap second clamps
to <spanx style="verb">59.999</spanx>). All <spanx style="verb">utc</spanx> comparisons are <strong>bytewise</strong> over this fixed form (identical to chronological order).</t>
  <t><strong>Worldline chain (particle):</strong> the <strong>genesis</strong> frame has <spanx style="verb">seq</spanx>=0 and <spanx style="verb">prev</spanx>=null; every later frame has
<spanx style="verb">seq</spanx> = predecessor's <spanx style="verb">seq</spanx>+1 (contiguous) and <spanx style="verb">prev</spanx> = predecessor's <spanx style="verb">payload_hash</spanx>. <spanx style="verb">seq</spanx> is <spanx style="verb">uint53</spanx>: a
number token matching <spanx style="verb">0 / %x31-39 *DIGIT</spanx> (no sign, fraction or exponent, so <spanx style="verb">-0</spanx> is refused) whose value
is ≤ 2^53−1; a stream nearing 2^53−1 converges by re-genesis.</t>
  <t><strong>Wire chain (wave):</strong> <spanx style="verb">prev_wave</spanx> <strong>MUST</strong> be non-null <strong>iff</strong> <spanx style="verb">stream_id</spanx> is a swarm-stream <strong>and</strong>
<spanx style="verb">seq</spanx> &gt; 0, in which case it equals the predecessor's <spanx style="verb">frame_hash</spanx>; in every other frame (all memory/body
streams, every genesis) it <strong>MUST</strong> be <spanx style="verb">null</spanx>. (Presence is a function of stream family, not transport.)</t>
  <t>A frame is <strong>immutable</strong>: a new state is a new frame at a new hash; the head pointer (§7.6) re-points.</t>
  <t><strong>Cross-stream merge order</strong> (Dream-Catcher) is the total order: ascending <spanx style="verb">utc</spanx> (bytewise), ties broken
by ascending <spanx style="verb">frame_hash</spanx> (bytewise); no further ties are possible (§5).</t>
</list></t>

</section>
<section anchor="verification-the-complete-consumer-checklist"><name>Verification (the complete consumer checklist)</name>
<t>Before accepting a frame, a consumer <strong>MUST</strong>, in order, <strong>refuse</strong> (never repair/reparent) on any failure:
1. <strong>Shape &amp; types:</strong> exactly the eleven §7.1 keys; <spanx style="verb">spec</spanx>==<spanx style="verb">"rapp/1"</spanx>; <spanx style="verb">kind</spanx> a string matching §6.1.1
   ABNF, registered (§13), and bound to a family whose §7.2 column-3 form is the form of <spanx style="verb">stream_id</spanx> (a
   family outside the §7.2 table fits no form); <spanx style="verb">stream_id</spanx> a string matching §6.1.1; <spanx style="verb">seq</spanx> a <spanx style="verb">uint53</spanx>
   (§7.4); <spanx style="verb">utc</spanx> matching the
   §7.4 fixed form <strong>and</strong> a calendar-valid <xref target="RFC3339"/> <spanx style="verb">date-time</spanx> (so <spanx style="verb">2026-13-45T25:61:61.999Z</spanx> is
   refused); <spanx style="verb">payload</spanx> a JSON object; <spanx style="verb">payload_hash</spanx>/<spanx style="verb">frame_hash</spanx> <spanx style="verb">64HEXDIGLC</spanx>; <spanx style="verb">prev</spanx>/<spanx style="verb">prev_wave</spanx> each
   <spanx style="verb">null</spanx> or <spanx style="verb">64HEXDIGLC</spanx>; <spanx style="verb">sig</spanx> <spanx style="verb">null</spanx> or a §10 JWS string: the detached compact form with strict unpadded
   base64url parts, a protected header whose octets are <spanx style="verb">canonical(header)</spanx> and whose members are exactly
   the §10 <spanx style="verb">alg</spanx>, <spanx style="verb">b64</spanx>, <spanx style="verb">crit</spanx> and <spanx style="verb">kid</spanx> (a §6.1 rappid) values, and a signature of exactly 64 octets.
   A number token that passes §4 (c) but is not a <spanx style="verb">uint53</spanx> — <spanx style="verb">9007199254740992</spanx> (2^53), <spanx style="verb">0.0</spanx>, <spanx style="verb">1e0</spanx>, a
   negative value — leaves the frame a §4 value, so it is refused here, at step 1, never before the
   checklist; only a token that §4 (c) itself refuses (<spanx style="verb">9007199254740993</spanx>, <spanx style="verb">1e999</spanx>) makes the octets fail
   before step 1.
1a. <strong>Stream binding:</strong> <spanx style="verb">frame.stream_id</spanx> <strong>MUST</strong> byte-equal the identifier of the stream being extended
   or read (its declared <spanx style="verb">stream_id</spanx> at the head pointer / repo path of record). A genesis frame is
   accepted only for the stream it names. (Defeats cross-stream genesis/segment replay — §14.)
2. <strong>Particle:</strong> <spanx style="verb">payload_hash</spanx> == <spanx style="verb">H("rapp/1:particle", payload)</spanx>.
3. <strong>Wave:</strong> <spanx style="verb">frame_hash</spanx> == <spanx style="verb">H("rapp/1:wave", frame \ {frame_hash, sig})</spanx>.
4. <strong>Chain:</strong> <spanx style="verb">seq</spanx>==head.<spanx style="verb">seq</spanx>+1 and <spanx style="verb">prev</spanx>==head.<spanx style="verb">payload_hash</spanx> (or <spanx style="verb">seq</spanx>==0 ∧ <spanx style="verb">prev</spanx>==null at genesis);
   <spanx style="verb">utc</spanx> ≥ head.<spanx style="verb">utc</spanx> (bytewise). With no head, a consumer holding the §13 registry <strong>MUST</strong> refuse a
   <spanx style="verb">seq</spanx>=0 frame whose <spanx style="verb">frame_hash</spanx> differs from the stream's registered genesis (its sole non-deprecated
   <spanx style="verb">genesis</spanx> entry) when the registry has one; a registry without a <spanx style="verb">genesis</spanx> entry for the stream does not
   refuse on this ground. The comparison opens a chain: a later re-genesis resets the head (§7.6) and does
   not revoke frames already verified.
5. <strong>Wire:</strong> if <spanx style="verb">stream_id</spanx> is a swarm-stream and <spanx style="verb">seq</spanx>&gt;0, <spanx style="verb">prev_wave</spanx>==head.<spanx style="verb">frame_hash</spanx>; else
   <spanx style="verb">prev_wave</spanx>==null.
6. <strong>Signature:</strong> if <spanx style="verb">sig</spanx>≠null, discover the key and verify per §10 (registry key discovery, tail check,
   key lifecycle, the signature equation; present-but-invalid is refusal); a swarm-stream frame with
   <spanx style="verb">sig</spanx>==null is refused (§8/§10).
Steps 1–5 are <strong>time-independent</strong> (kind lookups only append, §13), so a frame passing them passes forever;
step 6 alone may flip pass→fail when a §10 tombstone with <spanx style="verb">revoked_utc</spanx> ≤ the frame's <spanx style="verb">utc</spanx> is later
registered — the one time-dependent check.</t>

</section>
<section anchor="heads-and-forks"><name>Heads and forks</name>
<t>A stream's <strong>head</strong> is the frame with the greatest verified <spanx style="verb">seq</spanx> descending from its registered genesis
(§13). A consumer <strong>MUST</strong> persist, per stream, the highest <spanx style="verb">(seq, frame_hash)</spanx> it verified and <strong>MUST</strong>
refuse any presented head with lower <spanx style="verb">seq</spanx>, or a different <spanx style="verb">frame_hash</spanx> at an already-verified <spanx style="verb">seq</spanx> (no
rollback, no silent reorg). Two distinct valid frames with equal <spanx style="verb">stream_id</spanx>, <spanx style="verb">seq</spanx>, and <spanx style="verb">prev</spanx> are a
<strong>fork</strong>: a consumer <strong>MUST</strong> refuse both branches past the fork point and surface a drift finding; only
the owner resolves a fork (Art. X), by re-genesis (§12.1) if needed.</t>

<t><strong>Exception (re-genesis head reset).</strong> The no-rollback rule above refuses a lower-<spanx style="verb">seq</spanx> head — but a
legitimate §12.1 re-genesis presents a new genesis at <spanx style="verb">seq</spanx>=0. When (and only when) the §13 registry maps a
<spanx style="verb">stream_id</spanx> to a new genesis <spanx style="verb">frame_hash</spanx> (§12.1 step 3), a consumer <strong>MUST</strong> verify that registered
genesis (§7.5) and then <strong>reset</strong> its persisted head for that <spanx style="verb">stream_id</spanx> to it. Only a registry-published
genesis authorizes a reset; any other lower-<spanx style="verb">seq</spanx> head remains a refused rollback.</t>

</section>
</section>
<section anchor="the-wire-l3"><name>The Wire (L3)</name>
<t>All interaction rides one of exactly two forms:
1. <strong>Synchronous — <spanx style="verb">POST /chat</spanx>, <spanx style="verb">application/json</spanx> both ways. The Grail is the reference:</strong> an endpoint
   conforms when it answers every scenario of the Grail conformance suite (<spanx style="verb">conformance/grail/</spanx>) the way
   the Grail pinned in that suite does — same HTTP status and members, the same <spanx style="verb">response</spanx> and <spanx style="verb">session_id</spanx>
   values, and for a refusal the same status and members (the <spanx style="verb">error</spanx> text is compared only against the
   same Grail version).
   - Request: a JSON object. <spanx style="verb">user_input</spanx> (string, REQUIRED; empty or whitespace-only counts as missing).
     <spanx style="verb">conversation_history</spanx> (OPTIONAL array; each item an object with <spanx style="verb">role</spanx> one of <spanx style="verb">"user"</spanx>, <spanx style="verb">"assistant"</spanx>,
     <spanx style="verb">"tool"</spanx> and <spanx style="verb">content</spanx> a string). <spanx style="verb">session_id</spanx> (string, OPTIONAL). Unrecognized members <strong>MUST</strong> be
     ignored, never refused.
   - Success: HTTP 200, a JSON object with at least <spanx style="verb">response</spanx> (string), <spanx style="verb">agent_logs</spanx> (string: one line per
     agent call, newline-separated, empty when no agent ran), and <spanx style="verb">session_id</spanx> (string). An endpoint
     <strong>MAY</strong> add other members (the Grail adds <spanx style="verb">model</spanx>, <spanx style="verb">requested_model</spanx>, <spanx style="verb">voice_mode</spanx>); a consumer
     <strong>MUST</strong> ignore members it does not recognize.
   - Refusal of a malformed request: HTTP 400 with exactly <spanx style="verb">{"error": string}</spanx>, a human-readable message.
     The status and the shape are fixed; the message text is not part of the frozen form (a Grail bug-fix
     release may reword it).
   - New capability is a new agent behind <spanx style="verb">/chat</spanx>, never a sibling REST route. <spanx style="verb">GET /health</spanx> is the
     liveness probe (HTTP 200 JSON object with <spanx style="verb">status</spanx>); it carries no RAPP semantics.
2. <strong>Asynchronous — an append-only frame (§7) published to a stream</strong> (a repo path, an <spanx style="verb">events/</spanx> log). A
   frame on a <strong>swarm-stream MUST</strong> carry <spanx style="verb">sig</spanx>≠null (§10); memory/body-stream frames <strong>MAY</strong> be unsigned.
   Any <em>history</em> is safe to read given a trusted head (§14); the hash chain (§5) makes tampering
   detectable.</t>

</section>
<section anchor="the-egg-l5-the-single-egg-spec-of-record"><name>The Egg (L5) — the single egg spec of record</name>
<t>An <strong>egg</strong> is a cartridge packing a unit of the estate. <strong>RAPP §9 is the one egg spec of record</strong> (it
subsumes and retires <spanx style="verb">EGG_FAMILY.md</spanx>, <spanx style="verb">NEIGHBORHOOD_EGG_SPEC.md</spanx>, <spanx style="verb">ESTATE_SPEC.md</spanx>, <spanx style="verb">rappterbook/EGG_SPEC.md</spanx>,
and the rest — drift C7). No other document may re-specify eggs; they cite this section.</t>

<section anchor="container-manifest-and-egg-address"><name>Container, manifest, and egg address</name>
<t>An egg is either a JSON object (<spanx style="verb">invite</spanx>/<spanx style="verb">session</spanx> variants) or a ZIP whose root is <spanx style="verb">manifest.json</spanx> (tree
variants). The manifest is a §4 value with exactly these members:
<spanx style="verb">json
{ "schema": "rapp/1-egg", "variant": "&lt;variant&gt;", "rappid": "&lt;§6.1 rappid&gt;",
  "created_utc": "&lt;§7.4 utc&gt;", "contents": [ {"path":"&lt;rel&gt;","hash":"&lt;64hex&gt;"}, … ], "payload": { },
  "sig": "&lt;jws|null&gt;" }
</spanx>
- <spanx style="verb">contents</spanx> <strong>MUST</strong> list every packed file <strong>except <spanx style="verb">manifest.json</spanx> itself</strong>, exactly once each, with
  <spanx style="verb">hash = Hb("rapp/1:egg", file_octets)</spanx> (§5) over the raw stored octets. <spanx style="verb">contents</spanx> is <strong>always present</strong>;
  for JSON (pointer/session) variants it <strong>MUST</strong> be exactly <spanx style="verb">[]</spanx>.
- <spanx style="verb">path</spanx> <strong>MUST</strong> be a relative POSIX path: <spanx style="verb">/</spanx>-separated non-empty NFC UTF-8 segments, no <spanx style="verb">.</spanx>/<spanx style="verb">..</spanx>
  segment, no leading <spanx style="verb">/</spanx>, no backslash, no Windows drive-qualified first segment (<spanx style="verb">ALPHA ":"</spanx>), not the
  root path <spanx style="verb">manifest.json</spanx>, and no two <spanx style="verb">path</spanx> values in one manifest equal as code-point sequences. Paths
  that differ only in case or normalization, or where one path is a directory prefix of another (<spanx style="verb">docs</spanx>,
  <spanx style="verb">docs/a.md</spanx>), are distinct and valid; a consumer that extracts to a filesystem where they would collide
  refuses the extraction, not the egg. A segment <strong>MUST NOT</strong> end in a period/space, contain <spanx style="verb">:</spanx>, contain a
  C0 control (U+0000-U+001F), or have a basename (the segment up to its first <spanx style="verb">.</spanx>), compared ASCII
  case-insensitively, equal to <spanx style="verb">CON</spanx>, <spanx style="verb">PRN</spanx>, <spanx style="verb">AUX</spanx>, <spanx style="verb">NUL</spanx>, <spanx style="verb">COM1</spanx>–<spanx style="verb">COM9</spanx>, or <spanx style="verb">LPT1</spanx>–<spanx style="verb">LPT9</spanx>. §9.3's 'no
  <spanx style="verb">..</spanx>' means no <spanx style="verb">..</spanx> segment.
  <spanx style="verb">contents</spanx> <strong>MUST</strong> be sorted ascending
  by the UTF-8 bytes of <spanx style="verb">path</spanx>.
- <spanx style="verb">payload</spanx> is a §4 object (variant-specific). <spanx style="verb">sig</spanx> is a §10 JWS over <spanx style="verb">canonical(manifest \ {sig})</spanx>, or
  <spanx style="verb">null</spanx>. For the <spanx style="verb">invite</spanx> variant <spanx style="verb">sig</spanx> is REQUIRED and <strong>MUST</strong> verify with <spanx style="verb">kid</spanx> in the §13.2 estate-owner
  succession (invites are estate-issued; a <spanx style="verb">sig</spanx> by any other key, even a validly registered one, is
  refused — otherwise an attacker mints a fresh rappid and forges invites). For other variants a non-null
  <spanx style="verb">sig</spanx> <strong>MUST</strong> verify per §10 with <spanx style="verb">kid</spanx> == a keyed rappid the consumer resolves via §13; a consumer
  presented a signed egg <strong>MUST</strong> verify it.
- <strong>The egg's one §5 address is</strong> <spanx style="verb">egg_hash = H("rapp/1:egg-manifest", manifest \ {sig})</spanx> — the manifest with
  exactly the <spanx style="verb">sig</spanx> key removed (mirroring §7.3's wave rule: <spanx style="verb">sig</spanx> authenticates the egg, <spanx style="verb">egg_hash</spanx> names
  it, so re-signing never changes identity). Stores key eggs by <spanx style="verb">("rapp/1:egg-manifest", egg_hash)</spanx>.
  (<spanx style="verb">"rapp/1:egg"</spanx> addresses file octets; <spanx style="verb">"rapp/1:egg-manifest"</spanx> addresses the egg as a whole.)
- <strong>Container determinism.</strong> A ZIP variant <strong>MUST</strong> use compression method <spanx style="verb">stored</spanx> (0) for <strong>every</strong> entry
  — no deflate in any variant (deflate is library-dependent, so it cannot be byte-reproducible; transport
  compression, if any, wraps the egg and is not the egg). Entries appear in <spanx style="verb">contents</spanx> order with
  <spanx style="verb">manifest.json</spanx> first; the <spanx style="verb">manifest.json</spanx> entry's octets <strong>MUST</strong> be exactly <spanx style="verb">canonical(manifest)</spanx>.
  Every local and central header carries: version needed to extract 20 (0x0014); general-purpose flags
  exactly 0x0800 (UTF-8 filename; no data descriptor, no encryption); DOS time 0x0000 and date 0x0021
  (<spanx style="verb">1980-01-01 00:00:00</spanx>); no extra field. Every central header also carries version made by 0x0014, no
  file comment, disk number start 0, internal and external attributes 0. Every field present in both the
  local and the central header holds the same value in both. The archive is the local records in entry
  order with no gap, then the central directory, then an end-of-central-directory record with disk numbers
  0, equal entry counts and no comment; no ZIP64 record, and no octet precedes the first local header or
  follows the end record. <spanx style="verb">contents[].hash</spanx> is over the file octets (identical to the archive octets under
  method 0). A JSON-variant egg's serialized form <strong>MUST</strong> be exactly <spanx style="verb">canonical(manifest)</spanx>. A producer
  <strong>MUST</strong> write exactly these values, so two conformant packers of the same manifest value emit
  byte-identical eggs. A consumer <strong>MUST</strong> refuse any other violation of this paragraph, but <strong>MUST</strong> accept
  any value of version made by, version needed (when both headers agree) and the internal and external
  attributes, and <strong>MUST NOT</strong> interpret them.</t>

</section>
<section anchor="variants-the-ratified-set-closes-egg-01"><name>Variants (the ratified set — closes EGG-01)</name>
<t>| variant | container | packs | required members |
|---|---|---|---|
| <spanx style="verb">organism</spanx> | ZIP | a full brainstem instance | contents (sorted) MUST include the root paths <spanx style="verb">rappid.json</spanx> and <spanx style="verb">soul.md</spanx>; MAY include <spanx style="verb">agents/*</spanx>, <spanx style="verb">organs/*</spanx>, memory files |
| <spanx style="verb">rapplication</spanx> | ZIP | one rapp | contents MUST include <spanx style="verb">rappid.json</spanx> and exactly one <spanx style="verb">agent.py</spanx> at the root (the agent of record); MAY include one <spanx style="verb">ui.html</spanx>, files under <spanx style="verb">state/</spanx>, and other files: this MAY list, like the organism row's, is not exhaustive |
| <spanx style="verb">session</spanx> | JSON | one runtime + transcript | <spanx style="verb">payload</spanx> = <spanx style="verb">{runtime:&lt;string&gt;, transcript:[&lt;object&gt;]}</spanx>; contents <spanx style="verb">[]</spanx> |
| <spanx style="verb">invite</spanx> | JSON | a QR-sized pointer (<strong>no packed files</strong>) | <spanx style="verb">payload</spanx> = <spanx style="verb">{target_rappid:&lt;rappid&gt;, target_url:&lt;string&gt;, target_kind:("neighborhood" / "estate")}</spanx>; contents <spanx style="verb">[]</spanx>; <spanx style="verb">sig</spanx> REQUIRED |
| <spanx style="verb">neighborhood</spanx> | ZIP | several organisms meant to live together | <spanx style="verb">payload</spanx> = <spanx style="verb">{members:[&lt;rappid&gt;,…]}</spanx>; contents = one sub-egg per member, named <spanx style="verb">&lt;owner&gt;--&lt;slug&gt;.egg</spanx> at the root, matched by the sub-egg manifest's <spanx style="verb">rappid</spanx> == the <spanx style="verb">payload.members[]</spanx> entry |
| <spanx style="verb">estate</spanx> | ZIP | several neighborhoods | <spanx style="verb">payload</spanx> = <spanx style="verb">{neighborhoods:[&lt;rappid&gt;,…]}</spanx>; contents = one sub-egg per neighborhood, named <spanx style="verb">&lt;owner&gt;--&lt;slug&gt;.egg</spanx> at root, matched by sub-egg <spanx style="verb">rappid</spanx> |
| <spanx style="verb">sealed</spanx> | ZIP | publicly mirrorable ciphertext with scoped key release | contents MUST be exactly <spanx style="verb">ciphertext.bin</spanx>; payload is the closed <spanx style="verb">rapp-sealed-artifact/1</spanx> profile in §9.2.1; <spanx style="verb">sig</spanx> REQUIRED |</t>

<t>For <spanx style="verb">organism</spanx> and <spanx style="verb">rapplication</spanx> eggs, <spanx style="verb">rappid.json</spanx> <strong>MUST</strong> be a §4 object whose <spanx style="verb">rappid</spanx> member equals
<spanx style="verb">manifest.rappid</spanx> (code points) and whose <spanx style="verb">schema</spanx>, when present, is <spanx style="verb">"rapp/1"</spanx>; a consumer refuses the egg
at §9.3 step (2) otherwise (this is the §9.3 no-reparent rule applied to the packed identity).
<spanx style="verb">payload.members</spanx> (neighborhood) and <spanx style="verb">payload.neighborhoods</spanx> (estate) are arrays of distinct §6.1 rappids,
possibly empty; an empty list packs no files. "Several" describes use, not a minimum.</t>

<t>The QR-sized invite that caused EGG-01 is the <strong><spanx style="verb">invite</spanx></strong> variant: a signed pointer object, not a
member-packing <spanx style="verb">neighborhood</spanx> egg. The banned legacy stamps (<spanx style="verb">brainstem-egg/2.3-neighborhood</spanx>,
<spanx style="verb">neighborhood-egg/1.0</spanx>) migrate to <spanx style="verb">{schema:"rapp/1-egg", variant:"invite" / "neighborhood"}</spanx> (Art. III).</t>

</section>
<section anchor="sealed-artifact-profile"><name>Sealed artifact profile</name>

<t>The <spanx style="verb">sealed</spanx> variant lets any unauthenticated mirror, including a commit-pinned
<spanx style="verb">raw.githubusercontent.com</spanx> URL, distribute an encrypted artifact globally without distributing its
decryption key.</t>

<t>The public bytes are <strong>ciphertext, not access control</strong>. Bytecode or obfuscation alone provides no
confidentiality. A conformant producer <strong>MUST</strong> use a random 256-bit data-encryption key (DEK) per artifact,
<strong>MUST NOT</strong> embed that DEK or a shared master key in the egg/client/URL, and <strong>MUST NOT</strong> place a password
in a URL. A password, passkey, device assertion, or account credential may authenticate to the key service;
it is not the artifact encryption key.</t>

<t>The ZIP contents are exactly one file:</t>

<t><spanx style="verb">text
ciphertext.bin = AES-256-GCM ciphertext || 16-byte authentication tag
</spanx></t>

<t>The manifest <spanx style="verb">payload</spanx> has exactly:</t>

<t><spanx style="verb">json
{
  "schema": "rapp-sealed-artifact/1",
  "cipher": "A256GCM",
  "nonce": "&lt;12 bytes, unpadded base64url&gt;",
  "plaintext_commitment": "&lt;64hex&gt;",
  "plaintext_bytes": 1234,
  "media_type": "application/wasm",
  "key_id": "&lt;64hex&gt;",
  "key_service_rappid": "rappid:@owner/key-service:64hex",
  "key_service_url": "https://keys.example.com/chat",
  "access": "scoped-key-release",
  "aad_hash": "&lt;64hex&gt;"
}
</spanx></t>

<t>In this template <spanx style="verb">schema</spanx>, <spanx style="verb">cipher</spanx> and <spanx style="verb">access</spanx> are literals that a consumer <strong>MUST</strong> match exactly
(<spanx style="verb">access</spanx> is always <spanx style="verb">scoped-key-release</spanx>); a <spanx style="verb">&lt;…&gt;</spanx> value is a placeholder of the stated form; the values
shown for <spanx style="verb">plaintext_bytes</spanx>, <spanx style="verb">media_type</spanx>, <spanx style="verb">key_service_rappid</spanx> and <spanx style="verb">key_service_url</spanx> are examples, and only
the member's type is fixed by the template (the rules below still bound each value).</t>

<t><spanx style="verb">plaintext_commitment</spanx> is a keyed commitment that cannot be tested without the DEK:</t>

<t><spanx style="verb">text
prk = HMAC-SHA-256(32 zero octets, DEK)
commitment_key = HMAC-SHA-256(prk, utf8("rapp/1:sealed-commitment") || 0x01)
plaintext_commitment = lowercase_hex(HMAC-SHA-256(commitment_key, plaintext_octets))
</spanx></t>

<t>This is the <xref target="RFC5869"/> HKDF-Extract/HKDF-Expand construction with an empty salt, one 32-byte output block,
and the exact info string <spanx style="verb">rapp/1:sealed-commitment</spanx>. The commitment is public but does not permit an
offline dictionary attack without the random 256-bit DEK.</t>

<t>The exact authenticated-data descriptor is:</t>

<t><spanx style="verb">json
{
  "schema": "rapp-sealed-artifact/1",
  "artifact_rappid": "&lt;manifest.rappid&gt;",
  "created_utc": "&lt;manifest.created_utc&gt;",
  "key_id": "&lt;payload.key_id&gt;",
  "plaintext_commitment": "&lt;payload.plaintext_commitment&gt;",
  "plaintext_bytes": 1234,
  "media_type": "&lt;payload.media_type&gt;"
}
</spanx></t>

<t><spanx style="verb">aad_hash = H("rapp/1:sealed-aad", descriptor)</spanx>, and <spanx style="verb">canonical(descriptor)</spanx> is supplied as AES-GCM
additional authenticated data. <spanx style="verb">nonce</spanx> decodes to exactly 12 bytes. <spanx style="verb">plaintext_bytes</spanx> is an integer from
zero through <spanx style="verb">2^30</spanx> (1 GiB), a RAPP safety ceiling below both the NIST SP 800-38D per-invocation limit
and the deterministic non-ZIP64 container boundary.
<spanx style="verb">ciphertext.bin</spanx> length is exactly <spanx style="verb">plaintext_bytes + 16</spanx>. The sealed egg's manifest signature is REQUIRED
and verifies per §10 with <spanx style="verb">kid</spanx> exactly equal to <spanx style="verb">manifest.rappid</spanx>. A sealed artifact therefore uses a
keyed §6.2 rappid controlled by its authorized publisher; another valid registry key cannot sign on its
behalf.</t>

<t><spanx style="verb">key_service_rappid</spanx> identifies the RAPP organism authorizing key release. <spanx style="verb">key_service_url</spanx> is its absolute
HTTPS §8 <spanx style="verb">POST /chat</spanx> URL and <strong>MUST</strong> end in <spanx style="verb">/chat</spanx>. The URL is location, not authority: the service
response is accepted only when its signatures and identifiers bind to <spanx style="verb">key_service_rappid</spanx>.</t>

<t>The caller sends the following canonical JSON object as the <spanx style="verb">user_input</spanx> string:</t>

<t><spanx style="verb">json
{
  "schema": "rapp-sealed-key-request/1",
  "egg_hash": "&lt;64hex&gt;",
  "key_id": "&lt;64hex&gt;",
  "recipient_rappid": "rappid:@owner/device:64hex",
  "recipient_spki_der_b64": "&lt;standard base64&gt;",
  "request_nonce": "&lt;64hex&gt;",
  "expires_utc": "YYYY-MM-DDTHH:MM:SS.mmmZ",
  "sig": "&lt;recipient detached JWS&gt;"
}
</spanx></t>

<t><spanx style="verb">sig</spanx> is over <spanx style="verb">canonical(request \ {sig})</spanx> and verifies under <spanx style="verb">recipient_rappid</spanx>; <spanx style="verb">egg_hash</spanx> is the §9.1
sealed egg address. The key service verifies entitlement, exact <spanx style="verb">(egg_hash,key_id)</spanx>, request expiry,
recipient key binding, and nonce non-reuse.</t>

<t>The §8 <spanx style="verb">response</spanx> string is canonical JSON:</t>

<t><spanx style="verb">json
{
  "schema": "rapp-sealed-key-release/1",
  "egg_hash": "&lt;request.egg_hash&gt;",
  "key_id": "&lt;request.key_id&gt;",
  "recipient_rappid": "&lt;request.recipient_rappid&gt;",
  "request_hash": "&lt;H('rapp/1:sealed-key-request', request without sig)&gt;",
  "wrap_alg": "ECDH-ES+A256KW",
  "wrapped_key_jwe": "&lt;JWE Compact Serialization&gt;",
  "issued_utc": "YYYY-MM-DDTHH:MM:SS.mmmZ",
  "expires_utc": "YYYY-MM-DDTHH:MM:SS.mmmZ",
  "service_sig": "&lt;key-service detached JWS&gt;"
}
</spanx></t>

<t><spanx style="verb">service_sig</spanx> is over <spanx style="verb">canonical(release \ {service_sig})</spanx> and verifies under <spanx style="verb">key_service_rappid</spanx>.
<spanx style="verb">wrapped_key_jwe</spanx> uses <xref target="RFC7516"/> with <spanx style="verb">alg:"ECDH-ES+A256KW"</spanx> and <spanx style="verb">enc:"A256GCM"</spanx> for the declared
recipient SPKI. The service <strong>MUST NOT</strong> return a global raw DEK. Authorization, expiry, device scope, and
key rotation are service policy recorded in signed frames, not fields that alter the sealed egg's content
address.</t>

<t>A mirror URL <strong>SHOULD</strong> be immutable (for GitHub Raw, pin a commit SHA rather than a moving branch). URL
secrecy is never assumed: integrity comes from the egg address and signature, confidentiality from
AES-GCM, and use authorization from scoped key release.</t>

<t>Revocation prevents future key release. It cannot erase ciphertext or plaintext already downloaded and
decrypted by an authorized recipient. A conformant product <strong>MUST</strong> state this limit plainly. It also
<strong>MUST NOT</strong> claim that encrypted bytecode cannot be inspected after decryption; legal/license controls and
bounded server authority remain separate from cryptographic confidentiality.</t>

</section>
<section anchor="conformance"><name>Conformance</name>
<t><list style="symbols">
  <t><strong>Producer</strong> <strong>MUST</strong> emit only <spanx style="verb">schema:"rapp/1-egg"</spanx> with a variant from §9.2, a §6.1 rappid, and, for
ZIP variants, a <spanx style="verb">contents</spanx> list whose every hash verifies. Every egg it emits, and every sub-egg it packs
into one, <strong>MUST</strong> pass consumer steps (0)-(2) below; a REQUIRED <spanx style="verb">sig</spanx> <strong>MUST</strong> be present and be a §10
JWS (a producer without the signer's key context need not verify it). Given input that cannot meet these
rules, a producer <strong>MUST</strong> refuse rather than emit or repair. It <strong>MUST NOT</strong> emit any legacy egg schema.</t>
  <t><strong>Consumer</strong> <strong>MUST</strong> read every §9.2 variant, dispatch on <spanx style="verb">variant</spanx>, verify <strong>integrity then viability</strong> —
(0) the manifest is a §4 value satisfying <strong>every §9.1 rule</strong> — exact member set, <spanx style="verb">path</spanx> grammar (no <spanx style="verb">..</spanx>,
no leading <spanx style="verb">/</spanx>, no backslash), no duplicate paths, sort order, and for ZIP variants the archive entry set
equals <spanx style="verb">contents</spanx> ∪ {<spanx style="verb">manifest.json</spanx>} in the §9.1 deterministic order (this is the zip-slip defense; an
unenforced path grammar defends nothing); (1) every <spanx style="verb">contents[].hash</spanx> recomputes per §5; (2) the variant's
§9.2 structural requirements hold — and refuse whole on any failure; it <strong>MUST NOT</strong> reparent on transport.</t>
</list></t>

</section>
<section anchor="instantiation-instance-identity-and-grownfrom-lineage-rev-6-closes-the-hatch-seam"><name>Instantiation — instance identity and <spanx style="verb">grown_from</spanx> lineage (rev-6; closes the hatch seam)</name>
<t>An egg names an <strong>artifact</strong>; a hatch creates an <strong>instance</strong>. Rev-5 specified packing and reading but
left instantiation identity unwritten, so every implementation had to invent its own — this section is
that missing word.</t>

<t><list style="symbols">
  <t>The <spanx style="verb">rappid</spanx> in a packed egg's <spanx style="verb">rappid.json</spanx> (§9.2) names the <strong>artifact</strong>. Every hatch of the same
egg reads the <strong>same</strong> artifact identity (§6.2 canonicalize-on-read); re-minting it on hatch is
prohibited (§6.2).</t>
  <t>A consumer that instantiates an egg into a live installation <strong>MUST</strong> mint a <strong>fresh §6.2 identity
for the instance</strong>, exactly once, at first boot — from entropy, never derived from the artifact
identity, host name, or path. Two instances of one egg share the artifact identity and <strong>MUST NOT</strong>
share an instance identity.</t>
  <t>The instance's identity document <strong>SHOULD</strong> record <strong><spanx style="verb">grown_from</spanx></strong>: the §9.1 egg address
(64 lowercase hex) of the egg it was instantiated from. <spanx style="verb">grown_from</spanx> is written at mint time and is
<strong>immutable</strong> thereafter; it is <spanx style="verb">null</spanx> when the source is unknown; a producer <strong>MUST NOT</strong> fabricate
it — lineage is a fact about a birth, never a claim to invent. An instance that cannot say where it
came from says <spanx style="verb">null</spanx>.</t>
  <t><spanx style="verb">grown_from</spanx> is <strong>lineage, not inheritance</strong>: it confers no authority, no trust, and no §10 key
material. A reader <strong>MUST</strong> treat it as an unverified assertion unless the named egg is available and
its address recomputes per §9.1/§5.</t>
  <t>A newly authored artifact produced from one or more existing RAPP objects <strong>MAY</strong> record
<spanx style="verb">crossed_from</spanx> in its packaged <spanx style="verb">rappid.json</spanx>. The value is a sorted, duplicate-free array of typed
addresses <spanx style="verb">{space, hash}</spanx>, where <spanx style="verb">space</spanx> is <spanx style="verb">"rapp/1:particle"</spanx> or <spanx style="verb">"rapp/1:egg-manifest"</spanx> and <spanx style="verb">hash</spanx>
is 64 lowercase hex. One parent denotes an <strong>offspring</strong>; two or more denote a <strong>cross</strong>. The new
artifact <strong>MUST</strong> mint its own §6.2 rappid; parent artifacts and identities remain unchanged.
<spanx style="verb">crossed_from</spanx> is lineage only: it transfers no signature authority, ownership, entitlement, secret,
or trust. A verifier treats each parent as unverified until the addressed object is available and
recomputes in its declared space.</t>
</list></t>

</section>
</section>
<section anchor="trust-and-signatures-l2"><name>Trust and signatures (L2)</name>
<t><spanx style="verb">sig</spanx> is OPTIONAL on memory/body streams and REQUIRED on swarm streams (§8). Chain integrity comes from the
hash links (§5), not signatures. When present, <spanx style="verb">sig</spanx> <strong>MUST</strong> be JWS Compact Serialization with <strong>detached,
unencoded payload</strong> (<xref target="RFC7515"/> App. F + <xref target="RFC7797"/>):
- protected header members are <strong>exactly</strong> <spanx style="verb">alg</spanx> (<spanx style="verb">"EdDSA"</spanx> or <spanx style="verb">"ES256"</spanx>), <spanx style="verb">b64</spanx> (<spanx style="verb">false</spanx>), <spanx style="verb">crit</spanx>
  (<spanx style="verb">["b64"]</spanx>), <spanx style="verb">kid</spanx> (signer's §6.1 rappid), no others; the header octets <strong>MUST</strong> be <spanx style="verb">canonical(header)</spanx>
  (§4 — JCS orders them <spanx style="verb">alg</spanx>, <spanx style="verb">b64</spanx>, <spanx style="verb">crit</spanx>, <spanx style="verb">kid</spanx>, no whitespace);
- the <spanx style="verb">sig</spanx> string is the detached compact form <spanx style="verb">BASE64URL(canonical(header)) || ".." || BASE64URL(signature)</spanx>;
- JWS signing input = <spanx style="verb">BASE64URL(canonical(header)) || "." || canonical(frame \ {sig})</spanx>;
- <spanx style="verb">alg</spanx>: <spanx style="verb">EdDSA</spanx>/Ed25519 <xref target="RFC8037"/> or <spanx style="verb">ES256</spanx> <xref target="RFC7518"/>; Ed25519 verification is <xref target="RFC8032"/> §5.1.7 with
  <spanx style="verb">S &lt; L</spanx> required and the cofactorless check <spanx style="verb">encode([S]B - [k]A) == R</spanx>, where <spanx style="verb">k</spanx> is SHA-512(<spanx style="verb">R</spanx> || <spanx style="verb">A</spanx> ||
  message) read as a little-endian integer and reduced mod <spanx style="verb">L</spanx> (as in <xref target="RFC8032"/>'s §6 reference code); public
  keys that decode (including small-order points) are not refused for their order; ES256 signers <strong>SHOULD</strong> sign deterministically
  <xref target="RFC6979"/> (Ed25519 is deterministic by construction) so signed frame files stay byte-reproducible.</t>

<t><strong>Key discovery.</strong> A keyed rappid's tail is one-way (<spanx style="verb">Hb("rapp/1:rappid",SPKI)</spanx>). A verifier resolves the
signer's SPKI (DER) <strong>from the §13 registry</strong> entry (<spanx style="verb">rappid</spanx> → <spanx style="verb">spki_der_b64</spanx>); the door-of-record
<spanx style="verb">rappid.json</spanx> is the publication venue the registry entry is generated from, not itself a verification
source. The verifier <strong>MUST</strong> check <spanx style="verb">Hb("rapp/1:rappid", SPKI_DER)</spanx> == the rappid's tail and refuse on
mismatch or registry absence.</t>

<t><strong>Key lifecycle.</strong> Rotation is an identity re-anchor (§6.3, case <spanx style="verb">rotation</spanx>) with new <spanx style="verb">tail =
Hb("rapp/1:rappid", newSPKI)</spanx> and a §13.3 re-anchor record. A re-anchor <strong>deprecates</strong> the superseded
rappid's §13 <spanx style="verb">spki</spanx> entry: a verifier <strong>MUST</strong> refuse a <spanx style="verb">sig</spanx> whose <spanx style="verb">kid</spanx> is a superseded rappid on any
frame with <spanx style="verb">utc</spanx> ≥ the re-anchor record's <spanx style="verb">utc</spanx> (rotation gives forward security; earlier frames verify as
before). The <spanx style="verb">deprecated</spanx> flag of an <spanx style="verb">spki</spanx> entry does not by itself refuse a <spanx style="verb">sig</spanx>: the entry still
resolves the key (entries are append-only, §13.3), and a <spanx style="verb">sig</spanx> by it is refused only by the re-anchor rule
above or by a tombstone. To stop a key without rotating, the owner registers a tombstone. Compromise is declared by an owner-signed <strong>tombstone</strong> in the §13 registry <spanx style="verb">{rappid, revoked_utc}</spanx>; a verifier <strong>MUST</strong> refuse any <spanx style="verb">sig</spanx> by a
tombstoned key on a frame whose <spanx style="verb">utc</spanx> ≥ <spanx style="verb">revoked_utc</spanx>, checking tombstones at verification time (§7.5 step
6). "Owner-signed" means a <spanx style="verb">sig</spanx> verifying with <spanx style="verb">kid</spanx> == the registry's designated <spanx style="verb">estate_owner</spanx> rappid
(§13). A consumer <strong>MUST NOT</strong> infer authorship from an unsigned frame (keyless rappids assert location,
not authorship).</t>

</section>
<section anchor="conformance-classes"><name>Conformance classes</name>
<t><list style="symbols">
  <t><strong>Producer:</strong> emits only §4 JCS/I-JSON bytes, §5 domain-separated full-SHA-256 addresses, §6 rappids
minted per §6.2, §7.1 eleven-key frames, §9 <spanx style="verb">rapp/1-egg</spanx> variants — and <strong>no legacy form</strong>.</t>
  <t><strong>Consumer:</strong> runs the full §7.5 checklist (incl. 1a binding), §9.3 egg verification, §10 signature +
key-discovery + tombstone checks, canonicalizes legacy ids on read (§6.3), refuses on any failure, never
repairs/reparents/rolls back (§7.6).</t>
  <t><strong>Router/Mirror:</strong> invents no endpoints (§8), declares subordination to
<spanx style="verb">kody-w/rapp-1</spanx> for protocol semantics, and serves only
provenance-stamped hash-matching mirrors. Estate-specific product scope is
resolved separately through that estate's signed registry and master plan.</t>
</list></t>

<section anchor="immutable-grail-kernel-conformance"><name>Immutable Grail kernel conformance</name>
<t>An estate declares a Grail kernel through the exact §13.3 <spanx style="verb">grail-kernel</spanx> entry. Its <spanx style="verb">release_scope</spanx>
selects the release family to which the pin applies; a registry <strong>MUST</strong> contain at most one
<spanx style="verb">grail-kernel</spanx> entry for any release scope. Its entry-level <spanx style="verb">sig</spanx>
<strong>MUST</strong> verify under <spanx style="verb">declared_by</spanx>, which <strong>MUST</strong> be the estate owner in effect at <spanx style="verb">activated_utc</spanx>
(§13.2); <spanx style="verb">activated_utc</spanx> <strong>MUST NOT</strong> be more than 300 seconds after the verifier's first-seen time for
that entry. The pin activates locally when a consumer first accepts an authenticated, non-rollback
registry containing that valid declaration. Until then it is structural evidence only. The Grail is
identified by <spanx style="verb">grail_id</spanx>, never by a mutable branch, tag, repository name, or product label. Once
activated, the pin is a permanent compatibility anchor, not a moving release channel:</t>

<t><list style="numbers" type="1">
  <t>Every conformance evaluation <strong>MUST</strong> receive <spanx style="verb">release_scope</spanx> from an authenticated owner-controlled
release policy, never from candidate bytes or candidate-controlled configuration, then resolve its
one <spanx style="verb">grail_id</spanx> exclusively from the activated, persisted §13.3 binding. If the policy repeats
<spanx style="verb">grail_id</spanx>, that value is only a consistency assertion and <strong>MUST</strong> byte-equal the registry result; it
cannot select or rebind the pin. Every ring and release/deployment stage, including development,
qualification, Preprod, installation, and production verification, <strong>MUST</strong> compare the candidate's
Grail path to that exact binding, SHA-256, and byte length.</t>
  <t>A missing, changed, substituted, or unmeasured Grail byte is <spanx style="verb">kernel-drift</spanx> and <strong>MUST</strong> fail closed.
Approval, urgency, compatibility claims, and semantic equivalence cannot waive byte inequality.</t>
  <t>A pipeline <strong>MUST NOT</strong> silently restore the pinned file after testing a different file. The exact
release-shaped artifact containing the immutable Grail bytes <strong>MUST</strong> itself pass the release gates.</t>
  <t>Every gate <strong>MUST</strong> resolve every archive, container, wrapper, environment override, symlink, and
filesystem indirection to one regular runtime entry-point file under the immutable release root;
refuse links and ambiguous alternatives; verify its bytes; and bind the release digest, resolved
entry-point path, <spanx style="verb">release_scope</spanx>, <spanx style="verb">grail_id</spanx>, raw SHA-256, and byte length into its evidence.</t>
  <t>Every gate that executes the kernel <strong>MUST</strong> bind verification atomically to execution from a sealed
immutable object or snapshot. An already-open descriptor is sufficient only when its backing bytes
are under platform-enforced write exclusion for the entire verification-through-consumption interval
and the interpreter/loader consumes that exact descriptor without reopening a pathname. An immutable
content-addressed release root is sufficient only when no concurrent principal can modify it. A
hash-then-path-launch without one of those guarantees is nonconformant. At least one execution gate for
every supported production platform <strong>MUST</strong> perform this proof before release approval. Merely
carrying an unused matching file is insufficient. A stored transpiled, bundled, generated, or patched
derivative is different kernel bytes and requires a new <spanx style="verb">grail_id</spanx>; ordinary interpreter/JIT
compilation directly from the pinned bytes is permitted when no alternate stored kernel is selected.</t>
  <t>New implementation behavior <strong>MUST</strong> live outside the Grail kernel and <strong>MUST NOT</strong> alter any
RAPP-visible canonical form or wire semantic except through the registration and evolution rules of
§§7, 9, 12, and 13.</t>
  <t>If required behavior cannot be expressed outside the pin, the implementation <strong>MUST</strong> report an
incompatibility. It <strong>MUST NOT</strong> edit the Grail and continue under the same identity.</t>
  <t>Different kernel bytes produce a different <spanx style="verb">grail_id</spanx> and therefore are a different Grail. A new
<spanx style="verb">grail-kernel</spanx> entry may coexist and may name the old <spanx style="verb">grail_id</spanx> as <spanx style="verb">predecessor</spanx>, but it <strong>MUST NOT</strong>
overwrite, retag, alias, or redefine the prior Grail. A successor uses a new <spanx style="verb">release_scope</spanx>; an
existing scope is never rebound. A non-null <spanx style="verb">predecessor</spanx> <strong>MUST</strong> name an earlier accepted
<spanx style="verb">grail-kernel</spanx> entry and <strong>MUST NOT</strong> form a cycle. A registry <strong>MUST</strong> contain at most one
<spanx style="verb">grail-kernel</spanx> entry for each <spanx style="verb">grail_id</spanx>.</t>
  <t>On first activation a consumer <strong>MUST</strong> persist the full canonical <spanx style="verb">grail-kernel</spanx> entry. Every later
accepted registry <strong>MUST</strong> retain that entry byte-for-byte. Removal, mutation, or a second entry for
the same <spanx style="verb">grail_id</spanx> is a permanent <spanx style="verb">kernel-drift</spanx> refusal even when <spanx style="verb">registry_seq</spanx> increased.</t>
</list></t>

<t>This rule governs release topology rather than the §8 wire shape, so it does not add a frame member,
endpoint, compatibility shim, or alternate <spanx style="verb">rapp/1</spanx> encoding.</t>

</section>
<section anchor="operational-conformance-profiles"><name>Operational conformance profiles</name>
<t>RAPP/1 defines the substrate. Two subordinate operational profiles define how a production AI changes
without mutating that substrate or the serving system underneath users:</t>

<t><list style="symbols">
  <t><strong>RAPP CI/CD</strong> (<spanx style="verb">rapp-cicd/1</spanx>) — <spanx style="verb">protocols/rapp-cicd/1/SPEC.md</spanx>; immutable release capsules,
ordered qualification evidence, exact-candidate promotion, Preprod, and rollback/restore proof.</t>
  <t><strong>RAPP Deploy</strong> (<spanx style="verb">rapp-deploy/1</spanx>) — <spanx style="verb">protocols/rapp-deploy/1/SPEC.md</spanx>; isolated serving/candidate
lineages, cellular rollout, progressive exposure, expiring AI-health evidence, quarantine, and exact
rollback.</t>
</list></t>

<t>The profiles are RAPP/1 applications, not alternate wire versions:</t>

<t><list style="numbers" type="1">
  <t>Their payloads <strong>MUST</strong> be §4 canonical I-JSON and are identified by
<spanx style="verb">H("rapp/1:particle", payload)</spanx>.</t>
  <t>Authoritative profile payloads <strong>MUST</strong> travel in signed RAPP/1 frames using a registered compatible
kind. Local unsigned files are drafts, fixtures, or caches and cannot authorize promotion or traffic.</t>
  <t>They <strong>MUST NOT</strong> add a transport endpoint beside §8 <spanx style="verb">POST /chat</spanx>, redefine any RAPP/1 primitive, or
weaken §11.1.</t>
  <t>An estate activates a profile through an authenticated §13.3 <spanx style="verb">protocol</spanx> entry pinning its exact
repository, path, and SHA-256. A moving branch is discovery, never authority.</t>
  <t>A claim of <strong>RAPP production conformance</strong> requires both profiles. Core Producer, Consumer, and
Router/Mirror implementations remain conformant without implementing production operations.</t>
  <t>Fixed envelope keys carry the safety invariants. Policy-defined check identifiers, component kinds,
health objectives, and resilience controls are extension points; adding one does not change the
profile token or the RAPP/1 wire.</t>
  <t>A consumer <strong>MUST</strong> refuse unknown required policy semantics. It may preserve and relay unknown
optional evidence, but may not treat it as satisfying a requirement it does not implement.</t>
</list></t>

<t>The executable reference validators are <spanx style="verb">rapp_cicd.py</spanx> and <spanx style="verb">rapp_deploy.py</spanx>; controlled profile vectors
are in <spanx style="verb">operations_conformance.py</spanx>. JSON Schemas define structural shape, while the reference validators
enforce ordering, identity, temporal, and cross-document rules that JSON Schema cannot express.</t>

</section>
</section>
<section anchor="versioning-evolution-no-legacy"><name>Versioning, evolution, no-legacy</name>
<t>RAPP is a <strong>living standard</strong> (WHATWG): revised in place, never forked into parallel versions; a <spanx style="verb">name/X.Y</spanx>
label <strong>MUST NOT</strong> ever denote two shapes (Art. II) — a shape change moves the token (§7.1). Published
content-addressed artifacts are <strong>immutable</strong> (SemVer/crates). Within an estate there is <strong>no perpetual
backward compatibility</strong> for the estate's own artifacts and retired legacy encodings (Art. III): a change
to such a form is a <strong>total migration</strong> of every instance + <strong>deletion</strong> of the old form. Sealed re-genesis
history (§12.1) is the retained live-stream exception and is not "legacy compatibility."</t>

<t><strong>The <spanx style="verb">rapp/1</spanx> wire is frozen (rev-15, Art. 18).</strong> No revision of this standard may change a form a
<spanx style="verb">rapp/1</spanx> artifact is verified by: canonicalization (§4), the hash function and its tags (§5), the rappid
grammar and mint (§6.1, §6.2), the eleven-key envelope and its two addresses (§7.1, §7.3), the consumer
checklist (§7.5), the two wire forms and the <spanx style="verb">/chat</spanx> shapes (§8), or the egg container and address (§9.1).
A change to any of those is not a revision; it moves the token to <spanx style="verb">rapp/2</spanx>, specified beside this
document, and <spanx style="verb">rapp/1</spanx> artifacts keep verifying under this document forever. A consumer <strong>MUST NOT</strong>
refuse a <spanx style="verb">rapp/1</spanx> artifact because a later token exists. Everything Art. IV names still grows under
<spanx style="verb">rapp/1</spanx>: registered kinds, egg variants, error codes, registry entry types, vocabulary, subordinate
profiles, and the registry itself. The frozen forms are what a stranger's implementation, written once
and never updated, relies on; they are the reason an independent implementation can be finished.</t>

<t>Immutable specification-governance history is a separate narrow exception:
rev-5 through rev-13 anchor frames retain interpretable immutable pointer
payloads so their ratified normative bytes remain resolvable. They are
historical authority records, not accepted live legacy protocol forms. A
producer <strong>MUST NOT</strong> emit the pointer-only revision profile after rev-13.</t>

<section anchor="re-genesis-converging-an-immutable-chain-one-owner-authorized-operation"><name>Re-genesis (converging an immutable chain — one owner-authorized operation)</name>
<t><list style="numbers" type="1">
  <t><strong>Terminal seal:</strong> <spanx style="verb">seal = Hb("rapp/1:seal", head_octets)</spanx>. <spanx style="verb">head_octets</spanx> is the exact octets of the old
head's record <strong>as retained under <spanx style="verb">legacy/</spanx></strong> (step 4): for a one-frame-per-file store, the retired
file's full octets; for a line-oriented log, the head's line <strong>excluding</strong> its trailing terminator. The
retained <spanx style="verb">legacy/</spanx> artifact is the verification reference for the seal, and retirement <strong>MUST</strong> preserve
those octets bit-exact. The step-3 <spanx style="verb">genesis</spanx> registry entry <strong>SHOULD</strong> record the <spanx style="verb">legacy/</spanx> artifact's
repo+path so a consumer <strong>MAY</strong> verify the seal against it. (Defined for every legacy shape, including
ones that cannot be §7.3-hashed.)</t>
  <t><strong>New genesis:</strong> emit <spanx style="verb">seq</spanx>=0, <spanx style="verb">prev</spanx>=null, <spanx style="verb">kind</spanx> = the registered re-genesis kind <strong>of the stream's
family</strong> — <spanx style="verb">memory.re-genesis</spanx>, <spanx style="verb">swarm.re-genesis</spanx>, or <spanx style="verb">body.re-genesis</spanx> (three §13 kinds, used only
here) so the frame satisfies §7.2 family↔stream compatibility for any stream — <spanx style="verb">sig</spanx>≠null owner-signed
(§10, §13 <spanx style="verb">estate_owner</spanx>), <spanx style="verb">payload</spanx> = <spanx style="verb">{"migrated_from":{"stream_id":&lt;old&gt;,"terminal_seal":&lt;seal&gt;,
"terminal_seq":&lt;n&gt;}}</spanx> and no other members. A consumer <strong>MUST</strong> treat any <spanx style="verb">*.re-genesis</spanx> kind as the sole
re-genesis marker for its family and refuse an unsigned/non-owner one. A consumer <strong>MUST</strong> also refuse,
at §7.5 step 1, a <spanx style="verb">*.re-genesis</spanx> frame whose <spanx style="verb">payload</spanx> is not exactly this object: <spanx style="verb">migrated_from</spanx> with
exactly <spanx style="verb">stream_id</spanx> (a §6.1.1 stream_id), <spanx style="verb">terminal_seal</spanx> (64HEXDIGLC) and <spanx style="verb">terminal_seq</spanx> (a <spanx style="verb">uint53</spanx>);
and, at step 4, one with <spanx style="verb">seq</spanx>≠0 or <spanx style="verb">prev</spanx>≠null.</t>
  <t><strong>Register (the linearization point):</strong> append a §13.3 <spanx style="verb">genesis</spanx> entry mapping the <spanx style="verb">stream_id</spanx> to the new
genesis's <spanx style="verb">frame_hash</spanx>, <strong>and flag every prior <spanx style="verb">genesis</spanx> entry for that <spanx style="verb">stream_id</spanx> <spanx style="verb">deprecated</spanx></strong> — the
first convergence included (it deprecates the creation-time genesis), so exactly one non-deprecated entry
always remains. A consumer resolves the current genesis <strong>only</strong> via that sole non-deprecated entry. A
<strong>concurrent</strong> second registration fails closed (the append is the linearization point, Art. IX); a
later fork/brick (§7.6/§14) is a fresh owner-authorized convergence that appends again and re-deprecates.</t>
  <t><strong>Retire:</strong> move old frames under <spanx style="verb">legacy/</spanx> — retained as immutable sealed history, never served as
current, never extended, never read as live chain. No live frame may set <spanx style="verb">prev</spanx>/<spanx style="verb">prev_wave</spanx> to a retired
hash (a dangling ref is a drift finding).</t>
  <t>Keep the old <spanx style="verb">stream_id</spanx> unless the identity itself re-anchored (§6.3), in which case the registry entry
also records <spanx style="verb">old_stream_id → new_stream_id</spanx>.</t>
  <t>Two frames with equal <spanx style="verb">stream_id</spanx>+<spanx style="verb">seq</spanx> from different eras are disambiguated <strong>solely</strong> by descent from
the current registered genesis. Re-genesis is one-time per convergence; a repeat <em>of the same
convergence</em> is the concurrent case (step 3, fails closed).</t>
</list></t>

</section>
<section anchor="dogg-specification-revision-chain"><name>DOGG specification revision chain</name>

<t>The RAPP/1 revision content is the append-only JSONL stream at
<spanx style="verb">anchor/chain.jsonl</spanx>. The chain's particle, wave, and predecessor hashes prove
byte integrity and linear history; they do <strong>not</strong> authenticate who selected a
head or ratified an amendment. Until a separately authenticated RAPP
registry/checkpoint is ratified, authority is selected by owner-ratified
acceptance of a chain snapshot onto protected canonical
<spanx style="verb">refs/heads/main</spanx> at <spanx style="verb">https://github.com/kody-w/rapp-1</spanx>. A consumer starting
from an out-of-band pinned accepted commit and head frame hash has the same
immutable selection evidence. An internally valid fork is not authoritative
merely because its hashes verify.</t>

<t>Every protocol adjustment <strong>MUST</strong> append exactly one valid successor frame:</t>

<t><list style="symbols">
  <t><spanx style="verb">spec</spanx> remains <spanx style="verb">"rapp/1"</spanx>, the envelope remains exactly eleven keys, and the
allowed registered anchor kind is <spanx style="verb">body.pulse</spanx>; this profile does not create
a new kind or alter canonicalization, hashing, or registered-kind semantics;</t>
  <t><spanx style="verb">stream_id</spanx> remains the bootstrap-pinned anchor stream, <spanx style="verb">seq</spanx> is contiguous,
<spanx style="verb">prev</spanx> names the predecessor's <spanx style="verb">payload_hash</spanx>, <spanx style="verb">prev_wave</spanx> and <spanx style="verb">sig</spanx> are
<spanx style="verb">null</spanx>, and the applicable §7.5 integrity checks hold;</t>
  <t>the frame's <spanx style="verb">frame_hash</spanx> is the durable protocol-revision identity.
Human names such as <spanx style="verb">rev-14</spanx> are lookup labels/views, never identities.</t>
</list></t>

<section anchor="immutable-bootstrap-boundary"><name>Immutable bootstrap boundary</name>

<t>Verification begins from the frozen <spanx style="verb">rapp-anchor-bootstrap/1</spanx> profile published
through <spanx style="verb">anchor/bootstrap/index.json</spanx>. The index names a
<spanx style="verb">anchor/bootstrap/sha256-&lt;raw-profile-sha256&gt;.json</spanx> object and pins the exact
stdlib verifier at <spanx style="verb">anchor/bootstrap_verify.py</spanx> by raw SHA-256 and byte length.
The profile fixes the exact-integer JCS subset and limits, particle/wave
domains, eleven frame keys, timestamp/sequence/predecessor rules, canonical
repository and protected ref, anchor stream ID, genesis frame and payload
hashes, <spanx style="verb">body.pulse</spanx> anchor profile, null signature/wave fields, and byte/depth
limits needed to verify this chain.</t>

<t>The content-addressed bootstrap profile is immutable. Changing it requires a
new bootstrap schema/version and a new external ratification; mutating
<spanx style="verb">rapp-anchor-bootstrap/1</spanx> in place is refusal. Its initial authenticity is
necessarily external — owner-ratified protected canonical main or an
out-of-band pinned profile hash/immutable commit — because neither a chain nor
code fetched with that chain can circularly authenticate its own parser.
<spanx style="verb">rapp.py</spanx> remains the complete reference implementation and is cross-checked,
but it is not the mutable bootstrap trust pin.</t>

</section>
<section anchor="revision-payloads-and-historical-exception"><name>Revision payloads and historical exception</name>

<t>Frames through rev-13 retain their immutable legacy pointer fields:
<spanx style="verb">canonical_repo</spanx>, a full 40-lowercase-hex <spanx style="verb">commit</spanx>, safe relative
<spanx style="verb">normative_path</spanx>, raw-file <spanx style="verb">normative_sha256</spanx>, and decimal-string
<spanx style="verb">normative_bytes</spanx>. A resolver <strong>MUST</strong> construct only an immutable
commit-pinned GitHub Raw URL from those fields, fetch the bytes, and verify
length and raw SHA-256 before use. A branch or tag name in <spanx style="verb">commit</spanx>, an unsafe
path, malformed UTF-8, a byte-order mark, or a hash/length mismatch is refusal.
Path validation occurs on the original string before path-library
normalization: empty, absolute, <spanx style="verb">.</spanx>/<spanx style="verb">..</spanx>, empty components, repeated slash,
leading <spanx style="verb">./</spanx>, trailing slash, backslash, percent-encoded ambiguity, or any
value whose reconstructed POSIX form differs is refused.
These pointer payloads are immutable governance history under Article 3's
narrow exception; they <strong>MUST NOT</strong> be emitted for rev-14 or later.</t>

<t>Rev-14 and each successor using this profile carries all normative text inside
the chain frame. Its payload <strong>MUST</strong> include
<spanx style="verb">schema:"rapp-spec-revision/1"</spanx>, a unique <spanx style="verb">revision</spanx>, and both
<spanx style="verb">previous_revision</spanx> and <spanx style="verb">previous_normative_sha256</spanx> matching the immediate
predecessor. It preserves the useful legacy fields above, carries the
publication/ratification metadata defined below, and adds exactly this
<spanx style="verb">normative</spanx> object:</t>

<t><spanx style="verb">json
{
  "media_type": "text/markdown; charset=utf-8",
  "text": "&lt;exact normative SPEC.md Unicode text&gt;",
  "sha256": "&lt;lowercase SHA-256 of text encoded as UTF-8&gt;",
  "bytes": 123
}
</spanx></t>

<t><spanx style="verb">normative.text</spanx> <strong>MUST</strong> encode as UTF-8 without a byte-order mark;
<spanx style="verb">normative.sha256</spanx> and <spanx style="verb">normative.bytes</spanx> <strong>MUST</strong> match those exact octets and
the corresponding legacy <spanx style="verb">normative_sha256</spanx> and <spanx style="verb">normative_bytes</spanx>. The complete
canonical frame remains subject to §4's 1 MiB limit. Inline revisions require
only the selected, verified chain bytes once fetched; their commit/path fields
are immutable provenance, not a second source for normative text.</t>

<t>The payload's <spanx style="verb">publication</spanx> object, repeated in the beacon and revision index,
records: canonical repository <spanx style="verb">https://github.com/kody-w/rapp-1</spanx>; protected ref
<spanx style="verb">refs/heads/main</spanx>; selection by owner-ratified acceptance; the accepted
canonical-main commit as linearization point; prohibition of history
replacement; mandatory rebase/regeneration for a competing append; rev-14
ratification under rev-13 Article 14; application of this chain-append process
from rev-15 onward; and <spanx style="verb">authenticated_registry_checkpoint:null</spanx> until one
actually exists. This metadata <strong>MUST NOT</strong> be interpreted as a signature or
authenticated registry.</t>

</section>
<section anchor="content-addressed-publication-and-resolution"><name>Content-addressed publication and resolution</name>

<t>Every chain frame <strong>MUST</strong> also be published, without a trailing line
terminator, at:</t>

<t><spanx style="verb">text
anchor/frames/&lt;frame_hash&gt;.json
</spanx></t>

<t>A fetch through mutable main is discovery only. Given frame hash <spanx style="verb">F</spanx>, a
stranger may fetch
<spanx style="verb">https://raw.githubusercontent.com/kody-w/rapp-1/main/anchor/frames/F.json</spanx>,
parse it under the pinned bootstrap, and accept the object only if its computed
wave equals <spanx style="verb">F</spanx>. For accepted snapshot commit <spanx style="verb">C</spanx>, the immutable URL is
<spanx style="verb">https://raw.githubusercontent.com/kody-w/rapp-1/C/anchor/frames/F.json</spanx>.
Wrong content at the correct hash-derived path is refusal.</t>

<t><spanx style="verb">anchor/index.json</spanx> is a deterministic generated index from <spanx style="verb">seq</spanx>, revision
label, frame hash, and payload hash to those objects. It carries no independent
authority: a consumer <strong>MUST</strong> verify each selected object and match the index
and beacon to the fully verified chain. Resolution by frame hash uses the path
algorithm directly; resolution by payload hash or sequence uses the verified
index; resolution by revision label is a view over it. The fixed pre-profile
rev-5 pulses share one historical label, so the <spanx style="verb">rev-5</spanx> view resolves to the
greatest matching <spanx style="verb">seq</spanx>, while every pulse remains directly resolvable by
sequence and hashes.</t>

<t>A consumer <strong>MUST</strong> verify the chain from the bootstrap-pinned genesis before
using a revision as selected history. It <strong>MUST</strong> refuse an invalid frame shape,
particle, wave, or <spanx style="verb">prev</spanx>; a fork or duplicate <spanx style="verb">seq</spanx>; duplicate frame/payload
hashes; a duplicate profiled revision; an unsupported schema; a legacy
pointer-only frame after rev-13; malformed UTF-8; normative hash/length drift;
bootstrap/index/object drift; or an object absent from the selected chain.</t>

<t><spanx style="verb">orient.json</spanx> is only a beacon to the head. Its sequence, frame hash, payload
hash, bootstrap/index pins, authority-selection metadata, and every retained
head mirror — including <spanx style="verb">registered_kinds</spanx>, vocabulary, operational profiles,
foundation, philosophy, and Constitution metadata — <strong>MUST</strong> be regenerated
from and match the verified head. While the beacon schema remains
<spanx style="verb">rapp/1-anchor</spanx>, <spanx style="verb">spec.normative_path</spanx> <strong>MUST</strong> remain as a compatibility alias
equal to <spanx style="verb">spec.materialized_path</spanx>. <spanx style="verb">SPEC.md</spanx> <strong>MUST</strong> reproduce the selected
head byte-for-byte. The Atom feed and mutable main URLs are discovery only.</t>

<t>Materialization and immutable-pointer caching <strong>MUST</strong> use bounded reads and
same-directory atomic replacement without following a symlink in the
destination leaf or path. A symlink, unsafe directory component, oversized
cache entry, content change during read/write, or compare-and-swap mismatch is
refusal; the requested leaf is replaced, never the symlink target.</t>

<t>After acceptance, let <spanx style="verb">C</spanx> be the full 40-hex canonical-main commit containing
the accepted snapshot. The immutable checkpoint URLs are:</t>

<t><spanx style="verb">text
https://raw.githubusercontent.com/kody-w/rapp-1/C/anchor/chain.jsonl
https://raw.githubusercontent.com/kody-w/rapp-1/C/anchor/orient.json
https://raw.githubusercontent.com/kody-w/rapp-1/C/anchor/index.json
</spanx></t>

<t>The authority linearization point is the owner-ratified acceptance of <spanx style="verb">C</spanx> onto
protected canonical main, not creation of a local frame, a feed event, or a
hash alone. A stale competing append <strong>MUST</strong> rebase onto the accepted head and
regenerate. Force-push or history replacement of accepted authority is
prohibited.</t>

</section>
<section anchor="rev-14-transition-and-draft-replacement"><name>Rev-14 transition and draft replacement</name>

<t>Rev-14 is ratified under rev-13 Article 14. Owner acceptance of the prepared
change onto canonical protected main makes the final rev-14 frame effective;
the new chain-append process governs rev-15 onward. Before that acceptance,
rev-14 artifacts are unpublished drafts. A later commit in the same
owner-ratified change may deterministically replace the one unpublished rev-14
draft line/object and update dependent hashes, but <strong>MUST</strong> preserve every
rev-5 through rev-13 line byte-for-byte and <strong>MUST NOT</strong> represent the replaced
draft as accepted history.</t>

<t>The publication generator <strong>MUST</strong> hold one cross-process exclusive lock across
read, verification, generation, comparison, and publication. Immediately
before replacing <spanx style="verb">chain.jsonl</spanx> it <strong>MUST</strong> re-read and verify the on-disk head
and compare the complete expected prefix; a stale writer or changed prefix is
refused. Supporting content-addressed artifacts are published first, the
authority chain is compare-and-swap replaced next, and the beacon is replaced
last, with file and parent-directory synchronization. Because the chain is
authority content and the beacon is only a derived view, interruption after a
valid chain replacement may leave a stale or missing beacon; the next locked
run <strong>MUST</strong> deterministically regenerate it from the verified chain rather
than refusing the valid head forever.</t>

<t>This chain and beacon are unsigned. They provide integrity after authority
selection, not authorship, and implementations <strong>MUST NOT</strong> fabricate a
signature or authenticated registry/checkpoint state for them.</t>

</section>
</section>
</section>
<section anchor="the-registry-an-estates-signed-root-of-trust-append-only"><name>The registry — an estate's signed root of trust (append-only)</name>
<t>Each estate selects an owner-controlled <spanx style="verb">canonical_source</spanx> for its
<spanx style="verb">schema:"rapp/1-registry"</spanx> document. The kody-w reference estate may publish
its registry through <spanx style="verb">kody-w/RAPP</spanx> or another owner-authorized location, but
that estate instance cannot alter this protocol. Because §7.6 head resets, §10
key discovery, tombstone revocation, and ownership all resolve through the
selected registry, it is the <strong>root of trust for that estate</strong> and is itself
authenticated (an unsigned mutable file at the root of the trust graph would
forge that estate).</t>

<section anchor="trust-anchor-and-registry-authentication"><name>Trust anchor and registry authentication</name>
<t><list style="symbols">
  <t>The one bootstrap axiom is the <strong><spanx style="verb">estate_owner</spanx> rappid string</strong> itself: since a keyed tail is
<spanx style="verb">Hb("rapp/1:rappid", SPKI_DER)</spanx>, the rappid <strong>is</strong> a self-certifying key fingerprint, distributed
out-of-band exactly once (QR, invite, docs) the way a root-CA certificate is.</t>
  <t>The registry document <strong>MUST</strong> carry a top-level <spanx style="verb">registry_seq</spanx> (uint53) and a detached §10 JWS <spanx style="verb">sig</spanx> over
<spanx style="verb">canonical(registry \ {sig})</spanx> with <spanx style="verb">kid</spanx> = the <spanx style="verb">estate_owner</spanx> rappid. A consumer <strong>MUST</strong> verify this
signature against an SPKI whose <spanx style="verb">Hb("rapp/1:rappid", SPKI_DER)</spanx> equals the anchor rappid's tail (the SPKI
may travel alongside the registry — the tail check authenticates it) and <strong>MUST</strong> refuse an unsigned or
non-verifying registry.</t>
  <t><strong>No rollback:</strong> a consumer persists the highest <spanx style="verb">registry_seq</spanx> it verified and refuses any registry with
a lower one (mirrors §7.6). <strong>Freshness:</strong> a consumer <strong>MUST</strong> obtain the registry from <spanx style="verb">canonical_source</spanx>
or a provenance-stamped (Art. VIII) mirror of it, <strong>SHOULD</strong> refresh before any §7.5-step-6 or §7.6
head-reset decision, and <strong>MUST</strong> report a verification made against a registry older than its staleness
policy as <em>stale</em>, not <em>clean</em>.</t>
</list></t>

</section>
<section anchor="owner-succession-time-scoped-authority"><name>Owner succession (time-scoped authority)</name>
<t>"Owner-signed" means: the <spanx style="verb">sig</spanx> verifies per §10 <strong>and</strong> <spanx style="verb">kid</spanx> is the estate-owner <strong>in effect at the
artifact's <spanx style="verb">utc</spanx></strong> — the current <spanx style="verb">estate_owner</spanx> or any predecessor reachable through the registry's
re-anchor records (§13.3), with the artifact's <spanx style="verb">utc</spanx> inside that owner's tenure <spanx style="verb">[record.utc, successor.utc)</spanx>.
Verification uses the owner in effect at the artifact's time, <strong>never only the current one</strong> (so a routine
owner key rotation never invalidates historical re-genesis frames or tombstones). Estate-owner <strong>root-key
compromise</strong> is recovered only by re-distributing a new trust anchor out-of-band (§13.1) — it cannot be
expressed inside the registry it signs.</t>

</section>
<section anchor="entry-types-each-a-4-value-document-schemarapp1-registry"><name>Entry types (each a §4 value; document <spanx style="verb">schema:"rapp/1-registry"</spanx>)</name>
<t>The registry is an I-JSON document; every entry is append-only (never removed/renamed; retirement is a
<spanx style="verb">deprecated:true</spanx> flag). Entry types and their exact members:
- <strong>protocol</strong> <spanx style="verb">{type:"protocol", name, spec_repo, spec_path, spec_hash, deprecated}</spanx> — an estate
  adoption pin, never a power to redefine a protocol. An entry with <spanx style="verb">name:"rapp/1"</spanx> that is used for a
  current-conformance claim <strong>MUST</strong> set <spanx style="verb">spec_repo:"https://github.com/kody-w/rapp-1"</spanx>,
  <spanx style="verb">spec_path:"SPEC.md"</spanx>, and <spanx style="verb">spec_hash</spanx> to a normative SHA-256 published by a verified frame in this
  repository's anchor chain. A historical RAPP/1 pin may be retained only as <spanx style="verb">deprecated:true</spanx>; it does
  not override the current anchor. Other protocol entries are subordinate to their own canonical
  authorities and <strong>MUST NOT</strong> claim the <spanx style="verb">rapp/1</spanx> name or namespace.
- <strong>kind</strong> <spanx style="verb">{type:"kind", kind, family, deprecated}</spanx> (incl. the three <spanx style="verb">*.re-genesis</spanx> kinds). A
  <spanx style="verb">deprecated:true</spanx> kind entry still registers <spanx style="verb">kind</spanx> and its <spanx style="verb">family</spanx> for §7.5 step 1 (steps 1–5 are
  time-independent); deprecation only tells producers to stop emitting new frames of that kind.
- <strong>egg-variant</strong> <spanx style="verb">{type:"egg-variant", variant, deprecated}</spanx> · <strong>error-code</strong> <spanx style="verb">{type:"error-code", code}</spanx>
  (both closed namespaces; unregistered value = not conformant)
- <strong>genesis</strong> <spanx style="verb">{type:"genesis", stream_id, frame_hash, deprecated, old_stream_id?, new_stream_id?}</spanx> — <strong>every</strong>
  stream registers its creation genesis; re-genesis appends a new one and deprecates all prior (§12.1 step 3);
  §7.6's "registered genesis" is the sole non-deprecated <spanx style="verb">genesis</spanx> for a <spanx style="verb">stream_id</spanx>.
- <strong>spki</strong> <spanx style="verb">{type:"spki", rappid, spki_der_b64, deprecated}</spanx> — the §10 key-discovery source.
- <strong>tombstone</strong> <spanx style="verb">{type:"tombstone", rappid, revoked_utc, sig}</spanx>, <spanx style="verb">sig</spanx> owner-signed over <spanx style="verb">canonical(entry \ {sig})</spanx>.
- <strong>re-anchor</strong> <spanx style="verb">{type:"re-anchor", old_rappid, new_rappid, case:("upgrade"|"rotation"|"compromise"|"tag-migrate"),
  utc, sig, old_key_sig?}</spanx> — <spanx style="verb">sig</spanx> owner-signed; <spanx style="verb">old_key_sig</spanx> a §10 JWS by the <strong>old</strong> key over
  <spanx style="verb">canonical(entry \ {sig,old_key_sig})</spanx>, REQUIRED for <spanx style="verb">case:"rotation"</spanx>. This is the normative succession record (§13.2).
- <strong>grail-kernel</strong> <spanx style="verb">{type:"grail-kernel", release_scope, grail_id, repository, immutable_ref,
  object_format, commit, path, mode, blob, sha256, size_bytes, activated_utc, predecessor, declared_by,
  sig}</spanx> — exactly these members. <spanx style="verb">release_scope</spanx> is an absolute HTTPS URI selected by the estate owner;
  no two entries may share it. <spanx style="verb">grail_id</spanx> is
  <spanx style="verb">"grail:" || Hb("rapp/1:grail", kernel_bytes)</spanx>; <spanx style="verb">repository</spanx> is an absolute HTTPS URI;
  <spanx style="verb">immutable_ref</spanx> is a full <spanx style="verb">refs/tags/...</spanx> name that <strong>MUST</strong> resolve exactly to <spanx style="verb">commit</spanx>;
  <spanx style="verb">object_format</spanx> is <spanx style="verb">"sha1"</spanx> or <spanx style="verb">"sha256"</spanx> and fixes the required lowercase hexadecimal length of
  <spanx style="verb">commit</spanx> and <spanx style="verb">blob</spanx>; <spanx style="verb">path</spanx> at <spanx style="verb">commit</spanx> <strong>MUST</strong> resolve through the repository tree to exactly one
  regular blob with <spanx style="verb">mode</spanx> <spanx style="verb">"100644"</spanx> or <spanx style="verb">"100755"</spanx> and object id <spanx style="verb">blob</spanx>;
  <spanx style="verb">path</spanx> is a relative NFC POSIX path with no empty, <spanx style="verb">"."</spanx>, or <spanx style="verb">".."</spanx> component; <spanx style="verb">sha256</spanx> is the raw
  kernel bytes' 64-lowercase-hex SHA-256; <spanx style="verb">size_bytes</spanx> is their positive <spanx style="verb">uint53</spanx> length;
  <spanx style="verb">activated_utc</spanx> has the exact §7.4 form; <spanx style="verb">predecessor</spanx> is null or another <spanx style="verb">grail_id</spanx>; <spanx style="verb">declared_by</spanx> is
  a keyed rappid; and <spanx style="verb">sig</spanx> is a detached §10 JWS whose protected <spanx style="verb">kid</spanx> equals <spanx style="verb">declared_by</spanx>, over
  <spanx style="verb">canonical(entry \ {sig})</spanx>. The entry is additionally covered by the registry's §13.1 signature. A
  consumer verifies the entry signer as the estate owner in effect at <spanx style="verb">activated_utc</spanx>, verifies the
  referenced bytes, recomputes both hashes, persists the canonical entry on first activation, applies
  §11.1, and refuses a missing/mutated prior binding, duplicate <spanx style="verb">grail_id</spanx>, or locator whose bytes
  disagree.
- <strong>estate_owner</strong> <spanx style="verb">{type:"estate_owner", rappid}</spanx> (exactly one non-deprecated) · <strong>master-plan</strong>
  <spanx style="verb">{type:"master-plan", repo, path}</spanx> (Fed. Const. Art. VII).</t>

<t>§7.5 steps 1–5 are time-independent (append-only lookups); <strong>only</strong> step 6 (tombstones) and §13.2 owner
tenure are time-scoped, and both are monotone given the §13.1 no-rollback rule.</t>

</section>
</section>
<section anchor="security-considerations"><name>Security considerations</name>
<t><list style="symbols">
  <t><strong>Integrity:</strong> every object is domain-separated content-addressed (§5); a hostile mirror cannot alter
bytes without breaking the hash, so <em>history is safe given a trusted head</em>.</t>
  <t><strong>Head freshness is not self-certifying:</strong> the chain authenticates history, not which head is current; a
hostile mirror may serve a stale/forked head. Consumers counter with the §7.6 monotonic-head rule; swarm
heads <strong>SHOULD</strong> be owner-signed.</t>
  <t><strong>Cross-stream replay:</strong> without §7.5 step 1a, any genesis/segment of stream A replays as stream B (seq=0,
prev=null always pass). Step 1a's stream binding is mandatory.</t>
  <t><strong>Address-space confusion:</strong> §5 domain tags make a particle, wave, egg, or rappid tail with equal hex
non-interchangeable; stores key by <spanx style="verb">(space, hash)</spanx>.</t>
  <t><strong>Canonicalization attacks:</strong> the §4 I-JSON input-domain profile (no duplicate keys, no lone surrogates,
exact binary64, no normalization ambiguity) removes hash-splitting and NFC-twin vectors.</t>
  <t><strong>Identity forgery / key compromise:</strong> authorship requires a keyed rappid + valid §10 <spanx style="verb">sig</spanx>; rotation is
§6.3 re-anchor (verifiable authorization, §6.3/§13.3 — a self-asserted <spanx style="verb">_migrated_from</spanx> is refused);
compromise is a §13 tombstone enforced at verify time. Because a tombstone gates on the frame's
producer-controlled <spanx style="verb">utc</spanx>, a compromised key can still emit frames stamped just below <spanx style="verb">revoked_utc</spanx>; after
a compromise the owner <strong>SHOULD</strong> advance affected stream heads (or re-genesis) past <spanx style="verb">revoked_utc</spanx>.</t>
  <t><strong>Root of trust:</strong> the registry is the estate's signed root (§13.1); it is authenticated by an owner
signature anchored to the out-of-band <spanx style="verb">estate_owner</spanx> rappid fingerprint, <spanx style="verb">registry_seq</spanx>-monotonic against
rollback, and freshness-checked (a stale registry silently un-revokes keys and hides re-geneses).</t>
  <t><strong>Producer-controlled <spanx style="verb">utc</spanx> (DoS/merge bias):</strong> a future-dated head can brick a stream (successors refused
as earlier) and bias UTC-first merges. A consumer <strong>SHOULD</strong> refuse a frame whose <spanx style="verb">utc</spanx> exceeds receipt
time by &gt;300 s, and adversarial-scope merges <strong>SHOULD</strong> rank by <spanx style="verb">min(utc, first-seen)</spanx>; a bricked stream
converges by re-genesis (§12.1).</t>
  <t><strong>Sealed-artifact limits:</strong> a public mirror sees ciphertext and metadata. AES-GCM protects confidentiality
only while the DEK remains secret; a recipient that has lawfully decrypted plaintext can copy it.
Revocation stops future wrapped-key release, not prior possession. Shared passwords, embedded master keys,
moving-branch URLs, nonce reuse under one DEK, and claims that bytecode cannot be inspected after
decryption are non-conformant security postures (§9.2.1).</t>
  <t><strong>Kernel substitution:</strong> testing mutable ring bytes and restoring the Grail only after approval creates
an untested release. §11.1 requires the release-shaped artifact to contain the pinned bytes before its
tests, attestations, and approval; a digest mismatch is a blocking <spanx style="verb">kernel-drift</spanx> finding.</t>
  <t><strong>Kernel registry rollback/rebinding:</strong> persisting only <spanx style="verb">registry_seq</spanx> does not preserve an activated
Grail declaration across a malicious higher-sequence registry. Consumers also persist every activated
canonical <spanx style="verb">grail-kernel</spanx> entry and reject its later removal, mutation, or duplication (§11.1).</t>
</list></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="RFC3339">
  <front>
    <title>Date and Time on the Internet: Timestamps</title>
    <author fullname="G. Klyne" initials="G." surname="Klyne"/>
    <author fullname="C. Newman" initials="C." surname="Newman"/>
    <date month="July" year="2002"/>
    <abstract>
      <t>This document defines a date and time format for use in Internet protocols that is a profile of the ISO 8601 standard for representation of dates and times using the Gregorian calendar.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="3339"/>
  <seriesInfo name="DOI" value="10.17487/RFC3339"/>
</reference>
<reference anchor="RFC5280">
  <front>
    <title>Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile</title>
    <author fullname="D. Cooper" initials="D." surname="Cooper"/>
    <author fullname="S. Santesson" initials="S." surname="Santesson"/>
    <author fullname="S. Farrell" initials="S." surname="Farrell"/>
    <author fullname="S. Boeyen" initials="S." surname="Boeyen"/>
    <author fullname="R. Housley" initials="R." surname="Housley"/>
    <author fullname="W. Polk" initials="W." surname="Polk"/>
    <date month="May" year="2008"/>
    <abstract>
      <t>This memo profiles the X.509 v3 certificate and X.509 v2 certificate revocation list (CRL) for use in the Internet. An overview of this approach and model is provided as an introduction. The X.509 v3 certificate format is described in detail, with additional information regarding the format and semantics of Internet name forms. Standard certificate extensions are described and two Internet-specific extensions are defined. A set of required certificate extensions is specified. The X.509 v2 CRL format is described in detail along with standard and Internet-specific extensions. An algorithm for X.509 certification path validation is described. An ASN.1 module and examples are provided in the appendices. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="5280"/>
  <seriesInfo name="DOI" value="10.17487/RFC5280"/>
</reference>
<reference anchor="RFC5869">
  <front>
    <title>HMAC-based Extract-and-Expand Key Derivation Function (HKDF)</title>
    <author fullname="H. Krawczyk" initials="H." surname="Krawczyk"/>
    <author fullname="P. Eronen" initials="P." surname="Eronen"/>
    <date month="May" year="2010"/>
    <abstract>
      <t>This document specifies a simple Hashed Message Authentication Code (HMAC)-based key derivation function (HKDF), which can be used as a building block in various protocols and applications. The key derivation function (KDF) is intended to support a wide range of applications and requirements, and is conservative in its use of cryptographic hash functions. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="5869"/>
  <seriesInfo name="DOI" value="10.17487/RFC5869"/>
</reference>
<reference anchor="RFC6979">
  <front>
    <title>Deterministic Usage of the Digital Signature Algorithm (DSA) and Elliptic Curve Digital Signature Algorithm (ECDSA)</title>
    <author fullname="T. Pornin" initials="T." surname="Pornin"/>
    <date month="August" year="2013"/>
    <abstract>
      <t>This document defines a deterministic digital signature generation procedure. Such signatures are compatible with standard Digital Signature Algorithm (DSA) and Elliptic Curve Digital Signature Algorithm (ECDSA) digital signatures and can be processed with unmodified verifiers, which need not be aware of the procedure described therein. Deterministic signatures retain the cryptographic security features associated with digital signatures but can be more easily implemented in various environments, since they do not need access to a source of high-quality randomness.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="6979"/>
  <seriesInfo name="DOI" value="10.17487/RFC6979"/>
</reference>
<reference anchor="RFC7405">
  <front>
    <title>Case-Sensitive String Support in ABNF</title>
    <author fullname="P. Kyzivat" initials="P." surname="Kyzivat"/>
    <date month="December" year="2014"/>
    <abstract>
      <t>This document extends the base definition of ABNF (Augmented Backus-Naur Form) to include a way to specify US-ASCII string literals that are matched in a case-sensitive manner.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="7405"/>
  <seriesInfo name="DOI" value="10.17487/RFC7405"/>
</reference>
<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="RFC7515">
  <front>
    <title>JSON Web Signature (JWS)</title>
    <author fullname="M. Jones" initials="M." surname="Jones"/>
    <author fullname="J. Bradley" initials="J." surname="Bradley"/>
    <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
    <date month="May" year="2015"/>
    <abstract>
      <t>JSON Web Signature (JWS) represents content secured with digital signatures or Message Authentication Codes (MACs) using JSON-based data structures. Cryptographic algorithms and identifiers for use with this specification are described in the separate JSON Web Algorithms (JWA) specification and an IANA registry defined by that specification. Related encryption capabilities are described in the separate JSON Web Encryption (JWE) specification.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="7515"/>
  <seriesInfo name="DOI" value="10.17487/RFC7515"/>
</reference>
<reference anchor="RFC7516">
  <front>
    <title>JSON Web Encryption (JWE)</title>
    <author fullname="M. Jones" initials="M." surname="Jones"/>
    <author fullname="J. Hildebrand" initials="J." surname="Hildebrand"/>
    <date month="May" year="2015"/>
    <abstract>
      <t>JSON Web Encryption (JWE) represents encrypted content using JSON-based data structures. Cryptographic algorithms and identifiers for use with this specification are described in the separate JSON Web Algorithms (JWA) specification and IANA registries defined by that specification. Related digital signature and Message Authentication Code (MAC) capabilities are described in the separate JSON Web Signature (JWS) specification.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="7516"/>
  <seriesInfo name="DOI" value="10.17487/RFC7516"/>
</reference>
<reference anchor="RFC7518">
  <front>
    <title>JSON Web Algorithms (JWA)</title>
    <author fullname="M. Jones" initials="M." surname="Jones"/>
    <date month="May" year="2015"/>
    <abstract>
      <t>This specification registers cryptographic algorithms and identifiers to be used with the JSON Web Signature (JWS), JSON Web Encryption (JWE), and JSON Web Key (JWK) specifications. It defines several IANA registries for these identifiers.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="7518"/>
  <seriesInfo name="DOI" value="10.17487/RFC7518"/>
</reference>
<reference anchor="RFC7797">
  <front>
    <title>JSON Web Signature (JWS) Unencoded Payload Option</title>
    <author fullname="M. Jones" initials="M." surname="Jones"/>
    <date month="February" year="2016"/>
    <abstract>
      <t>JSON Web Signature (JWS) represents the payload of a JWS as a base64url-encoded value and uses this value in the JWS Signature computation. While this enables arbitrary payloads to be integrity protected, some have described use cases in which the base64url encoding is unnecessary and/or an impediment to adoption, especially when the payload is large and/or detached. This specification defines a means of accommodating these use cases by defining an option to change the JWS Signing Input computation to not base64url- encode the payload. This option is intended to broaden the set of use cases for which the use of JWS is a good fit.</t>
      <t>This specification updates RFC 7519 by stating that JSON Web Tokens (JWTs) MUST NOT use the unencoded payload option defined by this specification.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="7797"/>
  <seriesInfo name="DOI" value="10.17487/RFC7797"/>
</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="RFC8037">
  <front>
    <title>CFRG Elliptic Curve Diffie-Hellman (ECDH) and Signatures in JSON Object Signing and Encryption (JOSE)</title>
    <author fullname="I. Liusvaara" initials="I." surname="Liusvaara"/>
    <date month="January" year="2017"/>
    <abstract>
      <t>This document defines how to use the Diffie-Hellman algorithms "X25519" and "X448" as well as the signature algorithms "Ed25519" and "Ed448" from the IRTF CFRG elliptic curves work in JSON Object Signing and Encryption (JOSE).</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8037"/>
  <seriesInfo name="DOI" value="10.17487/RFC8037"/>
</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="RFC8410">
  <front>
    <title>Algorithm Identifiers for Ed25519, Ed448, X25519, and X448 for Use in the Internet X.509 Public Key Infrastructure</title>
    <author fullname="S. Josefsson" initials="S." surname="Josefsson"/>
    <author fullname="J. Schaad" initials="J." surname="Schaad"/>
    <date month="August" year="2018"/>
    <abstract>
      <t>This document specifies algorithm identifiers and ASN.1 encoding formats for elliptic curve constructs using the curve25519 and curve448 curves. The signature algorithms covered are Ed25519 and Ed448. The key agreement algorithms covered are X25519 and X448. The encoding for public key, private key, and Edwards-curve Digital Signature Algorithm (EdDSA) structures is provided.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8410"/>
  <seriesInfo name="DOI" value="10.17487/RFC8410"/>
</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="RFC9562">
  <front>
    <title>Universally Unique IDentifiers (UUIDs)</title>
    <author fullname="K. Davis" initials="K." surname="Davis"/>
    <author fullname="B. Peabody" initials="B." surname="Peabody"/>
    <author fullname="P. Leach" initials="P." surname="Leach"/>
    <date month="May" year="2024"/>
    <abstract>
      <t>This specification defines UUIDs (Universally Unique IDentifiers) --
also known as GUIDs (Globally Unique IDentifiers) -- and a Uniform
Resource Name namespace for UUIDs. A UUID is 128 bits long and is
intended to guarantee uniqueness across space and time. UUIDs were
originally used in the Apollo Network Computing System (NCS), later
in the Open Software Foundation's (OSF's) Distributed Computing
Environment (DCE), and then in Microsoft Windows platforms.</t>
      <t>This specification is derived from the OSF DCE specification with the
kind permission of the OSF (now known as "The Open Group"). Information from earlier versions of the OSF DCE specification have
been incorporated into this document. This document obsoletes RFC
4122.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9562"/>
  <seriesInfo name="DOI" value="10.17487/RFC9562"/>
</reference>



    </references>

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

<reference anchor="RAPP1-ANCHOR" target="https://kody-w.github.io/rapp-1/anchor/orient.json">
  <front>
    <title>RAPP/1 specification anchor (append-only chain of record)</title>
    <author >
      <organization></organization>
    </author>
    <date year="2026"/>
  </front>
</reference>


    </references>

</references>


<?line 1121?>

<section anchor="acknowledgements"><name>Acknowledgements</name>

<t>The specification was hardened through adversarial review rounds recorded in its
revision log. The chain of record and its verifier are at <xref target="RAPP1-ANCHOR"/>.</t>

</section>


  </back>

<!-- ##markdown-source:
H4sIAAAAAAAAA5y9W3MbWZIm+B6/Ioxts0kwAfAiiZLIzJxh6ZJSlfIykrKr
qqtrGAEgSEYJRKAjAFGsTJn1U1v3a888r+3DbLfZvu3TvtdPyV+y/n3ufs4J
gKqq7pyeEgHE5Vz8+N0/H41G2apezauTfOf12fff7x+e5G+vqhx/59+3zaqZ
NvP8zbpeVTtZOZm01fuTXC/MZs10UV7LnbO2vFiNbur57KJaV+2oLZfL0eHo
4CCblqvqsmlvT/J6cdFk3XpyXXdd3SxWt8sKX86qZSX/s1hl9bI9yVftulsd
HRw8PjjKyrYqT/Kz5XJey2Pkni57V93eNO3sJP9deSn3dMN8Ko+Sv0blbNZW
8uTFpXxXLpqF3DOv/8j7hvkvn7wZ5su2eV8tysW0+n3WrcrF7LycNwsZxW3V
ZctaHiqTHeZd067a6kKe3d1e44/fZ1m5Xl017UmW5yP5/7mMuzvJfzXOf+1T
5re6GL9qZrcbPzTtZbmwwZzwt6tShpK/aK6rLn/16gmvqq7Len6S3/jPV/h1
Pp/+t0v8MJ4211m2aNprecz7CmN5/fzJ0eHhY/vz3r17/ueDo0cH/uejY//2
+PFD//Ph/YMH4c/H9/zPB4cP4p/H8c9H/ufDxw/tz0cH947in+Hbw4f3/c/7
hz6GRw8f+XMfPziW2zIQQzoRoafD0dm3T1589/qEa9EnybxbVtP6wsggly2U
3ch3hcqEdkbNYn6bT6/KepE3F3lbTYVCBjv6mLK9rFYn+dVqtexO9vffyd6M
bsaX9epqPRnXzb5S6r4+cb9pa6Gl8R+6ZsHbZ0K9J/nRwdFxlo1Go7ycdKu2
nK6yzMZVd3kJurqo51Uu1NXm1Ye6WwkV5qSwsp11+eqqXOXzatWl5I67Ltvy
upM7ZOyLyyqT22WO5WRebZF1NbN5yfsmzXqVK/mf5EK/W+Se7wq5D4b4TY6o
0M5i1FXLspXJzPKrsrviT/l1Lc9v5DTkNQZUr271+2peCfGN5Kjl+GOVV4v3
1bxZVvrzTd1Ww0zmxk/LcvpOxpLrdo7ztzdNb5b19XJeXctfeoB1LS6a+by5
kb9l+YSHrPF7JusxW8tgJreraqQjkinlZbuqL2TJO3nx6ipfNLlMf9RcjCYY
QnnZVnz8mEwrnI58VX1YCTVkumrYp5X8nhJMn6SUfJbrybzurmSZJrd6A8/9
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
aO/C/Nvi9Pv509Ph6B+kap0/5jMBAA==

-->

</rfc>

