<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE rfc [
  <!ENTITY nbsp "&#160;">
]>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude"
     category="info"
     docName="draft-das-drip-uas-act-finality-01"
     ipr="trust200902"
     submissionType="IETF"
     consensus="false"
     tocInclude="true"
     tocDepth="3"
     sortRefs="true"
     symRefs="true"
     version="3">

  <front>
    <title abbrev="UAS/AV Act Finality">Cleared to Fly or Drive Is Not Cleared to Act: Actuator-Level Execution Finality and Compact Act Evidence for UAS and Autonomous Vehicles</title>
    <seriesInfo name="Internet-Draft" value="draft-das-drip-uas-act-finality-01"/>

    <author fullname="Sangam Das" initials="S." surname="Das">
      <organization>Independent Inventor</organization>
      <address>
        <postal>
          <city>Balasore</city>
          <region>Odisha</region>
          <country>India</country>
        </postal>
        <email>info@sangamdas.com</email>
      </address>
    </author>

    <date year="2026" month="September" day="18"/>
    <area>Internet</area>
    <workgroup>Network Working Group</workgroup>
    <keyword>DRIP</keyword>
    <keyword>Remote ID</keyword>
    <keyword>UAS</keyword>
    <keyword>execution finality</keyword>
    <keyword>finality sink</keyword>
    <keyword>TESLA</keyword>
    <keyword>detect and avoid</keyword>
    <keyword>autonomous vehicle</keyword>
    <keyword>control authority handover</keyword>

    <abstract>
      <t>Problem: Unmanned Aircraft System (UAS) trust infrastructure answers two
      questions well. Remote Identification (RID), strengthened by the Drone Remote ID
      Protocol (DRIP), answers "who is this aircraft?", and UAS Traffic Management
      (UTM), U-space, and geo-awareness answer "may this flight take place here and
      now?". Neither answers the question that decides physical consequence: may this
      specific act -- arming motors, crossing into a newly restricted volume, releasing
      a delivery payload, activating a camera over a protected area, emitting on a
      radio band, or joining a coordinated multi-aircraft manoeuvre -- become effective
      at this actuator, at this instant, under the airspace and revocation state that
      is current now? Authorizations are granted before or at take-off, while acts are
      executed continuously by mission computers and autonomy stacks that can be
      compromised, misled, coerced with validly signed commands, or cut off from their
      authorities. Observers on the ground, in turn, can verify an aircraft's identity
      but not whether what it is doing was authorized before it happened.</t>

      <t>Solution: The IETF-facing contribution of this document is Compact Broadcast
      Act Evidence: 16-octet per-act decision records authenticated with a TESLA-style
      one-way key chain sealed inside a Protected Enforcement Domain and anchored to the
      aircraft's DRIP identity. This lets an Observer verify, after a short disclosure
      delay and within the 25-octet Broadcast RID message budget, that the protected
      enforcement domain made an allow, deny, or safe-state decision before the
      corresponding evidence key was disclosed, without requiring a public-key
      signature on every act. The evidence mechanism is coupled to an execution-finality
      profile in which each safety-significant or externally consequential act remains
      non-effective as a Candidate Act until the Protected Enforcement Domain verifies
      an act-bound, sink-bound Execution Handle against live trusted context, consumes
      current authority state atomically, commits a Finality Receipt, and only then
      releases the physical enablement condition at the Finality Sink. The profile also
      specifies act classes and sinks, self-contained object fields, sink processing
      pseudocode, envelope handles for high-rate control, a boundary-proximity
      revalidation policy, bounded offline operation, and composite multi-aircraft
      semantics. For constrained onboard, air-to-air, telemetry, or other small-frame
      links, the profile also defines an optional Beacon Proof Capsule (BPC): a compact
      act-bound and sink-bound execution-proof representation using an Authority
      Reference, freshness and generation state, a context commitment, a keyed binding
      commitment, explicit truncation-risk sizing, authenticated multi-frame
      reconstruction when necessary, and fail-closed resolver semantics. A BPC is an
      input to execution verification; the AER/KDR/Anchor mechanism is output evidence
      of the PED decision, and the two roles are intentionally non-interchangeable.</t>

      <t>Additional profiles: This document also describes three narrowly scoped
      execution-finality embodiments: conflict-set-bound Detect-and-Avoid (DAA) resolution
      finality for UAS, emergency-scene temporary authority finality for autonomous road
      vehicles as an informative cross-domain application, and atomic control-authority
      handover with monotonic authority epochs for autonomous motion platforms. These
      profiles preserve the same rule: an authenticated or correctly computed instruction
      remains a Candidate Act until the current effectuation boundary independently
      verifies the state on which that instruction depends. In an autonomous road vehicle,
      that boundary may be a protected motion-admission gate rather than a motor or ESC
      gate, so the architecture can coexist with the vehicle's existing perception,
      planning, braking, steering, and minimal-risk-control functions.</t>

      <t>Industrial context and complementarity: The mechanism complements, and does not
      replace, Broadcast and Network RID, DRIP Entity Tags and authentication, DET
      resolution through DNS, UTM and U-space services, geo-awareness, Detect-and-Avoid,
      flight-control safety logic, automotive ADAS/autonomy stacks, remote-assistance
      systems, and authenticated command channels. Publicly described examples of the
      kinds of software-defined or autonomy-enabled platforms to which this boundary can
      be complementary include Tesla driver-assistance systems, BYD DiPilot and related
      intelligent-driving platforms, DJI enterprise drone automation, Boeing autonomous
      and uncrewed aircraft systems, and Lockheed Martin/Sikorsky autonomous aircraft
      systems. These names are illustrative only: this document does not state or imply
      that any named organization uses, endorses, requires, or has evaluated this profile.
      Their existing perception, planning, stabilization, DAA, ADAS, command-and-control,
      and safety mechanisms remain in place; the proposed finality layer operates later,
      at a protected motion-admission or actuator boundary, to verify the concrete pending
      act against current protected authority and state before effectuation. The scope of
      this document remains strictly civil and excludes weapon release, targeting, and
      counter-UAS engagement. This is an individual Informational Internet-Draft, not a
      DRIP WG work item. In short, its IETF/IRTF relevance is to DRIP (DET-anchored
      compact act evidence for Observers), RATS (attestation of the protected
      enforcement domain), COSE/CBOR (deterministic compact objects), ACE (constrained
      scoped authorization as input rather than effectuation), SCITT (later audit of
      receipts), and T2TRG (constrained Things with multiple authorities). No WG
      adoption or code-point allocation is requested in this version; the draft is
      offered for technical discussion in those communities and in UAS, Remote ID,
      constrained-security, autonomous-vehicle, and aviation standards forums.</t>
    </abstract>
  </front>

  <middle>

    <section anchor="intro">
      <name>Introduction</name>
      <t>This document is an individual Informational Internet-Draft. It is not a DRIP
      Working Group work item and does not request allocation of a DRIP or ASTM/ICAO
      carriage code point in this version. The compact evidence format and its carriage
      are presented for technical review and possible future standardization.</t>

      <section anchor="industry-terminology-bridge">
        <name>Industry-Standard Terminology and Functional Equivalence</name>

        <t>This subsection restates the architecture in conventional systems-engineering,
        cybersecurity, safety-control, automotive, aerospace, telecommunications, and
        distributed-systems language.  It is included so that the technical disclosure
        remains readily understandable and searchable even when an implementation uses
        different product names, protocol names, or industry vocabulary.  The mechanism
        described by this document does not depend on use of the labels "Candidate Act",
        "Protected Execution Domain", "Finality Sink", "Beacon Proof Capsule", or
        "Finality Receipt".  An implementation can use different names or package the
        functions into different components while implementing the same enforcement
        sequence.</t>

        <t>In ordinary industrial terms, the architecture can be summarized as follows.
        A planner, application, autonomy stack, remote operator, network controller, AI
        component, or other command source may <em>propose</em> an action, but proposal
        is separated from permission to make the action physically or externally
        effective.  The proposed operation is first represented precisely and bound,
        cryptographically or by equivalent protected integrity mechanisms, to the
        authorized operation or bounded operating envelope, the intended enforcement
        point or controlled resource, freshness information, and relevant policy,
        revocation, configuration, or operating-context state.  The operation remains
        pending, inhibited, staged, uncommitted, or otherwise unable to actuate while
        those checks are unresolved.</t>

        <t>At the last practical control point before consequence -- for example a motor
        driver, steering or braking controller, payload latch, secure I/O gateway, RF
        transmit-enable path, baseband or beamformer control, routing or forwarding
        boundary, sensor-enable path, or other actuator/resource boundary -- a protected
        enforcement function determines the operation that is actually about to occur.
        It then compares that impending operation with the operation or envelope that was
        authorized.  Effectuation is released only if the operation, target boundary,
        freshness, authority, current policy/revocation state, and required context still
        agree.  A stale, replayed, substituted, redirected, widened, or contextually
        obsolete operation remains blocked.  A successful decision may release only a
        narrow local capability or control envelope, while a failed decision leaves the
        consequential path inhibited or permits only a separately defined safe action.</t>

        <t>The following terminology bridge is informative.  The entries identify common
        words under which substantially the same engineering functions may appear in
        specifications, safety cases, product documentation, security literature, prior
        art, or implementation descriptions.</t>

        <table anchor="tab-industry-terminology-bridge">
          <name>Terminology bridge to conventional industry wording</name>
          <thead>
            <tr>
              <th>Term used in this document</th>
              <th>Common industry wording or search terminology</th>
              <th>Underlying function</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td>Candidate Act</td>
              <td>proposed command; action request; actuation request; control request; motion request; transaction; pending operation; requested state transition</td>
              <td>The concrete operation that is proposed but has not yet been allowed to cause its consequence.</td>
            </tr>
            <tr>
              <td>Non-Effective State</td>
              <td>pending; staged; blocked; inhibited; disarmed; not committed; not admitted; output-disabled</td>
              <td>A state in which computation may continue but the consequential output path is not yet usable.</td>
            </tr>
            <tr>
              <td>Protected Execution Domain</td>
              <td>trusted enforcement domain; isolated security domain; safety/security supervisor; protected controller; secure microcontroller; TEE-backed control function</td>
              <td>A protected component that forms or verifies security-relevant state outside the control of the ordinary command-producing component.</td>
            </tr>
            <tr>
              <td>Finality Sink</td>
              <td>policy enforcement point (PEP); reference monitor; safety interlock; command gate; actuation gate; motion-admission gate; secure I/O gateway; output authorization gate; RF transmit-enable interlock</td>
              <td>The last protected enforcement point that can still prevent the proposed operation from becoming externally effective.</td>
            </tr>
            <tr>
              <td>Binding Commitment</td>
              <td>cryptographic command binding; request binding; parameter binding; object binding; transaction binding; canonical-request digest; MAC/signature over operation and context</td>
              <td>Integrity-protected association between the authorized operation and the exact parameters, target, context, and freshness against which it was evaluated.</td>
            </tr>
            <tr>
              <td>Authority Object / Authority Reference</td>
              <td>authorization credential; permit; capability; entitlement; policy decision; grant; signed authorization; token reference; cached authorization record</td>
              <td>The authority basis against which the impending operation is permitted or denied; possession of a reference alone need not be sufficient to actuate.</td>
            </tr>
            <tr>
              <td>Freshness and anti-replay state</td>
              <td>nonce; sequence number; monotonic counter; challenge; timestamp; validity window; replay window; one-time token state</td>
              <td>State that prevents an old or previously consumed authorization from being reused as if it were current.</td>
            </tr>
            <tr>
              <td>Policy / revocation / authority epoch</td>
              <td>generation number; version; revision; fencing token; lease generation; configuration epoch; controller epoch</td>
              <td>A monotonic or otherwise protected version discriminator that makes stale authority distinguishable from current authority.</td>
            </tr>
            <tr>
              <td>Context Commitment</td>
              <td>state snapshot; state digest; context hash; environment version; geofence revision; ODD state; scene state; traffic-state snapshot</td>
              <td>A protected representation of the operating conditions on which the authorization decision depended.</td>
            </tr>
            <tr>
              <td>Bounded execution capability</td>
              <td>least-privilege capability; single-use permit; scoped actuation token; control envelope; trajectory envelope; limited command authorization</td>
              <td>A local permission that can enable only the specified act, sink, parameter range, time, counter value, trajectory, or actuator envelope.</td>
            </tr>
            <tr>
              <td>Atomic finality commit</td>
              <td>atomic check-and-use; compare-and-commit; transactional authorization; commit-time validation; TOCTOU-resistant authorization; atomic state transition</td>
              <td>The deciding read of current security state, replay consumption, decision recording, and release of effectuation authority occur as one protected transaction or equivalent indivisible transition.</td>
            </tr>
            <tr>
              <td>Finality Receipt</td>
              <td>decision record; audit receipt; commit record; authorization evidence; tamper-evident event record</td>
              <td>Protected evidence identifying what operation was admitted or denied, under which current state and enforcement boundary.</td>
            </tr>
            <tr>
              <td>Safe-Action Set</td>
              <td>fail-safe action; degraded mode; minimal-risk manoeuvre; controlled stop; inhibit; receive-only mode; bounded fallback behavior</td>
              <td>A separately bounded set of stabilizing or risk-reducing actions that remains available when permission-expanding actions cannot be freshly authorized.</td>
            </tr>
            <tr>
              <td>Beacon Proof Capsule</td>
              <td>compact authorization proof; compact capability; command-authorization descriptor; short-form permit; constrained-link security token; act-binding evidence message</td>
              <td>A compact representation carrying or referencing enough protected material for the downstream enforcement point to verify the intended act without treating the message itself as unrestricted authority.</td>
            </tr>
            <tr>
              <td>Conflict-set commitment</td>
              <td>traffic-state snapshot; encounter-state digest; threat-set commitment; intruder-set version; multi-object safety-state binding</td>
              <td>Binding of a detect-and-avoid or collision-resolution decision to the set of relevant traffic objects and state on which the resolution was computed.</td>
            </tr>
            <tr>
              <td>Atomic controller handover</td>
              <td>controller arbitration; control-ownership transfer; single-writer handover; lease transfer; epoch-based leader change; fencing-based failover</td>
              <td>A protected transition in which old control authority is made stale before ordinary effectuation by a replacement controller is enabled.</td>
            </tr>
          </tbody>
        </table>

        <section anchor="functional-equivalence-test">
          <name>Functional-Equivalence Test in Plain Engineering Language</name>

          <t>For purposes of understanding the technical mechanism, the important question
          is not what a component is called but what it does.  An implementation follows
          the same basic enforcement pattern when the following properties are present:</t>

          <ol spacing="normal">
            <li><t>A command-producing component can request or compute an operation but
            cannot, by that fact alone, make the consequential output occur.</t></li>
            <li><t>The proposed operation, or a deliberately bounded envelope of operations,
            is integrity-bound to the intended controlled resource or enforcement point and
            to freshness plus the security-relevant state on which permission depends.</t></li>
            <li><t>The operation stays pending, inhibited, staged, or otherwise
            non-effective until a downstream enforcement check succeeds.</t></li>
            <li><t>The downstream enforcement function derives or observes the actual
            operation that will reach the actuator, RF path, motion controller, protected
            resource, or other consequence-producing boundary rather than trusting only the
            upstream description of what was supposedly requested.</t></li>
            <li><t>The actual impending operation is compared with the authorized operation
            or envelope, including material parameters, destination or sink identity,
            freshness, applicable context, and current policy/revocation/configuration
            generation.</t></li>
            <li><t>Replay, parameter substitution, target substitution, stale authorization,
            stale controller ownership, or a material change in required context causes
            denial, revalidation, or transition to a bounded safe action rather than silent
            continuation.</t></li>
            <li><t>Where stale-state races matter, the final security-state read, replay or
            nonce consumption, decision/receipt update, and release of effectuation authority
            are performed atomically or with equivalent transactional semantics so that a
            check cannot become obsolete before the consequence is enabled.</t></li>
            <li><t>The released authority is no broader than needed -- for example one act,
            one actuator, one sink, one trajectory tube, one speed/thrust envelope, one RF
            configuration, one beam or route, one time interval, or one controller epoch --
            and alternate consequence paths are either blocked or subject to equivalent
            enforcement.</t></li>
          </ol>

          <t>Examples in specific industries may therefore be described as an actuator
          safety interlock, secure command gate, policy enforcement point, reference
          monitor, drive-by-wire admission controller, flight-control authorization gate,
          payload-release interlock, transactional authorization boundary, RF inhibit,
          transmit-enable gate, beam/frequency/power authorization gate, secure routing
          admission point, or controller-fencing mechanism.  Those labels describe
          deployment forms; the common logic is the separation of computation from
          effectuation authority and the independent verification of the concrete impending
          act at the boundary where it can still be stopped.</t>
        </section>
      </section>

      <section anchor="additional-disclosure-transparency">
        <name>Additional Public Disclosure and Transparency Materials</name>

        <t><strong>Provisional patent disclosure / sample copy.</strong> For transparency,
        a public sample copy of the corresponding provisional patent disclosure and
        supporting technical material is available as additional disclosure at Zenodo:
        <eref target="https://zenodo.org/records/22833431">Remote ID Solved &quot;Who Is
        Flying.&quot; It Never Solved &quot;Who Allowed That.&quot;</eref> The record is made
        available so reviewers can inspect the broader disclosed technical context,
        embodiments, and enforcement-boundary material associated with this work. The
        external disclosure is supplementary; the technical content and requirements of
        this Internet-Draft are stated in this document.</t>

        <t><strong>Broad architectural disclosure.</strong> For transparency and broader
        technical context beyond the UAS-specific profile, a public disclosure of the
        execution-finality architecture across AI, cloud, telecommunications, payments,
        satellite systems, critical infrastructure, and other consequence-bearing
        machine operations is available at Zenodo: <eref target="https://zenodo.org/records/22082995">The
        Internet Solved Communication. It Never Solved Authority</eref>. This record is
        provided as supplementary broad disclosure of the common computation-to-consequence
        enforcement architecture; it does not replace or modify the protocol requirements
        stated in this Internet-Draft.</t>

        <t><strong>Related European public-interest discussion.</strong> A related public
        discussion of the authority problem in counter-drone and autonomous-system
        environments is available through the European Commission Apply AI Alliance /
        Futurium platform: <eref target="https://futurium.ec.europa.eu/en/apply-ai-alliance/posts/europes-counter-drone-challenge-also-authority-problem">Europe's
        Counter-Drone Challenge Is Also an Authority Problem</eref>. This material is
        provided as contextual background and for transparency; it does not alter the
        scope, protocol semantics, or interoperability requirements specified here.</t>
      </section>

      <section anchor="problem">
        <name>Problem Space</name>
        <t>An uncrewed aircraft is a moving actuator. Its acts have immediate physical
        consequence and, once effective, often cannot be recalled: a rotor that spins up
        near people, a payload that leaves its latch, a camera frame captured over a
        private garden, or a transmission that interferes with a protected band. Current
        UAS governance authorizes the flight, identifies the aircraft, and records what
        happened. It does not, in general, make an individual consequential act depend on
        authority that is verified at the actuator at the moment of effect.</t>

        <t>The gap is structural rather than a matter of stricter policy. Consider the
        following civil situations, each of which occurs within a flight that was
        validly authorized at take-off:</t>

        <ol spacing="normal">
          <li><t>Mid-flight restriction. A delivery aircraft is authorized for a corridor at
          14:00. At 14:07 a temporary restriction is activated over part of that corridor
          for an emergency response. The authorization token held by the ground software
          is still cryptographically valid; the next corridor segment is no longer lawful.
          Whether the aircraft enters depends on whether the new geo-zone data reached,
          and was obeyed by, software that may be stale or compromised.</t></li>

          <li><t>Compromised or misled mission computer. The perception or planning stack
          is fed adversarial input, runs a faulty update, or is controlled by an attacker
          with root access. If it has effective write access to motor output registers,
          ESC arming, the payload latch, or the camera power rail, a software failure
          becomes a physical event. A software-only geofence running on the same
          processor can be altered or bypassed by the same failure.</t></li>

          <li><t>Validly signed but unsafe command. A ground station, fleet service, or
          remote pilot sends a correctly authenticated command to release a payload at an
          unapproved coordinate, disable RID transmission, or enter a restricted volume.
          Link authentication (for example, MAVLink 2 message signing) establishes that
          the command came from a key holder. It does not establish that this act is
          permitted in the present context.</t></li>

          <li><t>Degraded or lost link. The aircraft loses contact with its operator,
          UTM service, and revocation source. A revocation issued after link loss cannot
          be learned. Without an explicit bound, cached authority may continue to permit
          acts indefinitely.</t></li>

          <li><t>Partial coordinated manoeuvre. Several aircraft must change formation or
          hand off an inspection segment together. If some commit and others do not,
          separation assumptions are violated. Retries and compensations are themselves
          new acts.</t></li>

          <li><t>Unverifiable conduct for Observers. A police officer, facility operator,
          or member of the public can use DRIP to verify that Broadcast RID messages come
          from the registered owner of a DRIP Entity Tag (DET). They cannot verify whether
          an act they are watching -- a camera pointed at a stadium, a payload lowered in
          a car park -- was authorized before it happened, and Broadcast RID has no room
          for per-act public-key signatures at typical broadcast rates.</t></li>
        </ol>

        <t>In all six cases, the missing element is the same: a boundary, positioned
        immediately before the physical effect, at which authority for this act is
        verified against current state and consumed, and without which the actuator
        lacks the physical means to act.</t>
      </section>

      <section anchor="why-std">
        <name>Why Standardization Is Required</name>
        <t>Execution finality for aircraft cannot be delivered by one vendor in
        isolation, for four reasons.</t>
        <ol spacing="normal">
          <li>Authority originates outside the aircraft. Corridor approvals, temporary
          restrictions, geo-zone data, operator credentials, revocations, and payload
          permissions are produced by UTM service suppliers, U-space service providers,
          aviation authority interfaces, fleet operators, and customers. The aircraft's
          enforcement domain must interpret their outputs identically. Without a common
          descriptor, generation model, and binding rule, each airframe would re-implement
          ad hoc checks that cannot be audited against one another.</li>
          <li>Evidence must be verifiable by parties who did not issue the authority.
          Regulators, insurers, investigators, and Observers need portable receipts and
          broadcast evidence with defined formats and verification rules. DRIP already
          provides the identity and broadcast authentication foundation; act evidence
          needs to be compatible with it rather than parallel to it.</li>
          <li>Constrained links force interoperable compactness. Broadcast RID messages are
          25 octets. Legacy transports can lose Authentication Message pages. Onboard buses
          such as classic CAN carry 8-octet payloads. Compact encodings only interoperate
          if they are specified.</li>
          <li>Multi-aircraft and multi-authority acts cross administrative domains. A
          coordinated manoeuvre across operators, or a handoff between service areas,
          requires common prepare, commit, abort, and hold semantics.</li>
        </ol>
      </section>

      <section anchor="existing">
        <name>Existing Solutions and Their Boundaries</name>
        <t>Each of the following is necessary and well established. None of them, alone
        or together, makes an individual act non-effective until authority for that act
        is verified and consumed at the sink.</t>

        <table anchor="tab-existing">
          <name>Existing mechanisms and the question each answers</name>
          <thead>
            <tr><th>Mechanism</th><th>Question it answers</th><th>Boundary relative to this document</th></tr>
          </thead>
          <tbody>
            <tr><td>Broadcast and Network RID (ASTM F3411 <xref target="F3411"/>; regional rules such as 14 CFR Part 89 and EU Regulation 2019/945)</td><td>Who is this aircraft, where is it, who operates it?</td><td>Identity and telemetry; no act-level authority.</td></tr>
            <tr><td>DRIP: DET <xref target="RFC9374"/>, architecture <xref target="RFC9434"/>, authentication formats <xref target="RFC9575"/>, and DET/DIME resolution in DNS <xref target="RFC9886"/></td><td>Who controls the claimed DET, and can its identity/authentication material be resolved and verified?</td><td>Trustworthy identity, resolution, and message provenance; does not state whether a physical act was authorized before it occurred.</td></tr>
            <tr><td>UTM (ASTM F3548 <xref target="F3548"/>) and U-space (EU Implementing Regulation 2021/664); authorization services such as LAANC</td><td>May this flight or operation take place in this airspace and time?</td><td>Strategic and tactical flight authorization; enforcement onboard is left to the aircraft.</td></tr>
            <tr><td>Geo-awareness, geo-zone data (for example EUROCAE ED-269), vendor geo-zone databases, autopilot geofences and failsafes</td><td>Is the aircraft inside a permitted volume, and what should it do if not?</td><td>Usually software-mediated and co-located with the stack that can fail; typically movement-centric, not covering payload, sensor, and RF acts; not bound to consumable per-act authority.</td></tr>
            <tr><td>MAVLink 2 message signing; authenticated onboard messaging (for example AUTOSAR SecOC-style truncated MAC with freshness)</td><td>Did this message come from a key holder, and is it fresh?</td><td>Authenticates the channel or sender; a valid key holder may still request a contextually unauthorized act.</td></tr>
            <tr><td>Secure boot, measured boot, and remote attestation <xref target="RFC9334"/></td><td>Is the software that booted the expected software?</td><td>Establishes platform state; runtime deviation, coercion, and stale authority remain possible after boot.</td></tr>
            <tr><td>Flight logs, post-flight analysis, Network RID records</td><td>What happened?</td><td>After the fact; the effect has already occurred.</td></tr>
          </tbody>
        </table>
      </section>

      <section anchor="whats-new">
        <name>Contributions of This Profile</name>
        <ol spacing="normal">
          <li>Compact Broadcast Act Evidence: fixed 16-octet per-act records authenticated
          with a TESLA-style <xref target="RFC4082"/> one-way key chain sealed in the
          Protected Enforcement Domain and anchored through DRIP identity, giving
          Observers loss-tolerant, delayed-disclosure verification inside the Broadcast
          RID size envelope without a public-key signature on every act
          (<xref target="beacon"/>).</li>
          <li>A constrained execution-proof transport profile using Beacon Proof
          Capsules (BPCs), compact Authority References, keyed act/sink/context
          commitments, explicit collision and attacker-work sizing for truncated
          values, authenticated fragmentation, and resolver-assisted reconstruction
          (<xref target="bpc"/>). A BPC is verification input and is never accepted as
          broadcast evidence merely because it was received.</li>
          <li>An act-level UAS profile mapping Candidate Act classes to concrete Finality
          Sinks and to the physical enablement condition withheld at each sink
          (<xref target="acts"/>).</li>
          <li>A placement rule in which the Protected Enforcement Domain sits on every
          command-to-enablement path, so that a compromised command source cannot itself
          synthesize actuator authority (<xref target="arch"/>).</li>
          <li>Live-context enforcement including corridor containment, multi-source
          position consistency, generation currentness inside atomic consume, and a
          conservative boundary-proximity revalidation scheduling policy
          (<xref target="math"/>).</li>
          <li>Envelope handles for high-rate actuation streams, so motor setpoints at
          hundreds of hertz are checked by bounded comparison rather than a public-key
          operation per setpoint (<xref target="envelope"/>).</li>
          <li>A bounded offline mode that converts link loss into a finite residual
          exposure rather than open-ended cached authority (<xref target="offline"/>).</li>
          <li>A composite profile for multi-aircraft acts whose prepare step does not move
          an aircraft and whose HOLD state is a physically safe holding manoeuvre
          (<xref target="composite"/>).</li>
          <li>A conflict-set-bound DAA finality profile that binds an accepted avoidance
          resolution to the conflict set, ownship state, motion sink, and monotonic
          Resolution Epoch on which the resolution was computed; the sink revalidates the
          current conflict set and all relevant intruders before admitting the maneuver
          (<xref target="daa-finality"/>).</li>
          <li>An informative emergency-scene profile for autonomous road vehicles in
          which temporary responder authority is bound to the incident, scene, vehicle,
          bounded traffic-rule exception, concrete motion, expiry, and independent local
          scene corroboration, and automatically extinguishes when the scene authority
          ceases to apply (<xref target="emergency-scene"/>).</li>
          <li>An atomic control-authority handover profile in which protected
          current-controller state and monotonic Control Authority Epochs prevent two
          otherwise valid controllers from simultaneously acquiring ordinary effectuation
          authority over the same governed sink (<xref target="control-handover"/>).</li>
        </ol>
      </section>

      <section anchor="scope">
        <name>Scope and Non-Goals</name>
        <t>In scope: civil UAS in the specific and certified categories and comparable
        national regimes, including delivery, infrastructure inspection, agriculture,
        mapping, emergency and public-safety support, and urban air mobility support
        functions.</t>
        <t>Out of scope: weapons, weapon release, targeting, and counter-UAS
        engagement. This document does not define airworthiness or certification
        requirements, does not replace flight-control safety design, does not define
        legal rules, and does not decide which acts a regulator permits. It defines how
        a permission that has been issued is technically enforced at the moment of
        effect, and how that enforcement can be evidenced.</t>
        <t>A safe-state manoeuvre (hover, loiter, controlled descent, landing,
        return-to-home) is never blocked by this profile for lack of a fresh handle; safe
        states are pre-authorized as described in <xref target="safe-states"/>.</t>
        <t><xref target="emergency-scene"/> is intentionally included as an informative
        cross-domain application to autonomous road vehicles because the same
        effectuation-boundary problem occurs when a temporary first-responder instruction
        requests a bounded exception to ordinary motion policy. It does not change the
        UAS interoperability scope of the BPC, AER, RID, or DRIP mechanisms in this
        document. <xref target="control-handover"/> applies to UAS and may also be reused
        by other autonomous motion platforms.</t>
      </section>

      <section anchor="companions">
        <name>Relationship to Companion Documents</name>
        <t>This document is intended to be implementable without requiring any companion
        Internet-Draft. The UAS Candidate Act fields, Authority Object fields, handle
        bindings, consume ordering, receipt semantics, failure behavior, composite rules,
        and broadcast-evidence procedures required by this profile are stated locally.
        Companion individual Internet-Drafts provide broader cross-domain background on
        execution handles <xref target="DAS-HANDLE"/>, registries <xref target="DAS-REG"/>,
        composite finality <xref target="DAS-COMPOSITE"/>, jurisdiction binding
        <xref target="DAS-JURISDICTION"/>, actuation binding <xref target="DAS-ACTUATION"/>,
        state continuity <xref target="DAS-STATE"/>, revocation
        <xref target="DAS-REVOCATION"/>, consequence-path completeness
        <xref target="DAS-PATH"/>, and the general architecture
        <xref target="DAS-PROTOCOL"/>. Those references are informative; in case of a
        difference, the rules in this UAS profile control for this document. Symbolic
        failure names not allocated by an IANA registry are local to this document.</t>
      </section>
    </section>

    <section anchor="terms">
      <name>Conventions and Terminology</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>",
      "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL NOT</bcp14>",
      "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>",
      "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
      "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be
      interpreted as described in BCP&nbsp;14 <xref target="RFC2119"/>
      <xref target="RFC8174"/> when, and only when, they appear in all capitals, as
      shown here.</t>
      <t>RID, UA, UAS, DET, HDA, Observer, and Broadcast Endorsement are used as in
      <xref target="RFC9153"/>, <xref target="RFC9434"/>, and <xref target="RFC9575"/>;
      DET/DIME resolution through DNS is described by <xref target="RFC9886"/>. The
      following terms are used in addition.</t>
      <dl newline="false" spacing="normal">
        <dt>Candidate Act:</dt>
        <dd>A proposed UA action whose effect is held non-effective until finality is
        reached, for example "open payload latch at this location now".</dd>
        <dt>Protected Enforcement Domain (PED):</dt>
        <dd>An isolated execution environment onboard the UA (secure microcontroller,
        FPGA region, safety processor, TEE, or HSM-backed controller) that holds
        verification keys, sealed reference state, consume state, and the evidence key
        chain, and that controls the enablement conditions of Finality Sinks. The mission
        computer cannot read its keys, rewrite its predicates, or synthesize its release
        signal.</dd>
        <dt>Finality Sink:</dt>
        <dd>The component at which an act first becomes physically or externally
        effective, for example an ESC enable input, motor output register bank, payload
        latch driver, RF power-amplifier enable, or camera power rail.</dd>
        <dt>Enablement Condition:</dt>
        <dd>The physical or cryptographic condition without which the sink cannot produce
        the effect: an enable line, gated power rail, register write window, radio key,
        or sensor-output key.</dd>
        <dt>UAS Candidate Act Descriptor (U-CAD):</dt>
        <dd>The canonical descriptor of a Candidate Act defined by this document. It is
        compatible in concept with the broader Candidate Act Descriptor described in
        <xref target="DAS-HANDLE"/>, but this document does not depend on that draft.</dd>
        <dt>Airspace Authority Object (AAO):</dt>
        <dd>A signed object issued by an operator, UTM or U-space service, aviation
        authority interface, or payload authority that states the corridor, time
        window, envelopes, and act classes permitted, together with the generations it
        was issued against.</dd>
        <dt>Execution Handle:</dt>
        <dd>A non-bearer, sink-bound, act-bound authorization object that the PED
        verifies and consumes. Possession of a handle confers nothing.</dd>
        <dt>Envelope Handle:</dt>
        <dd>An Execution Handle with the ENVELOPE reuse policy that authorizes a bounded
        parameter set over a bounded time window for a high-rate stream.</dd>
        <dt>Generation:</dt>
        <dd>A monotonically increasing version number of an authority input: airspace
        and geo-zone data (g_air), revocation state (g_rev), and operator policy
        (g_pol).</dd>
        <dt>Finality Receipt:</dt>
        <dd>A PED-signed record of an allow or deny decision committed before release.
        A receipt is evidence and is never accepted as a handle.</dd>
        <dt>Safe-State Set (S_safe):</dt>
        <dd>The pre-authorized set of manoeuvres and subsystem states that the PED may
        select without a fresh handle.</dd>
        <dt>Beacon Proof Capsule (BPC):</dt>
        <dd>A compact, machine-verifiable representation that carries or references
        execution-finality evidence for a Candidate Act over a constrained link. A BPC
        binds the act to its intended sink, authority reference, freshness and current
        generation state, and selected context. Receipt or possession of a BPC is not by
        itself authority; the PED and Finality Sink still reconstruct and verify the
        actual impending act.</dd>
        <dt>Authority Reference:</dt>
        <dd>A compact identifier, keyed digest, index, cache key, or resolver key by
        which the PED identifies an AAO or other authority state. The reference is not
        authority and a cache or resolver miss never degrades to authorization.</dd>
        <dt>Binding Commitment:</dt>
        <dd>A preferably keyed cryptographic commitment that binds the Candidate Act
        digest to the Finality Sink, Authority Reference, current-generation inputs,
        selected context, freshness, and validity scope. A compact BPC may carry only a
        truncated form selected according to the risk rules in <xref target="bpc-trunc"/>.</dd>
        <dt>Evidence key:</dt>
        <dd>A PED-held public key, distinct from the UA Host Identity / DET key,
        used to sign an evidence-epoch Anchor. The DET / Host Identity key endorses
        the evidence key for a bounded validity period as described in
        <xref target="beacon-endorsement"/>.</dd>
        <dt>Conflict Set:</dt>
        <dd>The policy-relevant set of cooperative or non-cooperative traffic tracks
        whose state, uncertainty, freshness, and encounter class are material to a DAA
        resolution at a given resolution horizon.</dd>
        <dt>Conflict-Set Root:</dt>
        <dd>A deterministic cryptographic commitment to the canonical Conflict Set used
        as the safety basis for an accepted DAA resolution.</dd>
        <dt>Resolution Epoch:</dt>
        <dd>A protected monotonically increasing value identifying the currently selected
        DAA resolution. Superseding a resolution advances the epoch and invalidates
        ordinary motion authority bound to an earlier epoch.</dd>
        <dt>Emergency Scene Authority Capsule (ESAC):</dt>
        <dd>An informative cross-domain authority object binding a temporary
        first-responder or incident instruction to a vehicle, incident, scene, bounded
        exception class, concrete motion envelope, expiry, epochs, nonce, and local scene
        corroboration requirements.</dd>
        <dt>Control Authority Epoch:</dt>
        <dd>A protected monotonically increasing value associated with the controller
        currently authorized to exercise ordinary effectuation authority over a governed
        sink or sink class.</dd>
        <dt>Current Controller:</dt>
        <dd>The controller identifier recorded in protected authority state for the
        current Control Authority Epoch of a governed sink.</dd>
        <dt>Act Evidence Record (AER):</dt>
        <dd>The 16-octet broadcast record defined in <xref target="beacon"/>. (The
        acronym is local to this document.)</dd>
      </dl>
    </section>

    <section anchor="notation">
      <name>Mathematical and Cryptographic Notation</name>
      <t>This section collects notation used by the cryptographic, execution-finality,
      delayed-disclosure, and autonomous-motion constructions in this document. Symbols
      are local to this specification unless an external reference states otherwise.
      In artwork, <tt>||</tt> denotes byte-string concatenation, not logical OR. Structured
      objects that are hashed or authenticated are first encoded using the deterministic
      representation required by the applicable section.</t>

      <section anchor="notation-general">
        <name>General Operators and Cryptographic Values</name>
        <dl newline="false" spacing="normal">
          <dt>H(x), SHA-256(x):</dt>
          <dd>A collision-resistant cryptographic hash of x. Where this document writes
          H(x) generically, a profile may instantiate it with SHA-256 or another specified
          cryptographic hash.</dd>
          <dt>HMAC-SHA-256(K, x) or HMAC_K(x):</dt>
          <dd>A keyed message-authentication code over x under secret key K, using HMAC
          with SHA-256 in the concrete constructions of this profile.</dd>
          <dt>Trunc_b(x):</dt>
          <dd>The first or otherwise profile-defined b bits of x. The retained length b
          is security-significant and is selected according to the collision, substitution,
          or forgery bounds stated in the relevant section.</dd>
          <dt>HKDF(K_root, info):</dt>
          <dd>A key-derivation operation that derives a purpose- and context-specific key
          from protected root material K_root and the indicated domain-separation and scope
          information.</dd>
          <dt>det-CBOR(X), C(X), canonical(X):</dt>
          <dd>The deterministic or canonical byte serialization of semantic object X.
          Equality of semantic fields is not sufficient when a cryptographic operation is
          defined over bytes; the required deterministic encoding is used before hashing or
          authentication.</dd>
          <dt>DOM or quoted domain-separation string:</dt>
          <dd>A fixed label separating one cryptographic use from another. For example,
          <tt>"UAS-BPC-ACT"</tt>, <tt>"UAS-BPC-BIND"</tt>,
          <tt>"UAS-AFE-chain"</tt>, <tt>"UAS-AFE-tag"</tt>, and
          <tt>"UAS-AFE-rec"</tt> prevent values from different cryptographic roles from
          being treated as interchangeable. In generic explanatory notation,
          <tt>DOM_E</tt> denotes the AER record-authentication domain; in this profile its
          concrete record-domain label is <tt>"UAS-AFE-rec"</tt>.</dd>
          <dt>TRUE / FALSE and AND / OR / NOT:</dt>
          <dd>Boolean predicates and operators. An implication <tt>X =&gt; Y</tt> means that
          whenever X is true, Y is required to be true under the stated invariant.</dd>
        </dl>
      </section>

      <section anchor="notation-bpc">
        <name>Execution-Finality and BPC Notation</name>
        <dl newline="false" spacing="normal">
          <dt>U:</dt>
          <dd>The UAS Candidate Act Descriptor (U-CAD) for the concrete pending act.</dd>
          <dt>d(U):</dt>
          <dd>The deterministic digest of U, defined by this profile as
          SHA-256(det-CBOR(U)) unless a section defines a more specific domain-separated
          act digest.</dd>
          <dt>D_A:</dt>
          <dd>The domain-separated Act Commitment derived from the canonical Candidate
          Act.</dd>
          <dt>D_C:</dt>
          <dd>The domain-separated Context Commitment derived from the selected live or
          semi-live context material relevant to effectuation.</dd>
          <dt>B:</dt>
          <dd>The full Binding Commitment that cryptographically binds the act to the
          Finality Sink, Authority Reference, current-generation state, context, freshness,
          and validity scope.</dd>
          <dt>B_t:</dt>
          <dd>The t-bit compact representation Trunc_t(B) carried by a constrained BPC.</dd>
          <dt>K_root:</dt>
          <dd>Protected root key material from which role-specific keys may be derived.
          Possession of ordinary mission-computer state does not imply access to K_root.</dd>
          <dt>K_B:</dt>
          <dd>The BPC or compact-transport authentication key derived for the applicable
          session and scope.</dd>
          <dt>K_bind:</dt>
          <dd>The act-binding key used to bind execution semantics to the Candidate Act and
          Finality Sink. K_bind and K_B are distinct key roles.</dd>
          <dt>K_R:</dt>
          <dd>The protected Authority-Reference derivation key used by keyed compact
          Authority Reference constructions.</dd>
          <dt>K_frag:</dt>
          <dd>The protected key used to authenticate individual fragments belonging to an
          authenticated multi-frame BPC reconstruction.</dd>
          <dt>K_S:</dt>
          <dd>A protected sink-local capability-authentication key used to create or verify
          a bounded execution capability after successful finality verification. K_S is
          held by, derived within, or otherwise available only to the PED, the applicable
          Finality Sink, and any specifically authorized downstream capability verifier; it
          is unavailable to the ordinary act-proposing component.</dd>
          <dt>t, r, m:</dt>
          <dd>Respectively, the retained Binding-Commitment length, Authority-Reference
          length, and authentication-tag length, in bits, where used by the relevant
          construction.</dd>
          <dt>q:</dt>
          <dd>The approximate number of distinct compact commitments in the collision
          domain for the birthday-collision estimate. In the emergency-scene q-of-n
          corroboration equation, q is separately defined locally as the required number
          of independent validated evidence channels; the local definition controls.</dd>
          <dt>W:</dt>
          <dd>The assumed offline attacker-work budget, measured in candidate hash or
          commitment trials, for an unkeyed compact binding.</dd>
          <dt>A_online:</dt>
          <dd>The maximum or assumed number of online substitution attempts permitted by
          freshness, replay, rate-limit, lockout, or escalation controls.</dd>
          <dt>epsilon_c, epsilon_s, epsilon_f:</dt>
          <dd>Target upper bounds for accidental collision, targeted substitution, and
          aggregate authenticator forgery probability, respectively.</dd>
          <dt>R_n:</dt>
          <dd>The nth protected Finality Receipt in a receipt chain. H(R_(n-1)) denotes
          the cryptographic linkage to the preceding committed receipt.</dd>
        </dl>
      </section>

      <section anchor="notation-aer">
        <name>Delayed-Disclosure AER and KDR Notation</name>
        <t>The delayed-disclosure construction uses a reverse one-way chain. The indexing
        in this subsection is normative for interpreting the equations in
        <xref target="beacon"/>. AER intervals are zero-based. Interval i uses a tag key
        K'_i derived from the then-undisclosed chain value K_(i+1); K_0 is only the public
        Anchor commitment.</t>
        <dl newline="false" spacing="normal">
          <dt>K_seed:</dt>
          <dd>A random master seed generated inside the PED for an evidence epoch. K_seed
          is never disclosed to an Observer or transmitter and may be erased after the
          terminal chain value K_N has been derived and sealed.</dd>
          <dt>K_N:</dt>
          <dd>The terminal value of the reverse evidence chain. In the concrete profile it
          is derived from K_seed and the evidence epoch, for example
          <tt>K_N = Trunc_128(SHA-256("UAS-AFE-seed" || K_seed || epoch_id))</tt>. Unlike
          K_seed, K_N is a chain value and may become public if the final usable evidence
          interval is reached and its scheduled disclosure occurs.</dd>
          <dt>K_i:</dt>
          <dd>Chain value i in the reverse one-way chain, related by
          <tt>K_i = F(K_(i+1))</tt> for i = N-1 ... 0.</dd>
          <dt>F:</dt>
          <dd>The domain-separated one-way chain function. The concrete profile defines
          <tt>F(x) = Trunc_128(SHA-256("UAS-AFE-chain" || x))</tt>.</dd>
          <dt>F':</dt>
          <dd>A distinct domain-separated one-way function used only to derive an AER
          authentication key from an undisclosed chain value. The concrete profile defines
          <tt>F'(x) = Trunc_128(SHA-256("UAS-AFE-tag" || x))</tt>.</dd>
          <dt>K_0:</dt>
          <dd>The public chain commitment carried in the signed Evidence Anchor. K_0 is
          used to authenticate later disclosed chain values and is not used, directly or
          through F', as an AER authentication secret.</dd>
          <dt>K'_i:</dt>
          <dd>The AER authentication key for zero-based evidence interval i, defined as
          <tt>K'_i = F'(K_(i+1))</tt>. The prime denotes a derived tag key; K'_i is not
          itself a member of the reverse chain.</dd>
          <dt>I_i:</dt>
          <dd>Evidence interval i, defined as
          <tt>[T_0 + i*Delta, T_0 + (i+1)*Delta)</tt>.</dd>
          <dt>i:</dt>
          <dd>The zero-based evidence-interval index associated with an AER.</dd>
          <dt>j:</dt>
          <dd>A later evidence interval whose disclosed chain value K_(j+1) may be used in
          disclosure verification and loss recovery. Where j is later than i, K_(j+1) can
          be iterated through F to recover K_(i+1).</dd>
          <dt>N:</dt>
          <dd>The terminal chain index and the number of zero-based evidence intervals in
          the epoch: intervals 0 through N-1 use chain values K_1 through K_N.</dd>
          <dt>T_0:</dt>
          <dd>The authenticated start time of the evidence epoch carried in the Anchor.</dd>
          <dt>Delta:</dt>
          <dd>The duration of one evidence interval.</dd>
          <dt>d:</dt>
          <dd>The disclosure lag expressed in whole evidence intervals. The chain value
          K_(i+1) used for AER interval i becomes public only after the configured delay.</dd>
          <dt>hdr or Header_i:</dt>
          <dd>The canonical 8-octet AER header associated with interval i. The concrete
          construction names this value <tt>hdr</tt>; <tt>Header_i</tt> is equivalent
          explanatory notation when the interval must be explicit.</dd>
          <dt>tag or TAG_i:</dt>
          <dd>The truncated HMAC appended to hdr to form the 16-octet AER. In the default
          profile it is a 64-bit truncation computed under K'_i.</dd>
          <dt>epoch_id:</dt>
          <dd>The identifier of the current evidence epoch. It is bound both into terminal
          chain derivation and AER authentication so chain material and records from one
          evidence epoch cannot be transplanted into another.</dd>
          <dt>ua_det:</dt>
          <dd>The DRIP Entity Tag identifying the UA to which the evidence epoch and AER
          are bound.</dd>
        </dl>
        <artwork><![CDATA[
  protected master seed:  K_seed    (never disclosed)
  terminal chain value:   K_N = Trunc_128(SHA-256(
                               "UAS-AFE-seed" || K_seed || epoch_id))
  reverse chain:          K_i = F(K_(i+1))
  public anchor:          K_0
  interval i tag key:     K'_i = F'(K_(i+1))
  disclosure:             K_(i+1) after delay d
  chain authentication:   F^((j+1)-k)(K_(j+1)) = K_k
  loss recovery:          K_(i+1) = F^(j-i)(K_(j+1)),  j > i
]]></artwork>
      </section>

      <section anchor="notation-motion">
        <name>Autonomous-Motion Profile Notation</name>
        <dl newline="false" spacing="normal">
          <dt>d(t):</dt>
          <dd>The protected estimate of distance from the current position to the nearest
          relevant boundary of the permitted spatial region at time t, positive while
          inside the permitted region.</dd>
          <dt>eps_pos:</dt>
          <dd>The conservative position-uncertainty bound used by the boundary-revalidation
          rule.</dd>
          <dt>v_max:</dt>
          <dd>The maximum outward or otherwise relevant permitted speed used in the
          revalidation bound.</dd>
          <dt>tau:</dt>
          <dd>The enforcement-to-actuator reaction latency assumed by the stopping-distance
          model.</dd>
          <dt>a_brk:</dt>
          <dd>The guaranteed positive deceleration magnitude used by the stopping-distance
          model.</dd>
          <dt>Delta_r:</dt>
          <dd>The maximum permitted time between spatial-authority revalidations under the
          selected boundary-proximity model.</dd>
          <dt>p_i and sigma_i:</dt>
          <dd>Respectively, the position estimate reported by source i and that source's
          stated one-sigma uncertainty for the multi-source consistency check.</dd>
          <dt>k:</dt>
          <dd>A positive, profile-selected uncertainty multiplier defining the required
          confidence margin in the multi-source position-consistency predicate.</dd>
          <dt>q_min:</dt>
          <dd>The minimum number of sufficiently independent or partially independent
          position sources required to agree within the stated uncertainty-dependent
          consistency bound.</dd>
          <dt>||x||:</dt>
          <dd>The applicable spatial-distance norm for vector x; a deployment selects the
          norm consistently with its position representation and safety analysis.</dd>
          <dt>C_root:</dt>
          <dd>The deterministic Conflict-Set Root binding the canonical policy-relevant
          intruder set used as the safety basis of a DAA resolution.</dd>
          <dt>r_j, v_j:</dt>
          <dd>Relative position and relative velocity of policy-relevant intruder j with
          respect to ownship for the illustrative closest-point-of-approach calculation.</dd>
          <dt>T:</dt>
          <dd>The prediction horizon for the illustrative DAA safety calculation.</dd>
          <dt>t_CPA,j and d_CPA,j:</dt>
          <dd>The predicted time to closest point of approach and distance at closest point
          of approach for intruder j under the stated illustrative motion model.</dd>
          <dt>D_req,j:</dt>
          <dd>The required separation distance or applicable well-clear threshold for
          encounter class j.</dd>
          <dt>epsilon_j:</dt>
          <dd>A conservative uncertainty margin accounting for surveillance, estimation,
          latency, or model error relevant to intruder j.</dd>
          <dt>m_j(M):</dt>
          <dd>The safety margin for candidate maneuver M against intruder j. A negative
          value indicates failure of the illustrative margin predicate.</dd>
          <dt>C_auth, C_now:</dt>
          <dd>Respectively, the conflict set used when the maneuver was authorized and the
          protected current conflict set reconstructed near motion admission.</dd>
          <dt>S_scene:</dt>
          <dd>The Emergency-Scene Commitment binding the incident, scene geometry,
          locally validated evidence, temporary-control state, and Scene Epoch.</dd>
          <dt>v_i and q in scene corroboration:</dt>
          <dd>v_i is the protected binary validation result for independent evidence
          channel i; q is the locally specified minimum number of independently validated
          channels required by the q-of-n corroboration rule.</dd>
          <dt>E(t):</dt>
          <dd>The Boolean predicate stating whether temporary emergency authority remains
          effective at time t.</dd>
          <dt>delta_loc:</dt>
          <dd>The conservative localization margin used when dilating an emergency-scene
          polygon for location-bounded authority.</dd>
          <dt>A(c,s,e,t):</dt>
          <dd>A Boolean indicator equal to 1 when controller c possesses ordinary
          effectuation authority over governed sink s in authority epoch e at time t,
          and 0 otherwise.</dd>
          <dt>CurrentController[s], CurrentEpoch[s], CurrentEnvelope[s]:</dt>
          <dd>Protected sink-local authority state identifying the controller, monotonic
          Control Authority Epoch, and permitted act or motion envelope currently valid
          for sink s.</dd>
        </dl>
      </section>
    </section>

    <section anchor="arch">
      <name>Architecture</name>
      <t>The mission computer keeps every function it has today: perception, planning,
      route optimization, obstacle avoidance, inspection logic, and operator
      assistance. What changes is that its outputs become proposals. The PED sits on
      every path from a command source to an enablement condition.</t>

      <figure anchor="fig-arch">
        <name>Placement of the Protected Enforcement Domain</name>
        <artwork type="ascii-art"><![CDATA[
 Off-board authorities                      Observers / auditors
 +-----------------------------+            +--------------------+
 | Operator | UTM/U-space USS  |            | DRIP Observer app  |
 | Aviation authority | Payload|            | Regulator, insurer |
 +--------------+--------------+            +---------^----------+
                | AAO, revocation, g_air               | AER + key
                v                                      | disclosure
 +--------------------------- UA ----------------------|------------+
 |                                                     |            |
 |  +------------------+   proposals   +---------------+--------+   |
 |  | Mission computer |-------------->|  Protected Enforcement |   |
 |  | autonomy, AI,    |               |  Domain (PED)          |   |
 |  | planner, GCS link|<--decisions---|  keys | sealed refs    |   |
 |  +------------------+               |  consume | receipts    |   |
 |                                     |  evidence key chain    |   |
 |  +------------------+  trusted      |  safe-state logic      |   |
 |  | GNSS/RTK, VIO,   |-------------->|                        |   |
 |  | IMU, baro, time, |  context      +---+-----+-----+-----+--+   |
 |  | battery, ESC tel.|                   |     |     |     |      |
 |  +------------------+          enable/  |     |     |     |      |
 |                                release  v     v     v     v      |
 |                              +------+ +-----+ +----+ +-------+    |
 |  RID module <-- AER ---------| ESC / | |Latch| | RF | |Camera/|    |
 |  (Broadcast RID, DRIP)       | motor | |power| | PA | |sensor |    |
 |                              | regs  | |     | | EN | | power |    |
 |                              +------+ +-----+ +----+ +-------+    |
 |                                Finality Sinks (default: disabled) |
 +-------------------------------------------------------------------+
]]></artwork>
      </figure>

      <t>Three authorities are kept separate. Computation authority belongs to the
      mission computer. Resource and airspace authority belongs to off-board issuers
      and is carried in AAOs. Effect authority exists only at the PED and is expressed
      as a released enablement condition. A compromise of the first does not yield the
      third.</t>

      <t>The PED <bcp14>MUST</bcp14> hold every protected enablement condition in the
      non-effective state by default. A command signal that reaches a sink without the
      corresponding enablement condition <bcp14>MUST NOT</bcp14> produce the effect. The
      mission computer, debug ports, maintenance interfaces, and radio command links
      <bcp14>MUST NOT</bcp14> have a path to a protected register bank or enable line
      that bypasses the PED; this is the path-completeness requirement of
      <xref target="DAS-PATH"/> applied to the airframe.</t>

      <t>The stabilizing inner control loop may run in the flight controller outside the
      PED. The PED gates the envelope within which that loop may drive the motors, and
      the arming condition, rather than every inner-loop computation. This keeps
      real-time attitude control where it is today.</t>
    </section>



    <section anchor="enforcement-points">
      <name>Independent Enforcement Points</name>
      <t>This section states selected execution-finality properties as independently
      testable enforcement points. Each point stands on its own and does not depend on
      a preceding item for its security meaning. The list is intentionally selective:
      it identifies boundaries at which effect authority is created, withheld,
      narrowed, refreshed, transferred, or evidenced, rather than repeating every
      embodiment described elsewhere in this document.</t>

      <section anchor="ep-core">
        <name>Core Exact-Act and Atomic-Finality Enforcement</name>
        <ol spacing="normal">
          <li><t><strong>EP-01 — Exact-act sink verification.</strong> A consequential
          operation <bcp14>MUST</bcp14> remain in a Non-Effective State until a protected
          Finality Sink independently reconstructs the operation actually presented for
          effectuation, derives the expected act binding, verifies the designated sink,
          freshness, current authority, and required context, and releases effectuation
          only after those checks succeed.</t></li>

          <li><t><strong>EP-02 — Binding-key separation.</strong> When a keyed binding
          commitment is used, the Binding Key <bcp14>MUST NOT</bcp14> be available to the
          mission computer, autonomy model, motion planner, network forwarder, ordinary
          application processor, or other component that can propose or relay the
          Candidate Act. Control of proposal inputs therefore does not by itself permit
          construction of a different valid act binding.</t></li>

          <li><t><strong>EP-03 — Authority reference is not effect authority.</strong> A
          compact Authority Reference <bcp14>MAY</bcp14> identify or resolve a fuller
          Authority Object from protected local storage, an authenticated cache, a
          gateway, or a trusted resolver, but possession of the reference alone
          <bcp14>MUST NOT</bcp14> authorize effectuation. Failure to resolve or validate
          the referenced authority <bcp14>MUST</bcp14> leave the Candidate Act
          non-effective.</t></li>

          <li><t><strong>EP-04 — Current-state binding.</strong> An act binding
          <bcp14>MAY</bcp14> include policy and revocation generations, geofence or
          road-zone version, corridor, mission or driving mode, payload state, radio
          state, device identity, altitude or lane scope, safety state, expiry, and a
          Context Commitment. A material change in a bound value before effectuation
          <bcp14>MUST</bcp14> cause rejection or protected revalidation rather than
          silent reuse of the earlier authorization.</t></li>

          <li><t><strong>EP-05 — Freshness and replay consumption.</strong> A protected
          verifier <bcp14>MUST</bcp14> validate freshness using a nonce, sequence value,
          monotonic counter, time slot, validity interval, rolling session value,
          challenge, expiry, or an equivalent mechanism. A freshness value that has
          already been consumed for a single-use act <bcp14>MUST NOT</bcp14> authorize a
          second effect.</t></li>

          <li><t><strong>EP-06 — Atomic finality commit.</strong> For a permission-expanding
          act, the deciding read of current policy and revocation state, replay or
          freshness consumption, protected decision recording, and creation or release
          of the bounded execution capability <bcp14>MUST</bcp14> occur as one protected
          finality transaction or with equivalent crash-safe semantics. A failure between
          these steps <bcp14>MUST NOT</bcp14> expose an unrecorded usable capability.</t></li>

          <li><t><strong>EP-07 — Receipt-before-release ordering.</strong> When a Finality
          Receipt is part of the selected profile, the receipt or equivalent protected
          decision state <bcp14>MUST</bcp14> be committed before the corresponding
          sink-local execution capability becomes usable. The capability
          <bcp14>MUST</bcp14> remain bounded by the act, sink, parameters, time or
          counter scope, and applicable single-use or envelope condition.</t></li>

          <li><t><strong>EP-08 — Fail-closed permission expansion with preserved safe
          action.</strong> Failure of authentication, act binding, sink binding,
          freshness, replay, policy currentness, revocation currentness, context,
          authority resolution, fragmentation, or ambiguity checks
          <bcp14>MUST NOT</bcp14> expand effect authority. A separately protected
          Safe-Action Set <bcp14>MAY</bcp14> remain available for stabilizing,
          risk-reducing, or state-preserving action.</t></li>
        </ol>
      </section>

      <section anchor="ep-constrained-evidence">
        <name>Constrained-Beacon, Fragmentation, and Evidence Enforcement</name>
        <ol spacing="normal">
          <li><t><strong>EP-09 — Compact BPC remains act- and sink-specific.</strong> A
          Beacon Proof Capsule used on a constrained channel <bcp14>MUST</bcp14> preserve
          the same exact-act and designated-sink semantics as the fuller execution
          evidence from which it is derived. Transporting the BPC beside Remote ID,
          V2X, telemetry, discovery, sidelink, mesh, onboard-bus, or similar traffic
          <bcp14>MUST NOT</bcp14> turn identification or message possession into effect
          authority.</t></li>

          <li><t><strong>EP-10 — Truncation has an explicit security budget.</strong> A
          truncated cryptographic representation <bcp14>MUST</bcp14> use a retained bit
          length selected against collision risk and, for an unkeyed value, feasible
          offline attacker work. Detection of more than one full commitment mapping to
          the same compact representation <bcp14>MUST</bcp14> cause denial, escalation
          to a longer representation, or another fail-closed response.</t></li>

          <li><t><strong>EP-11 — Fragment sets cannot be mixed into authority.</strong>
          Each execution-evidence fragment <bcp14>MUST</bcp14> be bound to a fragment-set
          or session identifier, common root commitment, fragment index and count, and
          fragment payload. Fragments associated with different sessions, root
          commitments, freshness values, policy generations, devices, or Candidate Acts
          <bcp14>MUST NOT</bcp14> be combinable into valid execution evidence.</t></li>

          <li><t><strong>EP-12 — Incomplete or corrupt reconstruction is non-effective.</strong>
          An incomplete, corrupt, duplicate, ambiguous, or otherwise insufficient
          fragment set <bcp14>MUST NOT</bcp14> authorize effectuation. Reconstructed
          evidence <bcp14>MUST</bcp14> still be checked at the Finality Sink against the
          independently reconstructed actual Candidate Act.</t></li>

          <li><t><strong>EP-13 — Evidence is not authority.</strong> An observer-verifiable
          Act Evidence Record, delayed key disclosure, Evidence Anchor, or Finality
          Receipt <bcp14>MUST NOT</bcp14> be accepted by a Finality Sink as authority to
          perform a Candidate Act. Such objects establish evidence about a protected
          decision; they do not themselves release the effectuation boundary.</t></li>
        </ol>
      </section>

      <section anchor="ep-motion">
        <name>Spatial, UAS, and Automated-Vehicle Enforcement</name>
        <ol spacing="normal">
          <li><t><strong>EP-14 — Boundary-proximity revalidation.</strong> Spatially scoped
          authority <bcp14>MUST</bcp14> be revalidated early enough that position
          uncertainty and stopping distance remain inside the authorized region. A
          representative bound is
          <tt>Delta_r &lt;= (d - epsilon_pos - s_stop) / v</tt>, with
          <tt>s_stop = v*tau + v^2/(2*a)</tt>. When the resulting interval is non-positive,
          the system <bcp14>MUST</bcp14> withhold further outward motion, reduce the
          permitted speed, or select a protected safe action.</t></li>

          <li><t><strong>EP-15 — Independent position consistency.</strong> When a motion
          authorization depends on position, the protected enforcement path
          <bcp14>MAY</bcp14> require agreement from multiple independent or partially
          independent position sources. Falling below the required agreement threshold
          <bcp14>MUST</bcp14> remove permission-expanding spatial motion rather than
          silently treating the last estimate as current.</t></li>

          <li><t><strong>EP-16 — UAS actuation remains envelope-bound.</strong> For UAS
          propulsion, a verified authorization <bcp14>MAY</bcp14> release a bounded PWM,
          thrust, velocity-vector, motor, or propulsion envelope so that every inner-loop
          setpoint need not carry a fresh capsule. Commands outside the verified envelope
          <bcp14>MUST NOT</bcp14> become actuator-effective.</t></li>

          <li><t><strong>EP-17 — Payload effect is bound to the real payload boundary.</strong>
          A payload operation <bcp14>MUST</bcp14> bind the pending operation to the
          payload identity and payload-effectuation sink and <bcp14>MAY</bcp14> additionally
          bind release zone, altitude, attitude, mission phase, operator or customer
          authority, airspace authority, and payload state. The latch, actuator, or
          associated power-enable path <bcp14>MUST</bcp14> remain disabled when the
          reconstructed pending operation does not match those bounds.</t></li>

          <li><t><strong>EP-18 — Vehicle motion is admitted as a bounded trajectory or
          manoeuvre.</strong> A vehicle-side motion-admission Finality Sink positioned
          between the automated-driving or planning component and steering, braking,
          propulsion, torque, or drive-by-wire control <bcp14>MUST</bcp14> independently
          derive the trajectory, manoeuvre, or control envelope actually presented for
          effectuation and admit it only when it matches the protected act binding.</t></li>

          <li><t><strong>EP-19 — Remote movement does not bypass vehicle-local finality.</strong>
          A remotely selected route, fleet command, remote-assistance instruction, or
          application-originated movement request <bcp14>MUST</bcp14> remain non-effective
          until the vehicle-local motion-admission boundary verifies the concrete
          trajectory or control envelope that will actually be admitted to vehicle
          control. Authentication of the remote source alone is insufficient.</t></li>
        </ol>
      </section>

      <section anchor="ep-daa">
        <name>Detect-and-Avoid Enforcement</name>
        <ol spacing="normal">
          <li><t><strong>EP-20 — DAA resolution is conflict-set-bound.</strong> A proposed
          avoidance manoeuvre <bcp14>MUST</bcp14> be bound to a deterministic commitment
          over the policy-relevant intruder set, ownship state, validity condition,
          current resolution epoch, and target motion-admission sink. Immediately before
          motion admission, the protected path <bcp14>MUST</bcp14> obtain a current
          conflict state and reject or recompute when the required conflict-set
          equivalence or safety predicate no longer holds.</t></li>

          <li><t><strong>EP-21 — Newly relevant traffic invalidates stale resolution.</strong>
          Appearance of a newly policy-relevant intruder, unvalidated disappearance of a
          required track, excessive track staleness, or uncertainty growth beyond a
          protected threshold <bcp14>MUST</bcp14> cause the earlier manoeuvre authority
          to be withheld, narrowed, or recomputed before motion admission.</t></li>

          <li><t><strong>EP-22 — A resolution must remain safe across the relevant set.</strong>
          The protected DAA finalization step <bcp14>MUST</bcp14> evaluate the candidate
          manoeuvre against the relevant intruders and <bcp14>MUST NOT</bcp14> admit a
          manoeuvre that resolves one conflict while violating the configured separation
          margin with another relevant intruder.</t></li>

          <li><t><strong>EP-23 — Resolution epochs prevent stale-controller reuse.</strong>
          Selection of a replacement DAA resolution or a resolution from another
          authorized DAA source <bcp14>MUST</bcp14> advance protected resolution state so
          that a previously valid manoeuvre capability cannot remain usable merely
          because the earlier source credential is still valid.</t></li>
        </ol>
      </section>

      <section anchor="ep-emergency">
        <name>Emergency-Scene Temporary-Authority Enforcement</name>
        <ol spacing="normal">
          <li><t><strong>EP-24 — Emergency authority is scene-bound, motion-bounded, and
          temporary.</strong> A temporary road-rule exception <bcp14>MUST</bcp14> bind the
          vehicle, incident, scene, permitted exception class, bounded motion envelope,
          and expiry condition. The vehicle-local protected boundary
          <bcp14>MUST</bcp14> verify the actual proposed motion against both that envelope
          and protected local evidence of the physical scene.</t></li>

          <li><t><strong>EP-25 — Higher-risk scene exceptions require protected
          corroboration.</strong> A profile <bcp14>MAY</bcp14> require two or more
          independent evidence classes before releasing a higher-risk temporary
          exception. Loss of required corroboration, incident closure, scene exit,
          expiry, authority revocation, policy-generation change, or single-use
          consumption <bcp14>MUST</bcp14> invalidate the temporary expansion of motion
          authority.</t></li>

          <li><t><strong>EP-26 — Perceived responder gestures remain evidence.</strong> A
          perceived hand signal, gesture, voice instruction, light pattern, or other
          non-verbal responder indication <bcp14>MUST NOT</bcp14> directly become motion
          authority. It may contribute evidence only after the protected finality path
          associates it with independently verified responder or incident authority and
          current scene state.</t></li>
        </ol>
      </section>

      <section anchor="ep-handover">
        <name>Atomic Controller-Handover Enforcement</name>
        <ol spacing="normal">
          <li><t><strong>EP-27 — Every ordinary control act is controller- and epoch-bound.</strong>
          For each governed motion or actuator sink, protected authority state
          <bcp14>MUST</bcp14> identify the current ordinary controller and a monotonic
          authority epoch. An otherwise authenticated ordinary control act
          <bcp14>MUST</bcp14> be rejected when its controller identity or authority epoch
          does not match the protected state for that sink.</t></li>

          <li><t><strong>EP-28 — Handover is a protected prepare/commit transaction.</strong>
          A controller handover <bcp14>MUST</bcp14> validate the proposed new controller's
          scope before atomically advancing the authority epoch and changing the current
          controller. Queued or precomputed ordinary commands from the prior epoch
          <bcp14>MUST</bcp14> become unusable after commit, and failure before commit
          <bcp14>MUST NOT</bcp14> grant ordinary effect authority to the proposed new
          controller.</t></li>

          <li><t><strong>EP-29 — Split-brain is prohibited per governed sink.</strong>
          Protected authority state <bcp14>MUST</bcp14> prevent more than one ordinary
          controller from holding effect authority for the same governed sink and epoch.
          A separately defined safe-action controller <bcp14>MAY</bcp14> remain permitted
          to issue only stabilizing or risk-reducing actions, including during crash,
          rollback, reset, or failover recovery.</t></li>
        </ol>
      </section>

      <section anchor="ep-ntn">
        <name>Informative Satellite and Non-Terrestrial-Network Enforcement</name>
        <t>The following points apply the same effect-boundary invariant to satellite and
        non-terrestrial communication systems. They are included as cross-domain
        examples and do not change the civil UAS and autonomous-motion scope of the
        remainder of this document.</t>
        <ol spacing="normal">
          <li><t><strong>EP-30 — RF and beam activation is exact-operation-bound.</strong>
          A communication Finality Sink associated with a baseband processor, modem,
          beamformer, phased-array controller, RF chain, gateway-selection function, or
          transmit-enable path <bcp14>MUST</bcp14> determine the actual communication
          operation presented for activation and withhold effect unless it matches a
          binding over the selected satellite or terminal, beam, frequency or channel,
          transmit-power scope, geographic service region, time scope, and designated
          communication sink as required by the profile.</t></li>

          <li><t><strong>EP-31 — Satellite, beam, gateway, and path changes are new
          effect decisions.</strong> A transition to a different satellite, beam,
          gateway, RF configuration, terrestrial-versus-satellite path, or inter-satellite
          next hop <bcp14>MUST</bcp14> be treated as a different Candidate Act or undergo
          protected revalidation before effectuation. Previously valid authority for the
          old communication path <bcp14>MUST NOT</bcp14> automatically authorize the new
          path when visibility, obstruction, spectrum permission, policy, revocation, or
          device context has materially changed.</t></li>

          <li><t><strong>EP-32 — NTN verification preserves a bounded communication
          safe set.</strong> Failure to verify a permission-expanding satellite or NTN
          operation <bcp14>MUST NOT</bcp14> force unsafe expansion of communication
          authority. A protected communication Safe-Action Set <bcp14>MAY</bcp14> permit
          continuation of an already verified link, reduced transmit power, receive-only
          operation, bounded reacquisition, a previously verified fallback link, or
          communication shutdown according to local policy.</t></li>
        </ol>
      </section>
    </section>

    <section anchor="acts">
      <name>UAS Candidate Act Classes and Finality Sinks</name>
      <table anchor="tab-acts">
        <name>Act classes, sinks, and enablement conditions</name>
        <thead>
          <tr><th>Act class (code); reuse</th><th>Example</th><th>Finality Sink</th><th>Withheld condition</th></tr>
        </thead>
        <tbody>
          <tr><td>ARM (0x01); SINGLE_USE</td><td>Arm motors for take-off</td><td>ESC arming register / enable line</td><td>ESC enable asserted</td></tr>
          <tr><td>KINETIC_ENVELOPE (0x02); ENVELOPE</td><td>Fly segment k within corridor at speed &lt;= v_max</td><td>Motor output register bank, thrust limit</td><td>Write window for setpoints inside envelope</td></tr>
          <tr><td>VOLUME_ENTRY (0x03); SINGLE_USE</td><td>Enter geo-zone Z or next corridor segment</td><td>Envelope expansion at PED</td><td>New envelope released</td></tr>
          <tr><td>PAYLOAD_RELEASE (0x04); SINGLE_USE</td><td>Lower or release a delivery parcel at drop zone D</td><td>Latch solenoid or winch driver</td><td>Solenoid power window</td></tr>
          <tr><td>SENSOR_ACTIVATE (0x05); ENVELOPE</td><td>Camera on, resolution R, field of view F, area A</td><td>Camera power rail or sensor-output key</td><td>Rail enable or output key</td></tr>
          <tr><td>RF_EMIT (0x06); ENVELOPE</td><td>Transmit video downlink on band B at power P</td><td>Power amplifier enable, frequency register</td><td>PA enable, register permit</td></tr>
          <tr><td>MODE_TRANSITION (0x07); SINGLE_USE</td><td>Switch from assisted to autonomous BVLOS mode</td><td>Flight-mode register</td><td>Register write permit</td></tr>
          <tr><td>RID_CHANGE (0x08); SINGLE_USE</td><td>Change RID transmission state</td><td>RID module enable and configuration</td><td>Configuration write permit</td></tr>
          <tr><td>COORDINATED (0x09); Composite child</td><td>Formation change across N aircraft</td><td>Each aircraft's kinetic sink</td><td>Per-child release after composite commit</td></tr>
          <tr><td>SAFE_STATE (0x3F); n/a</td><td>Hover, loiter, descend, land, return-to-home</td><td>Flight controller safe-state path</td><td>Pre-authorized (no handle)</td></tr>
        </tbody>
      </table>
      <t>RID_CHANGE requests that would suppress legally required RID transmission
      <bcp14>MUST</bcp14> be denied unless an authority object explicitly permits the
      change, since the enforcement domain is the component that must not be
      coercible into making the aircraft anonymous.</t>
    </section>

    <section anchor="objects">
      <name>Objects</name>
      <t>Objects are encoded as deterministic CBOR <xref target="RFC8949"/> (Section 4.2
      of that document) when carried onboard or over constrained links, and
      <bcp14>MAY</bcp14> be encoded as JCS JSON <xref target="RFC8785"/> off-board.
      Signatures use COSE <xref target="RFC9052"/>. The CDDL <xref target="RFC8610"/>
      below uses text keys for readability. The compact integer-key mapping in
      <xref target="compact-keys"/> is the encoding <bcp14>RECOMMENDED</bcp14> on
      onboard buses. Implementations that speak only the text-key form
      <bcp14>MUST</bcp14> still produce the same deterministic digest over the
      integer-key encoding when computing d(U), or declare that they use the
      text-key encoding for digesting and never mix the two.</t>

      <section anchor="ucad">
        <name>UAS Candidate Act Descriptor</name>
        <sourcecode type="cddl"><![CDATA[
u-cad = {
  "v"          : 1,
  "act_class"  : uint,              ; Table 2 code
  "ua_det"     : bstr .size 16,     ; DRIP Entity Tag of this UA
  "sink_id"    : bstr .size 8,      ; PED-local sink identifier
  "act_id"     : bstr .size 16,     ; random per Candidate Act
  "params"     : act-params,        ; load-bearing parameters only
  "ctx_digest" : bstr .size 32,     ; digest of live context snapshot
  "g_air"      : uint,              ; airspace/geo-zone generation
  "g_rev"      : uint,              ; revocation generation
  "g_pol"      : uint,              ; operator policy generation
  "aao_digest" : bstr .size 32,     ; authority object relied on
  ? "composite": { "id": bstr .size 16, "digest": bstr .size 32 }
}

act-params = kinetic-env / volume-entry / payload
           / sensor / rf / other

kinetic-env = {
  "corridor_id" : bstr, "segment" : uint,
  "v_max_cms"   : uint, "a_max_cms2" : uint,
  "h_min_dm"    : int,  "h_max_dm"   : int,
  "t_start"     : uint, "t_end"      : uint     ; seconds, GNSS time
}

payload = {
  "drop_zone_id" : bstr, "h_max_dm" : uint,
  "v_max_cms"    : uint, "tilt_max_cdeg" : uint
}

sensor = { "sensor" : uint, "res_class" : uint,
           "fov_cdeg" : uint, "area_id" : bstr, "t_end" : uint }

rf = { "band_id" : uint, "p_max_dbm" : int, "t_end" : uint }

volume-entry = { "zone_id" : bstr, "g_air" : uint }
other = { * tstr => any }
]]></sourcecode>
        <t>The descriptor digest is d(U) = SHA-256(det-CBOR(U)) <xref target="RFC6234"/>.
        Only load-bearing fields are included; fields that do not change the effect
        <bcp14>MUST NOT</bcp14> be added, so that the sink can reconstruct the descriptor
        from the pending act rather than trusting a caller-supplied digest.</t>
      </section>

      <section anchor="compact-keys">
        <name>Compact Integer Keys</name>
        <t>When the compact profile is used, text keys <bcp14>MUST</bcp14> be replaced
        by the following major integers before deterministic encoding. Unknown keys
        are rejected.</t>
        <table anchor="tab-keys">
          <name>Compact CBOR keys for U-CAD and AAO</name>
          <thead><tr><th>Text key</th><th>Integer</th><th>Object</th></tr></thead>
          <tbody>
            <tr><td>v</td><td>1</td><td>U-CAD, AAO, handle, receipt, anchor</td></tr>
            <tr><td>act_class / act_classes</td><td>2</td><td>U-CAD / AAO</td></tr>
            <tr><td>ua_det</td><td>3</td><td>all UA-bound objects</td></tr>
            <tr><td>sink_id</td><td>4</td><td>U-CAD, handle</td></tr>
            <tr><td>act_id</td><td>5</td><td>U-CAD</td></tr>
            <tr><td>params</td><td>6</td><td>U-CAD</td></tr>
            <tr><td>ctx_digest</td><td>7</td><td>U-CAD, receipt</td></tr>
            <tr><td>g_air / g_air_min</td><td>8</td><td>U-CAD / AAO</td></tr>
            <tr><td>g_rev / g_rev_min</td><td>9</td><td>U-CAD / AAO</td></tr>
            <tr><td>g_pol</td><td>10</td><td>U-CAD</td></tr>
            <tr><td>aao_digest</td><td>11</td><td>U-CAD</td></tr>
            <tr><td>composite</td><td>12</td><td>U-CAD</td></tr>
            <tr><td>issuer</td><td>13</td><td>AAO</td></tr>
            <tr><td>corridor</td><td>14</td><td>AAO</td></tr>
            <tr><td>envelopes</td><td>15</td><td>AAO</td></tr>
            <tr><td>t_start / t_end</td><td>16 / 17</td><td>AAO, params</td></tr>
            <tr><td>quorum</td><td>18</td><td>AAO</td></tr>
            <tr><td>offline</td><td>19</td><td>AAO</td></tr>
            <tr><td>reuse</td><td>20</td><td>handle (0=SINGLE_USE, 1=ENVELOPE)</td></tr>
            <tr><td>expiry</td><td>21</td><td>handle</td></tr>
            <tr><td>nonce</td><td>22</td><td>handle</td></tr>
            <tr><td>act_digest</td><td>23</td><td>handle (= d(U))</td></tr>
            <tr><td>decision</td><td>24</td><td>receipt (0=DENY, 1=ALLOW, 2=SAFE)</td></tr>
            <tr><td>n</td><td>25</td><td>receipt counter</td></tr>
            <tr><td>prev</td><td>26</td><td>previous receipt digest</td></tr>
            <tr><td>handle_digest</td><td>27</td><td>receipt</td></tr>
            <tr><td>code</td><td>28</td><td>receipt deny code</td></tr>
          </tbody>
        </table>
      </section>

      <section anchor="aao">
        <name>Airspace Authority Object</name>
        <sourcecode type="cddl"><![CDATA[
aao = {
  "issuer"      : tstr,             ; operator, USS/USSP, authority
  "ua_det"      : bstr .size 16,
  "act_classes" : [+ uint],
  "corridor"    : corridor,
  "envelopes"   : { * uint => any },  ; per act class bounds
  "g_air_min"   : uint,               ; lowest acceptable g_air
  "g_rev_min"   : uint,
  "t_start"     : uint, "t_end" : uint,
  "quorum"      : { * uint => uint }, ; act class => required signers
  "offline"     : { "t_max" : uint, "classes" : [* uint] }
}
corridor = [+ prism]
prism = { "poly" : [3* [lat_e7: int, lon_e7: int]],
          "h_min_dm" : int, "h_max_dm" : int }
; carried inside COSE_Sign1; multiple issuers => COSE_Sign
]]></sourcecode>
        <t>The AAO is resolved by the PED and never by the mission computer.
        Possession of an AAO by any software component confers no authority.</t>
      </section>

      <section anchor="handle">
        <name>Execution Handle and Finality Receipt</name>
        <t>An Execution Handle in this profile is a COSE_Sign1 (or COSE_Sign, when
        the AAO quorum requires it) object that binds at minimum:</t>
        <ul spacing="normal">
          <li>d(U) (field act_digest), sink_id, ua_det;</li>
          <li>g_air, g_rev, g_pol as known to the issuer at issuance;</li>
          <li>reuse policy (SINGLE_USE or ENVELOPE), expiry, and a nonce;</li>
          <li>for ENVELOPE, the envelope parameters and any aggregate ceiling
          (for example D_max).</li>
        </ul>
        <t>The handle is non-bearer: possession without a successful consume at the
        named sink confers no effect. Identical SINGLE_USE handles
        <bcp14>MUST</bcp14> be refused on the second consume. A Finality Receipt is
        a PED-signed COSE_Sign1 that binds the decision, d(U) when known,
        the handle digest when a handle was presented, ctx_digest when a context
        snapshot was taken, the selected safe state on deny, a monotonic receipt
        counter n, the previous receipt digest, and, when evidence is emitted, the
        same 8-octet AER header that was queued. A receipt
        <bcp14>MUST NOT</bcp14> be accepted as a handle (deny code EF-008).</t>

        <t>A protected receipt chain may authenticate each committed receipt against the
        preceding receipt. One representative construction, preserving the provisional
        receipt-chain invariant, is:</t>
        <artwork><![CDATA[
  R_n = Auth_K( Header_n || B_n || Counter_n || H(R_(n-1)) )
]]></artwork>
        <t>Here B_n is the applicable Binding Commitment or equivalent act-bound decision
        commitment. The exact authenticator is profile-specific; the required property is
        that deleting, reordering, substituting, or rolling back a committed receipt is
        detectable by the protected receipt state.</t>
      </section>
    </section>

    <section anchor="bpc">
      <name>Constrained Execution Proof Capsules</name>
      <t>This section defines an optional compact transport profile for execution
      verification over links where the full AAO, full Execution Handle, or complete
      policy state is too large or too costly to transmit on every act. It is distinct
      from the Compact Broadcast Act Evidence mechanism of <xref target="beacon"/>.
      A BPC is presented before effectuation as verification input. An AER, KDR, Anchor,
      or Finality Receipt is evidence about a decision and <bcp14>MUST NOT</bcp14> be
      accepted as a BPC or Execution Handle.</t>

      <section anchor="bpc-bind">
        <name>Act, Context, and Binding Commitments</name>
        <t>The U-CAD already provides the canonical Candidate Act U and d(U). For a BPC,
        the PED additionally forms a selected Context object Ctx containing only state
        material to the effect, for example corridor or geo-zone generation, geographic
        cell, altitude band, mission phase, payload state, flight mode, RF mode, and
        policy or revocation state. Exact coordinates need not be broadcast.</t>
        <artwork><![CDATA[
  D_A = SHA-256( "UAS-BPC-ACT" || det-CBOR(U) )
  D_C = SHA-256( "UAS-BPC-CTX" || det-CBOR(Ctx) )

  B = HMAC-SHA-256(K_bind,
        "UAS-BPC-BIND" || D_A || sink_id || authority_ref ||
        g_air || g_rev || g_pol || D_C || freshness || expiry)

  B_t = Trunc_t(B)
]]></artwork>
        <t>K_bind is held or derived inside the PED and the verifying Finality Sink and
        is unavailable to the mission computer, ordinary transmitter, and other
        act-proposing components. A deployment may use an unkeyed binding only where the
        retained length is sized against the offline substitution budget in
        <xref target="bpc-trunc"/>. Changing a load-bearing act field, sink, authority,
        generation, context, freshness value, or expiry therefore changes the expected
        binding.</t>
        <artwork><![CDATA[
  Sink_2 != Sink_1
       => Binding(A, Sink_2) != Binding(A, Sink_1)
          except with the bounded cryptographic collision probability
]]></artwork>

        <section anchor="bpc-session-keys">
          <name>Session-Key Derivation and Key Separation</name>
          <t>A deployment may derive distinct capsule-authentication and act-binding keys
          from a common protected root. A representative derivation is:</t>
          <artwork><![CDATA[
  K_B = HKDF(K_root,
        "BEACON" || SessionNonce || DeviceID || PolicyEpoch || SinkClass)

  K_bind = HKDF(K_root,
           "BIND" || SessionNonce || DeviceID || SinkID)
]]></artwork>
          <t>The derivations intentionally use different domain-separation labels and
          different scope inputs. K_B authenticates the compact transport object; K_bind
          binds execution semantics to the act and Finality Sink. Disclosure or compromise
          of one derived-key role therefore does not intentionally collapse the two roles.
          Equivalent KDFs may be used where they provide the same separation property.</t>

          <t>Key evolution used for ordinary undisclosed session keys is distinct from the
          reverse chain used for delayed-disclosure evidence. A forward erasure ratchet may
          evolve as:</t>
          <artwork><![CDATA[
  K_(i+1) = H(K_i)     ; erase K_i after use
]]></artwork>
          <t>Because disclosure of K_i would reveal all later values in that construction,
          a forward ratchet <bcp14>MUST NOT</bcp14> be used as the delayed-disclosure
          evidence chain of <xref target="beacon"/>. That evidence chain runs in the
          reverse direction so that disclosure authenticates past intervals without
          revealing later undisclosed evidence keys.</t>
        </section>
      </section>

      <section anchor="bpc-authref">
        <name>Compact Authority References</name>
        <t>A BPC need not carry the AAO in full. The PED may maintain an authenticated
        local cache of AAOs and use a compact Authority Reference. A preferred keyed
        construction first derives a stable full digest of the deterministic AAO payload
        and then derives a short reference under a protected reference key K_R:</t>
        <artwork><![CDATA[
  D_AAO = SHA-256( det-CBOR(AAO-payload) )
  R     = Trunc_r( HMAC-SHA-256(K_R,
              "UAS-BPC-AUTHREF" || D_AAO) )
]]></artwork>
        <t>K_R is not available to the mission computer or ordinary beacon transmitter.
        An unkeyed reference may be used only when r is selected using an applicable
        attacker-work budget. Resolution <bcp14>MUST</bcp14> occur in or under control of
        the PED or Finality Sink. Unknown, stale, ambiguous, revoked, or unresolved
        Authority References <bcp14>MUST NOT</bcp14> authorize effectuation.</t>
      </section>

      <section anchor="bpc-format">
        <name>Representative BPC and Field Compression</name>
        <t>A representative BPC contains the following logical fields. The precise byte
        layout is profile-specific; fields may be implicit from protected session state,
        dictionary-indexed, delta-encoded, or recovered from local state. This version
        defines no IANA allocation for BPC profiles.</t>
        <sourcecode type="cddl"><![CDATA[
; Semantic BPC. Integer keys are illustrative profile-local labels.
bpc = {
  0  : 1,                  ; version
  1  : uint,               ; profile_id
  2  : uint,               ; act_class
  3  : uint,               ; sink class or compact sink id
  4  : bstr,               ; authority_ref, typically 4 or 8 octets
  5  : uint,               ; g_air or session-relative airspace generation
  6  : uint,               ; g_rev
  7  : uint,               ; g_pol
  8  : uint,               ; freshness / sequence
  9  : uint,               ; expiry delta or time-slot
  10 : bstr,               ; context_ref_or_digest
  11 : bstr,               ; B_t, compact Binding Commitment
  12 : uint,               ; flags / risk profile
  13 : bstr                ; capsule authenticator
}
]]></sourcecode>
        <t>Non-limiting compression includes compact act and sink dictionaries, a
        32- or 64-bit Authority Reference, expiry delta instead of an absolute timestamp,
        corridor or geo-cell references instead of coordinates, a compact Context
        Commitment, and bitmaps for authenticated predicate state. A predicate bitmap is
        advisory unless covered by the capsule authenticator and never substitutes for
        the sink's own protected checks.</t>
      </section>

      <section anchor="bpc-trunc">
        <name>Truncation, Collision, and Attacker-Work Budgets</name>
        <t>Truncation length is selected explicitly rather than by convenience. Let t be
        the retained number of Binding Commitment bits and q the approximate number of
        distinct commitments in the relevant collision domain. The birthday estimate for
        accidental coincidence is:</t>
        <artwork><![CDATA[
  P_coll ~= q(q-1) / 2^(t+1)

  for target epsilon_c:
  t >= ceil( log2( q(q-1) / (2 * epsilon_c) ) )
]]></artwork>
        <t>For an unkeyed commitment whose inputs are known or predictable, an attacker
        may search offline for a substituted act producing the same short value. With W
        offline trials:</t>
        <artwork><![CDATA[
  P_sub ~= W / 2^t

  for target epsilon_s:
  t >= ceil( log2( W / epsilon_s ) )
]]></artwork>
        <t>For a keyed binding where offline search is unavailable without K_bind, a
        targeted attacker is limited to online attempts that encounter freshness and
        replay controls:</t>
        <artwork><![CDATA[
  P_sub <= A_online / 2^t
]]></artwork>
        <t>These expressions size compact fields; they are not an airworthiness or total
        system-failure probability. The selected t therefore depends on safety class,
        act rate, fleet size, session lifetime, replay-cache lifetime, whether the binding
        is keyed, and the accepted attempt budget. Higher-consequence act classes may use
        longer compact commitments.</t>
        <t>If a receiver's protected cache or reconstruction process finds more than one
        full candidate consistent with the same short value, it <bcp14>MUST NOT</bcp14>
        choose one heuristically. It <bcp14>MUST</bcp14> deny the consequential act or
        escalate to a profile carrying a longer commitment or full proof.</t>
        <artwork><![CDATA[
  Trunc_t(B_1) = Trunc_t(B_2) AND B_1 != B_2
        => Ambiguous

  Ambiguous => Effectuate(CandidateAct) = FALSE
]]></artwork>
      </section>

      <section anchor="bpc-auth">
        <name>Capsule Authentication</name>
        <t>In addition to B_t, the BPC is authenticated as a complete transport object.
        A symmetric constrained profile may compute:</t>
        <artwork><![CDATA[
  Tag = Trunc_m( HMAC-SHA-256(K_B,
           "UAS-BPC-CAPSULE" || canonical(BPC_without_Tag)) )
]]></artwork>
        <t>K_B is a protected session or link key. For an expected aggregate attacker
        verification budget A and permitted aggregate forgery probability epsilon_f, a
        deployment can select:</t>
        <artwork><![CDATA[
  A / 2^m <= epsilon_f
  m >= ceil( log2( A / epsilon_f ) )
]]></artwork>
        <t>Other authenticated constructions may be used where their security and field
        sizes meet the applicable profile. The capsule authenticator protects the
        transport representation; B_t separately binds the execution semantics to the
        actual act and sink.</t>
      </section>

      <section anchor="bpc-frag">
        <name>Authenticated Multi-Frame Reconstruction</name>
        <t>If a complete BPC or its referenced proof material does not fit one transport
        unit, it may be fragmented. Let P be the complete encoded proof and p_i its
        ordered fragments. A protected sender computes:</t>
        <artwork><![CDATA[
  P    = p_0 || p_1 || ... || p_(n-1)
  Root = SHA-256( "UAS-BPC-FRAG-ROOT" || P )

  F_i  = { SessionID, Root, i, n, p_i, Auth_i }

  Auth_i = Trunc_m( HMAC-SHA-256(K_frag,
             "UAS-BPC-FRAG" || SessionID || Root ||
             i || n || p_i) )
]]></artwork>
        <t>No individual fragment is execution authority. The verifier
        <bcp14>MUST</bcp14> authenticate the required fragment set, require a common
        SessionID and Root, reconstruct the ordered proof, and verify the Root before
        continuing normal finality verification. A fragment from another session, root,
        fragment count, policy generation, or device context <bcp14>MUST NOT</bcp14> be
        mixed into the reconstruction.</t>
        <artwork><![CDATA[
  IncompleteEvidence  =>  NoEffectuation
  FragmentsReceived < RequiredFragments
       => Effectuate(CandidateAct) = FALSE
  Verify(BPC) != TRUE
       => Effectuate(CandidateAct) = FALSE
]]></artwork>
        <t>A missing or corrupted fragment, unknown Authority Reference, unresolved
        context reference, stale generation, invalid capsule tag, ambiguous sink,
        collision-guard trigger, absent freshness state, or incomplete reconstruction
        therefore leaves the consequential Candidate Act non-effective. Safe-State Set
        actions remain available.</t>
      </section>

      <section anchor="bpc-resolver">
        <name>Resolver-Assisted and Cache-Assisted Verification</name>
        <t>A protected resolver may be used when the constrained link carries only an
        Authority Reference and compact commitment. The PED supplies at least the
        Authority Reference, Binding Commitment or compact value, UA reference, current
        generation information, and requested act class. The resolver may return the
        resolved AAO and authenticated resolver proof. The resolver does not decide the
        physical act; the PED and Finality Sink still reconstruct the actual impending
        U-CAD and apply current local state.</t>
        <sourcecode type="pseudocode"><![CDATA[
PROCEDURE RESOLVE_BPC_AUTHORITY(bpc):
  aao := PROTECTED_CACHE_LOOKUP(bpc.authority_ref)
  IF aao IS NOT NULL: RETURN aao

  IF authenticated_resolver_available:
      response := RESOLVER_QUERY(bpc.authority_ref,
                                 bpc.binding_commitment,
                                 SELF.det,
                                 CURRENT_GENERATIONS())
      IF VERIFY_RESOLVER_RESPONSE(response):
          CACHE_PROTECTED(response.aao)
          RETURN response.aao

  RETURN UNKNOWN
]]></sourcecode>
        <t>UNKNOWN is not EMPTY and is not authorization. A cache miss or resolver
        failure <bcp14>MUST</bcp14> result in no permission expansion; the PED may hold,
        request refresh, use a permitted Safe-State Set action, or require a full AAO over
        another authenticated path.</t>
      </section>

      <section anchor="bpc-process">
        <name>Sink-Side BPC Verification</name>
        <t>The sink never trusts an upstream description of the act merely because the BPC
        authenticated correctly. It independently reconstructs the pending U-CAD and
        recomputes the expected binding from actual local command and actuator state.</t>
        <sourcecode type="pseudocode"><![CDATA[
PROCEDURE PED_FINALIZE_BPC(pending_act, bpc, sink):
  ASSERT sink.enable == DISABLED

  IF NOT BPC_COMPLETE_AND_AUTHENTIC(bpc):
      RETURN SAFE_DENY("BPC_INCOMPLETE_OR_INVALID")

  U_actual := RECONSTRUCT_UCAD(pending_act, sink)
  IF U_actual IS NULL:
      RETURN SAFE_DENY("BPC_ACT_RECONSTRUCT_FAILED")

  AAO_current := RESOLVE_BPC_AUTHORITY(bpc)
  IF AAO_current == UNKNOWN:
      RETURN SAFE_DENY("BPC_AUTHORITY_UNKNOWN")

  C_current := SNAPSHOT_TRUSTED_CONTEXT()
  D_A := SHA256("UAS-BPC-ACT" || DET_CBOR(U_actual))
  D_C := SHA256("UAS-BPC-CTX" || DET_CBOR(SELECT_BOUND_CONTEXT(C_current)))

  B_actual := HMAC_SHA256(K_bind,
                "UAS-BPC-BIND" || D_A || sink.id ||
                bpc.authority_ref || bpc.g_air || bpc.g_rev || bpc.g_pol ||
                D_C || bpc.freshness || bpc.expiry)

  IF TRUNC(B_actual, bpc.binding_bits) != bpc.binding_commitment:
      RETURN SAFE_DENY("BPC_BINDING_MISMATCH")

  BEGIN ATOMIC
    G := READ_CURRENT_GENERATIONS()
    IF NOT BPC_GENERATIONS_CURRENT_OR_PERMITTED(bpc, G, U_actual):
        ABORT SAFE_DENY("BPC_GENERATION_STALE")
    IF NOT CONSUME_BPC_FRESHNESS(bpc):
        ABORT SAFE_DENY("BPC_REPLAY")
    R := MAKE_RECEIPT(ALLOW, HASH(U_actual), HASH(bpc),
                      CTX_DIGEST(C_current), n := counter + 1, prev := r_last)
    COMMIT(R)
  END ATOMIC

  IF COMMIT_STORE_UNAVAILABLE:
      RETURN SAFE_DENY("BPC_RECEIPT_STORE_UNAVAILABLE")

  RELEASE(sink, SCOPED_ENABLEMENT(U_actual, AAO_current, bpc.expiry))
  EMIT_ACT_EVIDENCE(R)     # optional evidence output; never authority input
  RETURN ALLOW
]]></sourcecode>
      </section>

      <section anchor="bpc-separation">
        <name>Separation of Execution Proof and Observer Evidence</name>
        <t>The BPC and AER mechanisms serve opposite directions of trust. A BPC is
        consumed before effectuation to help determine whether the exact impending act
        may become effective. An AER is emitted only after the PED has committed an allow,
        deny, or safe-state receipt and is later verified by Observers. Accordingly:</t>
        <artwork><![CDATA[
  AcceptAsAuthority(x) => x NOT IN {Receipt, AER, KDR, Anchor}
  TreatAsObserverEvidence(BPC) => FALSE unless separately profiled as evidence
]]></artwork>
        <t>This role separation is load-bearing. Replaying a valid AER, KDR, Anchor, or
        Finality Receipt at a sink cannot create execution authority, and possession of a
        BPC cannot be used to claim that the corresponding physical act actually occurred.</t>
      </section>
    </section>

    <section anchor="sink">
      <name>Finality Sink Processing</name>
      <t>The following non-normative pseudocode shows the processing order. The order is
      normative: static verification, then reading current state and consuming inside
      one atomic section, then committing the receipt, then releasing.</t>

      <section anchor="sink-core-math">
        <name>Core Finality Predicate and Atomic Ordering</name>
        <t>A representative conjunction for the BPC path is:</t>
        <artwork><![CDATA[
  ALLOW =
      AuthValid
   AND ActMatch
   AND SinkMatch
   AND Fresh
   AND NotReplayed
   AND PolicyCurrent
   AND RevocationCurrent
   AND ContextMatch
   AND BeaconAuthentic
   AND EvidenceComplete
]]></artwork>
        <t>Additional act-class predicates may strengthen this conjunction. No omitted
        predicate is implied to be optional where another section requires it.</t>

        <t>The replay and receipt state transitions precede capability release:</t>
        <artwork><![CDATA[
  Consumed(N) = TRUE  =>  Accept(N) = FALSE

  CapabilityReleased
       => NonceConsumed AND ReceiptCommitted

  ReadCurrentEpochs <= ConsumeNonce <= CommitReceipt(n)
       < ReleaseCapability < Effectuate(A)

  Epoch_presented != Epoch_current(read inside commit)
       => Effectuate(A) = FALSE
          unless an explicitly defined compatibility rule applies
]]></artwork>
        <t>Within the ordering artwork, <tt>X &lt; Y</tt> means that X strictly completes
        before Y may occur, while <tt>X &lt;= Y</tt> means that X occurs no later than Y and
        may be ordered within the same protected atomic transaction. These symbols express
        required happens-before relationships rather than wall-clock duration. Current
        policy and revocation state used for the deciding result are read inside the
        protected commit, not only during an earlier pre-check.</t>

        <t>Where the verifying PED and physical actuator boundary are separate, successful
        verification may derive a short-lived sink-local capability:</t>
        <artwork><![CDATA[
  E = MAC_KS( B || SinkID || ActuatorEnvelope || Counter )

  Effectuate(A) => Verify_KS(E)
]]></artwork>
        <t>K_S is the protected sink-local capability-authentication key defined in
        <xref target="notation-bpc"/>. E is local bounded execution authority, not a
        transferable bearer token; it is scoped to the verified Binding Commitment, sink,
        actuator envelope, and protected
        counter state.</t>
      </section>

      <section anchor="sink-reference-procedure">
        <name>Reference Finalization Procedure</name>
        <sourcecode type="pseudocode"><![CDATA[
PROCEDURE PED_FINALIZE(pending_act, handle, sink):
  # 0. Default: enablement condition is withheld. Initialize audit fields
  # so any early denial can be recorded without dereferencing unset state.
  ASSERT sink.enable == DISABLED
  U  := NULL
  dU := NULL
  C  := NULL
  raw_handle_digest := HASH_IF_PRESENT(handle)

  # 1. Reconstruct; never trust a caller-supplied digest.
  U := RECONSTRUCT_UCAD(pending_act, sink)
  IF U IS NULL: DENY(RECONSTRUCT_FAILED)
  dU := SHA256(DET_CBOR(U))

  # 2. Static verification (no mutable state read).
  IF NOT VERIFY_COSE(handle, issuer_keys): DENY(SIG_INVALID)
  IF handle.act_digest != dU:              DENY(ACT_MISMATCH)
  IF handle.sink_id    != sink.id:         DENY(SINK_MISMATCH)
  IF handle.ua_det     != SELF.det:        DENY(UA_MISMATCH)
  IF U.act_class NOT IN AAO(handle).act_classes:
                                          DENY(CLASS_NOT_PERMITTED)

  # 3. Live context from trusted sources inside the PED.
  C := SNAPSHOT_TRUSTED_CONTEXT()     # GNSS/RTK, VIO, IMU, baro,
                                      # time, battery, ESC telemetry
  IF NOT POSITION_CONSISTENT(C):     SELECT_SAFE(LOC_CONFIDENCE_LOW)
  IF NOT PREDICATES_HOLD(U, AAO(handle), C): DENY(PREDICATE_FAILED)

  # 4. Atomic section: currentness + consume + receipt commit.
  BEGIN ATOMIC
    G := READ_CURRENT_GENERATIONS()   # g_air, g_rev, g_pol
    IF handle.g_rev < G.g_rev AND REVOKES(G, handle):
                                                  ABORT DENY(EF-062)
    IF handle.g_air < G.g_air AND AFFECTS(G.airspace_delta, U):
                                                  ABORT DENY(EF-061)
    IF handle.g_air < G.g_air AND NOT AFFECTS(G.airspace_delta, U):
        NOTE(GEN_ADVANCED_NOT_AFFECTING)  # only if AAO permits
    IF NOT CONSUME(handle, U, reuse_policy): ABORT DENY(CONSUMED)
    R := MAKE_RECEIPT(ALLOW, dU, raw_handle_digest,
                      CTX_DIGEST_IF_PRESENT(C),
                      n := counter + 1, prev := r_last)
    COMMIT(R)                         # crash-consistent, monotonic
  END ATOMIC
  IF COMMIT_STORE_UNAVAILABLE: DENY(EF-081)        # fail closed

  # 5. Release only after receipt commit.
  RELEASE(sink, SCOPED_ENABLEMENT(U, handle, t_expiry))
  EMIT_ACT_EVIDENCE(R)                # broadcast evidence, optional
  RETURN ALLOW

PROCEDURE DENY(code):
  # dU and C may be NULL for an early parsing or signature failure.
  # The denial receipt records only values already established by the PED.
  R := MAKE_DENY_RECEIPT(code = code,
                         act_digest = dU,
                         raw_handle_digest = raw_handle_digest,
                         ctx_digest = CTX_DIGEST_IF_PRESENT(C),
                         sink_id = sink.id,
                         n = counter + 1,
                         prev = r_last)
  IF COMMIT(R):
      EMIT_ACT_EVIDENCE(R)
  sink.enable := DISABLED             # unchanged
  SELECT_SAFE(MAP_TO_SAFE_STATE(IF_DEFINED(U.act_class), code))
  RETURN DENY
]]></sourcecode>
        <t>A denial <bcp14>MUST NOT</bcp14> cause loss of controlled flight. Denial of a
        payload act keeps the latch locked and continues flight; denial of a sensor act
        removes sensor power while preserving navigation sensors; denial of a volume
        entry holds or reroutes; denial of a kinetic envelope clamps to the last valid
        envelope or begins a controlled descent according to <xref target="safe-states"/>.</t>
      </section>

      <section anchor="hot-path-cost">
        <name>Representative Hot-Path Cost Model</name>
        <t>For a locally cached authority path, a representative verification latency may
        be decomposed as:</t>
        <artwork><![CDATA[
  T_verify =
      T_parse
    + T_lookup
    + T_MAC
    + T_hash
    + T_replay
    + T_receipt
    + T_compare
]]></artwork>
        <t>This is an implementation cost model, not a mandated latency target. It makes
        explicit why certificate-chain validation, resolver synchronization, and complex
        policy parsing are preferably cold-path operations while the actuation hot path
        uses bounded local checks.</t>
      </section>

      <section anchor="envelope">
        <name>Envelope Handles for High-Rate Streams</name>
        <t>Motor setpoints are issued at hundreds of hertz; per-setpoint handles are
        neither necessary nor practical. An Envelope Handle authorizes the set</t>
        <artwork><![CDATA[
  E = { u : |v(u)| <= v_max, |a(u)| <= a_max, h_min <= h(u) <= h_max,
            p(u) in Corridor_k }      over window W = [t_s, t_e]
]]></artwork>
        <t>and every setpoint u_j at time t_j is admitted by the sink-side comparator if
        and only if u_j is in E and t_j is in W and the aggregate ceiling is not
        exceeded, for example cumulative distance D_j = sum over i &lt;= j of
        |p_i - p_(i-1)| &lt;= D_max. This check is a set of range comparisons that can be
        implemented in FPGA logic or a secure microcontroller within one control period.
        Leaving E, leaving W, or exceeding the ceiling ends the envelope; further motion
        requires a new handle or a safe state. Identical repeats of a SINGLE_USE handle
        <bcp14>MUST</bcp14> be refused.</t>
      </section>
    </section>

    <section anchor="math">
      <name>Live-Context Predicates and Mathematics</name>
      <t>This section states predicates and conservative scheduling relationships used by
      the PED. They are protocol-policy inputs, not airworthiness or certification
      formulas. Notation: p(t) is the UA position in a local East-North-Up frame derived
      from trusted sources; Corridor_k is the permitted volume for segment k; d(t) is the
      signed horizontal-or-vertical distance from p(t) to the nearest boundary of
      Corridor_k (positive inside); v_max is the envelope speed bound; a_brk is a
      conservative guaranteed deceleration value established for the applicable
      airframe/state by protected configuration or attested safety data; tau is a
      conservative upper bound on sensing, PED, controller, and actuator reaction delay;
      and eps_pos is the position uncertainty bound.</t>

      <section anchor="containment">
        <name>Corridor Containment and Envelope Predicates</name>
        <artwork><![CDATA[
 P_corr(t)  :=  p(t) in Corridor_k  AND  h_min <= h(t) <= h_max
 P_time(t)  :=  t_start <= t <= t_end
 P_vel(t)   :=  |v(t)| <= v_max  AND  |a(t)| <= a_max
 P_gen      :=  g_air(handle) = g_air*  OR
                (g_air(handle) < g_air* AND delta(g_air*) does not
                 intersect Corridor_k over [t, t_end])
 P_rev      :=  NOT revoked(handle, g_rev*)
 P_payload  :=  p(t) in DropZone  AND  h(t) <= h_drop_max
                AND |v(t)| <= v_drop_max AND tilt(t) <= tilt_max
 P_sensor   :=  footprint(p(t), attitude, fov) subset of PermittedArea
                AND res_class <= res_permitted
]]></artwork>
        <t>Starred quantities are read inside the atomic section of
        <xref target="sink"/>. P_sensor uses the projected sensor footprint rather than
        aircraft position, because a camera outside a protected area can still image
        inside it.</t>
      </section>

      <section anchor="reval-bound">
        <name>Boundary-Proximity Revalidation Bound</name>
        <t>Envelope authority is revalidated at an interval Delta_r. Between two
        revalidations the aircraft can move at most v_max * Delta_r, and after a failed
        revalidation it needs a stopping distance</t>
        <artwork><![CDATA[
   s_stop(v_max) = v_max * tau + v_max^2 / (2 * a_brk)
]]></artwork>
        <t>For the aircraft never to leave Corridor_k undetected, the following
        condition is sufficient:</t>
        <artwork><![CDATA[
   v_max * Delta_r + s_stop(v_max) + eps_pos  <=  d(t)

   =>  Delta_r(t)  <=  ( d(t) - eps_pos - s_stop(v_max) ) / v_max
]]></artwork>
        <t>When this scheduling profile is selected, the PED <bcp14>MUST</bcp14> use
        conservative, protected values for a_brk, tau, and eps_pos and schedule the next
        revalidation no later than the resulting Delta_r(t). A deployment <bcp14>MUST</bcp14>
        substitute a more conservative certified or safety-engineered stopping model where
        the point-mass expression is not adequate. If the right-hand side is less than or
        equal to zero, the PED <bcp14>MUST NOT</bcp14> release further outward motion and
        <bcp14>MUST</bcp14> either reduce v_max or select a safe state. The revalidation
        rate therefore rises near boundaries and may fall in the interior. Worked example: d = 60 m, eps_pos = 5 m, v_max = 15 m/s,
        a_brk = 5 m/s^2, tau = 0.1 s gives s_stop = 1.5 + 22.5 = 24 m and
        Delta_r &lt;= (60 - 5 - 24) / 15 = 2.07 s; at d = 30 m the bound is 0.07 s and the
        PED instead lowers v_max to 8 m/s, giving s_stop = 7.2 m and
        Delta_r &lt;= 2.23 s.</t>
        <t>Revalidation is also triggered by events, independent of Delta_r: arrival of a
        new generation, waypoint transition, altitude-band change, payload-state change,
        RF-mode change, sensor disagreement, and battery or thermal threshold
        crossings.</t>
      </section>

      <section anchor="consistency">
        <name>Multi-Source Position Consistency</name>
        <t>Given m independent position sources with estimates p_i and stated one-sigma
        uncertainties sigma_i, the PED computes the fused estimate p_hat and requires</t>
        <artwork><![CDATA[
   for all i, j :   |p_i - p_j|  <=  k * (sigma_i + sigma_j)
   eps_pos      :=  k * max_i sigma_i
   count of agreeing sources  >=  q_min     (q_min >= 2 RECOMMENDED)
]]></artwork>
        <t>with k a positive profile-selected uncertainty multiplier (for example 3),
        q_min the minimum number of sufficiently independent or partially independent
        sources that must agree, and |.| denoting the profile's applicable spatial-distance
        norm. Disagreement is treated as insufficient location confidence: no envelope expansion, no volume entry, no
        payload release, no sensor activation over area-scoped permissions. A single
        spoofed GNSS source that diverges from visual-inertial odometry or barometric
        altitude beyond the bound therefore removes authority rather than steering
        it.</t>
      </section>

      <section anchor="ordering">
        <name>Ordering and Residual-Risk Decomposition</name>
        <t>For every allowed act the following ordering holds:</t>
        <artwork><![CDATA[
   t_verify_static  <  t_read_current  <=  t_consume  <=  t_commit(R)
                    <  t_release       <   t_effect
]]></artwork>
        <t>The remaining risk is usefully decomposed, but this document does not assign a
        single numerical probability bound to the complete cyber-physical system. Relevant
        contributors include cryptographic collision or forgery risk (eps_hash,
        eps_sig), protected-state or crash-consistency failure (eps_store), an unmodelled
        or bypassing consequence path (eps_path), and trusted-context failure within the
        accepted tolerance (eps_ctx):</t>
        <artwork><![CDATA[
   residual_risk := {
       eps_hash, eps_sig, eps_store, eps_path, eps_ctx
   }
]]></artwork>
        <t>The cryptographic terms may be made negligible under their stated assumptions;
        eps_path and eps_ctx are engineering and assurance quantities, not cryptographic
        constants. In particular, eps_ctx depends on sensor independence, q_min, stated
        uncertainty, environmental conditions, and the applicable threat model. The
        decomposition is intended to expose these assumptions rather than to present an
        airworthiness or certification probability.</t>
      </section>
    </section>

    <section anchor="generations">
      <name>Mid-Flight Generation Changes</name>
      <t>A new airspace generation g_air' (for example activation of a temporary
      restriction) can arrive through Network RID services, a USS or USSP, or a
      data link. On receipt, the PED verifies its signature and monotonicity
      (g_air' &gt; g_air*), atomically updates g_air*, and evaluates the delta against
      every outstanding handle:</t>
      <sourcecode type="pseudocode"><![CDATA[
ON NEW_GENERATION(update):
  IF NOT VERIFY(update) OR update.g <= g_air*: IGNORE_AND_LOG
  BEGIN ATOMIC
    g_air* := update.g
    FOR h IN OUTSTANDING_HANDLES():
      IF INTERSECTS(update.delta, h.corridor, [now, h.t_end]):
        INVALIDATE(h)                       # future consume fails
        IF h.reuse == ENVELOPE AND h.active:
          END_ENVELOPE(h)            # stops admitting setpoints
          SELECT_SAFE(REROUTE_OR_HOLD)
  END ATOMIC
  REQUEST_NEW_AAO_IF_LINK_AVAILABLE()
]]></sourcecode>
      <t>A UA that has not received a generation cannot enforce it. This is why the
      offline bound of <xref target="offline"/> exists and why AAOs carry g_air_min: an
      authority can refuse to issue handles to an aircraft whose last acknowledged
      generation is stale.</t>
    </section>

    <section anchor="offline">
      <name>Degraded Link and Bounded Offline Operation</name>
      <t>At link loss time t_L the PED enters offline mode. In offline mode it
      <bcp14>MAY</bcp14> continue to honour handles that were already issued, only for
      act classes listed in the AAO's "offline.classes", and only until</t>
      <artwork><![CDATA[
   t_off_end = min( t_L + T_off_max ,  h.t_end  for each handle h )
]]></artwork>
      <t>after which only S_safe is permitted. New handles <bcp14>MUST NOT</bcp14> be
      created offline for SINGLE_USE classes other than those listed. PAYLOAD_RELEASE and
      SENSOR_ACTIVATE <bcp14>SHOULD NOT</bcp14> be listed as offline classes. Receipts
      are appended to a sealed local buffer protected by the monotonic counter and are
      reconciled when the link returns.</t>
      <t>The residual exposure to a revocation or restriction issued after t_L is
      therefore bounded and computable:</t>
      <artwork><![CDATA[
   T_exposure  <=  T_off_max
   D_exposure  <=  v_max * T_off_max   (inside last released envelope)
]]></artwork>
      <t>Operators and authorities can choose T_off_max per operation class. This
      converts "the aircraft kept flying on cached authority" into a stated, auditable
      bound.</t>
    </section>

    <section anchor="safe-states">
      <name>Fail-Closed Safe States</name>
      <table anchor="tab-safe">
        <name>Denial causes and default safe-state selection</name>
        <thead><tr><th>Condition</th><th>Kinetic effect</th><th>Other subsystems</th></tr></thead>
        <tbody>
          <tr><td>Volume entry denied / generation affects corridor</td><td>Hold (multirotor hover, fixed-wing loiter) or reroute inside last valid corridor</td><td>Unchanged</td></tr>
          <tr><td>Payload predicate fails</td><td>Continue flight</td><td>Latch locked, solenoid unpowered</td></tr>
          <tr><td>Sensor predicate fails</td><td>Continue flight</td><td>Camera power removed; navigation sensors kept</td></tr>
          <tr><td>RF predicate fails</td><td>Continue flight</td><td>Payload radio silent; command-and-control and RID links kept</td></tr>
          <tr><td>Location confidence low</td><td>Hold, then controlled descent if not recovered in T_loc</td><td>Payload locked, area-scoped sensors off</td></tr>
          <tr><td>Envelope exceeded</td><td>Clamp to envelope, or controlled landing if clamping is unsafe</td><td>Unchanged</td></tr>
          <tr><td>Offline window expired</td><td>Return-to-home or land at nearest pre-approved site</td><td>Payload locked</td></tr>
          <tr><td>Consume or receipt store unavailable (EF-081)</td><td>Hold, then land</td><td>All non-safety sinks disabled</td></tr>
        </tbody>
      </table>
      <t>S_safe is fixed in PED firmware or FPGA logic and is part of the attested
      measurement. It cannot be widened by the mission computer. Safe-state manoeuvres
      use the flight controller's existing stabilization and landing logic.</t>
      <artwork><![CDATA[
  a IN S_safe
       => Available(a) regardless of Verify(BPC)
]]></artwork>
      <t>The invariant applies only to the pre-authorized stabilizing or risk-reducing
      action set; failure of ordinary authorization therefore does not itself remove the
      protected means to maintain or reach a safe state.</t>
    </section>

    <section anchor="anti-coercion">
      <name>Commands from Authenticated Sources</name>
      <t>A command from a ground station, fleet service, or remote pilot that is
      correctly signed is treated as a Candidate Act, not as authority. The PED evaluates
      it against the same predicates. A validly signed command to enter a restricted
      volume, release a payload outside a drop zone, exceed an envelope, activate a
      sensor over a protected area, disable RID, or join an unauthorized coordinated act
      is denied. For act classes that the AAO marks with a quorum, the handle
      <bcp14>MUST</bcp14> carry the required COSE_Sign signatures (for example remote
      pilot plus fleet safety authority plus payload authority).</t>
      <artwork><![CDATA[
  Q = { A_1, A_2, ... , A_n }

  QuorumValid(Q, k) <=>
      | { A_i : Verify(A_i) = TRUE } | >= k
]]></artwork>
      <t>The threshold result is still only one input to finality: the exact act, sink,
      freshness, current epochs, and live context remain independently verified.</t>
    </section>

    <section anchor="composite">
      <name>Multi-Aircraft Coordinated Acts</name>
      <t>A coordinated act across N aircraft (formation change, synchronized handoff of
      an inspection segment, simultaneous corridor swap) follows
      <xref target="DAS-COMPOSITE"/> with the ALL_REQUIRED join rule and the following
      UAS-specific constraints.</t>
      <ol spacing="normal">
        <li>Prepare never moves an aircraft. Prepare reserves consume state for the
        child handle and verifies predicates for the post-act envelope; the current
        envelope stays in force.</li>
        <li>Each child PED releases its new envelope only after reading COMMIT for the
        composite identifier from the composite decision log.</li>
        <li>HOLD is a physical holding manoeuvre within the current envelope, not an
        idle software state. A fixed-wing child holds by loitering inside its current
        corridor.</li>
        <li>If the decision log is reachable and empty when a child's reserve expires,
        the child writes ABORT by compare-and-swap (first writer wins). If the log is
        unreachable, the child holds (EF-048) and never commits on silence.</li>
        <li>Compensation (for example returning to the original formation) is a new
        Candidate Act with new handles, never a reuse of consumed ones.</li>
      </ol>
      <figure anchor="fig-composite">
        <name>Composite states for a coordinated act</name>
        <artwork type="ascii-art"><![CDATA[
 NON_EFFECTIVE --all prepared--> PREPARED --log COMMIT--> EFFECTUATED
      |                             |    \
      | any prepare fails           |     \--log unreachable--> HOLD
      v                             v                             |
   ABORTED <-- CAS ABORT on reserve expiry (log reachable) <------+
                                                  (log returns)
]]></artwork>
      </figure>
      <t>Each participating unit also derives its own act/sink/context binding. One
      representative per-unit construction is:</t>
      <artwork><![CDATA[
  B_i = HMAC_(K_bind,i)(
          D_A || Sink_i || Context_i || N_i )
]]></artwork>
      <t>A common high-level coordinated proposal therefore does not create transferable
      authority between units; a proof valid for unit i does not automatically authorize
      unit j.</t>

      <t>For the informative autonomous-road-vehicle application, a cooperative manoeuvre
      negotiated between vehicles or roadside infrastructure may use a more specific
      participant binding:</t>
      <artwork><![CDATA[
  B_v = HMAC_(K_bind,v)(
          D_M
       || Sink_v
       || TrajDigest_v
       || LaneGroup
       || SpeedBand
       || TimeSlot
       || E_P
       || E_R
       || N_v )
]]></artwork>
      <t>D_M is the digest of the agreed manoeuvre and TrajDigest_v is the trajectory
      envelope assigned to vehicle v. The vehicle motion-admission sink reconstructs the
      trajectory actually produced by its planner and admits it only on match. For an
      all-required cooperative manoeuvre, the protected HOLD state is the current
      lane-and-speed envelope or another profile-defined minimal-risk state.</t>

      <t>No-split property: because every child release requires reading the same
      committed log entry, and the log accepts exactly one of COMMIT or ABORT per
      composite identifier, no execution exists in which one child effectuates under
      COMMIT while another effectuates under ABORT. Liveness depends on log
      reachability; safety does not.</t>
    </section>

    <section anchor="daa-finality">
      <name>Conflict-Set-Bound Detect-and-Avoid Maneuver Finality</name>

      <section anchor="daa-problem">
        <name>Technical Problem</name>
        <t>A DAA system can correctly identify an intruder and compute a valid resolution
        maneuver at an initial time, while the traffic picture changes before that
        maneuver reaches the motion-admission boundary. A second intruder can become
        relevant, a track can move or be reclassified, uncertainty can expand, a
        surveillance source can become stale, ownship state can diverge, or another DAA
        source can supersede the earlier resolution. Authentication of the original DAA
        output proves neither that its safety basis is still current nor that the
        trajectory actually presented to the flight controller is the trajectory that was
        evaluated.</t>

        <t>The profile therefore does not reduce DAA finality to "check for collisions
        before moving". It binds the accepted resolution to the complete policy-relevant
        Conflict Set, ownship state, Resolution Epoch, motion sink, and validity horizon
        on which the resolution was computed. Immediately before motion admission, the
        protected domain reconstructs the current Conflict Set and the actual impending
        motion and refuses effectuation if the accepted safety basis is no longer
        equivalent.</t>
      </section>

      <section anchor="daa-arch">
        <name>Architecture and Protected State</name>
        <figure anchor="fig-daa-finality">
          <name>Conflict-set-bound DAA finality</name>
          <artwork type="ascii-art"><![CDATA[
 +--------------------+       +--------------------+
 | Traffic sources    |       | Protected ownship |
 | cooperative /      |       | GNSS / IMU / VIO  |
 | non-cooperative    |       | time / flight state|
 +---------+----------+       +---------+----------+
           \                            /
            \                          /
             v                        v
          +------------------------------+
          | DAA computation engine       |
          | proposes resolution M        |
          +--------------+---------------+
                         | Candidate M
                         v
          +------------------------------+
          | Protected DAA Finality Domain|
          | ConflictSetRoot | ResEpoch   |
          | current-set revalidation     |
          +-----------+------------------+
                      | scoped motion capability
                      v
          +------------------------------+
          | Motion-admission Finality Sink|
          | reconstruct actual trajectory |
          +-----------+------------------+
                      | match + current safety
                      v
                 Flight controller
                      |
            deny ---->+----> Safe-Action Set
]]></artwork>
        </figure>

        <t>The DAA engine may remain ordinary or high-performance software. It computes
        proposed resolutions but does not itself hold the final actuator authority. The
        protected DAA Finality Domain maintains at least the canonical Conflict Set or an
        authenticated membership representation, its Conflict-Set Root, protected ownship
        state, source-health and freshness state, the current Resolution Epoch, nonces or
        sequence state, and the receipt state used by the motion-admission sink.</t>

        <t>For each policy-relevant intruder j, a canonical descriptor may include track
        reference, source class, cooperative or non-cooperative class, relative position,
        relative velocity, acceleration estimate where used, covariance or bounded
        uncertainty, freshness, closest-point-of-approach quantities, track confidence,
        provenance reference, and an encounter or right-of-way class. Descriptors are
        deterministically sorted before the Conflict-Set Root is computed.</t>
      </section>

      <section anchor="daa-math">
        <name>Conflict-Set and Safety Mathematics</name>
        <artwork><![CDATA[
  C_root = H( CanonicalSort(I_1 || I_2 || ... || I_n) )
]]></artwork>

        <t>A DAA Resolution Descriptor binds at least C_root, an ownship-state
        commitment, the proposed maneuver or trajectory-tube digest, the Resolution
        Epoch, the motion-admission sink, a validity horizon, the applicable safety
        profile, sensor-source epochs, policy and revocation state, freshness, and a
        nonce.</t>

        <t>One non-limiting constant-velocity safety check for intruder j is:</t>
        <artwork><![CDATA[
  t_CPA,j = clamp( -(r_j . v_j) / ||v_j||^2, 0, T )

  d_CPA,j = || r_j + v_j * t_CPA,j ||

  m_j(M) = d_CPA,j(M) - (D_req,j + epsilon_j)

  MultiIntruderSafe(M) <=> min_j m_j(M) >= 0
]]></artwork>

        <t>r_j and v_j are relative position and velocity, T is the prediction horizon,
        D_req,j is the required separation for the encounter class, and epsilon_j is a
        conservative margin for surveillance uncertainty, state-estimation error, latency,
        and applicable model error. This document does not require constant-velocity CPA;
        a certified DAA algorithm, reachable-set method, probabilistic conflict model,
        velocity-obstacle method, well-clear logic, or another deterministic safety
        predicate may replace it.</t>

        <t>The load-bearing requirement is multi-intruder atomicity: a maneuver accepted
        to resolve one conflict does not obtain authority if it creates or leaves an
        unacceptable conflict with another policy-relevant track.</t>

        <section anchor="daa-equivalence">
          <name>Current Conflict-Set Equivalence</name>
          <artwork><![CDATA[
  Eq(C_auth, C_now) =
       SameRelevantMembers
    AND FreshEnough
    AND DeltaUncertainty <= U_max
    AND NoNewHigherRiskTrack
]]></artwork>
          <t>Exact set equality is the strongest profile, but an implementation may define
          a deterministic equivalence predicate that admits bounded changes proven not to
          invalidate the resolution. A newly relevant intruder, a removed track without a
          trusted termination reason, stale source state, material uncertainty expansion,
          or a changed encounter class <bcp14>SHOULD</bcp14> force recomputation unless
          the selected profile defines and verifies a safe equivalence rule.</t>
        </section>

        <section anchor="daa-epoch">
          <name>Resolution Epoch and Competing DAA Sources</name>
          <t>When airborne DAA, ground-based DAA, UTM conflict services, autopilot obstacle
          avoidance, or a remote pilot can each propose a resolution, the protected domain
          maintains a monotonic Resolution Epoch. Superseding the accepted resolution
          increments the epoch and invalidates all ordinary motion capabilities bound to
          the prior epoch.</t>
          <artwork><![CDATA[
  Accept(M) =>
      M.resolution_epoch == CurrentResolutionEpoch
]]></artwork>
          <t>This prevents two individually authenticated or individually valid DAA outputs
          from simultaneously steering the aircraft under different traffic snapshots.</t>
        </section>
      </section>

      <section anchor="daa-workflow">
        <name>DAA Finality Workflow</name>
        <ol spacing="normal">
          <li>Acquire protected ownship state and cooperative and non-cooperative traffic
          state, including source provenance, freshness, uncertainty, and source health.</li>
          <li>Classify policy-relevant tracks for the applicable horizon, canonicalize
          their descriptors, and compute the Conflict-Set Root.</li>
          <li>Allow the DAA engine to compute candidate resolutions, but keep each
          resolution non-effective.</li>
          <li>Bind the selected resolution to the Conflict-Set Root, ownship state,
          Resolution Epoch, motion sink, trajectory digest, safety profile, horizon,
          freshness, and current authority state.</li>
          <li>Evaluate the selected maneuver against every relevant intruder and create a
          prepared finality record if the selected safety predicate succeeds.</li>
          <li>Immediately before motion admission, rebuild the current policy-relevant
          Conflict Set and current ownship state from protected sources.</li>
          <li>Reject or recompute if the Resolution Epoch changed, the Conflict Set is not
          equivalent, required source state is stale, or any current safety margin fails.</li>
          <li>Atomically commit the finality record and release a trajectory-envelope
          capability bound to the current Resolution Epoch and motion-admission sink.</li>
          <li>The sink reconstructs the actual trajectory envelope presented by the
          planner and admits it only when it matches the authorized envelope and the
          epoch is still current.</li>
          <li>Any later conflict-set change, source-health failure, policy change, epoch
          advance, or expiry invalidates the outstanding motion capability and leaves the
          Safe-State Set available.</li>
        </ol>
      </section>

      <section anchor="daa-pseudocode">
        <name>DAA Finality Pseudocode</name>
        <sourcecode type="pseudocode"><![CDATA[
PROCEDURE FINALIZE_DAA_RESOLUTION(candidate_M, descriptor, sink):
  ASSERT sink.motion_expansion == DISABLED

  own_auth := READ_PROTECTED_OWNSHIP()
  C_auth   := LOAD_CONFLICT_SET(descriptor.conflict_root)

  REQUIRE descriptor.resolution_epoch == CURRENT_RESOLUTION_EPOCH()
  REQUIRE FRESH(own_auth)
  REQUIRE REQUIRED_TRACKS_FRESH(C_auth)
  REQUIRE HASH(candidate_M) == descriptor.maneuver_digest
  REQUIRE sink.id == descriptor.sink_id

  FOR EACH intruder j IN C_auth:
      REQUIRE SAFETY_MARGIN(candidate_M, own_auth, j) >= 0

  PREPARE_DAA_FINALITY(descriptor)

  BEGIN ATOMIC
    own_now := READ_PROTECTED_OWNSHIP()
    C_now   := BUILD_CURRENT_RELEVANT_CONFLICT_SET()
    epoch   := CURRENT_RESOLUTION_EPOCH()

    IF epoch != descriptor.resolution_epoch:
        ABORT RECOMPUTE("RESOLUTION_EPOCH_CHANGED")

    IF NOT CONFLICT_EQUIVALENT(C_auth, C_now):
        ABORT RECOMPUTE("CONFLICT_SET_CHANGED")

    FOR EACH intruder j IN C_now:
        IF SAFETY_MARGIN(candidate_M, own_now, j) < 0:
            ABORT RECOMPUTE("CURRENT_MARGIN_FAIL")

    R := COMMIT_DAA_RECEIPT(
           descriptor_digest = HASH(descriptor),
           current_conflict_root = ROOT(C_now),
           resolution_epoch = epoch)
  END ATOMIC

  actual_M := RECONSTRUCT_ACTUAL_TRAJECTORY(sink)
  IF NOT MATCHES_AUTHORIZED_MOTION(actual_M, candidate_M):
      RETURN SAFE_DENY("DAA_TRAJECTORY_SUBSTITUTION")

  RELEASE(sink,
          MOTION_CAPABILITY(HASH(actual_M), epoch, HASH(R)))
  RETURN ALLOW
]]></sourcecode>
      </section>
    </section>

    <section anchor="emergency-scene">
      <name>Emergency-Scene Temporary Authority Finality</name>

      <section anchor="emergency-problem">
        <name>Technical Problem</name>
        <t>This subsection is an informative cross-domain application to autonomous road
        vehicles. At an emergency scene, a police officer, firefighter, road worker, or
        other authorized responder may legitimately request a vehicle to perform a motion
        that ordinary road policy would reject: cross a lane marking, reverse, stop in an
        unusual position, enter a temporarily restricted lane, or follow a temporary path
        around an incident. Simply authenticating the responder does not establish that
        the instruction applies to this vehicle, this incident, this scene, this concrete
        motion, or the present time, and should not create unrestricted remote-driving
        authority.</t>

        <t>The profile therefore creates temporary authority that is incident-bound,
        scene-bound, vehicle-bound, act-bound, sink-bound, time-bounded, independently
        corroborated by local scene evidence, and automatically extinguished when the
        applicable scene condition ends.</t>
      </section>

      <section anchor="emergency-arch">
        <name>Emergency Scene Authority Capsule</name>
        <figure anchor="fig-emergency-scene">
          <name>Scene-bound temporary motion authority</name>
          <artwork type="ascii-art"><![CDATA[
 +----------------------+       +----------------------+
 | Responder / incident |       | Vehicle-local scene  |
 | authority service    |       | perception / sensors |
 +----------+-----------+       +----------+-----------+
            | ESAC                         | corroboration
            v                              v
       +------------------------------------------+
       | Protected Vehicle Finality Domain        |
       | incident | scene | vehicle | exception   |
       | nonce | epochs | expiry | scene digest  |
       +-------------------+----------------------+
                           | temporary capability
                           v
       +------------------------------------------+
       | Motion-admission Finality Sink           |
       | reconstruct actual path and exception    |
       +-------------------+----------------------+
                           |
                           v
                     Vehicle motion

  completion / expiry / scene exit / revocation
                           |
                           +----> invalidate authority
]]></artwork>
        </figure>

        <t>An Emergency Scene Authority Capsule (ESAC) may bind the vehicle identifier,
        responder role and authority reference, incident identifier and incident epoch,
        emergency-scene identifier, scene polygon or scene commitment, instruction class,
        permitted path or trajectory digest, speed and acceleration envelope, explicit
        traffic-rule exception class, start time and expiry, scene-evidence commitment,
        policy and revocation epochs, motion sink identifier, and nonce.</t>

        <t>The responder identity is necessary but not sufficient. The protected vehicle
        domain independently derives local scene state from available protected or
        corroborated sources, for example emergency-vehicle presence, responder presence,
        temporary signs, lane closure, cone geometry, road blockage, fire or smoke scene,
        infrastructure state, or another profile-defined scene signal. Perception output
        alone is evidence and does not directly unlock steering, throttle, or braking
        authority.</t>
      </section>

      <section anchor="emergency-math">
        <name>Scene and Authority Mathematics</name>
        <t>The emergency-scene profile preserves separate mathematical treatment of
        scene commitment, corroboration, temporary-authority validity, geographic scope,
        motion admissibility, and automatic authority extinction. These predicates are
        conjunctive at the finality boundary; responder authentication alone is not
        sufficient.</t>

        <t>A representative scene commitment is:</t>
        <artwork><![CDATA[
  S_scene = H(
      IncidentID             ||
      ScenePolygon           ||
      LocalEvidenceDigest    ||
      TemporaryControlDigest ||
      SceneEpoch )
]]></artwork>

        <t>Local physical corroboration may be represented by q-of-n protected validation
        results. Let v_i be 1 when independent evidence channel e_i satisfies its
        profile-defined validation rule and 0 otherwise:</t>
        <artwork><![CDATA[
  SceneCorroborated <=> sum_i v_i >= q
]]></artwork>
        <t>A profile <bcp14>SHOULD</bcp14> prevent multiple messages or observations
        derived from the same physical source from being counted as independent evidence.
        Higher-consequence exception classes may require both valid responder authority
        and at least one independent local physical confirmation.</t>

        <t>Let E(t) denote whether the temporary emergency authority is effective at time
        t. One representative validity rule is:</t>
        <artwork><![CDATA[
  E(t) =
      CredentialValid
    AND IncidentCurrent
    AND SceneMatch(S_scene)
    AND VehicleMatch
    AND t <= t_exp
    AND NOT Revoked
    AND NOT Consumed
]]></artwork>

        <t>For a location-bounded emergency scene, localization uncertainty may be
        incorporated by dilating the authorized scene polygon by a conservative margin
        delta_loc:</t>
        <artwork><![CDATA[
  position(t) IN Dilate(ScenePolygon, delta_loc)
]]></artwork>

        <t>The Candidate Emergency Maneuver M may become effective only when temporary
        authority remains valid, the requested traffic-rule exception is explicit, the
        actual reconstructed motion lies within the emergency envelope, hard safety
        predicates remain satisfied, and finality-specific sink and epoch checks succeed:</t>
        <artwork><![CDATA[
  Allow(M) =
      E(t)
    AND ExplicitExceptionMatch(M)
    AND M IN EmergencyEnvelope
    AND HardSafety(M, state)
    AND ActualMotionMatch(M)
    AND SinkMatch
    AND PolicyEpochCurrent
    AND RevocationEpochCurrent
    AND Fresh
]]></artwork>

        <t>ActualMotionMatch(M) is evaluated over the motion reconstructed at or adjacent
        to the motion-admission Finality Sink, rather than solely over an upstream
        responder instruction or planner description. SinkMatch requires that the
        temporary authority name the same governed motion-admission sink that would make
        the act effective. PolicyEpochCurrent and RevocationEpochCurrent are evaluated
        against protected current state.</t>

        <t>The temporary exception is narrowly scoped. It authorizes only the concrete
        exception and motion envelope expressed by the ESAC; it does not disable ordinary
        hard safety predicates or create a standing override.</t>

        <artwork><![CDATA[
  completion OR expiry OR scene_exit OR incident_change
  OR revocation OR corroboration_loss OR policy_epoch_change
  OR revocation_epoch_change OR sink_mismatch

                  => TemporaryAuthority := INVALID
]]></artwork>

        <t>Automatic extinction is load-bearing. A cryptographically valid ESAC that is
        replayed outside its incident, scene, vehicle, epoch, path, validity window, or
        named Finality Sink cannot authorize effectuation. Loss of required local
        corroboration also removes the temporary permission expansion while preserving
        the applicable Safe-State Set.</t>
      </section>

      <section anchor="emergency-workflow">
        <name>Emergency-Scene Workflow</name>
        <ol spacing="normal">
          <li>Receive or resolve a responder or incident authority artifact and verify the
          responder role, authority reference, revocation state, incident identifier, and
          incident epoch.</li>
          <li>Construct or receive an ESAC that states the vehicle, scene, permitted
          instruction class, concrete path or envelope, bounded traffic-rule exception,
          sink, expiry, epochs, and nonce.</li>
          <li>Keep the requested exception non-effective while the vehicle derives
          protected local scene state independently of the responder message.</li>
          <li>Verify that local scene evidence sufficiently corroborates the incident and
          scene commitment required by the ESAC.</li>
          <li>Reconstruct the actual planned motion at the motion-admission sink rather
          than trusting an upstream path label.</li>
          <li>Verify that the actual motion is within the emergency envelope, that every
          traffic-rule departure is expressly covered by the exception class, and that
          ordinary hard safety predicates still hold.</li>
          <li>Atomically consume freshness, commit an emergency finality receipt, and
          release a single-use or short-lived motion capability bound to the incident,
          scene epoch, actual motion digest, exception class, and sink.</li>
          <li>At the sink, re-check expiry, incident and scene epoch where applicable,
          and the actual motion before admission.</li>
          <li>On completion, expiry, scene exit, incident closure or change, revocation,
          required-corroboration loss, or policy change, invalidate all temporary scene
          capabilities and restore ordinary road authority.</li>
        </ol>
      </section>

      <section anchor="emergency-pseudocode">
        <name>Emergency-Scene Pseudocode</name>
        <sourcecode type="pseudocode"><![CDATA[
PROCEDURE FINALIZE_EMERGENCY_SCENE_ACT(esac, planned_path, sink):
  BLOCK_TEMPORARY_EXCEPTION_EXPANSION()
  KEEP_SAFE_ACTIONS_AVAILABLE()

  REQUIRE VERIFY_RESPONDER_AUTHORITY(esac.authority_ref)
  REQUIRE INCIDENT_CURRENT(esac.incident_id, esac.incident_epoch)
  REQUIRE VEHICLE_MATCH(esac.vehicle_binding)
  REQUIRE NOT_REVOKED(esac)
  REQUIRE NOW() <= esac.expiry

  local_scene := BUILD_PROTECTED_LOCAL_SCENE_STATE()
  REQUIRE SCENE_MATCH(esac.scene_commitment, local_scene)

  actual_path := RECONSTRUCT_ACTUAL_MOTION(planned_path, sink)
  REQUIRE PATH_WITHIN_EMERGENCY_ENVELOPE(actual_path, esac)
  REQUIRE EXCEPTION_EXPLICITLY_COVERS(esac, actual_path)
  REQUIRE HARD_SAFETY_PREDICATES_PASS(actual_path, local_scene)

  BEGIN ATOMIC
    REQUIRE NONCE_UNUSED(esac.nonce)
    CONSUME(esac.nonce)
    R := COMMIT_EMERGENCY_RECEIPT(
           esac_digest = HASH(esac),
           scene_digest = HASH(local_scene),
           path_digest = HASH(actual_path),
           decision = ALLOW)
  END ATOMIC

  RELEASE(sink,
          TEMP_MOTION_CAPABILITY(
              incident_id = esac.incident_id,
              scene_epoch = esac.scene_epoch,
              path_digest = HASH(actual_path),
              exception_class = esac.exception_class,
              receipt_digest = HASH(R),
              expiry = esac.expiry))
  RETURN ALLOW

ON completion OR expiry OR incident_change OR scene_exit
   OR revocation OR corroboration_loss OR policy_epoch_change:
  INVALIDATE_SCENE_CAPABILITIES()
  RESTORE_ORDINARY_AUTHORITY()
]]></sourcecode>
      </section>
    </section>

    <section anchor="control-handover">
      <name>Atomic Control-Authority Handover and Split-Brain Prevention</name>

      <section anchor="handover-problem">
        <name>Technical Problem</name>
        <t>An autonomous motion platform can have multiple controllers that are each
        individually legitimate: an autonomy stack, remote pilot, remote-assistance
        service, fleet controller, DAA safety controller, local human operator, emergency
        authority, or minimal-risk controller. The critical failure is therefore not only
        an unauthorized controller. Network delay, partial handover, retry, failover,
        duplicated sessions, stale credentials, or recovery can leave two authorized
        controllers believing that each controls the same steering, thrust, braking,
        trajectory-admission, or mode-transition boundary.</t>

        <t>This profile treats control transfer itself as a Candidate Act. Protected state
        records the Current Controller and Control Authority Epoch for each governed sink
        or sink class. PREPARE, COMMIT, and ENABLE semantics change this state
        transactionally, and every ordinary control command is accepted only when its
        controller identity and epoch match current protected authority state.</t>
      </section>

      <section anchor="handover-arch">
        <name>Protected Authority State</name>
        <figure anchor="fig-control-handover">
          <name>Atomic controller handover</name>
          <artwork type="ascii-art"><![CDATA[
 +---------------+            +---------------+
 | Controller A  |            | Controller B  |
 | epoch e       |            | pending e+1   |
 +-------+-------+            +-------+-------+
         \                            /
          \                          /
           v                        v
        +------------------------------+
        | Protected Authority State    |
        | current_controller_id        |
        | authority_epoch              |
        | envelope | handover_state    |
        +--------------+---------------+
                       | current controller + epoch only
                       v
        +------------------------------+
        | Governed Finality Sink       |
        | reject stale controller/epoch|
        +--------------+---------------+
                       v
                   Actuator

   PREPARE(B) -> COMMIT(epoch e+1) -> ENABLE(B)
            partial failure -> Safe-Action Set
]]></artwork>
        </figure>

        <sourcecode type="pseudocode"><![CDATA[
AuthorityState[sink] = {
  current_controller_id,
  authority_epoch,
  permitted_act_classes,
  current_envelope_digest,
  handover_state,
  prepared_new_controller_id,
  prepared_envelope_digest,
  expiry,
  revocation_epoch,
  monotonic_counter,
  prior_receipt_digest
}
]]></sourcecode>

        <t>The state may be maintained per vehicle, actuator class, motion-admission sink,
        or another control domain. Independent non-conflicting sinks may have different
        Current Controllers, but sinks whose simultaneous control can conflict
        <bcp14>MUST</bcp14> enforce exclusivity through the same protected authority state.</t>
      </section>

      <section anchor="handover-math">
        <name>Exclusivity and Acceptance Mathematics</name>
        <t>Let A(c,s,e,t) be 1 when controller c has ordinary effectuation authority over
        sink s in epoch e at time t and 0 otherwise. The exclusivity invariant is:</t>
        <artwork><![CDATA[
  for all s,e,t:

      sum_c A(c,s,e,t) <= 1
]]></artwork>

        <t>A separately defined Safe-State Set does not violate this invariant when it is
        restricted to stabilizing or risk-reducing actions and cannot expand ordinary
        authority.</t>

        <artwork><![CDATA[
  Accept(cmd) =>
       cmd.controller_id == CurrentController[s]
   AND cmd.epoch         == CurrentEpoch[s]
   AND cmd.sink_id       == s
   AND cmd.act           IN CurrentEnvelope[s]
   AND Fresh(cmd)
]]></artwork>

        <t>A credential that remains cryptographically valid after a handover does not
        preserve actuation authority if its controller identifier or epoch is stale.</t>
      </section>

      <section anchor="handover-transaction">
        <name>Transactional Handover</name>
        <t>A preferred handover has three logical phases. PREPARE verifies the proposed
        new controller, its requested sink set, authority basis, freshness, revocation
        state, and requested control envelope while the old controller remains responsible
        for bounded continuity. COMMIT atomically increments the Control Authority Epoch,
        marks the old ordinary-control binding stale, records the new Current Controller
        and envelope, and commits a handover receipt. ENABLE permits the new controller to
        submit ordinary commands under the committed epoch.</t>

        <artwork><![CDATA[
  ACTIVE(A,e)
      |
      v
  PREPARE(B,e+1) --failure--> ACTIVE(A,e) or SAFE
      |
      v
  COMMIT(B,e+1)
      |
      +--> all A/e ordinary commands become stale
      v
  ENABLE(B,e+1)
]]></artwork>

        <t>If the system fails after PREPARE but before COMMIT, the proposed new
        controller has no effectuation authority. If COMMIT occurred but readiness of the
        new controller cannot be established, the system enters a bounded Safe-State Set
        or requires a new handover; it does not resurrect the prior epoch merely because
        an old controller continues transmitting.</t>
      </section>

      <section anchor="handover-workflow">
        <name>Control-Handover Workflow</name>
        <ol spacing="normal">
          <li>Maintain protected per-sink state identifying the Current Controller and
          Control Authority Epoch.</li>
          <li>Receive a handover request naming the proposed new controller, governed sink
          set, act classes, control envelope, duration, authority basis, and reason.</li>
          <li>Authenticate or attest the proposed controller or remote session and check
          role, revocation, and freshness.</li>
          <li>Validate the requested control envelope against current vehicle or aircraft
          state, operational domain, safety limits, and policy.</li>
          <li>Enter PREPARE and persist the proposed controller and envelope without
          granting ordinary effectuation authority.</li>
          <li>Optionally freeze authority expansion by the old controller while preserving
          bounded continuity and the Safe-State Set.</li>
          <li>Confirm readiness of the proposed controller and establish fresh
          proof-of-possession when required.</li>
          <li>Atomically increment the Control Authority Epoch, invalidate the old
          ordinary-control binding, install the new Current Controller and envelope, and
          commit a handover receipt.</li>
          <li>Only after COMMIT issue or enable the new controller capability.</li>
          <li>Every governed sink rejects a command whose controller, epoch, sink, act
          class, envelope, expiry, or freshness state differs from protected authority
          state.</li>
          <li>Queued or precomputed commands from prior epochs are rejected unless they
          are separately reclassified as Safe-State Set actions under current state.</li>
        </ol>
      </section>

      <section anchor="handover-pseudocode">
        <name>Control-Handover Pseudocode</name>
        <sourcecode type="pseudocode"><![CDATA[
PROCEDURE HANDOVER_CONTROL(sink_set, old_id, new_id, request):
  FOR EACH s IN sink_set:
      REQUIRE AuthorityState[s].current_controller_id == old_id

  REQUIRE VERIFY_CONTROLLER(new_id, request.authority)
  REQUIRE NOT_REVOKED(new_id)
  REQUIRE ENVELOPE_SAFE(request.envelope, CURRENT_CONTEXT())

  BEGIN ATOMIC
    FOR EACH s IN sink_set:
        AuthorityState[s].handover_state := PREPARED
        AuthorityState[s].prepared_new_controller_id := new_id
        AuthorityState[s].prepared_envelope_digest :=
            HASH(request.envelope)
  END ATOMIC

  REQUIRE CONTROLLER_READY(new_id, request.fresh_session_proof)

  BEGIN ATOMIC
    FOR EACH s IN sink_set:
        e_new := AuthorityState[s].authority_epoch + 1
        AuthorityState[s].authority_epoch := e_new
        AuthorityState[s].current_controller_id := new_id
        AuthorityState[s].current_envelope_digest :=
            HASH(request.envelope)
        AuthorityState[s].handover_state := COMMITTED
    R := COMMIT_HANDOVER_RECEIPT(sink_set, old_id, new_id, e_new)
  END ATOMIC

  ENABLE_CONTROLLER(new_id, sink_set, e_new, HASH(R))
  RETURN COMMITTED


PROCEDURE ADMIT_CONTROLLER_COMMAND(cmd, sink):
  S := READ_PROTECTED_AUTHORITY_STATE(sink)

  IF cmd.controller_id != S.current_controller_id:
      RETURN SAFE_DENY("STALE_OR_WRONG_CONTROLLER")
  IF cmd.authority_epoch != S.authority_epoch:
      RETURN SAFE_DENY("STALE_AUTHORITY_EPOCH")
  IF cmd.sink_id != sink.id:
      RETURN SAFE_DENY("SINK_MISMATCH")
  IF NOT WITHIN_ENVELOPE(cmd, S.current_envelope_digest):
      RETURN SAFE_DENY("ENVELOPE_MISMATCH")
  IF NOT FRESH_AND_UNUSED(cmd):
      RETURN SAFE_DENY("REPLAY_OR_STALE")

  RETURN ADMIT(cmd)
]]></sourcecode>
      </section>
    </section>

    <section anchor="beacon">
      <name>Compact Broadcast Act Evidence for DRIP</name>

      <section anchor="beacon-problem">
        <name>Technical Problem</name>
        <t>DRIP lets an Observer verify that Broadcast RID messages come from the
        registered owner of a DET, including when the Observer has no Internet access
        <xref target="RFC9575"/>. The Observer still cannot verify whether an act it can
        see was decided by the aircraft's enforcement domain before it became effective.
        Four constraints make a direct approach impractical:</t>
        <ol spacing="normal">
          <li>Size. Broadcast RID messages are 25 octets. A per-act public-key signature
          (64 octets for Ed25519) plus identifiers and timestamps spans several
          Authentication Message pages.</li>
          <li>Loss. Legacy transports lack forward error correction; paged Authentication
          Messages can lose pages, and DRIP FEC recovers only a single lost page
          <xref target="RFC9575"/>.</li>
          <li>Rate and cost. Consequential acts and decisions (envelope renewals, sensor
          toggles, denials) can occur several times per second; public-key signing at that
          rate is a material computational and energy load for small onboard
          controllers.</li>
          <li>Origin. The DET key is often held by the RID module or the flight software.
          Evidence signed with that key shows that the aircraft's software sent it, not
          that the enforcement domain decided it. A compromised mission computer holding
          the RID key could broadcast "authorized" evidence for acts the PED never
          allowed.</li>
        </ol>
        <t>The mechanism below addresses all four: fixed 16-octet records, loss-tolerant
        delayed key disclosure, symmetric per-record authentication, and a protected master
        seed that never leaves the PED.</t>
      </section>

      <section anchor="beacon-design">
        <name>Design</name>
        <t>The design applies the TESLA delayed key disclosure principle
        <xref target="RFC4082"/> to act-decision records. The default profile uses a
        distinct PED evidence-signing key; the aircraft's DRIP/HI identity endorses that
        evidence key once for its validity interval. The mission computer and RID module
        do not hold the undisclosed evidence-chain keys. At the start of an evidence epoch
        the PED generates a random master seed K_seed that is never disclosed, derives the
        terminal chain value K_N from K_seed and epoch_id, and then derives the reverse
        one-way chain down to K_0. K_seed may be erased after K_N and the chain state are
        securely established. Time is divided into intervals of length Delta starting at
        T_0 (GNSS or UTC time). K_0 is a public chain commitment carried in the signed
        Anchor and is never used directly or through F' as an AER tag key. Records emitted
        in zero-based interval i are authenticated with K'_i = F'(K_(i+1)). K_(i+1) is broadcast d
        intervals later. An Observer accepts a record only if it arrived
        before the key for its interval could have been disclosed, and verifies it once
        the key arrives. A signed Anchor and Evidence Key Endorsement bind the chain to
        the PED evidence key and to the UA's DET.</t>

        <figure anchor="fig-chain">
          <name>Evidence key chain and delayed disclosure</name>
          <artwork type="ascii-art"><![CDATA[
 generation (inside PED, once per epoch):
      K_seed --derive with epoch_id--> K_N --F--> ... --F--> K_1 --F--> K_0
      K_seed is never disclosed; K_0 is the public chain commitment.
 use (time runs left to right):

 interval:   |   0   |   1   |   2   |   3   |   4   |   5   | ...
 records:      AER     AER     AER     AER     AER     AER
 tagged with:  K'_0    K'_1    K'_2    K'_3    K'_4    K'_5
 derived from: K_1     K_2     K_3     K_4     K_5     K_6
 disclosed:                            K_1     K_2     K_3     (d = 3)

 Anchor (signed once, repeated):
      {DET, PED key id, T_0, Delta, d, N, K_0, ...}
 A lost disclosure for interval i is recovered from any later interval j:
      K_(i+1) = F^(j-i)(K_(j+1))
]]></artwork>
        </figure>
      </section>

      <section anchor="beacon-endorsement">
        <name>Default Endorsement Path</name>
        <t>The default, and the only path specified as interoperable in this version,
        is:</t>
        <ol spacing="normal">
          <li>The PED generates and seals a distinct evidence-key pair. That key never
          leaves the PED. It is not the DET / Host Identity key.</li>
          <li>The UA Host Identity key (the key corresponding to the DET) signs an
          Evidence Key Endorsement binding ua_det, ped_kid, and ped_pub for a
          validity window. That endorsement is a DRIP-compatible statement of
          "this PED evidence key speaks for this DET".</li>
          <li>The PED signs each epoch Anchor with the evidence key.</li>
        </ol>
        <t>This document does <em>not</em> use "PED holds the DET key" as a default.
        On typical airframes the DET key is in the RID module or flight software,
        which is the component whose compromise this mechanism exists to survive.
        An implementation in which the PED is also the DET key holder is a
        degenerate case of the same endorsement (self-endorsement) and adds no
        Observer-visible format.</t>
      </section>

      <section anchor="beacon-math">
        <name>Construction</name>
        <artwork><![CDATA[
 F(x)   = Trunc_128( SHA-256( "UAS-AFE-chain" || x ) )
 F'(x)  = Trunc_128( SHA-256( "UAS-AFE-tag"   || x ) )

 K_seed <- random 128 bits             (generated inside PED; never disclosed)
 K_N    =  Trunc_128(SHA-256(
              "UAS-AFE-seed" || K_seed || epoch_id))
 K_i    =  F(K_(i+1)),  i = N-1 ... 0
 K_0    =  public chain commitment in the signed Anchor

 I_i    =  [ T_0 + i*Delta ,  T_0 + (i+1)*Delta ), 0 <= i < N
 K'_i   =  F'(K_(i+1))                 (tag key for interval i)
 K_(i+1) is disclosed during I_(i+d)

 hdr    =  first 8 octets of the AER (header, below)
 tag    =  Trunc_64( HMAC-SHA-256( K'_i,
             "UAS-AFE-rec" || ua_det || epoch_id || hdr ) )
 AER    =  hdr || tag                                   (16 octets)
]]></artwork>
        <t>HMAC is as defined in <xref target="RFC2104"/>, SHA-256 as in
        <xref target="RFC6234"/>. Domain-separation strings prevent the master-seed
        derivation, chain function, tag-key derivation, and record MAC from being confused
        with one another or with other protocols. K_seed is not a chain value and is never
        included in an Anchor, KDR, AER, receipt, or ordinary transmitter state. Chain
        values K_1 through K_N may become public only according to the disclosure schedule.</t>
        <t>K_0 is deliberately commitment-only. Because K_0 is public in the Anchor,
        using F'(K_0) as an interval tag key would make the corresponding interval
        forgeable by any Observer. The zero-based AER interval i therefore uses
        K_(i+1), while K_0 remains solely the authenticated chain root.</t>
      </section>

      <section anchor="beacon-formats">
        <name>Record Formats</name>
        <figure anchor="fig-aer">
          <name>Act Evidence Record (AER), 16 octets</name>
          <artwork type="ascii-art"><![CDATA[
  0                   1                   2                   3
  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |Ver|Knd| Act Class |Dec| SinkC |      Interval Index (16 bits) |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                 Receipt Counter n (32 bits)                   |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                                                               |
 +                    Tag (64 bits, truncated HMAC)              +
 |                                                               |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

 Ver   (2)  = 0
 Knd   (2)  = 0 (AER)
 Act Class (6) = Table 2 code; 0x00 = UNSPECIFIED (privacy mode)
 Dec   (2)  = 00 DENY, 01 ALLOW, 10 SAFE_STATE_SELECTED, 11 reserved
 SinkC (4)  = sink class (motor, latch, RF, sensor, mode, RID, ...)
]]></artwork>
        </figure>
        <figure anchor="fig-kdr">
          <name>Key Disclosure Record (KDR), 19 octets</name>
          <artwork type="ascii-art"><![CDATA[
  Octet 0                     Octets 1-2                 Octets 3-18
 +------------------------+--------------------------+------------------+
 |Ver(2)|Knd(2)|Rsvd(4)   | Interval Index (16 bits) | K_(i+1) (128 b) |
 +------------------------+--------------------------+------------------+

 Header = 24 bits (3 octets); disclosed key = 128 bits (16 octets).
 Total = 19 octets.  Knd = 1 (KDR).
]]></artwork>
        </figure>
        <sourcecode type="cddl"><![CDATA[
; Anchor: signed once per epoch by the PED evidence key (COSE_Sign1),
; repeated periodically so late-arriving Observers can verify.
afe-anchor = {
  "ua_det"    : bstr .size 16,
  "epoch_id"  : bstr .size 4,
  "ped_kid"   : bstr .size 8,
  "t0"        : uint,             ; seconds
  "delta_ms"  : uint,             ; interval length
  "d"         : uint,             ; disclosure lag in intervals
  "n_len"     : uint,             ; chain length N
  "k0"        : bstr .size 16,    ; chain commitment K_0
  "n_start"   : uint,             ; first receipt counter in epoch
  ? "aao_hint": bstr .size 8      ; optional, privacy-dependent
}
; Evidence Key Endorsement: binds the distinct PED evidence key to
; the UA DET and is signed by the UA Host Identity / DRIP identity key.
afe-endorsement = { "ua_det": bstr .size 16, "ped_kid": bstr .size 8,
                    "ped_pub": bstr, "valid_to": uint }
]]></sourcecode>
        <t>A 16-octet AER and a 19-octet KDR each fit within the data area of a single
        25-octet Broadcast RID message before transport framing. The first page of an
        F3411 Authentication Message carries additional header fields; exact page
        packing and carriage are left open in this version (see
        <xref target="beacon-carriage"/>).</t>
        <t>The Interval Index is an unsigned 16-bit index within one evidence epoch, not
        a perpetually wrapping global counter. This profile deliberately avoids 16-bit
        wrap ambiguity rather than attempting to infer a wrapped index: an epoch
        <bcp14>MUST</bcp14> contain no more than 60000 intervals and a new Anchor and
        chain <bcp14>MUST</bcp14> begin before index reuse. An Observer
        <bcp14>MUST</bcp14> reject an AER or KDR whose index is greater than or equal to
        the Anchor's n_len. T_0, Delta, d, n_len, and the Observer's receive time provide
        the expected interval; if the received index is not consistent with that expected
        interval within the configured receive-delay and clock-error allowance, the record
        is not eligible for real-time verification. An implementation that permits index
        wrap requires an unambiguous lifting rule and is outside this profile.</t>
      </section>

      <section anchor="beacon-emit">
        <name>Emission Rules</name>
        <sourcecode type="pseudocode"><![CDATA[
PED ON RECEIPT_COMMITTED(R):     # from PED_FINALIZE / DENY
  IF R.act_class NOT IN evidence_classes: RETURN
  i   := INTERVAL_INDEX(now)          # floor((now - T_0) / Delta)
  hdr := PACK(ver=0, kind=0, class=MAYBE_COARSE(R.act_class),
              dec=R.decision, sinkc=R.sink_class,
              idx=i, n=R.counter)
  K_tag_i := F'(K_(i+1))             # K'_i; derived AER key for interval i
  tag := TRUNC64(HMAC_SHA256(K_tag_i,
                 "UAS-AFE-rec" || ua_det || epoch_id || hdr))
  QUEUE_TO_RID_MODULE(hdr || tag, repeats = r_aer)
  RECORD_IN_RECEIPT(R, hdr)      # receipt n carries same header

PED EVERY INTERVAL j >= d:
  q := j - d                       # AER interval whose key becomes public
  QUEUE_TO_RID_MODULE(PACK_KDR(idx = q, key = K_(q+1)),
                      repeats = r_kdr)

PED EVERY T_anchor AND AT EPOCH START:
  QUEUE_TO_RID_MODULE(ANCHOR_SIGNED_ONCE)  # same bytes, no re-sign
]]></sourcecode>
        <t>The RID module forwards queued evidence without the ability to compute tags,
        because it never holds K_(i+1) before disclosure for interval i. Evidence traffic
        <bcp14>MUST NOT</bcp14> displace messages that regulation requires; it is sent
        in remaining capacity. Receipt n in the PED's signed receipt chain
        <bcp14>MUST</bcp14> contain the same 8-octet header, so that broadcast evidence
        and later-audited receipts can be matched one-to-one.</t>
      </section>

      <section anchor="beacon-verify">
        <name>Observer Verification</name>
        <t>Let delta_max be an upper bound on the difference between the Observer clock
        and the time base used for T_0. An Observer with GNSS-derived time can generally
        use a tighter delta_max than an Observer relying only on network time. If only
        NTP, cellular time, or another network-derived clock is available, delta_max
        <bcp14>MUST</bcp14> conservatively bound that source and its uncertainty; otherwise
        the Observer <bcp14>MUST NOT</bcp14> claim the real-time pre-disclosure property
        and may retain the record for later audit only.</t>
        <sourcecode type="pseudocode"><![CDATA[
OBSERVER ON ANCHOR(A, endorsement, drip_evidence):
  REQUIRE DRIP_VERIFY_DET(A.ua_det, drip_evidence)        # RFC 9575
  REQUIRE VERIFY(endorsement, HI(A.ua_det))    # PED evidence key <- DET
  REQUIRE VERIFY_COSE_SIGN1(A, endorsement.ped_pub)
  REQUIRE A.n_len <= 60000
  STORE chain[A.ua_det, A.epoch_id] :=
      { last_key_index: 0, last_K: A.k0, A }

OBSERVER ON AER(rec, t_r):             # t_r = trusted local receive time
  a := chain[det, epoch];  IF a IS NONE: BUFFER(rec); RETURN
  IF NOT CLOCK_ERROR_BOUNDED(delta_max):
      STORE_FOR_AUDIT_ONLY(rec); RETURN
  i := UINT16(rec.idx)
  IF i >= a.n_len: DISCARD(rec, "INDEX_OUT_OF_EPOCH"); RETURN
  expected := FLOOR((t_r - a.t0) / a.delta)
  IF NOT INDEX_PLAUSIBLE(i, expected, receive_delay_bound, delta_max):
      DISCARD(rec, "INDEX_TIME_INCONSISTENT"); RETURN
  x := FLOOR((t_r + delta_max - a.t0) / a.delta)
  IF x >= i + a.d: DISCARD(rec, "UNSAFE_LATE")   # key may be public
  PENDING[i].add(rec)                  # safe; wait for K_(i+1)

OBSERVER ON KDR(kd, t_r):
  a := chain[det, epoch];  IF a IS NONE: BUFFER(kd); RETURN
  IF NOT CLOCK_ERROR_BOUNDED(delta_max):
      STORE_FOR_AUDIT_ONLY(kd); RETURN
  q := UINT16(kd.idx)               # AER interval index
  IF q >= a.n_len: RETURN
  key_index := q + 1                   # disclosed chain key is K_(q+1)
  IF key_index <= a.last_key_index: RETURN
  expected_disclosure := FLOOR((t_r - a.t0) / a.delta) - a.d
  IF NOT INDEX_PLAUSIBLE(q, expected_disclosure,
                         receive_delay_bound, delta_max):
      DISCARD(kd, "INDEX_TIME_INCONSISTENT"); RETURN
  IF ITERATE(F, kd.key, key_index - a.last_key_index) != a.last_K:
    DISCARD(kd); RETURN
  FOR i FROM a.last_key_index TO q:    # recover any lost interval keys
    K_interval := ITERATE(F, kd.key, q - i)   # equals K_(i+1)
    FOR rec IN PENDING[i]:
      K_tag_i := F'(K_interval)              # equals K'_i
      IF TRUNC64(HMAC_SHA256(K_tag_i, "UAS-AFE-rec" || det
                             || epoch || rec.hdr)) == rec.tag:
        MARK_VERIFIED(rec)   # PED decided (class, dec, n) in I_i
      ELSE: MARK_INVALID(rec)
  a.last_key_index := key_index;  a.last_K := kd.key
]]></sourcecode>
        <t>With Delta = 1 s and d = 3, and an Observer clock whose error is bounded by
        delta_max = 1 s, a record becomes verifiable roughly 3 to 4 seconds after
        emission. These values are <bcp14>RECOMMENDED</bcp14> starting points, not
        requirements. If the Observer cannot establish a clock-error bound -- for
        example, it has only an unsynchronized or untrusted local clock -- it may retain
        records for later audit but <bcp14>MUST NOT</bcp14> claim the TESLA real-time
        property that the record arrived before key disclosure.</t>
        <t>Delayed disclosure authenticates PED origin and pre-disclosure reception; it
        does not, by itself, prove physical location. A still-safe AER can be relayed to
        another Observer before disclosure. Correlation with DRIP-authenticated
        Location/Vector messages from the same interval is therefore a mitigation against
        location confusion, not a cryptographic proof that the observed physical act
        occurred at the reported coordinates. The signed receipt chain remains the
        authoritative detailed audit record.</t>
      </section>

      <section anchor="beacon-meaning">
        <name>What a Verified Record Does and Does Not Establish</name>
        <t>A verified AER establishes that the holder of the anchored key chain -- the PED
        endorsed for that DET -- emitted, during interval I_i, decision record n with the
        stated act class, decision, and sink class. Combined with DRIP-authenticated
        Location/Vector messages from the same interval, an Observer can associate the
        decision with where the aircraft was.</t>
        <t>It does not establish that the physical effect occurred, that every decision
        was received (broadcast is lossy; counter gaps are visible but are not by
        themselves evidence of misconduct), or anything about the content of the
        authority object beyond the optional hint. Full detail is in the signed receipt
        chain, which an authorized auditor can later obtain and match to broadcast
        headers by counter n.</t>
        <t>Broadcast evidence is never authority. A sink, PED, or service <bcp14>MUST NOT</bcp14> accept an AER, KDR, or Anchor as a handle, and a receipt
        presented as a handle is refused (EF-008).</t>
      </section>

      <section anchor="beacon-cost">
        <name>Size and Cost Comparison</name>
        <table anchor="tab-cost">
          <name>Per-act evidence cost (indicative)</name>
          <thead><tr><th>Approach</th><th>Per-act octets on air</th><th>Per-act onboard operation</th><th>Loss behaviour</th><th>Origin</th></tr></thead>
          <tbody>
            <tr><td>DET-signed structure per act</td><td>&gt;= 64-octet signature plus identifiers and timestamps; multi-page on legacy transport</td><td>One public-key signature</td><td>Lost page may lose the record</td><td>Key holder of DET (often RID module or flight software)</td></tr>
            <tr><td>AER with delayed disclosure (this document)</td><td>16 (plus one 19-octet KDR per interval, shared by all records)</td><td>One HMAC-SHA-256</td><td>Lost KDR recovered from any later KDR</td><td>PED only</td></tr>
          </tbody>
        </table>
        <t>Forgery resistance per record is bounded by the 64-bit tag
        (success probability about 2^-64 per attempt) and by one-wayness of F. A 64-bit
        tag is chosen because the record is evidence rather than authority; deployments
        that need more <bcp14>MAY</bcp14> use a 24-octet AER variant with a 128-bit
        tag.</t>
      </section>

      <section anchor="beacon-carriage">
        <name>Carriage and Open Issues for DRIP</name>
        <ul spacing="normal">
          <li>Carriage. This version intentionally does not request a DRIP Frame Type or
          Specific Authentication Method allocation. Candidate carriage approaches may
          require ASTM/ICAO coordination, an applicable future IETF standards effort, or
          use over Network RID. The byte-level AER/KDR construction is separable from the
          eventual carriage decision.</li>
          <li>Manifest interaction. AERs and KDRs are ordinary payload and can also be
          covered by a DRIP Manifest; delayed-disclosure verification still adds
          PED-origin that a Manifest signed with the DET key cannot provide on its
          own.</li>
          <li>Endorsement. The default profile uses a distinct PED evidence key endorsed
          by the aircraft's DRIP/HI identity. The RID module may relay the Anchor,
          endorsement, AERs, and KDRs but does not receive undisclosed chain keys. This
          document does not require the PED to hold the DET private key.</li>
          <li>Network RID. The same records can be relayed through Network RID services,
          where size is less constrained but the PED-origin property is still
          useful.</li>
        </ul>
      </section>
    </section>

    <section anchor="bus">
      <name>Onboard Bus Considerations</name>
      <t>Where the sink is reached over a bus, the enablement condition
      <bcp14>SHOULD</bcp14> be a physical line or gated rail controlled directly by the
      PED (for example ESC enable, latch solenoid supply, PA enable), because a gated
      condition is not bypassed by a forged bus frame.</t>
      <t>Where a sink can only be reached by bus messages (for example ESCs on CAN or
      DroneCAN, where classic CAN frames carry 8 data octets and CAN FD frames up to 64),
      the PED <bcp14>MAY</bcp14> establish a per-arming session key with the sink and
      send envelope releases carrying a freshness counter and a truncated MAC. That
      arrangement authenticates the release but places part of enforcement in the sink's
      firmware; it is a mitigation-class profile unless the sink's firmware is itself
      within the attested PED boundary. This profile does not assume that current
      off-the-shelf or consumer ESC firmware is a PED; such a sink qualifies for the
      stronger profile only when its relevant firmware, key state, and bypass resistance
      are within the attested enforcement boundary.</t>
    </section>


    <section anchor="wg">
      <name>Relevance to IETF and IRTF Work</name>
      <t>This document crosses several existing protocol and security work areas, but it
      does not assert that any one Working Group or Research Group owns the complete
      execution-finality problem. The mappings below identify reusable IETF/IRTF
      mechanisms and review communities. They are not statements of adoption, charter
      expansion, or venue assignment.</t>

      <section anchor="wg-internet-boundary">
        <name>Why This Is an Internet-Protocol Boundary Problem</name>
        <t>The mechanisms in this document do not standardize aircraft aerodynamics,
        steering geometry, braking control, ESC control laws, or collision-avoidance
        algorithms. Those remain functions of avionics, vehicle-control, autonomy, and
        safety systems. The Internet-facing problem arises because identity, authority,
        attestation, revocation, freshness, remote-assistance instructions, responder
        credentials, UTM/U-space state, V2X or air-to-air coordination, and audit
        evidence can originate across network and administrative boundaries, while the
        consequence occurs later at a local physical sink. The protocol question is how
        that network-originated state remains cryptographically and semantically bound
        to the exact act that is about to become effective.</t>

        <figure anchor="fig-internet-boundary">
          <name>Internet-originated authority carried to a physical finality boundary</name>
          <artwork type="ascii-art"><![CDATA[
  Internet / administrative side                 Physical system side

  +----------------------------+                  +-----------------------+
  | identity / DET / PKI       |                  | perception / planner  |
  | attestation / Evidence     |                  | DAA / ADS / autopilot |
  | UTM, U-space, V2X state    |                  +-----------+-----------+
  | responder / operator auth  |                              |
  | revocation / policy state  |                              | Candidate Act
  +-------------+--------------+                              v
                |                                 +-----------------------+
                | authenticated /                 | Protected Enforcement |
                | integrity-protected             | Domain                |
                | protocol objects                | - current authority   |
                +-------------------------------> | - epochs / freshness  |
                                                  | - exact-act binding   |
                                                  | - receipt state       |
                                                  +-----------+-----------+
                                                              |
                                                    scoped release only
                                                              v
                                                  +-----------------------+
                                                  | Finality Sink         |
                                                  | motor / steering /    |
                                                  | brake / latch / RF /  |
                                                  | motion admission      |
                                                  +-----------------------+
                                                              |
                                                              v
                                                       physical effect
]]></artwork>
        </figure>

        <t>The architectural boundary is therefore between a network/control-plane
        assertion and local effectuation. Authentication of the upstream message is
        necessary but not sufficient: the sink must determine whether that assertion is
        still current, applies to this device and sink, and still describes the actual
        impending act. This is the same separation expressed throughout this document as
        computation or communication not being, by itself, release authority.</t>
      </section>

      <section anchor="wg-embodiment-map">
        <name>Mapping of the Three Extended Embodiments</name>
        <dl newline="false" spacing="normal">
          <dt>Conflict-Set-Bound DAA Finality (<xref target="daa-finality"/>):</dt>
          <dd>The Internet-relevant state includes authenticated aircraft identity,
          cooperative traffic reports, remote or network DAA inputs, freshness,
          attestation of the protected DAA/finality component, and evidence of the
          resolution that was admitted. DRIP/tm-rid is relevant to aircraft identity and
          Observer association; RATS is relevant where a relying party needs Evidence or
          Attestation Results about the protected component and its reference state;
          COSE/CBOR is relevant to compact deterministic representation and
          authentication of Conflict-Set Commitments, Resolution Objects, and receipts;
          ACE patterns are relevant where constrained sinks consume narrowly scoped
          authorization; SCITT-style transparency may be useful for later registration
          or audit of resolution receipts; and T2TRG is relevant to constrained,
          multi-source, stateful enforcement. None of these mappings asks DRIP or another
          IETF group to standardize the collision-avoidance algorithm itself.</dd>

          <dt>Emergency-Scene Temporary Authority Finality (<xref target="emergency-scene"/>):</dt>
          <dd>The Internet-relevant problem is the transport and interpretation of a
          temporary responder authority across organizations while preventing a valid
          credential from becoming general remote-driving authority. COSE/CBOR is
          relevant to compact signed or MAC-protected Emergency Scene Authority Capsules;
          RATS is relevant where responder-side or vehicle-side protected state must be
          attested; ACE concepts are relevant to narrowly scoped, time-bounded authority
          for a constrained motion-admission sink; SCITT-style receipts can support
          post-event accountability without participating in the live driving decision;
          and T2TRG is relevant to constrained devices with multiple legitimate masters
          or stakeholders. Where UAS public-safety operations use the same construction,
          DRIP identity and tm-rid Observer mechanisms can associate temporary authority
          and later evidence with a particular aircraft.</dd>

          <dt>Atomic Control-Authority Handover (<xref target="control-handover"/>):</dt>
          <dd>The Internet-relevant problem is not controller scheduling but transfer of
          effect authority between independently authenticated controllers across delayed,
          duplicated, failed, or recovered sessions. ACE is relevant to constrained
          authorization and scope; RATS is relevant to attestation of Current Controller,
          Control Authority Epoch, and protected handover state; COSE/CBOR is relevant to
          Handover Objects, epoch-bound actuation objects, and receipts; SCITT-style
          transparency can record completed authority transfers; and T2TRG is directly
          relevant to constrained Things with multiple masters or stakeholders. For UAS,
          DRIP/tm-rid can provide the aircraft identity and Observer context but does not
          itself determine which controller currently owns an actuator sink.</dd>
        </dl>
      </section>

      <section anchor="wg-group-map">
        <name>Group-by-Group Relevance</name>
        <dl newline="false" spacing="normal">
          <dt>DRIP Working Group / tm-rid community:</dt>
          <dd>DRIP supplies a trustworthy aircraft identity and Broadcast/Network RID
          context. This document can bind Compact Broadcast Act Evidence, DAA-resolution
          evidence, selected temporary-authority evidence, and handover evidence to a DET
          without changing the principle that DRIP identifies and authenticates rather
          than decides physical actuation. Possible future work, if the community finds it
          useful, includes compact carriage, Observer verification, and correlation rules.</dd>

          <dt>RATS:</dt>
          <dd>RATS is relevant where an authority issuer or relying party needs confidence
          that the PED, Finality Sink path, safe-state implementation, DAA finality logic,
          scene-corroboration logic, or handover state is running in an expected protected
          configuration. Candidate attested state includes PED measurements, reference
          values, bypass-resistance claims, Current Controller, Control Authority Epoch,
          current policy/revocation generations, and the protected components that
          calculate or verify Conflict-Set Roots. This document does not define new RATS
          Evidence or Attestation Result claims; such claims would require separate
          profiling and review.</dd>

          <dt>COSE and CBOR:</dt>
          <dd>Deterministic CBOR and COSE are directly relevant to AAOs, Execution
          Handles, BPCs, Finality Receipts, evidence anchors, DAA Resolution Objects,
          Conflict-Set Commitments, Emergency Scene Authority Capsules, Control Handover
          Objects, and epoch-bound actuation objects. Compact canonical representation is
          important because semantic binding fails if producer and verifier hash different
          encodings of the same logical object.</dd>

          <dt>ACE:</dt>
          <dd>ACE is relevant to constrained authorization patterns where a protected
          resource server or actuator-side verifier must accept only narrowly scoped,
          time-bounded authority. The DAA, emergency-scene, and handover embodiments add a
          further local condition: authenticated authorization is not released to the
          physical sink until the exact impending act, current epoch, freshness, and local
          context also match. This document therefore treats ACE-style authorization as a
          potential input to finality rather than as proof that actuation has already been
          authorized at the physical boundary.</dd>

          <dt>SCITT:</dt>
          <dd>SCITT-style transparency services are relevant to publication or later audit
          of AAO issuance, Finality Receipts, DAA Resolution Receipts, Emergency Scene
          Authority issuance, and committed controller handovers. Transparency evidence is
          deliberately outside the live effectuation path: registration, receipt, or
          inclusion in a transparency service does not itself create execution authority.</dd>

          <dt>T2TRG (IRTF):</dt>
          <dd>T2TRG is relevant to constrained-device security, state/event semantics,
          intermittent connectivity, devices with multiple legitimate masters, bounded
          local enforcement, and reference/evaluation environments. The three extended
          embodiments provide concrete cross-domain cases: a UAS with multiple traffic
          information sources, a vehicle temporarily directed by an external responder,
          and a device transferring effect authority between autonomy, remote assistance,
          and safe-state controllers.</dd>
        </dl>
      </section>
    </section>

    <section anchor="security">
      <name>Security Considerations</name>
      <table anchor="tab-threats">
        <name>Threats and mitigations</name>
        <thead><tr><th>Threat</th><th>Effect without this profile</th><th>Mitigation</th><th>Residual</th></tr></thead>
        <tbody>
          <tr><td>Compromised mission computer writes actuators</td><td>Unauthorized motion, release, sensing</td><td>No path to enablement conditions except via PED (path completeness)</td><td>eps_path if a bypass exists in hardware design</td></tr>
          <tr><td>Stolen or replayed handle</td><td>Repeat of an authorized act</td><td>Non-bearer, act- and sink-bound, atomic consume</td><td>eps_store</td></tr>
          <tr><td>Stale authority after restriction</td><td>Entry into restricted volume</td><td>Generation read inside consume; event-triggered revalidation; offline bound</td><td>T_off_max when offline</td></tr>
          <tr><td>GNSS spoofing</td><td>False containment</td><td>Multi-source consistency; disagreement removes authority</td><td>eps_ctx if all sources falsified consistently</td></tr>
          <tr><td>Coerced but validly signed command</td><td>Unsafe act by authenticated source</td><td>Command treated as Candidate Act; quorum for marked classes</td><td>Colluding quorum</td></tr>
          <tr><td>Partial coordinated act</td><td>Separation loss</td><td>Composite decision log; prepare never moves; HOLD</td><td>Liveness when log unreachable</td></tr>
          <tr><td>Stale DAA conflict basis or superseded resolution</td><td>An avoidance maneuver can become unsafe before motion admission</td><td>Conflict-Set Root, current-set revalidation, multi-intruder check, and monotonic Resolution Epoch</td><td>Depends on integrity, freshness, and completeness of the protected traffic inputs</td></tr>
          <tr><td>Replayed or over-broad emergency-scene authority</td><td>A temporary traffic-rule exception can be reused for another vehicle, scene, incident, path, or time</td><td>Incident/scene/vehicle/act/sink binding, independent local scene corroboration, explicit exception class, nonce, expiry, and automatic authority extinction</td><td>Residual risk if all required local scene evidence is consistently falsified</td></tr>
          <tr><td>Split-brain controller handover</td><td>Two valid controllers can issue conflicting ordinary actuation commands</td><td>Protected Current Controller state, monotonic Control Authority Epoch, transactional PREPARE/COMMIT/ENABLE, and stale-epoch rejection at the sink</td><td>Availability can fall back to the Safe-State Set during incomplete handover or recovery</td></tr>
          <tr><td>Truncated BPC commitment collides or is searched offline</td><td>Wrong act or authority could appear to match a short value</td><td>Keyed binding preferred; explicit collision and attacker-work sizing; ambiguity causes deny or longer proof</td><td>Deployment-selected t and online-attempt budget</td></tr>
          <tr><td>Mixed, missing, or corrupted BPC fragments</td><td>Partial proof could be mistaken for authority</td><td>Per-fragment authentication, common SessionID and Root, ordered reconstruction, root verification; incomplete evidence means no effectuation</td><td>Availability loss under packet loss or jamming</td></tr>
          <tr><td>Unknown or stale compact Authority Reference</td><td>Reference substitution or stale cached authority</td><td>Protected keyed reference, authenticated cache/resolver, current generation checks at finality; UNKNOWN never means authorized</td><td>Resolver/cache availability</td></tr>
          <tr><td>Forged broadcast evidence by RID module or third transmitter</td><td>False appearance of authorized conduct</td><td>Key chain seed sealed in PED; tag keys disclosed only after safety window</td><td>2^-64 per record; Observer clock outside delta_max</td></tr>
          <tr><td>Late replay or relay of evidence</td><td>Old or remote decision presented as locally current</td><td>Interval index bound in tag; pre-disclosure receive-time condition; correlate with DRIP-authenticated Location/Vector from the same interval</td><td>A relay inside the disclosure window remains possible; if location evidence is also forged or unavailable, act-evidence verification alone does not prove local physical presence</td></tr>
          <tr><td>Receipt presented as handle</td><td>Authority laundering</td><td>Refused (EF-008)</td><td>None expected</td></tr>
          <tr><td>Denial of evidence broadcast (jamming)</td><td>Observer sees nothing</td><td>None at the broadcast layer; receipts remain for audit</td><td>Loss of real-time observability</td></tr>
        </tbody>
      </table>
      <t>A PED that is itself compromised defeats this profile; its isolation,
      non-extractable keys, and attested measurement are therefore load-bearing
      assumptions. Denial and safe-state selection are designed so that the failure mode
      of the enforcement layer is a controlled holding, descent, or landing manoeuvre,
      never uncontrolled flight.</t>
    </section>

    <section anchor="privacy">
      <name>Privacy Considerations</name>
      <t>Broadcast act class values can reveal operational details (for example that a
      camera is active). Deployments <bcp14>MAY</bcp14> use the UNSPECIFIED act class
      (privacy mode), broadcasting only decision, sink class, counter, and tag, with
      full detail confined to receipts available to authorized auditors. The optional
      AAO hint <bcp14>SHOULD NOT</bcp14> be broadcast where it would link flights to
      customers. Receipts <bcp14>SHOULD</bcp14> omit imagery, customer identity, and raw
      sensor data, carrying digests instead. Whether and how act evidence is broadcast
      is subject to regional regulation; this document does not assume a mandate.</t>
      <t>The DAA profile can involve sensitive traffic tracks and the emergency-scene
      profile can involve responder, incident, and scene information. Implementations
      <bcp14>SHOULD</bcp14> keep raw track sets, responder identities, and detailed scene
      observations inside protected local state where possible, carrying commitments,
      pseudonymous references, coarse classes, or auditor-only receipt fields instead.
      Control-handover receipts <bcp14>SHOULD</bcp14> avoid exposing operator identity
      beyond what is necessary to prove the authority transition.</t>
    </section>

    <section anchor="iana">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions. It does not request a DRIP Frame Type, a
      Specific Authentication Method value, or an IANA act/sink registry. If the compact
      evidence mechanism progresses in a future standards effort, carriage and registry
      work would require the process appropriate to the selected transport, including
      coordination with ASTM/ICAO where applicable.</t>
    </section>


    <section anchor="reference-implementation">
      <name>Reference Implementation, Red-Team Harness, and Reproducibility</name>

      <t>An accompanying non-normative reference repository,
      <tt>UAS-Autonomous-Vehicle-Execution-Finality-Reference</tt>, instantiates the
      principal state machines, cryptographic bindings, and negative-control cases in
      this document. The repository is intended to make the architectural claims
      falsifiable and reproducible rather than to serve as production flight, vehicle,
      or actuator software. It is not a normative dependency of this specification.</t>

      <t>The public repository is available at <xref target="GITHUB-EF-REF"/>. Related
      public background records by the author are <xref target="DAS-ZENODO"/>, which
      describes the broader execution-finality authority problem;
      <xref target="DAS-ZENODO-HW"/>, which provides hardware-enforcement context; and
      <xref target="DAS-ZENODO-PURPOSE"/>, which discusses purpose-bound execution
      finality in another application domain. These resources are informative only and
      are not normative dependencies of this UAS/AV profile.</t>

      <t>The current packaged snapshot contains 68 files. Its principal contents are:</t>
      <ul spacing="normal">
        <li>reference Python modules for Candidate-Act/finality processing, BPC binding
        and authentication, replay and receipt state, authenticated fragmentation,
        corrected AER/KDR delayed-disclosure processing, DAA conflict-set finality,
        emergency-scene temporary authority, control-authority handover, and spatial
        revalidation;</li>
        <li>explicit configuration files for cryptographic field sizes, collision and
        attacker-work budgets, AER disclosure timing and packet loss, UAS and road-vehicle
        parameters, DAA variables, and constrained-compute profiles;</li>
        <li>positive and adversarial tests covering act substitution, sink substitution,
        replay, policy/revocation races, receipt-store failure, concurrent single-use
        consumption, fragment deletion/corruption/cross-session mixing, delayed-disclosure
        forgery and late-record cases, stale DAA conflict sets, superseded Resolution
        Epochs, correlated emergency-scene evidence, and control-handover crash states;</li>
        <li>deterministic BPC, AER/KDR, and fragmentation test vectors, together with a
        seeded randomized red-team campaign so a failing schedule can be replayed;</li>
        <li>threat-model, architecture, system-variable, test-matrix, fault-injection,
        benchmark, security, and IPR documentation; and</li>
        <li>a CI configuration and a local benchmark harness that report the execution
        environment together with measured software-path latency.</li>
      </ul>

      <section anchor="reference-implementation-production">
        <name>How the Reference Harness Was Produced</name>
        <t>The reference harness was produced by translating the equations, state
        transitions, object bindings, and pseudocode in this document into a small,
        deterministic software model. The implementation uses Python and, for the
        packaged cryptographic paths, standard-library SHA-256, HMAC-SHA-256, and a
        minimal HKDF construction. Test cases were then derived from the stated
        invariants and from explicit adversarial mutations: each load-bearing field or
        state transition is changed, replayed, reordered, made stale, made unavailable,
        or subjected to a modeled crash point, and the expected outcome is checked
        before any simulated capability release.</t>

        <t>The red-team methodology therefore follows the traceability pattern
        <tt>architectural invariant -&gt; adversarial mutation -&gt; expected protected
        failure -&gt; automated test</tt>. For control-authority handover, the packaged
        campaign additionally executes seeded randomized crash schedules and checks the
        invariant that no modeled state gives two ordinary controllers simultaneous
        effectuation authority over the same governed sink.</t>

        <t>The code was written as a clean-room reference model of the mechanisms
        described in this document. It was not extracted from, reverse engineered from,
        or validated against any proprietary OEM flight controller, autonomous-driving
        stack, vehicle ECU, secure element, actuator controller, or named industrial
        platform.</t>
      </section>

      <section anchor="reference-implementation-results">
        <name>Current Packaged Test Status</name>
        <t>In the packaged snapshot used while preparing this revision, the automated
        suite reports 66 passing tests. A seeded control-handover red-team campaign
        using seed <tt>20260918</tt> executed 5,000 modeled schedules and reported zero
        dual-authority violations. These numbers describe that particular repository
        snapshot and software model; they are not conformance certification and may
        change as the harness and test set evolve.</t>

        <t>The repository also records local Python benchmark measurements for BPC
        generation, finality verification/consume/receipt/capability processing, AER
        generation, and fragmentation/reassembly. Those measurements are environment
        specific and are reported together with the machine and interpreter details.
        They exclude network delay, secure-element or HSM access, durable storage
        <tt>fsync</tt>, certified real-time scheduling, bus arbitration, and physical
        actuator I/O.</t>
      </section>

      <section anchor="reference-implementation-limitations">
        <name>Interpretation and Limitations</name>
        <t>Passing the reference harness demonstrates only that the included software
        state machine and cryptographic bindings satisfy the tested properties under the
        modeled inputs and adversary. It supports reproducibility and engineering
        plausibility of those software-level mechanisms; it does not establish physical
        non-bypassability, airworthiness, automotive functional safety, real-time
        deadline compliance, RF interoperability, secure-element extraction resistance,
        resistance to all correlated sensor failures, or production readiness.</t>

        <t>In particular, a real platform must separately demonstrate that no actuator,
        DMA, debug, maintenance, alternate bus-master, emergency, firmware-rollback, or
        failover path can create the protected effect without traversing the applicable
        Finality Sink. Hardware testing should additionally inject reset, brownout,
        torn-write, persistent-state rollback, HSM/secure-element timeout, bus and DMA
        bypass attempts, clock rollback, packet burst loss, controller partition, and
        actuator-acknowledgement failures at each protected transition.</t>

        <t>The repository does not substitute for system hazard analysis, flight testing,
        airworthiness approval, automotive safety engineering, cybersecurity
        certification, standards conformance, or regulatory approval. It also does not
        demonstrate that any named industrial platform implements this architecture.
        Results from the pure-software harness should therefore be described as
        reference-implementation evidence, not as production-platform validation.</t>
      </section>
    </section>

    <section anchor="assumptions">
      <name>Assumptions, Limitations, and Invitation for Review</name>
      <ul spacing="normal">
        <li>The numerical example in <xref target="reval-bound"/> is illustrative and
        is not an airworthiness or certification formula. Real stopping behavior depends
        on airframe, wind, mass, rotor/propulsion lag, control law, and actuator delay;
        a_brk and tau must therefore be conservative guaranteed values from protected or
        attested safety configuration, or a more conservative deployment-specific model
        must be substituted.</li>
        <li>The compact BPC sizing expressions are engineering security-budget
        inputs, not a complete cyber-physical safety probability. Deployments must choose
        q, W, A_online, epsilon_c, epsilon_s, epsilon_f, commitment length t, and tag
        length m for the relevant act rate, session lifetime, fleet scale, and risk class;
        high-consequence acts should use longer values or a full-proof profile where the
        budget cannot be justified.</li>
        <li>The evidence mechanism assumes a bounded Observer clock offset. An Observer
        that cannot establish delta_max, including one relying only on an untrusted or
        unsynchronized local clock, may retain records for later audit but cannot assert
        the delayed-disclosure real-time safety property.</li>
        <li>No flight-test, actuator, secure-element, or production-hardware results are
        claimed. Any measurements reported by the accompanying reference repository are
        local software-harness measurements on the stated environment and exclude network,
        durable-storage, certified real-time scheduling, secure-element/HSM, bus, and
        physical-actuator latency.</li>
        <li>F3411 page layouts and DRIP carriage details are to be confirmed against the
        editions in use; this version intentionally leaves carriage open.</li>
        <li>Known unsolved items: guaranteed delivery of generations to aircraft in
        radio-shadowed areas; standardized derivation of sensor footprints for
        P_sensor; and evidence semantics for acts decided by the flight controller's
        internal safety logic without PED involvement.</li>
      </ul>
      <t>The author's understanding of DRIP, F3411, and airframe practice may contain
      inaccuracies. Critical technical review, especially from DRIP participants and
      autopilot developers, is invited.</t>
    </section>
  </middle>

  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119">
          <front><title>Key words for use in RFCs to Indicate Requirement Levels</title>
          <author initials="S." surname="Bradner" fullname="S. Bradner"/>
          <date year="1997" month="March"/></front>
          <seriesInfo name="BCP" value="14"/><seriesInfo name="RFC" value="2119"/>
        </reference>
        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174">
          <front><title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
          <author initials="B." surname="Leiba" fullname="B. Leiba"/>
          <date year="2017" month="May"/></front>
          <seriesInfo name="BCP" value="14"/><seriesInfo name="RFC" value="8174"/>
        </reference>
        <reference anchor="RFC9153" target="https://www.rfc-editor.org/info/rfc9153">
          <front><title>Drone Remote Identification Protocol (DRIP) Requirements and Terminology</title>
          <author initials="S." surname="Card" fullname="S. Card" role="editor"/>
          <author initials="A." surname="Wiethuechter" fullname="A. Wiethuechter"/>
          <author initials="R." surname="Moskowitz" fullname="R. Moskowitz"/>
          <author initials="A." surname="Gurtov" fullname="A. Gurtov"/>
          <date year="2022" month="February"/></front>
          <seriesInfo name="RFC" value="9153"/>
        </reference>
        <reference anchor="RFC9374" target="https://www.rfc-editor.org/info/rfc9374">
          <front><title>DRIP Entity Tag (DET) for Unmanned Aircraft System Remote ID (UAS RID)</title>
          <author initials="R." surname="Moskowitz" fullname="R. Moskowitz"/>
          <author initials="S." surname="Card" fullname="S. Card"/>
          <author initials="A." surname="Wiethuechter" fullname="A. Wiethuechter"/>
          <author initials="A." surname="Gurtov" fullname="A. Gurtov"/>
          <date year="2023" month="March"/></front>
          <seriesInfo name="RFC" value="9374"/>
        </reference>
        <reference anchor="RFC9575" target="https://www.rfc-editor.org/info/rfc9575">
          <front><title>DRIP Entity Tag (DET) Authentication Formats and Protocols for Broadcast Remote Identification (RID)</title>
          <author initials="A." surname="Wiethuechter" fullname="A. Wiethuechter" role="editor"/>
          <author initials="S." surname="Card" fullname="S. Card"/>
          <author initials="R." surname="Moskowitz" fullname="R. Moskowitz"/>
          <date year="2024" month="June"/></front>
          <seriesInfo name="RFC" value="9575"/>
        </reference>
        <reference anchor="RFC8949" target="https://www.rfc-editor.org/info/rfc8949">
          <front><title>Concise Binary Object Representation (CBOR)</title>
          <author initials="C." surname="Bormann" fullname="C. Bormann"/>
          <author initials="P." surname="Hoffman" fullname="P. Hoffman"/>
          <date year="2020" month="December"/></front>
          <seriesInfo name="STD" value="94"/><seriesInfo name="RFC" value="8949"/>
        </reference>
        <reference anchor="RFC9052" target="https://www.rfc-editor.org/info/rfc9052">
          <front><title>CBOR Object Signing and Encryption (COSE): Structures and Process</title>
          <author initials="J." surname="Schaad" fullname="J. Schaad"/>
          <date year="2022" month="August"/></front>
          <seriesInfo name="STD" value="96"/><seriesInfo name="RFC" value="9052"/>
        </reference>
        <reference anchor="RFC2104" target="https://www.rfc-editor.org/info/rfc2104">
          <front><title>HMAC: Keyed-Hashing for Message Authentication</title>
          <author initials="H." surname="Krawczyk" fullname="H. Krawczyk"/>
          <author initials="M." surname="Bellare" fullname="M. Bellare"/>
          <author initials="R." surname="Canetti" fullname="R. Canetti"/>
          <date year="1997" month="February"/></front>
          <seriesInfo name="RFC" value="2104"/>
        </reference>
        <reference anchor="RFC6234" target="https://www.rfc-editor.org/info/rfc6234">
          <front><title>US Secure Hash Algorithms (SHA and SHA-based HMAC and HKDF)</title>
          <author initials="D." surname="Eastlake 3rd" fullname="D. Eastlake 3rd"/>
          <author initials="T." surname="Hansen" fullname="T. Hansen"/>
          <date year="2011" month="May"/></front>
          <seriesInfo name="RFC" value="6234"/>
        </reference>
      </references>

      <references>
        <name>Informative References</name>
        <reference anchor="RFC9434" target="https://www.rfc-editor.org/info/rfc9434">
          <front><title>Drone Remote Identification Protocol (DRIP) Architecture</title>
          <author initials="S." surname="Card" fullname="S. Card"/>
          <author initials="A." surname="Wiethuechter" fullname="A. Wiethuechter"/>
          <author initials="R." surname="Moskowitz" fullname="R. Moskowitz"/>
          <author initials="S." surname="Zhao" fullname="S. Zhao" role="editor"/>
          <author initials="A." surname="Gurtov" fullname="A. Gurtov"/>
          <date year="2023" month="July"/></front>
          <seriesInfo name="RFC" value="9434"/>
        </reference>
        <reference anchor="RFC9886" target="https://www.rfc-editor.org/info/rfc9886">
          <front><title>DRIP Entity Tags (DETs) in the Domain Name System</title>
          <author initials="A." surname="Wiethuechter" fullname="A. Wiethuechter" role="editor"/>
          <author initials="J." surname="Reid" fullname="J. Reid"/>
          <date year="2025" month="December"/></front>
          <seriesInfo name="RFC" value="9886"/>
        </reference>
        <reference anchor="RFC4082" target="https://www.rfc-editor.org/info/rfc4082">
          <front><title>Timed Efficient Stream Loss-Tolerant Authentication (TESLA): Multicast Source Authentication Transform Introduction</title>
          <author initials="A." surname="Perrig" fullname="A. Perrig"/>
          <author initials="D." surname="Song" fullname="D. Song"/>
          <author initials="R." surname="Canetti" fullname="R. Canetti"/>
          <author initials="J. D." surname="Tygar" fullname="J. D. Tygar"/>
          <author initials="B." surname="Briscoe" fullname="B. Briscoe"/>
          <date year="2005" month="June"/></front>
          <seriesInfo name="RFC" value="4082"/>
        </reference>
        <reference anchor="RFC9334" target="https://www.rfc-editor.org/info/rfc9334">
          <front><title>Remote ATtestation procedureS (RATS) Architecture</title>
          <author initials="H." surname="Birkholz" fullname="H. Birkholz"/>
          <author initials="D." surname="Thaler" fullname="D. Thaler"/>
          <author initials="M." surname="Richardson" fullname="M. Richardson"/>
          <author initials="N." surname="Smith" fullname="N. Smith"/>
          <author initials="W." surname="Pan" fullname="W. Pan"/>
          <date year="2023" month="January"/></front>
          <seriesInfo name="RFC" value="9334"/>
        </reference>
        <reference anchor="RFC8610" target="https://www.rfc-editor.org/info/rfc8610">
          <front><title>Concise Data Definition Language (CDDL): A Notational Convention to Express Concise Binary Object Representation (CBOR) and JSON Data Structures</title>
          <author initials="H." surname="Birkholz" fullname="H. Birkholz"/>
          <author initials="C." surname="Vigano" fullname="C. Vigano"/>
          <author initials="C." surname="Bormann" fullname="C. Bormann"/>
          <date year="2019" month="June"/></front>
          <seriesInfo name="RFC" value="8610"/>
        </reference>
        <reference anchor="RFC8785" target="https://www.rfc-editor.org/info/rfc8785">
          <front><title>JSON Canonicalization Scheme (JCS)</title>
          <author initials="A." surname="Rundgren" fullname="A. Rundgren"/>
          <author initials="B." surname="Jordan" fullname="B. Jordan"/>
          <author initials="S." surname="Erdtman" fullname="S. Erdtman"/>
          <date year="2020" month="June"/></front>
          <seriesInfo name="RFC" value="8785"/>
        </reference>
        <reference anchor="F3411" target="https://www.astm.org/f3411-22a.html">
          <front><title>Standard Specification for Remote ID and Tracking (F3411-22a)</title>
          <author><organization>ASTM International</organization></author>
          <date year="2022"/></front>
        </reference>
        <reference anchor="F3548" target="https://www.astm.org/f3548-21.html">
          <front><title>Standard Specification for UAS Traffic Management (UTM) UAS Service Supplier (USS) Interoperability (F3548-21)</title>
          <author><organization>ASTM International</organization></author>
          <date year="2021"/></front>
        </reference>
        <reference anchor="DAS-PROTOCOL" target="https://datatracker.ietf.org/doc/draft-das-execution-finality-protocol-layer/">
          <front><title>Execution Finality Protocol Layer</title>
          <author initials="S." surname="Das" fullname="Sangam Das"/>
          <date year="2026"/></front>
          <seriesInfo name="Internet-Draft" value="draft-das-execution-finality-protocol-layer"/>
        </reference>
        <reference anchor="DAS-HANDLE" target="https://datatracker.ietf.org/doc/draft-das-execution-handle/">
          <front><title>Possession Is Not Authority: Execution Handles</title>
          <author initials="S." surname="Das" fullname="Sangam Das"/>
          <date year="2026"/></front>
          <seriesInfo name="Internet-Draft" value="draft-das-execution-handle"/>
        </reference>
        <reference anchor="DAS-REG" target="https://datatracker.ietf.org/doc/draft-das-ef-registries/">
          <front><title>Illustrative Codes Are Not a Namespace: Execution-Finality Registries</title>
          <author initials="S." surname="Das" fullname="Sangam Das"/>
          <date year="2026"/></front>
          <seriesInfo name="Internet-Draft" value="draft-das-ef-registries"/>
        </reference>
        <reference anchor="DAS-COMPOSITE" target="https://datatracker.ietf.org/doc/draft-das-composite-execution-finality/">
          <front><title>Partial Commit Is Not Finality: Composite Execution Finality</title>
          <author initials="S." surname="Das" fullname="Sangam Das"/>
          <date year="2026"/></front>
          <seriesInfo name="Internet-Draft" value="draft-das-composite-execution-finality"/>
        </reference>
        <reference anchor="DAS-JURISDICTION" target="https://datatracker.ietf.org/doc/draft-das-jurisdiction-bound-execution-finality/">
          <front><title>Authorized Here, Not Authorized There: Jurisdiction-Bound Execution Finality for Cross-Border and Sovereign Systems</title>
          <author initials="S." surname="Das" fullname="Sangam Das"/>
          <date year="2026"/></front>
          <seriesInfo name="Internet-Draft" value="draft-das-jurisdiction-bound-execution-finality"/>
        </reference>
        <reference anchor="DAS-ACTUATION" target="https://datatracker.ietf.org/doc/draft-das-actuation-bound-execution-finality/">
          <front><title>Command Accepted Is Not Actuation Authorized: Execution Finality for Cyber-Physical and Industrial Control Systems</title>
          <author initials="S." surname="Das" fullname="Sangam Das"/>
          <date year="2026"/></front>
          <seriesInfo name="Internet-Draft" value="draft-das-actuation-bound-execution-finality"/>
        </reference>
        <reference anchor="DAS-STATE" target="https://datatracker.ietf.org/doc/draft-das-state-policy-continuity-finality/">
          <front><title>When Valid Authorization Becomes Stale: State and Policy Continuity at the Execution-Finality Boundary</title>
          <author initials="S." surname="Das" fullname="Sangam Das"/>
          <date year="2026"/></front>
          <seriesInfo name="Internet-Draft" value="draft-das-state-policy-continuity-finality"/>
        </reference>
        <reference anchor="DAS-REVOCATION" target="https://datatracker.ietf.org/doc/draft-das-finality-bound-revocation/">
          <front><title>Revoked but Still Executable: Closing the Authorization-to-Effect Gap with Finality-Bound Revocation</title>
          <author initials="S." surname="Das" fullname="Sangam Das"/>
          <date year="2026"/></front>
          <seriesInfo name="Internet-Draft" value="draft-das-finality-bound-revocation"/>
        </reference>
        <reference anchor="DAS-PATH" target="https://datatracker.ietf.org/doc/draft-das-consequence-path-completeness/">
          <front><title>When the Gate Can Be Bypassed: Consequence-Path Completeness for Execution Finality</title>
          <author initials="S." surname="Das" fullname="Sangam Das"/>
          <date year="2026"/></front>
          <seriesInfo name="Internet-Draft" value="draft-das-consequence-path-completeness"/>
        </reference>
        <reference anchor="TESLA-AUTOPILOT" target="https://www.tesla.com/support/autopilot">
          <front><title>Autopilot and Full Self-Driving Capability</title>
          <author><organization>Tesla</organization></author>
          <date year="2026"/></front>
        </reference>
        <reference anchor="BYD-DIPILOT" target="https://www.byd.com/sc/news-list/byd-dipilot-intelligent-driving-assistance">
          <front><title>BYD Reveals DiPilot Advanced Intelligent Driving Assistance System</title>
          <author><organization>BYD</organization></author>
          <date year="2025" month="February"/></front>
        </reference>
        <reference anchor="DJI-AUTOMATION" target="https://enterprise.dji.com/ecosystem/dronelink">
          <front><title>Drone Flight Control for DJI - Enterprise Ecosystem Solution Catalogue</title>
          <author><organization>DJI Enterprise</organization></author>
          <date year="2026"/></front>
        </reference>
        <reference anchor="BOEING-AUTONOMY" target="https://www.boeing.com/defense/autonomous-and-unmanned-systems">
          <front><title>Autonomous and Unmanned Systems</title>
          <author><organization>Boeing</organization></author>
          <date year="2026"/></front>
        </reference>
        <reference anchor="LOCKHEED-AUTONOMY" target="https://www.lockheedmartin.com/en-us/capabilities/autonomous-unmanned-systems.html">
          <front><title>Autonomous and Uncrewed Systems</title>
          <author><organization>Lockheed Martin</organization></author>
          <date year="2026"/></front>
        </reference>
        <reference anchor="GITHUB-EF-REF" target="https://github.com/sangmdas/UAS-Autonomous-Vehicle-Execution-Finality">
          <front><title>UAS-Autonomous-Vehicle-Execution-Finality: Reference Implementation and Red-Team Harness</title>
          <author initials="S." surname="Das" fullname="Sangam Das"/>
          <date year="2026" month="September"/></front>
        </reference>
        <reference anchor="DAS-ZENODO" target="https://zenodo.org/records/22082995">
          <front><title>The Internet Solved Communication. It Never Solved Authority</title>
          <author initials="S." surname="Das" fullname="Sangam Das"/>
          <date year="2026"/></front>
          <seriesInfo name="DOI" value="10.5281/zenodo.22082995"/>
        </reference>
        <reference anchor="DAS-ZENODO-HW" target="https://zenodo.org/records/22308384">
          <front><title>Hardware-Enforced Execution Finality</title>
          <author initials="S." surname="Das" fullname="Sangam Das"/>
          <date year="2026"/></front>
          <seriesInfo name="Zenodo Record" value="22308384"/>
        </reference>
        <reference anchor="DAS-ZENODO-PURPOSE" target="https://zenodo.org/records/22719527">
          <front><title>Declared Purpose Is Not Authorization: Purpose Execution Finality</title>
          <author initials="S." surname="Das" fullname="Sangam Das"/>
          <date year="2026"/></front>
          <seriesInfo name="Zenodo Record" value="22719527"/>
        </reference>
      </references>
    </references>



<section anchor="industry">
      <name>Appendix: Industrial Deployment Context and Complementarity</name>
      <t>This non-normative appendix gives industrial deployment context only. The
      descriptions are based on publicly available material and are intended to explain
      where an execution-finality boundary could sit relative to existing products and
      architectures. No implementation from any named organization was used, simulated,
      reverse engineered, or tested in preparing this document, and no affiliation,
      endorsement, adoption, infringement conclusion, or claim of technical deficiency is
      stated or implied. Corrections from the organizations concerned are welcome.</t>

      <t>The complementarity rule is deliberately narrow: existing perception, planning,
      localization, DAA, ADAS, geofencing, flight-control, braking, steering, remote
      assistance, authenticated messaging, and fail-safe logic continue to perform their
      present functions. This profile does not replace them. Instead, those components
      produce or support a Candidate Act. A protected execution-finality component then
      verifies the concrete act actually pending at the motion-admission or actuator
      boundary against current authority, freshness, policy, revocation, context, conflict
      set, scene, or control-authority state before releasing only the bounded enablement
      required for that act.</t>

      <figure anchor="fig-industry-complement">
        <name>Complementary placement relative to an existing autonomy stack</name>
        <artwork type="ascii-art"><![CDATA[
 Existing product / autonomy stack                     Added finality boundary
 +-------------------------------------+              +-----------------------+
 | perception | planning | DAA / ADAS  |  Candidate   | protected current     |
 | geofence | remote assistance | C2   |---- Act ---->| state + act binding   |
 | stabilization / minimal-risk logic  |              | + receipt + consume   |
 +-------------------+-----------------+              +-----------+-----------+
                     |                                            |
                     | existing safe-state path                   | bounded release
                     v                                            v
              +-------------+                              +-------------+
              | safe control|                              | motion /     |
              | remains     |                              | actuator sink|
              +-------------+                              +-------------+

 The finality layer does not replace perception, planning, stabilization,
 braking, steering, DAA, ADAS, or vendor safety logic.
]]></artwork>
      </figure>

      <table anchor="tab-industry">
        <name>Illustrative industrial ecosystems and complementary role</name>
        <thead><tr><th>Ecosystem</th><th>Publicly described role</th><th>Complementary role of this profile</th></tr></thead>
        <tbody>
          <tr><td>Tesla <xref target="TESLA-AUTOPILOT"/></td><td>Camera- and AI-based driver assistance, including Autopilot and Full Self-Driving (Supervised); Tesla states that currently enabled features require active driver supervision and do not make the vehicle autonomous.</td><td>The existing perception and driving-assistance stack can continue to compute a trajectory or manoeuvre. A protected motion-admission sink can, as an additional layer, bind the concrete pending manoeuvre to current authority, scene, control-authority epoch, freshness, and safety state before admitting a bounded steering, braking, propulsion, or mode transition. This profile does not replace Tesla's driver-monitoring, planning, braking, steering, or safety logic.</td></tr>
          <tr><td>BYD <xref target="BYD-DIPILOT"/></td><td>DiPilot intelligent-driving assistance and vehicle-domain architectures integrating sensing, decision, and control functions.</td><td>The vehicle's existing sensor fusion, intelligent-driving planner, AEB, lane-control, and motion-control functions remain unchanged. Execution finality can be placed after planning and before motion admission so that a remotely approved path, emergency-scene exception, cooperative manoeuvre, or controller handover is effective only when its act, scene, vehicle, epoch, and sink bindings still match current protected state.</td></tr>
          <tr><td>DJI Enterprise <xref target="DJI-AUTOMATION"/></td><td>Enterprise drone mission planning and flight automation across waypoints, inspection missions, cameras, and multiple aircraft.</td><td>Mission automation can continue to generate waypoints, camera requests, payload operations, and flight plans. The PED can sit below the mission-planning layer and gate only the final arming, envelope expansion, payload, sensor, RF, or other consequential enablement after reconstructing the actual impending act. Existing flight-controller stabilization and failsafes remain available as the Safe-State Set.</td></tr>
          <tr><td>Boeing autonomous and uncrewed systems <xref target="BOEING-AUTONOMY"/></td><td>Publicly described autonomous and uncrewed aircraft, collaborative systems, secure communications, and human-operated AI/autonomy architectures.</td><td>For civil or dual-use architectural discussion only, conflict-set-bound DAA finality can sit downstream of a DAA or autonomy planner so that an accepted avoidance resolution remains bound to the conflict-set basis on which it was computed. Control-authority handover finality can additionally ensure that only the controller named by the current protected authority epoch can admit motion. Existing flight-control, safety, and mission systems remain primary.</td></tr>
          <tr><td>Lockheed Martin / Sikorsky autonomy <xref target="LOCKHEED-AUTONOMY"/></td><td>Publicly described autonomous and uncrewed systems, human-machine teaming, autonomous mission execution, and Sikorsky MATRIX autonomy.</td><td>The profile can complement such autonomy patterns by treating planner or operator output as a Candidate Act rather than final authority. DAA conflict-set revalidation, monotonic control-authority epochs, and sink-local verification can be added at the final motion or actuator boundary while leaving perception, mission planning, vehicle stabilization, and certified safety functions intact. This document's scope remains civil and excludes weapon, targeting, and counter-UAS effectuation.</td></tr>
          <tr><td>PX4 and ArduPilot (open-source autopilots)</td><td>Flight control, geofence, mission, and failsafe logic.</td><td>PED gates arming, envelope, payload, sensor, and RF enablement beneath the autopilot; autopilot failsafes remain a Safe-State implementation rather than being displaced by the finality layer.</td></tr>
          <tr><td>Wing, Amazon Prime Air, Zipline</td><td>Automated delivery operations using route planning, fleet operations, airspace services, and payload delivery mechanisms.</td><td>Payload release can be represented as a single-use, drop-zone-bound Candidate Act whose concrete latch or winch operation is reconstructed and verified at the payload sink before release, with optional receipt and observer evidence.</td></tr>
          <tr><td>NVIDIA Jetson-class and Qualcomm robotics/vehicle compute</td><td>High-performance onboard AI, perception, connectivity, and planning compute used in robotics, vehicles, and edge systems.</td><td>Accelerator output remains computational input to a Candidate Act. A smaller protected controller or safety domain can hold final authority state and release the actuator or motion-admission capability only after independent verification.</td></tr>
          <tr><td>USS/USSP providers under ASTM F3548 and U-space</td><td>Flight authorization, conformance monitoring, geo-awareness, and operational information exchange.</td><td>These services can remain upstream issuers of authority and current-generation information. The aircraft PED consumes that information at effectuation time, and optional receipts or evidence can be returned to authorized operators or auditors.</td></tr>
        </tbody>
      </table>

      <t>The same complementarity principle applies to the three narrower embodiments in
      this document. For DAA finality, the DAA engine continues to detect and resolve
      conflicts; the new step is revalidation that the accepted manoeuvre is still bound
      to the current conflict set at motion admission. For emergency-scene authority, the
      vehicle's normal ADAS/autonomy and minimal-risk functions remain active; the new
      step is a temporary, scene-corroborated, vehicle- and act-bound exception that
      extinguishes automatically. For control-authority handover, existing controllers
      continue to compute commands; the new step is protected exclusive-controller state
      and a monotonic epoch that rejects commands from superseded controllers at the
      finality sink.</t>
    </section>

    <section anchor="walkthrough" numbered="true">
      <name>End-to-End Example: Parcel Delivery with a Mid-Flight Restriction</name>
      <ol spacing="normal">
        <li>Before take-off, the operator's USS issues an AAO for corridor segments 1-4,
        drop zone D7, v_max 15 m/s, offline T_off_max 60 s, act classes ARM,
        KINETIC_ENVELOPE, VOLUME_ENTRY, PAYLOAD_RELEASE, RF_EMIT, at g_air 412.</li>
        <li>The PED verifies the AAO, anchors a new evidence epoch, and the RID module
        broadcasts the Anchor and the Evidence Key Endorsement alongside DRIP
        authentication.</li>
        <li>ARM handle consumed; receipt n=1 committed; ESC enable released; AER
        (ARM, ALLOW, n=1) broadcast.</li>
        <li>Envelope handle for segment 1 consumed; the comparator admits setpoints
        inside E. Revalidation interval shrinks near the segment boundary per
        <xref target="reval-bound"/>.</li>
        <li>At 14:07 a restriction arrives as g_air 413 intersecting segment 3. The PED
        invalidates the segment-3 handle before it is used. On reaching the end of
        segment 2 the VOLUME_ENTRY request for segment 3 is denied (EF-061); the aircraft
        holds and requests a reroute; AER (VOLUME_ENTRY, DENY, n=9) broadcast.</li>
        <li>A new AAO at g_air 413 authorizes segments 3a-3b. Flight continues.</li>
        <li>Over D7, P_payload holds (inside zone, h below limit, speed and tilt within
        bounds, positions consistent). PAYLOAD_RELEASE handle consumed, receipt committed,
        latch solenoid powered for its window. A police officer nearby sees the parcel
        lowered and, about three seconds later, the Observer app shows a verified record
        (PAYLOAD_RELEASE, ALLOW) from the enforcement domain of the identified
        aircraft.</li>
      </ol>
    </section>

    <section anchor="vectors" numbered="true">
      <name>Test Vector Classes</name>
      <t>The accompanying reference repository includes deterministic byte-level
      vectors for selected BPC, AER/KDR, and authenticated-fragmentation cases. Future
      revisions of this document are expected to include or normatively reference a
      broader set of vectors for the following classes: (1) U-CAD canonical encoding and digest using both the readable text-key
      representation and the compact integer-key profile; (2) handle bound to wrong sink;
      (3) SINGLE_USE replay; (4) envelope exit by position, speed, altitude, window, and
      aggregate ceiling; (5) generation advance affecting and not affecting the
      corridor; (6) revocation read inside consume; (7) GNSS/VIO disagreement;
      (8) offline window expiry; (9) composite COMMIT, CAS ABORT, and HOLD on
      unreachable log; (10) keyed BPC Binding Commitment computation; (11) compact
      Authority Reference resolution, including UNKNOWN and stale-reference denial;
      (12) BPC truncation at selected collision and attacker-work budgets; (13) collision
      guard ambiguity causing deny or escalation; (14) authenticated fragment generation,
      cross-session mixing rejection, missing-fragment denial, ordered reconstruction,
      and Root verification; (15) BPC capsule-authenticator computation and forgery-budget
      sizing; (16) sink-side reconstruction of the actual pending act and compact-binding
      comparison; (17) master-seed derivation of K_N and reverse-chain derivation through K_0; (18) AER tag computation;
      (19) Observer safety condition at the boundary x = i + d; (20) lost KDR recovery
      across several intervals; (21) evidence-epoch renewal before 16-bit index reuse;
      (22) Observer using network time with insufficient delta_max; (23) receipt
      presented as handle; and (24) AER, KDR, Anchor, or BPC evidence presented as
      execution authority.</t>
    </section>
  </back>
</rfc>
