<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.39 (Ruby 3.4.10) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-morrison-compute-location-gate-02" category="info" submissionType="independent" version="3">
  <!-- xml2rfc v2v3 conversion 3.32.0 -->
  <front>
    <title abbrev="Compute-Location Gate">The Compute-Location Gate: Provenance-Class Routing of Identity Inference with Wire-Layer Refusal of Unconsented Provenance Classes</title>
    <seriesInfo name="Internet-Draft" value="draft-morrison-compute-location-gate-02"/>
    <author fullname="Blake Morrison">
      <organization>Alter Meridian Pty Ltd (~truealter)</organization>
      <address>
        <email>blake@truealter.com</email>
        <uri>alter:~blake</uri>
      </address>
    </author>
    <date year="2026" month="September" day="30"/>
    <abstract>
      

<t>This memo specifies the compute-location gate: a mechanism by which a
client and an identity-inference server negotiate, at the wire layer
and before any inference is performed, the location at which an
identity inference will compute, as a deterministic function of the
provenance class of the input signal.  Three provenance classes are
distinguished.  Active inference, initiated by the inferred-about
principal, <bcp14>MAY</bcp14> compute server-side and produce a server-held identity
vector.  Passive aggregate observation over a cohort no smaller than a
declared minimum <bcp14>MAY</bcp14> compute server-side but yields only a
population-level observation that is not attributable to an
individual.  Passive individual observation is local-only: it is
computed and retained on the device that observed it and is never
transmitted to a server.  The gate is enforced by consent-class
matching and by a wire-layer refusal returned when a requested
provenance class is not consented; it is not enforced by any
cryptographic proof concerning data that was not used.  The memo is
Informational.  The wire surface composes with DNS TXT
discovery of Model Context Protocol servers, the ~handle namespace of
the Identity Pronouns extension, and the organisational policy
provision substrate; no new transport is introduced.</t>
    </abstract>
  </front>
  <middle>
    

<section anchor="introduction">
      <name>Introduction</name>
      <t>An identity-inference system derives statements about a principal
(traits, competencies, dispositions, belonging measures) from signals
the principal emits.  Such systems face a question that access control
alone does not answer: <em>who may read</em> a derived statement, and
<em>where the derivation itself is permitted to compute</em>.</t>
      <t>These are distinct questions.  Access control governs the read path of
a datum that already exists.  The compute-location question governs
whether the datum may be brought into existence on a given machine at
all.  A system that answers only the first question can decline to
serve an inferred trait to an unauthorised reader, but it has, by the
time of that refusal, already computed and persisted the trait on its
server.  The compute-location question, asked earlier, prevents the
server-side derivation from occurring when the signal's provenance
does not warrant it.</t>
      <t>This memo specifies a mechanism, the compute-location gate, that
answers the second question at the wire layer.  Before an inference is
performed, the client and the server negotiate the <em>provenance class</em>
of the input signal.  The provenance class deterministically selects
a <em>compute location</em>.  Where the negotiated provenance class is not
covered by the principal's consent, the server returns a wire-layer
refusal, and no inference is performed at any location.</t>
      <t>The mechanism rests on a principle the present author has elsewhere
termed identity-as-inference: that a principal's identity is inferred
from manifestation rather than declared, and that every such inference
is admissible only under an explicit gate on the provenance of the
signal from which it is drawn.  The first clause of that principle is:
no inference without a compute-location gate.  This memo is the
wire-layer codification of that clause.</t>
      <t>The mechanism is deliberately narrow.  It specifies provenance-class
negotiation, the routing function from provenance class to compute
location, the consent-class match, and the refusal returned on a
consent miss.  It does NOT specify, and explicitly excludes from its
scope (Section 11), any cryptographic proof that a particular data
category was excluded from a derivation.  The gate's enforcement model
is consent-class matching plus wire-layer rejection.  Verification
that the gate held is addressed by build-time pipeline checks
(Section 9) and by post-hoc audit, not by a cryptographic attestation
of absence.</t>
      <t>The wire surface composes with four Morrison-family Internet-Drafts:
the discovery surface of <xref target="MCPDNS"/>, the handle namespace of
<xref target="IDPRONOUNS"/>, the cross-session coordination posture of <xref target="SUBSTRATE"/>,
and the organisational policy substrate of <xref target="POLICYPROV"/>.  No new
transport, no new handle category, and no new discovery record is
introduced.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL NOT</bcp14>",
"<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "NOT <bcp14>RECOMMENDED</bcp14>", "<bcp14>MAY</bcp14>", and
"<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as described in
BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they appear in all
capitals, as shown here.</t>
      <t>The following terms are defined for the purposes of this document.
Terms previously defined by the referenced Morrison-family memos
retain their established meaning and are reproduced here only when
operative for the present specification.</t>
      <dl>
        <dt>Identity inference</dt>
        <dd>
          <t>A computation that derives a statement about a principal (a trait
value, a competency estimate, a disposition, a belonging measure,
or a comparable derived attribute) from one or more signals the
principal has emitted.</t>
        </dd>
        <dt>Provenance class</dt>
        <dd>
          <t>A property of an input signal, established before inference, that
records how the signal came to be observed.  Three provenance
classes are defined in Section 3.</t>
        </dd>
        <dt>Compute location</dt>
        <dd>
          <t>The machine class on which an identity inference is permitted to
execute.  Two compute locations are distinguished: server-side, on
infrastructure operated by the inference service; and device-local,
on the device that observed the input signal.</t>
        </dd>
        <dt>Server-held identity vector</dt>
        <dd>
          <t>A persisted, server-side representation of a principal's inferred
identity, readable through the inference service's consented query
surface.  Only inference of the active provenance class (Section 3.1)
may write to the server-held identity vector.</t>
        </dd>
        <dt>Device-local daemon</dt>
        <dd>
          <t>A long-running process executing on a device under the principal's
control, on which device-local inference (Section 3.3) is computed
and where the resulting representation is retained.  The device-local
daemon does not transmit individual-attributable derived statements
to a server.</t>
        </dd>
        <dt>Cohort floor</dt>
        <dd>
          <t>The minimum cohort size, declared by the inference service, below
which a passive aggregate inference (Section 3.2) <bcp14>MUST NOT</bcp14> be
computed.  The cohort floor exists so that a population-level
observation cannot be narrowed to an individual.</t>
        </dd>
        <dt>Consent class</dt>
        <dd>
          <t>A unit of consent granted by a principal, keyed to a provenance
class and a signal stream.  A consent class is the grant against
which a negotiated provenance class is matched (Section 7).</t>
        </dd>
        <dt>Wire-layer refusal</dt>
        <dd>
          <t>A typed response returned by the inference service, before any
inference is performed, when a requested provenance class is not
covered by a consent class.  The refusal terminates the inference
request; no inference is performed at any compute location.</t>
        </dd>
        <dt><tt>~handle</tt></dt>
        <dd>
          <t>A principal identity handle as defined by <xref target="IDPRONOUNS"/>.</t>
        </dd>
      </dl>
    </section>
    <section anchor="provenance-classes">
      <name>Provenance Classes</name>
      <t>Every input signal admitted to an identity inference carries exactly
one of three provenance classes.  The provenance class is established
before inference and is immutable for the lifetime of the signal
record.  The provenance class, not the signal's content and not the
trait category of the prospective output, is the value on which the
compute-location gate routes.</t>
      <section anchor="active-inference">
        <name>Active Inference</name>
        <t>An input signal is of the active provenance class when the
inferred-about principal initiated the act that produced it.
Challenge-response exchanges, a consented structured assessment, an
explicit attestation the principal authored, and inputs the principal
supplied to a deliberate identity-elaboration flow are all of the
active class.  The defining property is principal initiation: the
principal performed an act whose purpose, as understood by the
principal at the time of the act, was to contribute signal to their
own identity inference.</t>
        <t>An inference drawn solely from active-class signal <bcp14>MAY</bcp14> compute
server-side and <bcp14>MAY</bcp14> write to the server-held identity vector
(Section 8.1).</t>
      </section>
      <section anchor="passive-aggregate-observation">
        <name>Passive Aggregate Observation</name>
        <t>An input signal is of the passive aggregate provenance class when it
was observed without a principal-initiated act, and when the inference
drawn from it is computed over a cohort of principals no smaller than
the cohort floor (Section 5) and yields only a population-level
observation.  A passive aggregate inference produces a statement about
the cohort (a distribution, a rate, a population parameter) and does
not produce a statement attributable to any individual within the
cohort.</t>
        <t>An inference of the passive aggregate class <bcp14>MAY</bcp14> compute server-side
(Section 8.2).  Its output is a population-level observation; it <bcp14>MUST</bcp14>
NOT write an individual-attributable statement to the server-held
identity vector.</t>
      </section>
      <section anchor="passive-individual-observation">
        <name>Passive Individual Observation</name>
        <t>An input signal is of the passive individual provenance class when it
was observed without a principal-initiated act and the inference drawn
from it would yield a statement attributable to a single principal.</t>
        <t>An inference of the passive individual class is local-only.  It <bcp14>MUST</bcp14>
be computed on the device-local daemon (Section 4) running on the
device that observed the input signal, and the resulting derived
statement <bcp14>MUST</bcp14> be retained on that device.  An individual-attributable
statement of the passive individual provenance class <bcp14>MUST NOT</bcp14> be
transmitted to a server, and <bcp14>MUST NOT</bcp14>, by any derivation path, reach
the server-held identity vector.</t>
        <t>The passive individual class is the governing constraint of this
memo.  The other two classes describe what server-side inference <bcp14>MAY</bcp14>
do; this class describes what server-side inference <bcp14>MUST NOT</bcp14> do.  A
system that routes passive individual observation to server-side
compute has not implemented the compute-location gate, irrespective of
any access control it applies to the resulting datum afterward.</t>
      </section>
    </section>
    <section anchor="the-device-local-daemon">
      <name>The Device-Local Daemon</name>
      <t>Inference of the passive individual provenance class is computed on a
device-local daemon.  The device-local daemon is a process under the
principal's control, executing on the device that observed the input
signal.</t>
      <t>The device-local daemon:</t>
      <ol spacing="normal" type="1"><li>
          <t>Receives passive individual signal observed on its host device.</t>
        </li>
        <li>
          <t>Computes the identity inference locally.  No input signal of the
passive individual class, and no statement derived from it, leaves
the device for the purpose of the inference.</t>
        </li>
        <li>
          <t>Retains the derived statement in device-local storage under the
principal's control.</t>
        </li>
        <li>
          <t>Exposes the derived statement to the principal, and only to the
principal, through a device-local interface.  The principal <bcp14>MAY</bcp14>,
by a subsequent active-class act, elect to contribute a derived
statement to a server-held inference; such an act re-enters the
pipeline as active-class signal (Section 3.1) and is gated afresh.</t>
        </li>
      </ol>
      <t>The device-local daemon <bcp14>MUST NOT</bcp14> expose an interface by which a
server, or any party other than the principal operating the device,
can read an individual-attributable statement of the passive
individual class.  The transition of a passive-individual-derived
statement to server-side visibility occurs only through a fresh
active-class act by the principal, never through a daemon-exposed
read surface.</t>
      <t>The device-local daemon participates in the substrate-observation
posture of <xref target="SUBSTRATE"/> for the purpose of cross-session coordination
of the principal's surfaces; that participation is orthogonal to the
present memo and introduces no path by which passive individual
derived statements reach a server.</t>
    </section>
    <section anchor="the-cohort-floor">
      <name>The Cohort Floor</name>
      <t>A passive aggregate inference (Section 3.2) <bcp14>MUST NOT</bcp14> be computed
unless the cohort over which it is computed is no smaller than the
cohort floor.  The cohort floor is a positive integer declared by the
inference service and exposed at the negotiation surface (Section 6)
so that a client can determine, before requesting an inference,
whether a passive aggregate request is admissible.</t>
      <t>The cohort floor exists to ensure that a passive aggregate inference
yields a population-level observation and not an individual-attributable
one.  An inference computed over a cohort smaller than the floor risks
re-identification: with a sufficiently small cohort, a population
parameter is a near-individual statement.  The floor is the structural
boundary between the passive aggregate class, which <bcp14>MAY</bcp14> compute
server-side, and the passive individual class, which <bcp14>MUST NOT</bcp14>.</t>
      <t>The cohort floor is a parameter of this mechanism, not a fixed
constant of this memo.  An inference service <bcp14>SHALL</bcp14> declare its cohort
floor and <bcp14>SHALL NOT</bcp14> compute a passive aggregate inference over a
cohort below it.  A service whose declared cohort floor is so low that
a population parameter computed at that size is individually
identifying has not satisfied the intent of this section; the floor is
a number, but a number chosen so that the resulting observation is
genuinely population-level.  The reference deployment described in
Section 12 declares a cohort floor of 1000.  As Section 12 records, no
live inference path yet reaches that floor, and it is not yet exposed
at the negotiation surface.</t>
      <t>The cohort floor governs the <em>aggregate</em> boundary only.  It is not a
privacy budget, it is not a noise-calibration parameter, and it does
not compose additively across queries.  The relationship of the
cohort floor to the statistical-disclosure-control literature is
discussed in Section 10.</t>
    </section>
    <section anchor="wire-layer-negotiation">
      <name>Wire-Layer Negotiation</name>
      <t>Before an identity inference is performed, the client and the
inference service negotiate the provenance class of the input signal
and, by the routing function of Section 8, the compute location.  The
negotiation is a request-response exchange carried over the client's
existing transport to the inference service; this memo introduces no
new transport.  Where the inference service is reached as a Model
Context Protocol <xref target="MCP"/> surface, the negotiation is a tool invocation
and its response; where it is reached over another transport, the
negotiation is the corresponding request-response pair.</t>
      <section anchor="the-inference-request">
        <name>The Inference Request</name>
        <t>A client requesting an identity inference <bcp14>SHALL</bcp14> include, in the
request, an inference-negotiation object carrying at minimum the
following fields.</t>
        <dl>
          <dt><tt>provenance_class</tt> (enum, <bcp14>REQUIRED</bcp14>)</dt>
          <dd>
            <t>One of <tt>active</tt>, <tt>passive-aggregate</tt>, <tt>passive-individual</tt>.  The
provenance class the client asserts for the input signal of the
prospective inference.</t>
          </dd>
          <dt><tt>signal_stream</tt> (string, <bcp14>REQUIRED</bcp14>)</dt>
          <dd>
            <t>A stable identifier for the stream from which the input signal is
drawn.  Consent classes (Section 7.2) are keyed to the pair
(<tt>provenance_class</tt>, <tt>signal_stream</tt>); the stream identifier is the
second key.</t>
          </dd>
          <dt><tt>requested_output</tt> (string, <bcp14>REQUIRED</bcp14>)</dt>
          <dd>
            <t>An identifier for the category of derived statement the inference
is to produce.  The requested output does not select the compute
location (the provenance class does), but it is carried so that
the consent match (Section 7) and the audit record (Section 9) can
record what was requested.</t>
          </dd>
          <dt><tt>cohort_size</tt> (integer, <bcp14>OPTIONAL</bcp14>)</dt>
          <dd>
            <t>Present only when <tt>provenance_class</tt> is <tt>passive-aggregate</tt>.  The
size of the cohort over which the aggregate inference is to be
computed.  The service <bcp14>SHALL</bcp14> reject the request if <tt>cohort_size</tt> is
below the declared cohort floor (Section 5).</t>
          </dd>
          <dt><tt>principal</tt> (string, <bcp14>OPTIONAL</bcp14>)</dt>
          <dd>
            <t>The <tt>~handle</tt> of the inferred-about principal, present when the
inference is attributable to a named principal.  Absent for a
passive aggregate inference, which is by construction not
attributable to an individual.</t>
          </dd>
        </dl>
      </section>
      <section anchor="the-negotiation-response">
        <name>The Negotiation Response</name>
        <t>The inference service <bcp14>SHALL</bcp14> respond to an inference-negotiation
request with one of three typed responses.</t>
        <dl>
          <dt><tt>accepted</tt></dt>
          <dd>
            <t>The asserted provenance class is consented (Section 7), the routing
function (Section 8) has selected a compute location, and the
inference will proceed at that location.  The response carries the
selected <tt>compute_location</tt> (<tt>server-side</tt> or <tt>device-local</tt>), so
that the client and any audit observer record where the inference
computed.</t>
          </dd>
          <dt><tt>refused</tt></dt>
          <dd>
            <t>The asserted provenance class is not covered by a consent class.
No inference is performed at any compute location.  The structure
of the refusal is specified in Section 7.3.</t>
          </dd>
          <dt><tt>redirected</tt></dt>
          <dd>
            <t>The asserted provenance class is consented, but the routing
function has selected a compute location other than the one the
client is positioned to satisfy.  The most common case is a client
requesting a server-side inference on signal the service classifies
as <tt>passive-individual</tt>: the service does not perform the inference
server-side, and the response directs the client to perform the
inference on the device-local daemon (Section 4).  A <tt>redirected</tt> response is not a refusal; the inference is admissible.
It is not a server-side acceptance either.</t>
          </dd>
        </dl>
        <t>The negotiation response, in every case, is returned <em>before</em> any
inference is performed.  An inference service <bcp14>MUST NOT</bcp14> compute an
identity inference and then decide, from the result, whether to
return it; the compute-location gate is evaluated on the negotiation
object alone, ahead of the inference.</t>
      </section>
    </section>
    <section anchor="consent-class-matching">
      <name>Consent-Class Matching</name>
      <t>The compute-location gate is enforced by consent-class matching.  The
asserted provenance class of an inference request is matched against
the consent classes the principal has granted; an inference proceeds
only when a matching consent class is found.</t>
      <section anchor="provenance-class-is-distinct-from-trait-category">
        <name>Provenance Class Is Distinct from Trait Category</name>
        <t>A consent class is keyed to a provenance class and a signal stream,
not to the category of the derived output.  A principal who has
consented to active-class inference of a disposition has not thereby
consented to passive-individual-class inference of the same
disposition.  Consent granted for one provenance class does not
generalise to another.  This is the defining property of provenance-
class consent: the <em>how it was observed</em> is consented separately from
the <em>what is derived</em>.</t>
        <t>It follows that an inference service <bcp14>MUST</bcp14> carry the provenance class
on every signal record and on every derived statement throughout its
internal architecture, so that the consent match can be evaluated and
so that the audit record (Section 9) can record the provenance class
that was matched.  A derived statement that has lost its provenance
class is not consent-checkable and <bcp14>MUST NOT</bcp14> be served.</t>
      </section>
      <section anchor="the-consent-class">
        <name>The Consent Class</name>
        <t>A consent class is a grant, authored by the principal, carrying at
minimum:</t>
        <ul spacing="normal">
          <li>
            <t>The <tt>provenance_class</tt> the grant covers.</t>
          </li>
          <li>
            <t>The <tt>signal_stream</tt> the grant covers.</t>
          </li>
          <li>
            <t>The set of <tt>requested_output</tt> categories the grant admits, or an
explicit marker that the grant admits all output categories for the
covered (provenance class, signal stream) pair.</t>
          </li>
          <li>
            <t>A revocation marker; consent classes are revocable, and a revoked
consent class <bcp14>MUST NOT</bcp14> satisfy a subsequent match.</t>
          </li>
        </ul>
        <t>A consent class for the <tt>passive-individual</tt> provenance class
authorises device-local inference (Section 4) only.  No consent class,
of any provenance class, authorises the transmission of an
individual-attributable passive-individual derived statement to a
server; that transmission is precluded by Section 3.3 and is not a
grantable scope.</t>
        <t>Consent for inference from a third-party signal stream is a separate
consent class from any authorisation the principal may have granted
the third-party platform itself.  A principal's authorisation of a
platform's data-access grant is not a consent class for any
inference-service-side inference from that platform's stream; the
inference service <bcp14>SHALL</bcp14> require a distinct, separately revocable
consent class, keyed to the (<tt>provenance_class</tt>, <tt>signal_stream</tt>)
pair, before inferring from a third-party stream.</t>
      </section>
      <section anchor="the-wire-layer-refusal">
        <name>The Wire-Layer Refusal</name>
        <t>When the asserted provenance class of an inference request is not
covered by a consent class, the inference service <bcp14>SHALL</bcp14> return a
<tt>refused</tt> negotiation response.  The refusal carries at minimum:</t>
        <dl>
          <dt><tt>reason</tt> (enum, <bcp14>REQUIRED</bcp14>)</dt>
          <dd>
            <t>One of <tt>no-consent-class</tt> (no consent class covers the asserted
provenance class and signal stream), <tt>consent-revoked</tt> (a consent
class existed but has been revoked), <tt>cohort-floor</tt> (a
<tt>passive-aggregate</tt> request carried a <tt>cohort_size</tt> below the
declared floor), or <tt>provenance-not-routable</tt> (the asserted
provenance class is not one the service admits for the requested
output).</t>
          </dd>
          <dt><tt>provenance_class</tt> (enum, <bcp14>REQUIRED</bcp14>)</dt>
          <dd>
            <t>The provenance class that was asserted and refused, echoed so that
the client and audit observer record what was requested.</t>
          </dd>
          <dt><tt>explanation</tt> (string, <bcp14>REQUIRED</bcp14>)</dt>
          <dd>
            <t>A human-readable explanation, sufficient for the client's reasoning
surface to present to the principal without a further round-trip.</t>
          </dd>
        </dl>
        <t>A <tt>refused</tt> response is terminal for the inference request.  The
inference service <bcp14>MUST NOT</bcp14>, having returned a refusal, perform the
refused inference at any compute location, and <bcp14>MUST NOT</bcp14> perform a
substitute inference of a different provenance class without a fresh
negotiation.  The refusal is a wire-layer event: it is observable to
the client, it is recorded in the audit log (Section 9), and it
occurs before any inference computation.</t>
        <t>The refusal model of this memo is consent-class matching plus
wire-layer rejection.  It is not, and does not rely on, any
cryptographic attestation that a refused signal was absent from a
computation.  The refusal asserts that the inference was not
performed; it does not produce a proof, verifiable without access to
the underlying data, that a particular data category did not
contribute to some other computation.  The boundary between the
mechanism this memo specifies and the cryptographic-attestation
question it does not address is stated in Section 11.</t>
      </section>
    </section>
    <section anchor="routing-and-compute-location-selection">
      <name>Routing and Compute-Location Selection</name>
      <t>The routing function maps a consented provenance class to a compute
location.  The function is total over the three provenance classes
and is deterministic: the same provenance class always selects the
same compute location.</t>
      <t>A signal that the service's own classifier cannot place in one of
the three provenance classes <bcp14>SHALL NOT</bcp14> be routed server-side.  The
routing function fails closed to device-local compute only.  This is
distinct from the <tt>provenance-not-routable</tt> refusal of Section 7.3,
which answers a client asserting a class the service does not admit.
Here no client has asserted a class, so there is no party to refuse,
and the most restrictive compute location is the one selected.</t>
      <section anchor="active-class-to-server-side">
        <name>Active Class to Server-Side</name>
        <t>A consented inference of the <tt>active</tt> provenance class is routed to
server-side compute.  Its output <bcp14>MAY</bcp14> be written to the server-held
identity vector and <bcp14>MAY</bcp14> be served, subject to the inference service's
ordinary read-path consent, through the service's consented query
surface.  The principal initiated the act that produced the signal;
server-side derivation and persistence is the routing outcome.</t>
      </section>
      <section anchor="passive-aggregate-class-to-server-side-population-level-output">
        <name>Passive Aggregate Class to Server-Side, Population-Level Output</name>
        <t>A consented inference of the <tt>passive-aggregate</tt> provenance class,
whose <tt>cohort_size</tt> is no smaller than the declared cohort floor, is
routed to server-side compute.  Its output is a population-level
observation.  The output <bcp14>MUST NOT</bcp14> be written to the server-held
identity vector as an individual-attributable statement; the
server-held identity vector is, by Section 3, the destination of
active-class inference alone.  A passive aggregate output is a
statement about the cohort, retained as such.</t>
      </section>
      <section anchor="passive-individual-class-to-device-local">
        <name>Passive Individual Class to Device-Local</name>
        <t>A consented inference of the <tt>passive-individual</tt> provenance class is
routed to device-local compute on the device-local daemon (Section 4).
The inference service does not perform the inference.  Where a client
requests a server-side inference on signal the service classifies as
<tt>passive-individual</tt>, the service returns a <tt>redirected</tt> negotiation
response (Section 6) directing the client to the device-local daemon.</t>
        <t>The routing function has no branch by which a <tt>passive-individual</tt>
inference computes server-side.  A server-side compute location is not
a selectable outcome for the <tt>passive-individual</tt> provenance class
under any consent configuration.  This is the structural property
that distinguishes the compute-location gate from an access-control
mechanism: access control could, in principle, be configured to admit
a reader of a server-side passive-individual trait; the routing
function of this section has no such configuration, because the trait
is never computed server-side to be read.</t>
      </section>
    </section>
    <section anchor="audit-and-build-time-verification">
      <name>Audit and Build-Time Verification</name>
      <t>The compute-location gate is verifiable in two complementary ways: by
a per-event audit record written at negotiation time, and by a
build-time check on the inference pipeline's data-flow.</t>
      <section anchor="per-event-audit-record">
        <name>Per-Event Audit Record</name>
        <t>Every negotiation, whether it resolves to <tt>accepted</tt>, <tt>refused</tt>, or
<tt>redirected</tt>, <bcp14>SHALL</bcp14> produce an append-only audit record carrying at
minimum: the asserted <tt>provenance_class</tt>; the <tt>signal_stream</tt>; the
<tt>requested_output</tt>; the negotiation outcome; the selected
<tt>compute_location</tt> where the outcome was <tt>accepted</tt>; the <tt>reason</tt>
where the outcome was <tt>refused</tt>; an <xref target="RFC3339"/> timestamp; and the
attribution of the requesting party.  The audit record is written to
an append-only log; admitted records are not retractable or amendable.
Where the inference service is operated as, or alongside, an
organisational identity substrate, the audit record <bcp14>SHOULD</bcp14> be emitted
to that substrate's audit-signal ingestion surface as specified by
<xref target="POLICYPROV"/>.</t>
        <t>The audit record makes the gate's operation observable after the
fact: an auditor can determine, for any inference the service
performed, what provenance class was asserted, what compute location
was selected, and which consent class was matched.</t>
      </section>
      <section anchor="build-time-data-flow-verification">
        <name>Build-Time Data-Flow Verification</name>
        <t>In addition to the per-event audit record, an inference service
<bcp14>SHOULD</bcp14> verify, at the time its inference pipeline is built, that the
pipeline contains no data-flow path by which a signal of the
<tt>passive-individual</tt> provenance class reaches the server-held
identity vector.</t>
        <t>The verification treats the inference pipeline as a directed graph
whose nodes are pipeline stages and whose edges are data-flow
dependencies between stages.  The verification is the property: for
every signal node of the <tt>passive-individual</tt> provenance class, and
for every node representing a write to the server-held identity
vector, there exists no directed path from the former to the latter.
A pipeline that fails this property has a route by which a
device-local-only inference could reach the server, and the build
<bcp14>SHOULD</bcp14> fail.</t>
        <t>This build-time verification is a check on the pipeline's structure,
performed before the pipeline runs; it is independent of, and
complementary to, the per-event audit record, which observes the
pipeline's behaviour after each negotiation.  The combination of a
structural check at build time and a behavioural record at run time
is the verification model of the compute-location gate.  Neither
component is a cryptographic proof, and the verification model does
not depend on one; the boundary is stated in Section 11.</t>
      </section>
    </section>
    <section anchor="relation-to-prior-art">
      <name>Relation to Prior Art</name>
      <t>The compute-location gate is structurally distinct from the prior-art
families with which it is most likely to be confused.</t>
      <t>Differential privacy <xref target="DWORK"/> and the broader statistical-disclosure-
control literature address the population-versus-individual boundary
at the algorithmic layer: a query mechanism adds calibrated noise so
that the presence or absence of any single record is statistically
masked, and a privacy budget composes the guarantee across queries.
The compute-location gate addresses a different boundary at a
different layer.  The cohort floor of Section 5 is not a privacy
budget: it does not compose additively across queries, and it
calibrates no noise.  It is a categorical admissibility threshold:
below the floor, the passive aggregate class is simply not the
applicable provenance class, and the inference is not computed
server-side at all.  Differential privacy makes a server-side
individual-sensitive computation safe to release; the compute-location
gate routes the individual-attributable computation off the server
entirely.  The two are composable: a passive aggregate inference
admitted by the cohort floor <bcp14>MAY</bcp14> additionally apply differential
privacy to its population-level output.  They are not substitutes.</t>
      <t>Decentralised personal-data architectures (Solid <xref target="SOLID"/> and
comparable personal-data-store designs) move the <em>storage</em> of personal
data to a principal-controlled pod and govern the <em>read path</em> through
access control.  The compute-location gate governs the <em>compute path</em>:
it determines where a derivation is permitted to run, not merely where
its result is stored or who may read it.  A personal-data store can
hold a passive-individual trait computed server-side and copied to the pod; the compute-location gate precludes
the server-side computation in the first place.  The two are
complementary (a device-local daemon (Section 4) may use a
personal-data store as its retention surface), but the gate's
contribution is the routing of computation, which a storage-layer
architecture does not address.</t>
      <t>Consent-management and access-control frameworks generally govern
which parties may read which data.  The compute-location gate's
consent classes (Section 7) govern, in addition, the provenance class
under which an inference may be <em>brought into existence</em>.  A consent
framework that admits a reader of a derived trait has not, by that
admission, said anything about whether the trait may be derived
server-side from passively observed individual signal; that is the
question the provenance-class consent of this memo answers.</t>
      <t>The contribution of this memo is the wire-layer composition of the
compute-path question with provenance-class consent: a negotiation,
ahead of inference, that routes computation by provenance class and
refuses at the wire layer when the provenance class is not consented.</t>
    </section>
    <section anchor="scope-boundary-what-this-memo-does-not-specify">
      <name>Scope Boundary: What This Memo Does Not Specify</name>
      <t>This memo specifies the compute-location gate: provenance-class
negotiation, the routing function, consent-class matching, and the
wire-layer refusal.  It deliberately does not specify several adjacent
mechanisms, and an implementer <bcp14>SHOULD NOT</bcp14> read the gate as providing
them.</t>
      <t>This memo does not specify a cryptographic proof, attestation, or
guarantee that any specified data category, provenance class, or
derivation pathway was excluded from a particular computation.  The
gate's enforcement model is consent-class matching plus wire-layer
rejection (Section 7) and its verification model is per-event audit
plus build-time data-flow checking (Section 9).  A refusal under this
memo asserts that an inference was not performed; it does not produce,
and does not rely on, any object that proves (verifiably without
access to the underlying data) that a data category did not
contribute to some output.  Such a proof is a different mechanism,
addressed by separate work, and is outside the scope of this
specification.  An implementer requiring a cryptographic
exclusion guarantee <bcp14>MUST NOT</bcp14> infer one from the audit record or the
build-time check described here; neither is such a proof, and the
compute-location gate does not become one by composition.</t>
      <t>This memo does not specify the internal inference algorithms, the
trait taxonomy, the identity-vector representation, or the
device-local daemon's storage format.  These are implementation
matters of an inference service; the memo specifies only the wire
surface at which compute location is negotiated.</t>
      <t>This memo does not specify a discovery mechanism, a transport, or a
handle namespace.  It composes with <xref target="MCPDNS"/>, the principal's existing
transport, and <xref target="IDPRONOUNS"/> respectively.</t>
    </section>
    <section anchor="implementation-status">
      <name>Implementation Status</name>
      <t>A reference implementation of the compute-location gate is operated by
the present author against a production identity-inference service.
The reference deployment classifies input signals into the three
provenance classes of Section 3 by a total classification function,
routes by the function of Section 8, returns the wire-layer refusal of
Section 7.3 on a consent miss, and declares the cohort floor of
Section 5 for passive aggregate inference.  The routing function
contains no branch by which a passive-individual inference computes
server-side, and an unrecognised provenance class fails closed to
local-only.</t>
      <t>Three parts of this memo are specified but not exercised by the
reference deployment.  The negotiation of Section 6 is performed
internally ahead of the trait write rather than as an exchange with the
client: no client asserts a provenance class on the wire, and the
accepted-response compute-location field is not returned.  The refusal
of Section 7.3 carries all three required fields on the deployment's
HTTP surface but only the reason on its tool-invocation surface.  The
cohort floor is declared and enforced in code but is not reached by any
live inference path, and is not exposed at the negotiation surface as
Section 5 requires.  The build-time data-flow verification of
Section 9.2 is not implemented.</t>
      <t>The device-local daemon of Section 4 receives passive individual signal
on the member's own device and retains it there, and its egress path is
deliberately unbuilt.  It does not yet perform the local inference of
Section 4 clause 2; a local-only routing decision presently terminates
in a member-visible record rather than in a local computation.</t>
      <t>In the spirit of <xref target="RFC7942"/>, the present author notes that this section
documents implementation experience and is expected to be removed
before the document advances beyond the Independent Stream.  No claim
of interoperability is made; the reference deployment is a single
service operated by the specification's author.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This memo requests no IANA action.</t>
      <t>The negotiation field names and the negotiation-response type names
used in Sections 6 and 7 are illustrative of the reference deployment
described in Section 12.  Conforming inference services <bcp14>MAY</bcp14> name the
corresponding fields and response types by any convention consistent
with their transport's addressing primitive; the central
contribution of this memo is the three-provenance-class routing
function and the wire-layer refusal, not the field names.  No new DNS
record types, transport identifiers, port numbers, URI schemes, or
media types are introduced.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The compute-location gate concentrates an admissibility decision
(where an identity inference may compute) at a wire-layer negotiation
performed ahead of inference.  The following considerations arise.</t>
      <section anchor="provenance-class-misassertion">
        <name>Provenance-Class Misassertion</name>
        <t>A client may assert a provenance class that does not correspond to how
the input signal was actually observed; for example, asserting the
<tt>active</tt> class for a signal that was passively observed, so as to
route an individual-attributable inference to server-side compute.
The asserted provenance class is a claim, and the inference service
<bcp14>MUST NOT</bcp14> treat it as self-certifying.  The service <bcp14>SHALL</bcp14> establish the
provenance class from substrate it observes (the act that produced
the signal, the stream the signal arrived on, the presence or absence
of a principal-initiated trigger) and <bcp14>SHALL</bcp14> refuse a request whose
asserted provenance class is inconsistent with the observed substrate.
A provenance class established from observed substrate, rather than
accepted from a client assertion, is the integrity foundation of the
gate.</t>
      </section>
      <section anchor="cohort-floor-evasion">
        <name>Cohort-Floor Evasion</name>
        <t>An attacker may attempt to extract an individual-attributable
statement through repeated passive aggregate queries whose cohorts
overlap such that the difference between two near-identical cohorts
isolates an individual.  The cohort floor of Section 5 bounds the size
of any single cohort but does not, alone, bound a differencing attack
across cohorts.  An inference service <bcp14>SHOULD</bcp14> additionally constrain
the <em>composition</em> of passive aggregate queries, for example by
refusing aggregate queries whose cohorts differ by fewer than the
cohort floor, and <bcp14>SHOULD</bcp14> record passive aggregate cohort definitions
in the audit log (Section 9) so that a differencing pattern is
detectable post-hoc.</t>
      </section>
      <section anchor="redirect-suppression">
        <name>Redirect Suppression</name>
        <t>A <tt>redirected</tt> negotiation response (Section 6) directs a client to
perform a passive-individual inference on the device-local daemon
rather than server-side.  An attacker positioned between the client
and the inference service might suppress or rewrite the <tt>redirected</tt>
response so that the client believes a server-side inference is
unavailable and abandons the inference, or believes a server-side
inference occurred when it did not.  Negotiation responses <bcp14>SHOULD</bcp14> be
carried over a channel authenticated by the cryptographic identity
envelope of <xref target="MCPDNS"/>, so that a consuming client can verify the
response bears the inference service's declared signing key, and a
suppressed or rewritten response is detectable.</t>
      </section>
      <section anchor="device-local-daemon-compromise">
        <name>Device-Local Daemon Compromise</name>
        <t>The device-local daemon (Section 4) holds passive-individual derived
statements that, by Section 3.3, never reach a server.  Compromise of
the device-local daemon exposes those statements.  The gate does not
make the device-local daemon's storage secure (that is the device's
responsibility), but it does ensure that the blast radius of a
device-local compromise is confined to a single device's
passive-individual derivations and does not extend to a server-held
aggregate of many principals' passive-individual traits, because no
such server-held aggregate exists.  The compute-location gate's
routing is itself a blast-radius mitigation.</t>
      </section>
      <section anchor="audit-log-integrity">
        <name>Audit-Log Integrity</name>
        <t>The per-event audit record (Section 9.1) is the after-the-fact
evidence that the gate operated.  An attacker able to amend or delete
audit records could conceal a server-side passive-individual
inference.  The audit log <bcp14>MUST</bcp14> be append-only; admitted records <bcp14>MUST</bcp14>
NOT be retractable or amendable by the inference service operator.
Where the audit record is emitted to an organisational identity
substrate per <xref target="POLICYPROV"/>, the append-only property of that
substrate's ingestion surface carries the integrity requirement.</t>
      </section>
    </section>
    <section anchor="privacy-considerations">
      <name>Privacy Considerations</name>
      <t>The compute-location gate is, in its substance, a privacy mechanism;
its routing function is a privacy decision.  The considerations of
<xref target="RFC6973"/> apply, and three are operative here.</t>
      <section anchor="provenance-class-as-a-consent-boundary">
        <name>Provenance Class as a Consent Boundary</name>
        <t>The gate's central privacy property is that consent is keyed to
provenance class, not to trait category (Section 7.1).  A principal
controls not merely <em>what</em> is inferred about them but <em>from what
manner of observation</em>.  A principal may consent to active-class
inference of a disposition while withholding consent for
passive-individual inference of the same disposition; the gate honours
that distinction at the wire layer.  An inference service that
collapses the distinction, treating consent for a trait category as
consent for all provenance classes of that category, has not
implemented the privacy property this memo specifies.</t>
      </section>
      <section anchor="local-only-retention-of-passive-individual-inference">
        <name>Local-Only Retention of Passive Individual Inference</name>
        <t>The passive individual provenance class is routed to device-local
compute and device-local retention (Sections 3.3, 4, 8.3).  The
privacy consequence is that the inference service holds no
server-side, individual-attributable representation derived from
passively observed individual signal.  A principal's passive
individual derivations are, by construction, not present in the
inference service's data holdings, not subject to the service's
breach exposure, and not reachable by a server-side query however
authorised.  The principal's later election to contribute such a
derivation to a server-held inference is an active-class act
(Section 4) and is independently consented.</t>
      </section>
      <section anchor="third-party-stream-inference">
        <name>Third-Party Stream Inference</name>
        <t>A principal's authorisation of a third-party platform's data-access
grant is not consent for an inference service to infer identity
statements from that platform's stream (Section 7.2).  Inference from
a third-party stream requires a consent class distinct from, and
separately revocable from, the platform authorisation.  This
separation matters because a principal's mental model of a platform
authorisation is "this platform may use my data on this platform",
not "any inference service may derive identity traits from my
behaviour on this platform".  The gate's consent classes make the
second a separate, explicit, revocable grant.  Inference from a
third-party stream conducted without such a separate consent class is
a privacy violation that the gate is specifically structured to
prevent.</t>
      </section>
      <section anchor="regulatory-context">
        <name>Regulatory Context</name>
        <t>The compute-location gate's routing of passive individual inference
off the server is consistent with data-minimisation expectations under
data-protection regimes generally, and with <xref target="GDPR"/> in particular: a
derivation that is never computed server-side produces no server-side
personal datum to minimise, retain, or erase.  Implementers operating
in jurisdictions that categorically prohibit certain inferences in
certain contexts (for instance the prohibition under <xref target="EUAIACT"/> of
emotion inference in workplace and education settings) should note
that the compute-location gate is a routing-and-consent mechanism and
does not itself satisfy a categorical prohibition: a categorical
prohibition bites regardless of provenance class or compute location,
and an inference service subject to one <bcp14>MUST</bcp14> refuse the prohibited
inference outright rather than route it.  The gate composes with a
categorical refusal; it does not replace one.</t>
      </section>
    </section>
    <section anchor="relation-to-companion-memos">
      <name>Relation to Companion Memos</name>
      <t>This memo composes with four Morrison-family Internet-Drafts.</t>
      <t><xref target="MCPDNS"/> supplies the DNS-based discovery surface by which a client
locates an inference service, and the cryptographic identity envelope
specified in <xref target="MCPDNS"/> Section 7.  This memo introduces no new DNS records
or labels.</t>
      <t><xref target="IDPRONOUNS"/> supplies the <tt>~handle</tt> namespace by which principals and
substrates are named.  This memo introduces no new handle category.</t>
      <t><xref target="SUBSTRATE"/> supplies the substrate-observation posture under which the
device-local daemon (Section 4) coordinates with the principal's other
sessions; that coordination introduces no path by which
passive-individual derived statements reach a server.</t>
      <t><xref target="POLICYPROV"/> supplies the organisational identity substrate to whose
audit-signal ingestion surface the per-event audit record (Section 9.1)
<bcp14>SHOULD</bcp14> be emitted.  An inference service operated alongside an
organisational identity substrate inherits that substrate's append-only
audit posture for the compute-location gate's audit trail.</t>
      <t>The compute-location gate is the wire-layer codification of the first
clause of the identity-as-inference principle: no inference without a
compute-location gate.  The companion memos codify adjacent clauses
and surfaces of the same principle; this memo is the clause concerning
where inference is permitted to compute.</t>
    </section>
    <section anchor="document-history">
      <name>Document History</name>
      <t>draft-morrison-compute-location-gate-02 (September 2026):</t>
      <ul spacing="normal">
        <li>
          <t>Corrects the Implementation Status to separate what the reference
deployment exercises from what it specifies.  The three-class
routing, the local-only structural property, the pre-inference
refusal and the cohort-floor declaration are recorded as operating;
the Section 6 client negotiation, two of the Section 7.3 refusal
fields on the tool surface, the reached cohort floor and the
Section 9.2 build-time verification are recorded as not exercised.
The Section 4 daemon is recorded as retaining local signal without
yet performing local inference.</t>
        </li>
        <li>
          <t>Specifies in Section 8 that a signal the service cannot classify
fails closed to device-local compute, and distinguishes that case from
the Section 7.3 refusal.</t>
        </li>
        <li>
          <t>Removes a repeated phrase in Section 6.2.</t>
        </li>
        <li>
          <t>Names the three companion documents in the Abstract in words rather
than by citation, and drops two redundant phrases, in Sections 7.2
and 10.</t>
        </li>
        <li>
          <t>States in Section 5 what the Implementation Status records about the
reference deployment's cohort floor, so the two sections agree.</t>
        </li>
        <li>
          <t>Adds the missing -01 entry to this history.</t>
        </li>
      </ul>
      <t>draft-morrison-compute-location-gate-01 (July 2026):</t>
      <ul spacing="normal">
        <li>
          <t>Repairs the internal section cross-references, which pointed one
section short throughout, and moves the Status of This Memo text to
the document generator.  No change to the mechanism.</t>
        </li>
      </ul>
      <t>draft-morrison-compute-location-gate-00 (May 2026):</t>
      <ul spacing="normal">
        <li>
          <t>Initial submission.</t>
        </li>
        <li>
          <t>Defines the three provenance classes (active, passive aggregate,
passive individual) and the immutability of a signal's provenance
class.</t>
        </li>
        <li>
          <t>Specifies the device-local daemon as the compute location for
passive individual inference.</t>
        </li>
        <li>
          <t>Specifies the cohort floor for passive aggregate inference.</t>
        </li>
        <li>
          <t>Specifies the wire-layer negotiation (inference request, negotiation
response) performed ahead of inference.</t>
        </li>
        <li>
          <t>Specifies consent-class matching, the distinctness of provenance
class from trait category, and the wire-layer refusal.</t>
        </li>
        <li>
          <t>Specifies the routing function from provenance class to compute
location.</t>
        </li>
        <li>
          <t>Specifies the per-event audit record and the build-time data-flow
verification.</t>
        </li>
        <li>
          <t>States the scope boundary excluding cryptographic exclusion
guarantees from the specification.</t>
        </li>
      </ul>
    </section>
  </middle>
  <back>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="MCPDNS" target="https://datatracker.ietf.org/doc/draft-morrison-mcp-dns-discovery/">
          <front>
            <title>Discovery of Model Context Protocol Servers via DNS TXT Records</title>
            <author fullname="Blake Morrison">
              <organization>Alter Meridian Pty Ltd</organization>
            </author>
            <date year="2026"/>
          </front>
        </reference>
        <reference anchor="IDPRONOUNS" target="https://datatracker.ietf.org/doc/draft-morrison-identity-pronouns/">
          <front>
            <title>Identity Pronouns: A Reference-Axis Extension to ~handle Identity Systems</title>
            <author fullname="Blake Morrison">
              <organization>Alter Meridian Pty Ltd</organization>
            </author>
            <date year="2026"/>
          </front>
        </reference>
        <reference anchor="SUBSTRATE" target="https://datatracker.ietf.org/doc/draft-morrison-substrate-observation/">
          <front>
            <title>Substrate-Observation as an Alternative to Envelope Coordination for Concurrent Sessions</title>
            <author fullname="Blake Morrison">
              <organization>Alter Meridian Pty Ltd</organization>
            </author>
            <date year="2026"/>
          </front>
        </reference>
        <reference anchor="POLICYPROV" target="https://datatracker.ietf.org/doc/draft-morrison-org-alter-policy-provision/">
          <front>
            <title>Policy Provision and Governance Inheritance from an Organisational Identity Substrate</title>
            <author fullname="Blake Morrison">
              <organization>Alter Meridian Pty Ltd</organization>
            </author>
            <date year="2026"/>
          </front>
        </reference>
        <reference anchor="MCP" target="https://modelcontextprotocol.io">
          <front>
            <title>Model Context Protocol Specification</title>
            <author>
              <organization>Agentic AI Foundation</organization>
            </author>
            <date year="2026"/>
          </front>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC3339" target="https://www.rfc-editor.org/info/rfc3339" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3339.xml">
          <front>
            <title>Date and Time on the Internet: Timestamps</title>
            <author fullname="G. Klyne" initials="G." surname="Klyne"/>
            <author fullname="C. Newman" initials="C." surname="Newman"/>
            <date month="July" year="2002"/>
            <abstract>
              <t>This document defines a date and time format for use in Internet protocols that is a profile of the ISO 8601 standard for representation of dates and times using the Gregorian calendar.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3339"/>
          <seriesInfo name="DOI" value="10.17487/RFC3339"/>
        </reference>
        <reference anchor="RFC6973" target="https://www.rfc-editor.org/info/rfc6973" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6973.xml">
          <front>
            <title>Privacy Considerations for Internet Protocols</title>
            <author fullname="A. Cooper" initials="A." surname="Cooper"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <author fullname="B. Aboba" initials="B." surname="Aboba"/>
            <author fullname="J. Peterson" initials="J." surname="Peterson"/>
            <author fullname="J. Morris" initials="J." surname="Morris"/>
            <author fullname="M. Hansen" initials="M." surname="Hansen"/>
            <author fullname="R. Smith" initials="R." surname="Smith"/>
            <date month="July" year="2013"/>
            <abstract>
              <t>This document offers guidance for developing privacy considerations for inclusion in protocol specifications. It aims to make designers, implementers, and users of Internet protocols aware of privacy-related design choices. It suggests that whether any individual RFC warrants a specific privacy considerations section will depend on the document's content.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6973"/>
          <seriesInfo name="DOI" value="10.17487/RFC6973"/>
        </reference>
        <reference anchor="RFC7942" target="https://www.rfc-editor.org/info/rfc7942" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7942.xml">
          <front>
            <title>Improving Awareness of Running Code: The Implementation Status Section</title>
            <author fullname="Y. Sheffer" initials="Y." surname="Sheffer"/>
            <author fullname="A. Farrel" initials="A." surname="Farrel"/>
            <date month="July" year="2016"/>
            <abstract>
              <t>This document describes a simple process that allows authors of Internet-Drafts to record the status of known implementations by including an Implementation Status section. This will allow reviewers and working groups to assign due consideration to documents that have the benefit of running code, which may serve as evidence of valuable experimentation and feedback that have made the implemented protocols more mature.</t>
              <t>This process is not mandatory. Authors of Internet-Drafts are encouraged to consider using the process for their documents, and working groups are invited to think about applying the process to all of their protocol specifications. This document obsoletes RFC 6982, advancing it to a Best Current Practice.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="205"/>
          <seriesInfo name="RFC" value="7942"/>
          <seriesInfo name="DOI" value="10.17487/RFC7942"/>
        </reference>
        <reference anchor="GDPR">
          <front>
            <title>Regulation (EU) 2016/679 (General Data Protection Regulation)</title>
            <author>
              <organization>European Parliament and Council</organization>
            </author>
            <date year="2016"/>
          </front>
        </reference>
        <reference anchor="EUAIACT">
          <front>
            <title>Regulation (EU) 2024/1689 Laying Down Harmonised Rules on Artificial Intelligence (Artificial Intelligence Act)</title>
            <author>
              <organization>European Parliament and Council</organization>
            </author>
            <date year="2024"/>
          </front>
        </reference>
        <reference anchor="DWORK" target="https://www.iacr.org/archive/tcc2006/38760266/38760266.pdf">
          <front>
            <title>Calibrating Noise to Sensitivity in Private Data Analysis</title>
            <author fullname="Cynthia Dwork">
              <organization/>
            </author>
            <author fullname="Frank McSherry">
              <organization/>
            </author>
            <author fullname="Kobbi Nissim">
              <organization/>
            </author>
            <author fullname="Adam Smith">
              <organization/>
            </author>
            <date year="2006"/>
          </front>
        </reference>
        <reference anchor="SOLID" target="https://dig.csail.mit.edu/2016/solid/">
          <front>
            <title>Solid: A Platform for Decentralized Social Applications Based on Linked Data</title>
            <author fullname="Andrei Sambra">
              <organization/>
            </author>
            <author fullname="Essam Mansour">
              <organization/>
            </author>
            <author fullname="Sandro Hawke">
              <organization/>
            </author>
            <author fullname="Maged Zereba">
              <organization/>
            </author>
            <author fullname="Sarven Capadisli">
              <organization/>
            </author>
            <author fullname="Abdurrahman Ghanem">
              <organization/>
            </author>
            <author fullname="Ashraf Aboulnaga">
              <organization/>
            </author>
            <author fullname="Tim Berners-Lee">
              <organization/>
            </author>
            <date year="2016"/>
          </front>
        </reference>
      </references>
    

<section numbered="false" anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>This memo grew out of internal architectural work on the question of
how an identity-inference system should decide not merely who may read
a derived trait, but where the derivation is permitted to compute.
The realisation that the compute-location question is prior to the
access-control question: an access-control refusal arrives after
the server has already computed and persisted the datum it declines to
serve.  That observation is the central insight behind this specification.</t>
    </section>
    <section anchor="contributors" numbered="false" toc="include" removeInRFC="false">
      <name>Contributors</name>
      <contact fullname="Christopher Whiteside">
        <organization/>
        <address>
          <email>cwhiteside.engineering@gmail.com</email>
        </address>
      </contact>
    </section>
  </back>
  

</rfc>
