<?xml version='1.0' encoding='utf-8'?>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<rfc category="info" docName="draft-das-precision-bounded-egress-03"
     ipr="trust200902" submissionType="IETF" xml:lang="en" version="3"
     tocInclude="true" tocDepth="3" symRefs="true" sortRefs="true">
  <front>
    <title abbrev="Access-Not-Egress">Access Is Not Egress: Precision-Bounded Location Release</title>
    <seriesInfo name="Internet-Draft" value="draft-das-precision-bounded-egress-03"/>
    <author fullname="Sangam Das" initials="S." surname="Das">
      <organization>Independent Inventor</organization>
      <address>
        <postal>
          <city>Balasore</city>
          <region>Odisha</region>
          <code>756001</code>
          <country>India</country>
        </postal>
        <email>info@sangamdas.com</email>
      </address>
    </author>
    <date year="2026" month="September" day="8"/>
    <area>Security</area>
    <keyword>location</keyword>
    <keyword>privacy</keyword>
    <keyword>data minimization</keyword>
    <keyword>egress</keyword>
    <keyword>execution finality</keyword>
    <abstract>
      <t>A device may legitimately possess exact location while an
      application, SDK, AI agent, analytics library, or foreign
      endpoint is entitled only to a coarser representation, a delayed
      or randomized representation, or no location at all. Operating
      system permission to read a fix does not answer whether that
      fix may leave the device at the requested precision.</t>
      <t>This document defines a precision-bounded egress profile: a
      data-minimization mechanism applied at the point of external
      disclosure, on top of an execution-finality architecture,
      applicable equally to conventional applications and to
      autonomous AI agents acting on a user's behalf. The gap this
      closes is concrete: an application that legitimately reads
      exact GPS for one on-device purpose commonly shares its process
      with an embedded SDK, agent tool, or cloud sync path that can
      forward the same exact coordinate to a destination that never
      needed it, without the user seeing that forwarding as a
      separate disclosure.</t>
      <t>A proposed release is a Location-Release Candidate Act and
      remains non-effective while a Protected Enforcement Domain
      evaluates purpose, requester, component, recipient, destination,
      jurisdiction, required precision, policy and revocation state,
      cumulative disclosure state, and intended egress sink. The
      Protected Enforcement Domain issues scoped, non-bearer,
      cryptographically bound finality authority for a specific
      precision ceiling, expressed using the JSON interoperability
      objects defined in this document. An independent egress
      Finality Sink verifies that authority against the actual
      outbound payload immediately before release, so the bound
      ceiling, rather than the requester's declared precision,
      determines what may leave the device.</t>
      <t>The permitted result may be exact data, a reduced
      representation, or denial. Data access is not data-export
      authority. Precise GPS access is not precise GPS-release
      authority.</t>
    </abstract>
  </front>
  <middle>
    <section anchor="intro">
      <name>Introduction</name>
      <t>Consider an assistant asked to find nearby pharmacies, or a
      weather application asked for a local forecast. The device
      already has a high-accuracy coordinate. The external service
      does not need that coordinate. City or region is sufficient.
      Under ordinary permission models the application that may read
      exact GPS is also, in practice, the component that may transmit
      it — including through an SDK, agent tool call, telemetry path,
      or cloud sync that the user never saw as a separate
      disclosure.</t>
      <t>This document treats the outbound release as the
      consequence that must be authorized. Local access may remain.
      Exact coordinates remain non-effective for external disclosure
      until purpose, recipient, destination, jurisdiction, precision
      ceiling, policy epoch, and sink binding have been verified. If
      exact precision is unnecessary, the Protected Enforcement Domain
      issues authority only for a coarser representation. If the
      application later places exact latitude and longitude on the
      wire, the egress Finality Sink detects a precision mismatch and
      the release stays non-effective.</t>
      <t>The profile uses the two-boundary execution-finality chain
      defined for AI-native network control in
      <xref target="I-D.das-6g-finality"/> and discussed for general
      AI interoperability in <xref target="I-D.das-ef-interop"/>:
      Candidate Act, Non-Effective State, Protected Enforcement
      Domain, protected validation evidence, scoped non-bearer
      finality authority, and independent Finality Sink verification.
      This document specifies only the location- and data-egress
      predicates, the precision ladder, cumulative-disclosure
      handling, and the JSON objects for that profile.</t>
      <t>The AI-agent case in this document (component type
      <tt>AI_AGENT</tt> in <xref target="json-profile"/>, and the
      attack discussed in <xref target="tm-attacks"/>) is a specific
      instance of a broader problem: an agentic tool call that decides
      to forward local data to a foreign provider is itself a
      Candidate Act, whether the data is location or another
      protected value. The general binding of execution finality to
      tool-call dispatch — covering <tt>tool_use</tt>/computer-use
      style interfaces, function-calling interfaces, and MCP tool
      invocation — is specified separately in
      <xref target="I-D.das-agentic-tool-binding"/>. This document
      does not depend on that draft and can be implemented for
      location alone; the two are complementary where an
      implementation's egress sink also needs to gate agentic tool
      calls in general.</t>
    </section>

    <section anchor="rfc2119">
      <name>Requirements Language</name>
      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL",
      "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT
      RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be
      interpreted as described in BCP 14 <xref target="RFC2119"/>
      <xref target="RFC8174"/> when, and only when, they appear in all
      capitals, as shown here.</t>
      <t>Failure to establish current finality authority MUST NOT be
      converted into permission to release protected location or
      other sensitive data.</t>
    </section>

    <section anchor="terminology">
      <name>Terminology</name>
      <dl newline="true">
        <dt>Location-Release Candidate Act</dt>
        <dd>A Candidate Act whose intended consequence is external
        disclosure of location or a location-derived signal,
        including exact coordinates, a mobility trace, proximity, or
        sensor-derived location.</dd>
        <dt>Available precision</dt>
        <dd>The finest representation the local environment currently
        holds. Available precision MUST NOT by itself authorize
        release at that precision.</dd>
        <dt>Authorized precision</dt>
        <dd>The coarsest-or-equal representation permitted to become
        externally effective for a particular act. The Finality Sink
        MUST treat authorized precision as a ceiling on the outbound
        payload.</dd>
        <dt>Precision transformation</dt>
        <dd>A PED-directed reduction of available data to the
        authorized representation before or at the sink, for example
        city label, grid cell, shortened geohash, delay, or
        randomization.</dd>
        <dt>Egress Finality Sink</dt>
        <dd>The first boundary at which the location representation
        would leave the protected environment. Depending on
        deployment this MAY be an OS data broker, network egress
        filter, browser upload control, API gateway, enterprise agent,
        or equivalent. A component is a sink only if the release is
        technically non-completable without successful
        verification.</dd>
        <dt>Cumulative disclosure state</dt>
        <dd>Protected state describing prior releases in a policy
        window, used to decide whether another individually
        acceptable release would create an unauthorized movement
        history or equivalent exposure.</dd>
      </dl>
      <t>Candidate Act, Non-Effective State, Protected Enforcement
      Domain (PED), Protected Validation Evidence, scoped non-bearer
      finality authority, and Finality Sink are used as in
      <xref target="I-D.das-6g-finality"/>.</t>
    </section>

    <section anchor="problem">
      <name>Problem Scope</name>
      <t>Mobile operating systems commonly frame location as an
      application permission: may application A read the user's
      location. The release question is narrower and later. May
      application A, or one of its SDKs, agents, analytics
      components, tools, or external processors, emit this precision
      to recipient B, for purpose C, in jurisdiction D, at time E,
      given prior releases F.</t>
      <t>Those questions are not equivalent. An application can have
      a legitimate local need for a precise fix — navigation, E911,
      on-device geofencing — while no external weather, advertising,
      or model-inference endpoint has a corresponding need. ENISA
      mobile-privacy guidance already states that an application
      should not store an exact location point where a generic area
      is sufficient <xref target="ENISA-MOBILE"/>. European
      data-protection guidance treats the same idea as data
      minimisation and protection by default
      <xref target="GDPR-MIN"/>.</t>
      <t>Aggregation changes the risk further. Individually ordinary
      coordinates, timestamps, and routes can reveal workplaces,
      routines, relationships, or activity around sensitive sites
      once correlated at machine scale. Publicly reported
      fitness-tracking heatmaps around military installations
      illustrated that user permission for a benign purpose did not
      eliminate the downstream intelligence consequence
      <xref target="NATO-STRATCOM"/>. This document does not treat
      that class of harm as a reason to ban location. It treats it as
      a reason not to make the finest available representation the
      default egress object.</t>
      <t>AI changes the economics, not the geometry, of that
      inference. Clustering, mobility analysis, and multisource
      fusion that once required specialist effort can run
      continuously over large datasets. The security significance of
      a disclosure therefore depends on what the value enables a
      downstream machine to infer, not only on whether a single
      record looks sensitive in isolation.</t>
    </section>

    <section anchor="related">
      <name>Relationship to Existing Mechanisms</name>
      <t>This profile is intended to consume decisions from existing
      permission, consent, and policy systems. Those systems remain
      inputs. They do not replace sink verification of the outbound
      payload.</t>
      <section>
        <name>Operating-System Location Permissions</name>
        <t>Current mobile platforms distinguish, to varying degrees,
        approximate and precise location, one-time and continuous
        access, and foreground versus background access. Those
        controls govern whether an application process may read a
        provider. They typically do not bind a particular outbound
        payload, recipient, jurisdiction, or precision ceiling at the
        moment of network egress, and they often do not distinguish
        the first-party application from an embedded SDK on the same
        release path.</t>
      </section>
      <section>
        <name>W3C Geolocation and Permission Policy</name>
        <t>The W3C Geolocation API and related permission policy give
        a web origin a location reading after user permission
        <xref target="W3C-GEO"/>. They do not, by themselves, inspect
        a later fetch, beacon, or agent tool call that forwards that
        reading at full precision to a third party.</t>
      </section>
      <section>
        <name>Coarsening, Fuzzing, and Differential Privacy</name>
        <t>Geohash prefixes, grid snapping, geo-fuzzing, delay, and
        differential-privacy mechanisms are compatible with this
        profile. They are candidate transformation methods. This
        document does not select one transformation. It requires that
        whatever representation is actually sent is the representation
        bound to the authority, and that a finer representation MUST
        NOT pass the sink under that authority.</t>
      </section>
      <section>
        <name>Path-Level Privacy Controls</name>
        <t>Oblivious endpoints, MASQUE-based proxying, and private
        relay services can hide the client's network location from a
        destination <xref target="RFC9298"/>. They do not bind the
        precision of application payload fields that already contain
        coordinates. Path privacy and payload-precision finality are
        complementary.</t>
      </section>
      <section>
        <name>What This Profile Adds</name>
        <ul>
          <li>precision as an authorization dimension, not only as a
          provider configuration;</li>
          <li>component identity (application versus SDK, agent,
          analytics, or advertising library) as a predicate;</li>
          <li>recipient, destination, and jurisdiction bindings on
          the release;</li>
          <li>optional cumulative-disclosure evaluation;</li>
          <li>sink-side comparison of authorized precision with the
          actual outbound payload; and</li>
          <li>fail-closed denial or mandatory downgrade rather than
          advisory minimisation.</li>
        </ul>
      </section>
    </section>

    <section anchor="architecture">
      <name>Architecture</name>
      <t>A Location-Release Candidate Act MUST NOT become
      externally effective merely because location permission was
      granted, the coordinate was already computed, an AI component
      selected a tool, or an upstream policy engine returned
      ALLOW.</t>
      <t>The act MUST remain in a Non-Effective State until the PED
      validates act-specific predicates, protected validation
      evidence is committed, scoped non-bearer finality authority is
      released, the egress Finality Sink independently verifies that
      authority against the outbound payload, and the authority is
      consumed or otherwise made unsuitable for unauthorized
      replay.</t>
      <figure>
        <name>Precision-bounded egress chain</name>
        <artwork><![CDATA[
local exact location remains inside protected domain
                    |
                    v
     LOCATION-RELEASE CANDIDATE ACT
                    |
                    v
            Non-Effective State
                    |
                    v
     Protected Enforcement Domain
        purpose, requester, component
        recipient, destination, jurisdiction
        required precision, user authorization
        policy/revocation epochs
        cumulative disclosure, sink identity
                    |
                    v
     protected evidence + scoped authority
                    |
                    v
           Egress Finality Sink
                    |
     +-- exact representation permitted
     +-- transformed representation permitted
     `-- release denied
]]></artwork>
      </figure>
      <t>PED approval alone MUST NOT release data. The sink MUST
      prevent effectuation on verification failure. A warning or
      audit record is not sufficient.</t>
    </section>

    <section anchor="profile">
      <name>Precision-Bounded Egress Profile</name>
      <section>
        <name>Precision Ladder</name>
        <t>Implementations SHOULD be able to distinguish at least the
        following authorized-precision classes:</t>
        <ul>
          <li>EXACT</li>
          <li>METER_10</li>
          <li>METER_100</li>
          <li>GRID</li>
          <li>GEOHASH</li>
          <li>CITY</li>
          <li>REGION</li>
          <li>COUNTRY</li>
          <li>DELAYED or RANDOMIZED variants of the above</li>
          <li>NONE</li>
        </ul>
        <t>The applicable class MUST be determined by declared
        purpose and current authorization state, not by the mere fact
        that the requester asked for the finest available value. Where
        a lower-precision representation is sufficient, the
        higher-precision representation SHOULD remain non-effective
        for egress.</t>
      </section>
      <section anchor="precision-quantization">
        <name>Illustrative Precision-Class Quantization</name>
        <t>The class names in the precision ladder are authorization
        labels, not self-defining measurements: a sink cannot decide
        whether an observed payload exceeds an authorized ceiling
        without a concrete quantization rule behind each name. This
        document does not mandate the following mapping as the sole
        conformant one, since coordinate reference system, datum, and
        rounding choices are properly a matter for working-group
        consensus rather than a single author's default. It is
        provided so that an implementer or reviewer has a concrete
        illustration to react to rather than an unquantified label,
        and SHOULD be treated as non-normative until a revision fixes
        a single mandatory-to-implement mapping:</t>
        <table>
          <thead>
            <tr><th>Class</th><th>Illustrative quantization</th></tr>
          </thead>
          <tbody>
            <tr><td>EXACT</td><td>Unrounded WGS84 latitude/longitude
            as measured, full available decimal precision.</td></tr>
            <tr><td>METER_10</td><td>WGS84 latitude/longitude rounded
            to the grid cell implied by approximately 4 decimal
            places (~11 m at the equator), or an equivalent
            fixed-size local-tangent-plane grid.</td></tr>
            <tr><td>METER_100</td><td>WGS84 latitude/longitude
            rounded to the grid cell implied by approximately 3
            decimal places (~111 m at the equator); latitude-dependent
            longitude scale error MUST be accounted for above roughly
            60 degrees latitude.</td></tr>
            <tr><td>GRID</td><td>Snapped to a fixed-size equal-area
            or equal-angle cell (for example a 1 km reference grid);
            the released value is the cell identifier or cell
            centroid, not the original coordinate.</td></tr>
            <tr><td>GEOHASH</td><td>A geohash string truncated to a
            fixed prefix length agreed by policy — for example a
            5-character prefix (~4.9 km x 4.9 km cell) or a
            7-character prefix (~153 m x 153 m cell); the sink MUST
            treat the released prefix length, not the underlying
            coordinate, as the authorized ceiling.</td></tr>
            <tr><td>CITY</td><td>A locality name resolved from a
            fixed, versioned gazetteer reference, with no coordinate
            field present in the payload.</td></tr>
            <tr><td>REGION</td><td>A first-level administrative
            division (state, province, or equivalent) from the same
            gazetteer reference, with no locality or coordinate
            field present.</td></tr>
            <tr><td>COUNTRY</td><td>An ISO 3166-1 country code, with
            no finer administrative, locality, or coordinate field
            present.</td></tr>
          </tbody>
        </table>
        <t>Two implementation requirements follow regardless of which
        specific quantization a deployment adopts. First, the
        released payload MUST contain only the fields implied by the
        authorized class — a CITY release MUST NOT carry a latitude
        or longitude field alongside the city name, and a GEOHASH
        release MUST NOT carry a longer prefix than the authorized
        length. Second, the quantization boundary itself SHOULD be
        deterministic and independent of the exact input value's
        position within a cell, so that repeated exact fixes within
        the same cell do not leak finer information through
        boundary-crossing timing; this document does not specify a
        boundary-crossing mitigation and treats it as a documented
        residual risk consistent with <xref target="refimpl-limits"/>.</t>
      </section>
      <section>
        <name>PED Predicates</name>
        <t>For a location-release act the PED SHOULD evaluate:</t>
        <ul>
          <li>requesting application and component identity and
          type;</li>
          <li>declared purpose and whether exact precision is
          necessary for that purpose;</li>
          <li>recipient, destination, processor type, and
          jurisdiction;</li>
          <li>current user authorization and policy/revocation
          epochs;</li>
          <li>data class and requested fields;</li>
          <li>whether the release is one-shot or continuous; and</li>
          <li>cumulative disclosure state where the policy requires
          it;</li>
          <li>intended egress sink identity.</li>
        </ul>
        <t>Possible PED decisions include ALLOW at the requested
        precision, ALLOW_WITH_TRANSFORMATION at a coarser precision,
        DELAY, RANDOMIZE, ESCALATE, or DENY. Exact GPS is not the
        default success path.</t>
      </section>
      <section>
        <name>Worked Example</name>
        <t>Purpose: nearby pharmacy discovery or local weather.
        Requested precision: exact GPS. Necessary precision: city or
        local area. Destination: external discovery or forecast
        service. Decision: exact GPS denied; coarse locality allowed.
        The external service receives "Balasore, Odisha" rather than
        a coordinate. The application can still perform the task.
        Utility did not require unrestricted data authority.</t>
      </section>
      <section>
        <name>Cumulative Disclosure</name>
        <t>An implementation MAY incorporate cumulative disclosure
        state so that repeated individually acceptable releases do
        not automatically create an unauthorized movement history.
        This state is policy-dependent and can cause a later request
        to be downgraded, delayed, randomized, rate-limited, or
        denied.</t>
        <t>Cumulative disclosure state is itself sensitive.
        Implementations SHOULD keep it device-local or inside the
        PED, SHOULD minimise retained identifiers, SHOULD bound
        retention to the policy window, and MUST NOT export the state
        as a movement history under authority issued for a single
        coarse release. A later revision may define a narrower
        privacy-preserving accumulator. This version only requires
        that if the state is used, it is treated as protected input
        to the PED, not as another egress object.</t>
      </section>
      <section>
        <name>Jurisdiction-Neutral Policy Input</name>
        <t>This architecture does not choose among national privacy
        rules. The PED consumes the policy applicable to the relevant
        jurisdiction and user or enterprise authorization state.
        United States, European, Indian, or other deployments MAY
        produce different authorized-precision decisions from the
        same Candidate Act. The protocol's role is to keep the
        selected policy technically binding at the point of
        release.</t>
      </section>
      <section>
        <name>Sink Placement and Alternate Paths</name>
        <t>Possible sink locations include an OS location or data
        broker, a network-egress filter, a browser upload control, an
        API gateway, a cloud-sync agent, and enterprise wrapping of
        SDK traffic. If more than one path can emit the same
        protected representation — application upload, analytics SDK,
        advertising SDK, telemetry, clipboard, file export, agent
        tool call, background sync — each path capable of that
        consequence MUST be subject to the same precision ceiling or
        MUST be unable to emit the protected fields.</t>
        <t>This document does not specify a single on-device
        enforcement point for every operating system. An
        implementation that leaves an equivalent path unverified does
        not satisfy the profile for that data class.</t>
      </section>
    </section>

    <section anchor="json-profile">
      <name>JSON Interoperability Profile</name>
      <t>This section defines the semantic JSON contract for
      location-release acts. It does not require one transport.
      Objects MAY move over protected local IPC, OS broker APIs,
      HTTPS, or enterprise agents. A transport binding MUST preserve
      object integrity, sink identity, freshness, and non-bearer
      authority semantics.</t>

      <section>
        <name>LocationReleaseCandidate Object</name>
        <sourcecode type="json"><![CDATA[
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "urn:ietf:params:json-schema:precision-egress:location-candidate:1",
  "title": "LocationReleaseCandidate",
  "type": "object",
  "additionalProperties": false,
  "required": [
    "version", "object_type", "candidate_act_id", "act_type",
    "created_at", "expires_at", "requester", "purpose",
    "source_data", "requested_release", "destination",
    "policy_state", "freshness", "finality_sink"
  ],
  "properties": {
    "version": { "type": "string", "const": "1.0" },
    "object_type": {
      "type": "string",
      "const": "location_release_candidate"
    },
    "candidate_act_id": { "type": "string", "minLength": 16 },
    "act_type": { "type": "string", "const": "LOCATION_RELEASE" },
    "created_at": { "type": "string", "format": "date-time" },
    "expires_at": { "type": "string", "format": "date-time" },
    "requester": {
      "type": "object",
      "required": ["application_id"],
      "properties": {
        "application_id": { "type": "string" },
        "component_id": { "type": "string" },
        "component_type": {
          "type": "string",
          "enum": [
            "APPLICATION", "SDK", "AI_AGENT", "ANALYTICS",
            "ADVERTISING", "BROWSER", "CLOUD_SERVICE",
            "SYSTEM_SERVICE", "OTHER"
          ]
        }
      }
    },
    "purpose": {
      "type": "object",
      "required": ["purpose_id", "declared_purpose"],
      "properties": {
        "purpose_id": { "type": "string" },
        "declared_purpose": { "type": "string" },
        "purpose_epoch": { "type": "integer", "minimum": 0 },
        "user_intent_reference": { "type": "string" }
      }
    },
    "source_data": {
      "type": "object",
      "required": ["data_class", "available_precision"],
      "properties": {
        "data_class": {
          "type": "string",
          "enum": [
            "LOCATION", "MOBILITY_TRACE",
            "PROXIMITY", "SENSOR_DERIVED_LOCATION"
          ]
        },
        "available_precision": {
          "type": "string",
          "enum": [
            "EXACT", "METER_10", "METER_100", "GRID",
            "GEOHASH", "CITY", "REGION", "COUNTRY"
          ]
        },
        "local_only": { "type": "boolean" },
        "source_reference": { "type": "string" }
      }
    },
    "requested_release": {
      "type": "object",
      "required": ["requested_precision", "fields"],
      "properties": {
        "requested_precision": {
          "type": "string",
          "enum": [
            "EXACT", "METER_10", "METER_100", "GRID",
            "GEOHASH", "CITY", "REGION", "COUNTRY", "NONE"
          ]
        },
        "fields": { "type": "array", "items": { "type": "string" } },
        "retention_seconds": { "type": "integer", "minimum": 0 },
        "continuous": { "type": "boolean" }
      }
    },
    "destination": {
      "type": "object",
      "required": ["destination_id", "jurisdiction"],
      "properties": {
        "destination_id": { "type": "string" },
        "endpoint": { "type": "string" },
        "recipient_id": { "type": "string" },
        "processor_type": {
          "type": "string",
          "enum": [
            "FIRST_PARTY", "PROCESSOR", "SDK_VENDOR",
            "AI_PROVIDER", "ANALYTICS", "AD_NETWORK",
            "PUBLIC_AUTHORITY", "OTHER"
          ]
        },
        "jurisdiction": { "type": "string" },
        "cloud_region": { "type": "string" }
      }
    },
    "cumulative_disclosure": {
      "type": "object",
      "properties": {
        "window_seconds": { "type": "integer", "minimum": 0 },
        "prior_release_count": { "type": "integer", "minimum": 0 },
        "prior_precision_max": { "type": "string" },
        "movement_history_risk": {
          "type": "string",
          "enum": ["LOW", "MEDIUM", "HIGH", "CRITICAL"]
        }
      }
    },
    "policy_state": {
      "type": "object",
      "required": ["policy_epoch", "revocation_epoch"],
      "properties": {
        "policy_epoch": { "type": "integer", "minimum": 0 },
        "authority_epoch": { "type": "integer", "minimum": 0 },
        "revocation_epoch": { "type": "integer", "minimum": 0 },
        "policy_profile_id": { "type": "string" },
        "regulatory_profile_id": { "type": "string" }
      }
    },
    "freshness": {
      "type": "object",
      "required": ["nonce"],
      "properties": {
        "nonce": { "type": "string", "minLength": 16 },
        "sequence": { "type": "integer", "minimum": 0 },
        "session_id": { "type": "string" }
      }
    },
    "finality_sink": {
      "type": "object",
      "required": ["sink_id", "sink_type"],
      "properties": {
        "sink_id": { "type": "string" },
        "sink_type": {
          "type": "string",
          "enum": [
            "NETWORK_EGRESS", "OS_DATA_BROKER", "BROWSER_UPLOAD",
            "API_GATEWAY", "CLOUD_SYNC", "TELEMETRY",
            "ANALYTICS_SDK", "AD_SDK", "FILE_EXPORT",
            "DATABASE_EXPORT", "OTHER"
          ]
        }
      }
    }
  }
}
]]></sourcecode>
      </section>

      <section>
        <name>Precision Decision Object</name>
        <sourcecode type="json"><![CDATA[
{
  "version": "1.0",
  "object_type": "precision_policy_decision",
  "decision_id": "ppd-cf0c49",
  "candidate_act_id": "loc-5c8238a4",
  "decision": "ALLOW_WITH_TRANSFORMATION",
  "requested_precision": "EXACT",
  "authorized_precision": "CITY",
  "transformation": {
    "type": "PRECISION_REDUCTION",
    "method": "CITY_LABEL",
    "parameters": {
      "country_code": "IN",
      "region": "Odisha",
      "city": "Balasore"
    }
  },
  "validated_predicates": {
    "application_valid": true,
    "component_valid": true,
    "purpose_valid": true,
    "exact_precision_necessary": false,
    "destination_valid": true,
    "recipient_valid": true,
    "jurisdiction_valid": true,
    "user_authorization_valid": true,
    "policy_epoch_valid": true,
    "revocation_state_valid": true,
    "cumulative_disclosure_acceptable": true,
    "sink_binding_valid": true
  },
  "reason_codes": [
    "MINIMIZATION_REQUIRED",
    "EXACT_PRECISION_NOT_NECESSARY"
  ]
}
]]></sourcecode>
      </section>

      <section>
        <name>EgressFinalityAuthority Object</name>
        <sourcecode type="json"><![CDATA[
{
  "version": "1.0",
  "object_type": "egress_finality_authority",
  "authority_id": "efa-e71ad531",
  "candidate_act_id": "loc-5c8238a4",
  "decision_id": "ppd-cf0c49",
  "evidence_id": "pve-location-332",
  "scope": {
    "data_class": "LOCATION",
    "authorized_precision": "CITY",
    "permitted_fields": ["city", "region", "country"],
    "recipient_id": "weather-provider",
    "destination_id": "weather.example",
    "jurisdiction": "IN",
    "retention_seconds_max": 3600
  },
  "binding": {
    "candidate_act_digest": {
      "algorithm": "SHA-256",
      "value": "base64url-location-act-digest"
    },
    "nonce": "B21C9924FF77A183",
    "policy_epoch": 42,
    "authority_epoch": 11,
    "revocation_epoch": 7,
    "finality_sink_id": "egress-sink-01",
    "protected_state_reference": "ped-location-state-91"
  },
  "lifetime": {
    "issued_at": "2026-08-26T17:45:01Z",
    "expires_at": "2026-08-26T17:45:10Z",
    "single_use": true
  },
  "issuer": {
    "ped_id": "ped-device-01",
    "key_id": "ped-key-location-2",
    "signature": "base64url-signature"
  }
}
]]></sourcecode>
      </section>

      <section>
        <name>EgressSinkVerify Request and Response</name>
        <t>The sink verifies the actual outbound payload immediately
        before release. Declared precision is not sufficient. The
        payload fields MUST be within the authorized ceiling.</t>
        <sourcecode type="json"><![CDATA[
{
  "operation": "EgressSinkVerify",
  "request_id": "egress-req-771",
  "candidate_act_id": "loc-5c8238a4",
  "authority_id": "efa-e71ad531",
  "sink": {
    "sink_id": "egress-sink-01",
    "sink_type": "NETWORK_EGRESS"
  },
  "outbound_payload": {
    "content_type": "application/json",
    "data_class": "LOCATION",
    "declared_precision": "CITY",
    "fields": {
      "city": "Balasore",
      "region": "Odisha",
      "country": "IN"
    },
    "payload_digest": {
      "algorithm": "SHA-256",
      "value": "base64url-payload-digest"
    }
  },
  "destination": {
    "destination_id": "weather.example",
    "endpoint": "https://weather.example/forecast",
    "recipient_id": "weather-provider",
    "jurisdiction": "IN"
  },
  "freshness": { "nonce": "B21C9924FF77A183" }
}
]]></sourcecode>
        <sourcecode type="json"><![CDATA[
{
  "operation": "EgressSinkVerify",
  "request_id": "egress-req-771",
  "decision": "ALLOW",
  "verification": {
    "authority_signature": "VALID",
    "candidate_act_binding": "MATCH",
    "data_class": "MATCH",
    "payload_precision": "CITY_WITHIN_AUTHORIZED_CEILING",
    "field_scope": "MATCH",
    "recipient": "MATCH",
    "destination": "MATCH",
    "jurisdiction": "MATCH",
    "policy_epoch": "CURRENT",
    "revocation_epoch": "CURRENT",
    "nonce": "FRESH",
    "consumption_state": "UNUSED",
    "sink_binding": "MATCH"
  },
  "consumption": {
    "authority_id": "efa-e71ad531",
    "status": "CONSUMED",
    "consumed_at": "2026-08-26T17:45:02Z"
  },
  "release": {
    "permitted": true,
    "released_precision": "CITY",
    "release_id": "release-881"
  }
}
]]></sourcecode>
      </section>

      <section>
        <name>Precision-Mismatch Denial</name>
        <sourcecode type="json"><![CDATA[
{
  "operation": "EgressSinkVerify",
  "request_id": "egress-req-772",
  "decision": "DENY",
  "error": {
    "code": "EF_PRECISION_MISMATCH",
    "message": "Outbound payload exceeds authorized precision.",
    "retryable": false
  },
  "verification": {
    "authority_signature": "VALID",
    "authorized_precision": "CITY",
    "observed_payload_precision": "EXACT",
    "destination": "MATCH",
    "jurisdiction": "MATCH",
    "sink_binding": "MATCH"
  },
  "release": { "permitted": false }
}
]]></sourcecode>
      </section>

      <section>
        <name>Complete Exact-to-Coarse Transaction</name>
        <sourcecode type="json"><![CDATA[
{
  "step_1_local_state": {
    "available_location": {
      "latitude": 21.494321,
      "longitude": 86.932145,
      "accuracy_meters": 4.2
    },
    "external_effect": "NONE"
  },
  "step_2_candidate_act": {
    "candidate_act_id": "loc-5c8238a4",
    "requester": {
      "application_id": "weather-app",
      "component_id": "forecast-module",
      "component_type": "APPLICATION"
    },
    "purpose": {
      "purpose_id": "local-weather",
      "declared_purpose": "Provide weather for the user's area"
    },
    "requested_release": {
      "requested_precision": "EXACT",
      "fields": ["latitude", "longitude"]
    },
    "destination": {
      "destination_id": "weather.example",
      "recipient_id": "weather-provider",
      "jurisdiction": "IN"
    }
  },
  "step_3_ped_decision": {
    "decision": "ALLOW_WITH_TRANSFORMATION",
    "authorized_precision": "CITY",
    "reason": "Exact coordinates are not necessary."
  },
  "step_4_authorized_payload": {
    "city": "Balasore",
    "region": "Odisha",
    "country": "IN"
  },
  "step_5_sink_verification": {
    "decision": "ALLOW",
    "exact_coordinates_released": false,
    "authority_consumed": true
  }
}
]]></sourcecode>
      </section>

      <section>
        <name>Cumulative Disclosure Extension</name>
        <sourcecode type="json"><![CDATA[
{
  "cumulative_disclosure": {
    "subject_scope": "device-local-pseudonymous-subject",
    "window_seconds": 86400,
    "prior_release_count": 144,
    "prior_precision_max": "METER_100",
    "distinct_destinations": 6,
    "movement_history_risk": "HIGH",
    "policy_action": "DOWNGRADE_TO_REGION"
  }
}
]]></sourcecode>
      </section>
    </section>

    <section anchor="operation">
      <name>Protocol Operation</name>
      <section>
        <name>Digest and Substitution</name>
        <t>A Candidate Act SHOULD have a stable digest over
        load-bearing attributes including data class, requested and
        authorized precision, destination, recipient, jurisdiction,
        purpose, permitted fields, and sink identity. Changing exact
        GPS to city, recipient A to recipient B, or sink A to sink B
        MUST invalidate previously issued authority unless the
        changed operation is separately authorized.</t>
      </section>
      <section>
        <name>Sink Verification</name>
        <t>Immediately before release the sink MUST verify authority
        integrity, act binding, sink identity, expiry and consumption
        state, nonce freshness, policy and revocation epochs,
        destination and jurisdiction, authorized field set, and that
        observed payload precision does not exceed the authorized
        ceiling. On success, single-use authority SHOULD be consumed
        atomically with release.</t>
        <t>Implementations SHOULD define a canonicalization for
        payload inspection sufficient to detect exact coordinates
        presented under a city label, hidden in additional JSON
        fields, or duplicated on a parallel header. This version does
        not specify a complete media-type inspection algorithm.
        Absence of such inspection is a residual risk and MUST be
        documented by the implementation.</t>
        <t>An implementation's canonicalization SHOULD explicitly
        account for the following evasion vectors, since a sink that
        checks only a payload's declared top-level fields in one
        expected encoding does not close them:</t>
        <ul>
          <li>coordinate values re-encoded in a nested or duplicated
          JSON field, an HTTP header, a URL query parameter, a cookie,
          or request metadata rather than the expected top-level
          field;</li>
          <li>coordinate values transported inside a non-JSON or
          binary-native encoding — protobuf, CBOR, MessagePack, a
          custom binary stream, or a compressed body (gzip, brotli,
          or similar) — that the sink's JSON-oriented inspection would
          otherwise pass through uninspected;</li>
          <li>coordinate values split across multiple fields or
          messages such that no single field individually exceeds the
          authorized precision (for example separately transmitting a
          rounded value and a fine-grained offset or delta);</li>
          <li>coordinate values embedded in a payload the sink does
          not parse as structured data at all, such as image or audio
          metadata, a free-text field, or a file attachment; and</li>
          <li>coordinate-derived values that are individually below
          the precision ceiling but that, combined with other
          fields the sink does treat as authorized (timestamp,
          device identifier, network measurement), allow the
          recipient to reconstruct a finer position than any single
          released field discloses.</li>
        </ul>
        <t>A sink MUST reject a release when its canonicalization
        cannot establish that the actual outbound representation, in
        whatever encoding it is transmitted, stays within the
        authorized precision ceiling and field set. Treating an
        unrecognized encoding as implicitly compliant is a fail-open
        behavior and is inconsistent with <xref target="security"/>.
        This document does not claim that any implementation,
        including the reference implementation in
        <xref target="refimpl"/>, currently closes every vector listed
        above; see <xref target="refimpl-limits"/> and
        <xref target="tm-attacks"/> for the corresponding limitations
        and attacks.</t>
      </section>
      <section>
        <name>Hot Path and Escalation</name>
        <t>Repeated releases inside a previously validated envelope
        — same application, purpose, destination, jurisdiction, and
        precision ceiling — MAY use a hot path with local protected
        state and short-lived authority. The hot path MUST still
        perform sink verification. Cache miss, unknown destination,
        jurisdiction uncertainty, continuous-trace requests, exact
        precision, or elevated cumulative-disclosure risk SHOULD
        escalate. Timeout MUST NOT be treated as approval.</t>
      </section>
      <section>
        <name>Failure Codes</name>
        <t>The following identifiers are design suggestions and are
        not IANA assignments. Location-egress implementations SHOULD
        be able to express at least:</t>
        <ul>
          <li>EF-002 NO_FINALITY_AUTHORITY</li>
          <li>EF-005 AUTHORITY_ALREADY_USED</li>
          <li>EF-006 REPLAY_DETECTED</li>
          <li>EF-012 SCOPE_MISMATCH</li>
          <li>EF-020 DESTINATION_MISMATCH</li>
          <li>EF-021 JURISDICTION_MISMATCH</li>
          <li>EF-023 PRECISION_MISMATCH</li>
          <li>EF-030 POLICY_EPOCH_MISMATCH</li>
          <li>EF-031 REVOCATION_STATE_MISMATCH</li>
          <li>EF-040 SINK_MISMATCH</li>
          <li>EF-070 ESCALATION_REQUIRED</li>
          <li>EF-080 FAIL_CLOSED</li>
        </ul>
        <t>A PRECISION_MISMATCH denial MAY include a remediation such
        as DOWNGRADE_TO_CITY. Other permitted actions include deny,
        delay, randomize, redact, quarantine, request fresh
        authority, or escalate.</t>
      </section>
    </section>

    <section anchor="refimpl">
      <name>Reference Implementation</name>
      <t>A runnable reference implementation of this profile exists.
      It is provided to make the architecture inspectable and
      testable, not as a claim of production readiness. This section
      reports what the reference implementation is, what it measured,
      and what it does not establish. Where a claim below is
      environment-specific, it is stated as an observation on a
      single execution environment rather than as a general
      performance or security property of the protocol.</t>

      <section anchor="refimpl-env">
        <name>Implementation Environment</name>
        <t>The reference implementation is written in Python
        (verified against 3.11 through 3.13, with final verification
        on 3.13.5). Python was chosen for readability, reproducibility,
        protocol experimentation, testability, and a direct mapping
        between the terminology in <xref target="terminology"/> and
        executable objects. It is not the implementation language
        expected for a production operating-system kernel, NIC,
        browser engine, or secure enclave; a production implementation
        is more likely to use Rust, C, C++, Swift, Kotlin/Android
        system services, eBPF, kernel modules, browser-engine code,
        TEE secure-world code, HSM applications, SmartNIC/DPU
        firmware, FPGA logic, or gateway/network-function code,
        depending on deployment target.</t>
        <t>Primary dependencies were Pydantic (strict protocol
        models, enum and field validation, schema generation, and
        rejection of malformed input rather than silent acceptance),
        the <tt>cryptography</tt> library (Ed25519 signing and
        verification), and pytest (the automated test suite). The
        environment used for the reported measurements was Linux on
        x86_64 with approximately 5 visible logical CPUs and 5.8 GiB
        of visible RAM; the host CPU model string reported 80 cores,
        but only the visible logical CPUs were available to the
        benchmark process. A formal peak-memory (RSS) measurement has
        not yet been performed.</t>
      </section>

      <section anchor="refimpl-tests">
        <name>Test Coverage</name>
        <t>The reference implementation carries 98 automated tests,
        all passing at the time of this writing. The suite is
        weighted toward DENY and adversarial paths rather than
        success paths, because the invariant that matters is not
        "valid request produces ALLOW" but "a load-bearing mismatch
        leaves the protected release non-effective." The suite
        exercises, among other cases: valid coarse and exact release;
        exact-to-coarse transformation; hidden exact coordinates
        under a coarse label; replay of consumed authority; stale
        policy or revocation epochs; sink, destination, and recipient
        substitution; field-scope violations; cumulative-risk
        escalation; persistence of consumption state across an SQLite
        reopen; and concurrent attempts to consume the same
        single-use authority. Passing these tests demonstrates
        consistent enforcement of the modeled rules across the tested
        scenarios. It does not constitute a formal security proof; see
        <xref target="refimpl-limits"/>.</t>
      </section>

      <section anchor="refimpl-variants">
        <name>Cryptographic and Persistence Variations</name>
        <t>The reference implementation signs finality authority
        using Ed25519 by default: the PED holds signing capability
        and the Finality Sink holds only verification capability, so
        the sink does not require the private key. An HMAC-SHA256
        variation is also included to show that the execution-finality
        semantics defined in this document are not mathematically
        tied to Ed25519; HMAC requires shared secret material and
        therefore has a different trust model, and is not treated as
        an equivalent substitute for asymmetric trust separation.</t>
        <t>Two persistence backends are demonstrated. An in-memory
        store is used for unit tests and deterministic short-lived
        experiments; state does not survive a process restart and is
        not rollback- or tamper-resistant. An SQLite store
        demonstrates durable evidence, activation state, consumption
        state, and replay state, and the suite confirms that consumed
        authority remains consumed after the database is reopened.
        SQLite is not a Protected Enforcement Domain: an attacker
        with sufficient privilege can modify the database file,
        delete state, restore an older copy, or otherwise roll back
        consumption state. A high-assurance production deployment is
        expected to require a secure enclave, TEE, HSM, TPM-backed
        state, hardware monotonic counters, kernel-protected storage,
        secure element, or DPU/SmartNIC protected state instead.</t>
      </section>

      <section anchor="refimpl-payload">
        <name>Payload Inspection</name>
        <t>The Finality Sink in the reference implementation does not
        trust a <tt>declared_precision</tt> label; it inspects the
        actual structured outbound payload. A payload such as
        <tt>{"declared_precision": "CITY", "city": "Balasore",
        "latitude": 21.494321, "longitude": 86.932145}</tt> is
        rejected because the observed payload exceeds the authorized
        representation. The implementation also performs
        meter-level coordinate-granularity checks so that a
        latitude/longitude pair is not automatically treated as
        coarse merely because the application labeled it
        <tt>METER_100</tt>. This is a simplified reference check, not
        a complete geospatial-precision or datum specification, and
        not a general-purpose data-loss-prevention engine; see
        <xref target="refimpl-limits"/>.</t>
      </section>

      <section anchor="refimpl-perf">
        <name>Measured Performance</name>
        <t>A 5,000-iteration benchmark of the Ed25519 configuration
        on the environment described in <xref target="refimpl-env"/>
        produced the following combined PED-plus-sink local
        processing latency:</t>
        <artwork><![CDATA[
Combined local finality path (Ed25519, n=5000):
  mean: 500.7 microseconds  (~0.501 ms)
  p50:  457.7 microseconds  (~0.458 ms)
  p95:  662.7 microseconds  (~0.663 ms)
  p99:  882.0 microseconds  (~0.882 ms)
]]></artwork>
        <t>An HMAC-SHA256 configuration produced a lower combined
        synthetic cost (mean approximately 297.7 microseconds, p99
        approximately 652.3 microseconds), which is reported for
        comparison only and is not evidence that HMAC is the
        preferred production configuration; cryptographic trust
        separation, discussed in <xref target="refimpl-variants"/>,
        is a stronger consideration than microbenchmark speed
        alone.</t>
        <t>For a local, bounded, already-policy-resolved, short-lived,
        hot-path egress decision as described in
        <xref target="operation"/>, this document suggests an
        engineering target of p95 &lt;= 1 millisecond, with a
        stronger experimental objective near p99 &lt;= 1 millisecond.
        The measured Ed25519 run met both on this environment. This
        is an engineering target for the local hot path only, not a
        protocol requirement and not a production performance
        guarantee.</t>
        <t>The target in this section applies only to a hot path
        that reuses a previously validated envelope: same requester,
        purpose, destination, jurisdiction, precision ceiling,
        current policy, current revocation state, short-lived
        authority, local evidence, and local sink. Exact-precision
        requests, continuous traces, a new destination, an unknown
        recipient, jurisdiction uncertainty, cross-border transfer,
        high cumulative-disclosure risk, fresh user approval, fresh
        remote attestation, complex enterprise policy, or human
        approval are expected to use a slower, escalated path
        instead, consistent with <xref target="operation"/>.</t>
        <t>The measurement excludes GPS acquisition and GNSS
        processing, cellular or Wi-Fi transport, Internet latency,
        DNS resolution, TLS handshake, HTTP request time, cloud round
        trip, remote database lookup, browser IPC, Android Binder or
        iOS XPC overhead, TEE world switch, HSM request latency,
        remote attestation, remote policy service calls, external
        ledger interaction, VPN/proxy latency, full media inspection,
        encrypted-traffic decryption, and carrier network processing.
        The correct characterization of this result is that the
        Python reference implementation showed approximately 0.5 ms
        mean local PED-plus-sink processing in one synthetic
        execution environment. It is not a claim about total added
        latency to a real location request.</t>
      </section>

      <section anchor="refimpl-limits">
        <name>What the Reference Implementation Does Not Establish</name>
        <t>The reference implementation is runnable, testable,
        reproducible, vendor-neutral, and protocol-oriented research
        code. It is not a production Android or iOS privacy service,
        a carrier-certified gateway, a universal data-loss-prevention
        engine, a covert-channel prevention system, a privacy-law
        compliance certificate, a formally verified protocol, a
        hardware-rooted Protected Enforcement Domain, a production
        public-key infrastructure, a full differential-privacy
        implementation, or a complete location-anonymization system.
        In particular:</t>
        <ul>
          <li>it does not prove that every alternate egress path on a
          real device (telemetry, clipboard, file export, background
          sync, an analytics or advertising SDK using a direct
          socket, agent tool calls, shared memory, IPC, debug logs,
          crash reports, or a covert channel) is closed, which is the
          central limitation discussed in <xref target="threat-model"/>;</li>
          <li>its payload inspection covers selected structured JSON
          cases and does not fully canonicalize XML, protobuf, CBOR,
          MessagePack, multipart or compressed bodies, custom binary
          formats, or media metadata;</li>
          <li>it cannot determine payload precision once an untrusted
          component encrypts the value before the sink;</li>
          <li>its cumulative-disclosure accumulator demonstrates the
          principle in <xref target="profile"/> but is not a
          differential-privacy budget, a trajectory-privacy or
          k-anonymity calculation, or a formal re-identification
          estimate;</li>
          <li>its Protected Enforcement Domain and Finality Sink are
          ordinary software processes, not hardware-rooted trust
          (ARM TrustZone, Intel TDX, AMD SEV-SNP, Apple Secure
          Enclave, Android StrongBox, TPM, HSM, confidential VM,
          SmartNIC, or DPU protected execution); and</li>
          <li>its 98 passing tests demonstrate behavior for the
          tested cases and are not a substitute for formal
          verification (for example with TLA+, Tamarin, ProVerif,
          Coq, Lean, Isabelle, or Alloy), nor for a measured
          production throughput, request-per-second, multi-core
          scaling, or mobile battery-impact result, none of which has
          been produced yet.</li>
        </ul>
        <t>These limitations are listed so that a reviewer or
        implementer does not read the measurements in
        <xref target="refimpl-perf"/> as claims broader than what was
        actually measured.</t>
      </section>

      <section anchor="refimpl-resources">
        <name>Resources</name>
        <t>The runnable reference implementation described in this
        section is published at:</t>
        <t><eref target="https://github.com/sangmdas/Access-Is-Not-Egress-Precision-Bounded-Location-Release-Reference-Implementation">https://github.com/sangmdas/Access-Is-Not-Egress-Precision-Bounded-Location-Release-Reference-Implementation</eref></t>
        <t>This document is part of a series of Internet-Drafts that
        apply the same execution-finality architecture — Candidate
        Act, Non-Effective State, Protected Enforcement Domain,
        protected validation evidence, scoped non-bearer finality
        authority, and independent Finality Sink verification — to
        different consequence classes. The following companion drafts
        are referenced for context and are tracked at the IETF
        Datatracker:</t>
        <ul empty="true">
          <li><eref target="https://datatracker.ietf.org/doc/draft-das-ai-native-6g-execution-finality/">draft-das-ai-native-6g-execution-finality</eref> — execution finality for AI-native 5G/6G and O-RAN control</li>
          <li><eref target="https://datatracker.ietf.org/doc/draft-das-6g-query-scoped-communication-handles/">draft-das-6g-query-scoped-communication-handles</eref> — query-scoped communication authority for 6G signaling</li>
          <li><eref target="https://datatracker.ietf.org/doc/draft-das-map-discovery-communication-finality/">draft-das-map-discovery-communication-finality</eref> — execution finality applied to discovery/MAP-layer communication</li>
          <li><eref target="https://datatracker.ietf.org/doc/draft-das-rats-attestation-bnd-execution-finality/">draft-das-rats-attestation-bnd-execution-finality</eref> — attestation-bound execution finality under RATS</li>
          <li><eref target="https://datatracker.ietf.org/doc/draft-das-child-safe-rendering-finality/">draft-das-child-safe-rendering-finality</eref> — execution finality for preventing unauthorized rendering of age-restricted content to minors</li>
        </ul>
        <t>The policy motivation for treating precise location as data
        warranting its own protection, independent of the general
        personal-data category, is discussed in:</t>
        <t><eref target="https://futurium.ec.europa.eu/en/apply-ai-alliance/community-content/why-we-should-treat-our-gps-coordinates-more-our-personal-data-privacy-and-security">Why We Should Treat Our GPS Coordinates More than Our Personal Data for Privacy and Security</eref> (EU AI Alliance Futurium)</t>
      </section>
    </section>

    <section anchor="security">
      <name>Security Considerations</name>
      <t>The objective is that protected location remains
      technically non-effective for egress unless current,
      act-specific, precision-bounded authority is verified at the
      sink.</t>
      <t>Replay of a previously successful authority MUST be
      prevented by nonce, consumption, short lifetime, or equivalent
      state. Authority for city-level weather MUST NOT authorize
      exact GPS to the same host, a different host, or a different
      sink.</t>
      <t>Ordinary application-layer software MAY be compromised or
      overly permissive. Security MUST NOT depend solely on the
      application, SDK, browser, or model returning ALLOW. A
      malicious SDK with valid in-process access SHOULD NOT be able
      to bypass a correctly placed egress sink.</t>
      <t>If PED or sink integrity cannot be established, the
      implementation SHOULD NOT release exact or high-precision
      location. It MAY fail closed, downgrade, quarantine, or disable
      the protected consequence class.</t>
      <t>A detailed threat model, including attacker classes,
      specific attacks against each binding defined in
      <xref target="operation"/>, and explicit non-goals, is given in
      <xref target="threat-model"/>.</t>
    </section>

    <section anchor="threat-model">
      <name>Threat Model</name>
      <t>This section states the security objective in attacker
      terms, identifies protected assets and trust boundaries, walks
      through the attacks each binding in <xref target="operation"/>
      is intended to defeat, and lists explicit non-goals. It expands
      on <xref target="security"/> rather than replacing it.</t>

      <section anchor="tm-objective">
        <name>Security Objective</name>
        <t>Protected location or location-derived information MUST
        remain technically non-effective for external egress unless
        current, act-specific, precision-bounded authority is
        verified at the relevant egress Finality Sink. The system
        distinguishes local possession of location from authority to
        export it, and distinguishes declared precision from observed
        outbound precision. Neither equivalence MUST be assumed by an
        implementation.</t>
      </section>

      <section anchor="tm-assets">
        <name>Protected Assets</name>
        <t>Assets treated as security-sensitive include exact
        latitude/longitude, meter-level location, mobility traces,
        proximity information, sensor-derived location, destination
        identity, recipient identity, purpose, jurisdiction, policy
        state, revocation state, Finality Sink identity, Candidate
        Act descriptors, nonces and sequence state, protected
        evidence, finality authority, and cumulative-disclosure
        state. Cumulative-disclosure state is itself protected,
        because it can reveal a movement pattern even when every
        individual egress event was coarse; see
        <xref target="privacy"/>.</t>
      </section>

      <section anchor="tm-boundaries">
        <name>Trust Boundaries</name>
        <t>A deployment is expected to identify at least the
        following trust boundary. The Egress Finality Sink is
        security-critical: if protected data can reach the network
        through a path that does not cross it, the architecture is
        not complete for that data class, and every path capable of
        emitting the same protected representation MUST be controlled
        or made unable to emit it, consistent with
        <xref target="profile"/>.</t>
        <artwork><![CDATA[
+--------------------------------------------------+
|                Protected Environment              |
|   Exact Location                                  |
|        |                                          |
|        v                                          |
|   Candidate Act -> PED -> Protected Evidence       |
|        |                                          |
|        v                                          |
|   Scoped Finality Authority                        |
+--------|-------------------------------------------+
         v
+--------------------------------------------------+
|              Egress Finality Sink                 |
|  verifies authority, payload, precision, fields,   |
|  destination, jurisdiction, replay state           |
+--------|-------------------------------------------+
         v
================ TRUST BOUNDARY ====================
         v
External network / cloud / SDK / API / AI provider
]]></artwork>
        <t>Trusted components are the PED, the Finality Sink,
        protected state, and the authority-verification key.
        Potentially untrusted components are the application, an
        embedded SDK, an AI agent, an analytics component, an
        advertising library, browser content, the cloud destination,
        and the network path.</t>
      </section>

      <section anchor="tm-attacks">
        <name>Attacker Classes and Attacks</name>

        <section>
          <name>Compromised Application or Embedded SDK</name>
          <t>An application has legitimate local access but may
          intentionally or accidentally attempt unauthorized egress —
          for example, a weather application that may read exact GPS
          but should transmit only CITY sends exact coordinates
          anyway. The Finality Sink observing EXACT against an
          authorized precision of CITY MUST deny the release. The
          same reasoning applies to an analytics, advertising, or
          telemetry SDK sharing the application's in-process access:
          security MUST NOT depend on the application or SDK behaving
          correctly, and the SDK's own egress path MUST also cross an
          appropriate sink.</t>
        </section>

        <section>
          <name>AI-Agent Semantic Exfiltration</name>
          <t>An on-device AI agent may legitimately reason over exact
          local location while the external model provider needs
          only CITY, GRID, or coarse locality. If the agent attempts
          to send exact coordinates to the cloud model, the sink
          observing exact latitude/longitude against an authorized
          CITY/REGION ceiling MUST deny the release. A residual
          threat is not solved by this document: a model may encode
          location semantically, for example stating that the user is
          standing outside a named address, without emitting explicit
          coordinates. That is an explicit non-goal; see
          <xref target="tm-nongoals"/> and
          <xref target="privacy"/>.</t>
        </section>

        <section>
          <name>Replay</name>
          <t>An attacker captures a previously valid authority and
          reuses it later. Nonce, sequence, short authority lifetime,
          single-use consumption state, policy epoch, and revocation
          epoch together MUST prevent reuse, consistent with
          <xref target="operation"/>.</t>
        </section>

        <section>
          <name>Candidate-Act and Payload Substitution</name>
          <t>An attacker changes a load-bearing attribute after
          authority was issued for a different value — for example,
          authority issued for CITY release to <tt>weather.example</tt>
          is presented alongside an EXACT request to the same
          destination, or the recipient or sink identity is swapped.
          Because the Candidate Act digest is bound over precision,
          destination, recipient, jurisdiction, purpose, permitted
          fields, and sink identity, the substituted act MUST fail
          verification. A stronger variant occurs after authorization:
          the PED authorized <tt>{"city": "Balasore"}</tt> but the
          application transmits <tt>{"city": "Balasore", "latitude":
          21.494321, "longitude": 86.932145}</tt>. The sink inspecting
          the actual payload, not the declared label, MUST detect the
          mismatch and deny with <tt>EF_PRECISION_MISMATCH</tt>.</t>
        </section>

        <section>
          <name>Precision-Label Forgery and Hidden Fields</name>
          <t>A payload may declare <tt>"declared_precision": "CITY"</tt>
          while still carrying exact coordinates; the sink MUST NOT
          trust the declared label and MUST derive or verify observed
          precision independently. Exact information may also be
          hidden in additional JSON fields, HTTP headers, metadata,
          nested structures, duplicated fields, or query parameters.
          Implementations SHOULD define payload canonicalization
          sufficient to detect these cases, while this document does
          not define a complete media-type inspection algorithm; see
          <xref target="refimpl-limits"/>.</t>
        </section>

        <section>
          <name>Destination, Recipient, and Jurisdiction Substitution</name>
          <t>Authority for <tt>weather.example</tt> MUST NOT
          authorize <tt>ads.example</tt>, even over the same
          transport or cloud provider. Destination and recipient are
          not necessarily identical — a shared host such as
          <tt>api.sharedcloud.example</tt> may serve multiple logical
          processors — so authority binds both a
          <tt>destination_id</tt> and a <tt>recipient_id</tt>.
          Authority issued for one destination jurisdiction MUST NOT
          be treated as valid if the actual route or endpoint resolves
          to a different jurisdiction; a production system determines
          jurisdiction from configured endpoint jurisdiction, cloud
          region, processor metadata, enterprise policy, contractual
          processor identity, or network location information, and
          this document does not adjudicate which legal interpretation
          is correct, only that the selected jurisdiction policy is
          load-bearing.</t>
        </section>

        <section>
          <name>Policy and Revocation Rollback</name>
          <t>An attacker restores authority issued under an older
          <tt>policy_epoch</tt> or <tt>revocation_epoch</tt> after
          current state has advanced. The sink comparing current
          epoch state against the authority's bound epoch MUST reject
          the stale authority.</t>
        </section>

        <section>
          <name>Persistent-State Rollback</name>
          <t>A database-backed implementation may correctly persist
          <tt>CONSUMED</tt> status, but an attacker with sufficient
          privilege could restore an older filesystem or database
          snapshot showing <tt>UNUSED</tt>. SQLite persistence alone,
          as used in the reference implementation
          (<xref target="refimpl-variants"/>), does not solve this.
          Higher-assurance deployments are expected to use a hardware
          monotonic counter, sealed state, a TPM-backed counter,
          TEE-protected state, an authenticated remote witness, or an
          append-only protected log.</t>
        </section>

        <section>
          <name>PED and Finality Sink Compromise</name>
          <t>If the PED is compromised, it may authorize excessive
          precision, forge policy decisions, or issue malicious
          authority. The Finality Sink still independently checks
          candidate binding, payload precision, sink identity, current
          epochs, replay state, destination, and recipient, but cannot
          detect that a cryptographically valid PED decision was
          malicious if every sink-visible predicate is satisfied;
          production PEDs are expected to need TEE/HSM protection,
          attestation, key isolation, least privilege, policy
          separation, audit, and multi-party authorization for
          high-risk cases. Compromise of the Finality Sink itself is
          more severe: if the actual egress boundary permits release
          without finality verification, upstream PED validation
          cannot compensate, so security depends on placing the sink
          at a boundary that genuinely controls the consequence.</t>
        </section>

        <section>
          <name>Sink-Bypass and Alternate-Path Attacks</name>
          <t>If an application has one path through a controlled API
          gateway and Finality Sink, and a second path through a raw
          socket directly to the network, and the second path can
          transmit protected information, finality protection is
          incomplete regardless of how well the first path is
          enforced. This is the principal limitation of any current
          implementation of this profile; see
          <xref target="refimpl-limits"/> and
          <xref target="profile"/>. Production approaches include an
          OS network broker, kernel enforcement, a mandatory
          enterprise proxy, sandboxed networking, a DLP layer, browser
          engine enforcement, restricted SDK network permissions, or
          an application capability model.</t>
        </section>

        <section>
          <name>Encrypted-Payload and Encoding Evasion</name>
          <t>If an untrusted component encrypts exact coordinates
          before the sink, the sink sees only opaque ciphertext and
          cannot determine precision; the enforcement point MUST
          therefore sit before untrusted encryption, or the encryption
          operation itself MUST be inside the trusted finality
          boundary. Separately, an attacker may present the payload as
          base64, gzip, protobuf, CBOR, custom binary, nested JSON,
          URL-encoded, or multipart form data; a production
          implementation cannot assume plain JSON and needs
          media-type-aware canonicalization, which the reference
          implementation only partially demonstrates.</t>
        </section>

        <section>
          <name>Covert Channels and Derived Location</name>
          <t>A malicious component may encode location indirectly
          through packet timing, packet size, request ordering, DNS
          labels, identifier selection, image pixels, custom metadata,
          or model output, none of which this architecture claims to
          eliminate. Separately, location may be inferred without
          exact coordinates from Wi-Fi access-point identifiers,
          Bluetooth beacons, cell identifiers, IP address, timezone,
          sensor data, camera images, landmarks, or movement vectors;
          precision-bounded GPS egress is therefore not equivalent to
          complete location privacy.</t>
        </section>

        <section>
          <name>Cumulative-Disclosure Attack</name>
          <t>An attacker avoids sending exact location and instead
          requests repeated coarse releases — for example CITY-level
          location once per hour to different destinations — each of
          which individually satisfies policy but which together
          reconstruct a movement history. This is why cumulative
          disclosure is defined as protected state in
          <xref target="profile"/> rather than left to per-release
          evaluation alone.</t>
        </section>

        <section>
          <name>Availability, TOCTOU, and Confused-Deputy Threats</name>
          <t>Fail-closed behavior trades against availability: an
          attacker who can block policy lookup, block PED access,
          corrupt sink state, or force a verification timeout can deny
          legitimate releases if the system correctly fails closed.
          Production deployments need bounded local policy cache,
          high availability, replicated protected state, graceful
          downgrade, emergency consequence classes, and controlled
          escalation, without converting system unavailability into
          <tt>ALLOW</tt>.</t>
          <t>A time-of-check/time-of-use gap exists between Candidate
          Act authorization and actual release if destination
          resolution, routing, or endpoint state changes in between; a
          production sink SHOULD verify load-bearing information (for
          example resolved endpoint, TLS peer identity, destination
          service identity, and current policy state) as close as
          possible to actual release rather than relying solely on the
          earlier Candidate Act.</t>
          <t>A confused-deputy attack manipulates a trusted host
          application into releasing data on behalf of an untrusted
          embedded SDK. The PED SHOULD distinguish application
          identity, component identity, and caller identity rather
          than treating an entire process as a single principal.</t>
        </section>

        <section>
          <name>Key Compromise and Multi-Sink Races</name>
          <t>If the authority-signing key is compromised, the attacker
          can produce cryptographically valid authority at will;
          production systems need hardware-protected keys, key
          rotation, authority epoch, revocation, short validity,
          separated signing and transport keys, and audit. The
          reference implementation demonstrates signing semantics
          only, not full PKI lifecycle management. Separately, the
          same single-use authority sent simultaneously to two sinks
          MUST NOT be permitted to produce two successful releases;
          shared protected consumption state must ensure at most one
          effect succeeds, which the reference implementation tests
          for a single process but does not demonstrate at
          distributed, multi-sink scale.</t>
        </section>
      </section>

      <section anchor="tm-nongoals">
        <name>Non-Goals</name>
        <t>This profile, and the reference implementation described
        in <xref target="refimpl"/>, do not claim to solve: all
        covert channels; all semantic exfiltration by a language
        model; all location inference from non-GPS signals; malicious
        kernel or hardware compromise; global traffic analysis;
        complete data-loss prevention; inspection of all encrypted
        data; formal privacy-loss accounting; legal jurisdiction
        determination; or general information-flow security. These
        are stated explicitly so that an implementer does not read
        conformance with this document as covering them.</t>
      </section>
    </section>

    <section anchor="privacy">
      <name>Privacy Considerations</name>
      <t>Finality metadata can itself be sensitive: application
      identity, purpose, destination, jurisdiction, and precision
      class can reveal behavior even when coordinates are withheld.
      Implementations SHOULD minimise metadata exposed outside the
      PED and MAY use hashes, commitments, or sealed references
      rather than raw descriptors on untrusted paths.</t>
      <t>Repeated coarse releases can still build a movement history.
      Authorized precision of CITY on each of 144 requests is not
      automatically harmless. Cumulative-disclosure evaluation exists
      for that reason and must not become a second exportable
      trace.</t>
      <t>The cumulative-disclosure state defined in
      <xref target="profile"/> is itself a weaponization risk, not
      only a mitigation. By construction it aggregates release
      timestamps, destinations, and precision history across a policy
      window for a subject scope; a state object built for that
      purpose is functionally a mobility log, and if it is exposed,
      exported, or made available to any party other than the PED
      that consumes it, it recreates the exact movement-history
      exposure that cumulative-disclosure evaluation exists to
      prevent, with the additional property that it is pre-aggregated
      and therefore cheaper to exploit than reconstructing history
      from individual releases. An implementation MUST NOT treat the
      cumulative-disclosure state as a general-purpose audit log,
      analytics source, or export object. Concretely:</t>
      <ul>
        <li>the state MUST remain device-local or PED-internal and
        MUST NOT be transmitted to a destination, recipient, or
        Finality Sink as part of, or alongside, a location-release
        payload;</li>
        <li>the state SHOULD use a pseudonymous or rotating subject
        scope rather than a stable cross-context user identifier, so
        that compromise of the state does not directly yield an
        identified movement history;</li>
        <li>retained fields SHOULD be the minimum needed for the
        policy decision — release count, coarse precision history, and
        distinct-destination count, for example — rather than raw
        timestamps, exact prior payloads, or full destination
        identifiers, where the coarser form is sufficient for the
        policy in force;</li>
        <li>retention MUST be bounded to the policy window in
        <xref target="profile"/> and expired entries MUST be deleted
        rather than retained indefinitely for convenience; and</li>
        <li>where an implementation persists the state (for example
        in the SQLite variation discussed in
        <xref target="refimpl-variants"/>), the persistence mechanism
        is subject to the same rollback and tamper concerns as
        consumption state, discussed in <xref target="tm-attacks"/>,
        because an attacker who can roll back cumulative-disclosure
        state can also roll back the escalation it would otherwise
        trigger.</li>
      </ul>
      <t>An implementation SHOULD be able to state, as part of its own
      documentation, what cumulative-disclosure fields it retains,
      for how long, under what subject scope, and what happens to that
      state on user deletion or policy revocation. This document does
      not itself specify a formal privacy-loss accounting method for
      the state; see <xref target="refimpl-limits"/>.</t>
      <t>On-device models that reason over exact coordinates while
      egress is limited to city labels create an isolation
      requirement. This document does not specify how an
      implementation prevents the model or a tool-calling runtime
      from emitting the exact value through another channel. That
      channel, if it exists, is an egress path and is subject to
      <xref target="profile"/>.</t>
    </section>

    <section anchor="sovereignty">
      <name>Data-Sovereignty Considerations</name>
      <t>Authority to access data inside one environment is not
      authority to transfer it to another jurisdiction, cloud region,
      unapproved processor, external analytics provider, unrelated AI
      provider, or advertising endpoint. A data-export Candidate Act
      SHOULD bind destination, recipient, jurisdiction, cloud region,
      purpose, data class, precision, policy and revocation epochs,
      and sink identity.</t>
    </section>

    <section anchor="iana">
      <name>IANA Considerations</name>
      <t>This document requests no IANA actions. The precision-class
      names and EF-xxx identifiers are illustrative. A later revision
      MAY propose registries for precision classes, consequence
      classes, or error codes.</t>
    </section>

    <section anchor="ipr-note">
      <name>Intellectual Property Note</name>
      <t>Certain technical concepts described in this document are
      associated with pending patent applications in the DAS
      Protocols family, including PCT/IB2026/054453,
      PCT/IB2026/055615, PCT/IB2026/055760, PCT/IB2026/055870,
      PCT/IB2026/056058, and PCT/IB2026/053385. IETF IPR disclosure
      should follow BCP 79 <xref target="RFC8179"/>. This section is
      informational and does not define licensing terms.</t>
    </section>

    <section anchor="conclusion">
      <name>Conclusion</name>
      <t>A device or application may obtain exact location while an
      SDK, AI agent, analytics service, cloud processor, or external
      destination is entitled only to a less precise representation
      or to no location at all. This profile moves that distinction
      to the actual egress boundary. Precise GPS access is not
      precise GPS-release authority.</t>
    </section>
  </middle>
  <back>

    <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"/>
        <seriesInfo name="DOI" value="10.17487/RFC2119"/>
      </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"/>
        <seriesInfo name="DOI" value="10.17487/RFC8174"/>
      </reference>
      <reference anchor="RFC8179" target="https://www.rfc-editor.org/info/rfc8179">
        <front>
          <title>Intellectual Property Rights in IETF Technology</title>
          <author initials="S." surname="Bradner" fullname="S. Bradner"/>
          <author initials="J." surname="Contreras" fullname="J. Contreras"/>
          <date year="2017" month="May"/>
        </front>
        <seriesInfo name="BCP" value="79"/>
        <seriesInfo name="RFC" value="8179"/>
        <seriesInfo name="DOI" value="10.17487/RFC8179"/>
      </reference>
    </references>
    <references>
      <name>Informative References</name>
      <reference anchor="I-D.das-6g-finality">
        <front>
          <title>Execution-Finality for AI-Native 5G/6G and O-RAN</title>
          <author fullname="Sangam Das" initials="S." surname="Das"/>
          <date year="2026" month="August"/>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-das-ai-native-6g-execution-finality-01"/>
      </reference>
      <reference anchor="I-D.das-ef-interop">
        <front>
          <title>Execution-Finality for AI Interoperability</title>
          <author fullname="Sangam Das" initials="S." surname="Das"/>
          <date year="2026" month="August"/>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-das-execution-finality-ai-interoperability-00"/>
      </reference>
      <reference anchor="I-D.das-agentic-tool-binding">
        <front>
          <title>tool_use Is Not invoke(): Binding Execution-Finality
          to Agentic Tool Calls</title>
          <author fullname="Sangam Das" initials="S." surname="Das"/>
          <date year="2026" month="August"/>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-das-agentic-tool-binding-02"/>
        <annotation>Applies the Agent Candidate Act profile to
        tool_use/computer_use, function-calling, and MCP tool
        invocation, requiring scoped authority verification before a
        tool-call dispatch takes effect.</annotation>
      </reference>
      <reference anchor="RFC9298" target="https://www.rfc-editor.org/info/rfc9298">
        <front>
          <title>Proxying UDP in HTTP</title>
          <author initials="D." surname="Schinazi" fullname="D. Schinazi"/>
          <date year="2022" month="August"/>
        </front>
        <seriesInfo name="RFC" value="9298"/>
        <seriesInfo name="DOI" value="10.17487/RFC9298"/>
      </reference>
      <reference anchor="W3C-GEO" target="https://www.w3.org/TR/geolocation/">
        <front>
          <title>Geolocation</title>
          <author>
            <organization>W3C</organization>
          </author>
          <date year="2025"/>
        </front>
      </reference>
      <reference anchor="ENISA-MOBILE">
        <front>
          <title>Privacy and data protection in mobile applications</title>
          <author>
            <organization>ENISA</organization>
          </author>
          <date year="2017"/>
        </front>
      </reference>
      <reference anchor="GDPR-MIN">
        <front>
          <title>Principles of data protection, including data minimisation and protection by default</title>
          <author>
            <organization>European Commission</organization>
          </author>
          <date year="2018"/>
        </front>
        <annotation>Policy context only. This document does not specify EU law.</annotation>
      </reference>
      <reference anchor="NATO-STRATCOM">
        <front>
          <title>Work on consumer geolocation, metadata, and operationally significant inference from ordinary activity data</title>
          <author>
            <organization>NATO Strategic Communications Centre of Excellence</organization>
          </author>
          <date year="2018"/>
        </front>
      </reference>
    </references>
  <section anchor="faq" numbered="true">
      <name>Frequently Asked Questions</name>
      <t>This appendix collects questions raised during early review
      of this and companion drafts in the same execution-finality
      series. It is non-normative and is included to shorten review
      cycles by answering predictable questions in one place.</t>

      <dl newline="true">
        <dt>Why is a new protocol concept needed? Isn't this just an
        OS permission?</dt>
        <dd>No. An OS permission answers whether application A may
        read location. This profile answers a later question: may
        this exact representation leave the protected environment, to
        this recipient, for this purpose, at this precision, right
        now. Provider access and outbound release authority are
        different questions; see <xref target="problem"/>.</dd>

        <dt>Isn't approximate-location permission already enough?</dt>
        <dd>Approximate-location permissions reduce what the
        application receives at all. This profile supports a
        different deployment: the application legitimately receives
        exact location locally while the external service receives
        only coarse location. That matters for applications that
        genuinely need precise local computation but have no need to
        disclose it externally.</dd>

        <dt>Why not just transform the location before giving it to
        the application?</dt>
        <dd>That is a valid design for some cases, but it does not
        support an application that needs exact local data for
        navigation, on-device geofencing, emergency logic, local AI,
        or sensor fusion while the external service needs only coarse
        information. This profile separates local computational
        authority from external disclosure authority; see
        <xref target="architecture"/>.</dd>

        <dt>Isn't this just Data Loss Prevention, or something an
        enterprise firewall doing deep packet inspection already
        covers?</dt>
        <dd>There is overlap, and enterprise DPI can catch some of the
        same cases. The distinction is mechanism, not outcome.
        Conventional DLP typically relies on pattern matching against
        the payload — a regex for coordinate-shaped values, a
        signature for a known field name — which is inherently
        heuristic and evadable by re-encoding, as discussed in
        <xref target="tm-attacks"/>. This profile instead forces a
        precision ceiling that is cryptographically bound to a
        non-bearer authority token issued for that specific Candidate
        Act (<xref target="architecture"/>, <xref target="profile"/>):
        the sink is not guessing whether a value looks like a
        coordinate, it is checking whether the observed payload stays
        inside the ceiling that authority was actually issued for. The
        protocol-oriented sequence in <xref target="architecture"/> —
        Candidate Act, Non-Effective State, protected validation,
        protected evidence, scoped authority, sink verification,
        effect — is the narrower contribution. Traditional DLP
        products may perform equivalent checks; this profile is
        intended to be complementary to DLP, not a claim that DLP
        cannot implement similar enforcement.</dd>

        <dt>Isn't this information-flow control?</dt>
        <dd>It has similarities, but this profile currently defines a
        narrower consequence-control mechanism centered on a specific
        egress Candidate Act, not a complete language-level or
        system-wide information-flow type system.</dd>

        <dt>Why isn't differential privacy enough?</dt>
        <dd>Differential privacy, fuzzing, grid snapping, and
        geohashing are transformation mechanisms; see
        <xref target="related"/>. This profile asks a separate
        question: which transformation is authorized for this
        particular release, and did the actual payload obey that
        authorization. Differential privacy and coarsening are
        treated as compatible transformation mechanisms, not
        replacements for sink verification.</dd>

        <dt>Doesn't MASQUE or private relay already protect
        location?</dt>
        <dd>Path privacy and payload privacy are different. A relay
        can hide a client's network address while the application
        payload still contains latitude and longitude. These are
        complementary mechanisms; see <xref target="related"/>.</dd>

        <dt>Why call the authority "non-bearer"?</dt>
        <dd>Because possession of the serialized authority is not by
        itself sufficient for effectuation. The reference
        implementation requires a valid signed authority together
        with matching sink-local activation state, so a copied
        authority without its protected state fails; see
        <xref target="refimpl-variants"/>. This is one reference
        realization of non-bearer semantics, not a requirement that
        every implementation use the identical mechanism.</dd>

        <dt>Isn't this basically OAuth, since OAuth already handles
        scoped tokens?</dt>
        <dd>OAuth authorizes access to a resource or an API — it
        answers whether the client may call the endpoint at all.
        Execution finality governs a later, different question:
        access has already been granted, a specific data release has
        already been generated, and the question is whether this
        exact release — this precision, this destination, this
        payload — should be allowed to become effective right now.
        A valid OAuth scope does not tell a sink whether the payload
        behind it stayed inside an authorized precision ceiling.
        OAuth authorization can be one PED input among others listed
        in <xref target="profile"/>; this profile does not require
        replacing it.</dd>

        <dt>Why must the sink verify independently instead of trusting
        the PED?</dt>
        <dd>Because state can change between validation and
        effectuation: policy, revocation, destination, payload, or
        sink identity may all change in that interval. Independent
        sink verification closes that window; see
        <xref target="tm-boundaries"/>.</dd>

        <dt>Where exactly is the Finality Sink?</dt>
        <dd>There is no single universal location. Possible
        deployments include an OS data broker, network egress broker,
        browser upload layer, API gateway, enterprise proxy, SDK
        wrapper, cloud-sync boundary, file-export boundary, or
        database-export boundary. The requirement is functional: the
        protected consequence must be technically unable to complete
        without successful verification; see
        <xref target="profile"/>.</dd>

        <dt>What if there are multiple egress paths?</dt>
        <dd>All of them are in scope. If network upload is protected
        but a telemetry SDK or file export can release the same data,
        the architecture is incomplete for that data class; see
        <xref target="tm-attacks"/>.</dd>

        <dt>How does the sink know the payload's true precision?</dt>
        <dd>This is a hard implementation problem. The reference
        implementation handles selected structured JSON and
        meter-level coordinate granularity; see
        <xref target="refimpl-payload"/>. A production standard would
        need clearer canonical precision rules for coordinates, grids,
        geohashes, region labels, derived location, and structured
        payloads generally, which this document deliberately leaves
        unspecified for now.</dd>

        <dt>What does METER_100 actually mean?</dt>
        <dd>An approximate precision class in the current
        implementation. A standards-grade definition would need to
        specify coordinate reference system, quantization method,
        rounding, latitude-dependent scale, boundary conditions,
        datum, and error tolerance, none of which is fully specified
        by this draft.</dd>

        <dt>CITY is not a consistent privacy level. How is that
        handled?</dt>
        <dd>It is not handled by the precision class alone. CITY in a
        metropolitan area and CITY in a small settlement do not
        provide equal anonymity; the precision ladder is an
        authorization abstraction, not a mathematical anonymity
        guarantee. Stronger privacy guarantees would need contextual
        information such as population, geographic area, sensitivity,
        or user context.</dd>

        <dt>Can an application simply encrypt exact GPS before the
        sink, breaking payload inspection or end-to-end
        encryption?</dt>
        <dd>If the sink sits after untrusted encryption, it sees only
        opaque ciphertext and cannot determine precision — that is a
        deployment failure, not a protocol failure. The Finality Sink
        MUST sit inside the trusted runtime environment, immediately
        before the untrusted encryption step occurs, or MUST be
        integrated directly into the local OS data broker or
        equivalent trusted egress point, so that inspection happens on
        plaintext the sink itself controls; see
        <xref target="tm-attacks"/>. This does not require decrypting
        end-to-end traffic in transit or placing a middlebox between
        two trusted endpoints — the sink operates at the sender, on
        the payload as constructed, before it is encrypted for the
        wire.</dd>

        <dt>What about QUIC or TLS?</dt>
        <dd>The architecture is transport-independent. TLS or QUIC
        protects the transport after the Finality Sink has decided
        what payload may leave: payload construction, then Finality
        Sink, then the approved payload, then TLS/QUIC encryption,
        then the network.</dd>

        <dt>Doesn't payload inspection break end-to-end
        encryption?</dt>
        <dd>Not necessarily. The sink can operate at the sender
        before encryption; the architecture does not require a
        middlebox to decrypt end-to-end traffic.</dd>

        <dt>How do you prevent a malicious model from leaking location
        in text?</dt>
        <dd>The current implementation does not fully solve this. A
        statement such as naming the user's exact cross street can
        reveal precise location without emitting coordinates. A
        future AI-specific profile may need structured tool outputs,
        semantic filtering, information-flow controls, restricted
        network tools, and model sandboxing. This is a residual risk;
        see <xref target="privacy"/> and
        <xref target="tm-nongoals"/>.</dd>

        <dt>Is cumulative disclosure mathematically defined?</dt>
        <dd>Not fully. The current implementation demonstrates the
        stateful principle that many individually acceptable
        disclosures may collectively become unacceptable, without a
        formal privacy-loss calculus. Stronger versions could
        incorporate differential-privacy accounting, trajectory
        privacy, mobility uniqueness, or formal exposure budgets; see
        <xref target="profile"/>.</dd>

        <dt>Where is cumulative-disclosure state stored?</dt>
        <dd>It needs protection because the state itself can become a
        movement history. Deployment options include device-local
        protected storage, a TEE, a secure database, or an enterprise
        policy engine. The reference implementation uses memory and
        SQLite for demonstration only; SQLite carries no hardware
        trust.</dd>

        <dt>What happens when the PED is unavailable?</dt>
        <dd>No PED means no new authority means no protected release,
        unless policy explicitly permits a previously established
        bounded envelope. Timeout is never treated as approval; see
        <xref target="operation"/>.</dd>

        <dt>Doesn't fail-closed create denial-of-service risk?</dt>
        <dd>Yes; that is a fundamental tradeoff discussed in
        <xref target="tm-attacks"/>. Production systems need high
        availability, a local policy cache, replication, bounded
        fallback, safe downgrade, and emergency modes, none of which
        may silently convert failure into unrestricted
        disclosure.</dd>

        <dt>How are emergency services handled?</dt>
        <dd>As a distinct policy and consequence class — for example
        E911 or an equivalent emergency response service may be
        authorized for exact location while weather is limited to
        CITY. This document does not prescribe emergency policy; it
        carries whatever policy outcome exists into enforcement.</dd>

        <dt>What happens if policy changes after authority
        issuance?</dt>
        <dd>Authority carries policy and revocation epoch information,
        and the sink verifies current state before release, so a
        stale authority is rejected; see <xref target="tm-attacks"/>.</dd>

        <dt>How are keys provisioned and rotated?</dt>
        <dd>Not defined by this document. A production design could
        use a device trust anchor, an enterprise CA, a hardware-backed
        signing key, authority epoch, key rotation, and revocation,
        but this requires a separate deployment profile; see
        <xref target="refimpl-limits"/>.</dd>

        <dt>Why Ed25519?</dt>
        <dd>Widely implemented, easy to verify, asymmetric, and
        compact. The architecture's semantics do not depend on
        Ed25519 specifically; the reference implementation's
        HMAC-SHA256 variation, discussed in
        <xref target="refimpl-variants"/>, demonstrates that.</dd>

        <dt>Why not COSE/CBOR instead of JSON?</dt>
        <dd>A reasonable future optimization. JSON keeps the reference
        implementation and the objects in <xref target="json-profile"/>
        readable and easy to inspect. A production profile could use
        CBOR, COSE, protobuf, compact binary, or OS-native IPC
        structures; the core requirement is deterministic binding and
        interoperable semantics, not JSON specifically.</dd>

        <dt>How large are the objects, and what is the throughput?</dt>
        <dd>The reference implementation prioritizes readability over
        compact wire size and has not measured production throughput.
        A production profile would need to measure object sizes and
        evaluate compact encodings, and measure releases per second,
        multi-core scaling, concurrent sessions, and persistent-state
        overhead; see <xref target="refimpl-limits"/>. No wire-size or
        throughput claim is made by this document.</dd>

        <dt>Can this scale to millions of mobile devices?</dt>
        <dd>The architecture is distributable because PED and sink
        roles can run locally on each device or endpoint, but the
        reference implementation does not demonstrate millions of
        users, cloud-scale policy distribution, large fleet key
        rotation, or large-scale revocation. Those remain open
        deployment questions.</dd>

        <dt>Why is this an IETF problem instead of an Android, Apple,
        or W3C problem — isn't blocking an SDK from reading a host
        app's data just local OS sandboxing, like Android runtime
        permissions or iOS App Tracking Transparency?</dt>
        <dd>A fair question, and local sandboxing is a real and
        useful control, but it does not cover this profile's actual
        scope. Sandboxing governs one boundary: whether a process may
        read a provider. This profile governs a cross-boundary
        problem: the application, the edge API gateway or enterprise
        proxy the payload transits, and the cloud AI agent or service
        that ultimately receives it are commonly operated by different
        vendors with no shared sandboxing authority over one another.
        No single OS vendor's local permission model can bind what an
        enterprise firewall or a cloud-side proxy independently
        verifies about an already-departed payload. What this document
        defines — a semantic JSON contract in
        <xref target="json-profile"/> for the Candidate Act, precision
        authority, and sink verification — is what lets a gateway or
        proxy under a different administrative authority than the
        device confirm, on its own, whether a mobile device's outbound
        payload matches the data-minimization ceiling it was actually
        authorized for. That interoperable semantics layer, spanning
        application, agent, OS, enterprise gateway, cloud service, API
        gateway, and network service — Candidate Act representation,
        precision authority, recipient and destination binding,
        evidence references, replay semantics, sink identity, and
        failure semantics — is the IETF-relevant part.
        Operating-system enforcement itself may remain
        platform-specific.</dd>

        <dt>Does this require a new transport protocol?</dt>
        <dd>No. As stated in <xref target="json-profile"/>, the
        semantic objects may be transported over existing protected
        mechanisms such as local IPC, OS APIs, HTTPS, or enterprise
        agents. A future standard may define bindings rather than a
        new transport.</dd>

        <dt>Does this require an IANA registry?</dt>
        <dd>This document currently requests no IANA action; see
        <xref target="iana"/>. The precision-class names and EF-xxx
        identifiers are illustrative. A later revision could propose
        registries if interoperability requires them.</dd>

        <dt>How is this different from application consent?</dt>
        <dd>Consent can be one policy input. This architecture
        addresses technical enforcement after the consent or policy
        decision: consent feeds policy input, which feeds the PED,
        which issues finality authority, which the sink verifies.
        Consent alone does not inspect the actual outbound
        payload.</dd>

        <dt>How does this work with GDPR or other laws?</dt>
        <dd>The protocol is jurisdiction-neutral and does not
        determine legal requirements. A policy engine may produce
        different results under EU, Indian, US, or enterprise policy;
        the protocol's role is to make the selected result
        enforceable at the point of release; see
        <xref target="sovereignty"/>.</dd>

        <dt>Isn't recipient jurisdiction difficult to determine?</dt>
        <dd>Yes, and this is a real deployment challenge. Possible
        approaches include authoritative service metadata, enterprise
        configuration, cloud-region declarations, and verified
        processor identities. This document does not define universal
        jurisdiction discovery.</dd>

        <dt>What proves non-bypassability?</dt>
        <dd>Not the reference implementation described in
        <xref target="refimpl"/>. Actual non-bypassability requires
        system integration showing that every consequence-bearing
        egress path is controlled — for example OS broker enforcement,
        kernel networking restrictions, browser engine enforcement,
        enterprise gateway enforcement, or TEE/DPU integration. This
        is one of the most important production validation
        requirements and remains open; see
        <xref target="refimpl-limits"/> and
        <xref target="tm-attacks"/>.</dd>
      </dl>

      <t>A reviewer evaluating this document is expected to ask, at
      minimum: what exact interoperability problem requires
      standardization; which elements are protocol semantics versus
      implementation policy; the precise definition of "precision"
      and the canonical representation used for hashing; how a sink
      determines observed payload precision; how encrypted payloads
      are handled; how the architecture handles alternative egress
      paths; what "non-bearer authority" means operationally; which
      state must be protected versus cached; how keys are provisioned
      and rotated; how replay is prevented across multiple sinks; how
      single-use authority is consumed atomically; failure behavior
      during network partitions; latency, throughput, and object-size
      overhead; why existing OAuth, OS permission, or DLP mechanisms
      cannot carry the same information; what belongs at IETF versus
      W3C, 3GPP, O-RAN, a platform vendor, or enterprise DLP; and what
      minimum subset is actually required for interoperable
      deployment. This appendix and the sections it cross-references
      are intended to answer these precisely rather than by
      assertion.</t>

      <t>The position of this document is not that existing location
      permissions are insecure and must be replaced. It is that
      existing permission, consent, transformation, relay,
      authorization, and privacy mechanisms remain in place as policy
      inputs, and that this profile adds a later consequence-control
      step in which a proposed outbound disclosure remains
      non-effective until act-specific precision authority is bound
      to recipient, destination, jurisdiction, policy state, and sink
      identity, and the actual outbound representation is
      independently checked immediately before release. This framing
      is intended to make the architecture complementary to existing
      standards rather than competitive with them.</t>
    </section>

  </back>
</rfc>
