<?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 2.6.10) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-dsmullen-ppd-protocol-01" category="info" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.33.0 -->
  <front>
    <title abbrev="PPDProt">Privacy Preference Declaration Protocol Specification</title>
    <seriesInfo name="Internet-Draft" value="draft-dsmullen-ppd-protocol-01"/>
    <author fullname="Daniel Smullen">
      <organization>CableLabs</organization>
      <address>
        <email>d.smullen@cablelabs.com</email>
      </address>
    </author>
    <author fullname="Brian Scriber">
      <organization>CableLabs</organization>
      <address>
        <email>brian.scriber@computer.org</email>
      </address>
    </author>
    <date year="2026" month="May" day="20"/>
    <keyword>privacy preferences</keyword>
    <keyword>home networks</keyword>
    <keyword>internet of things</keyword>
    <keyword>device signaling</keyword>
    <abstract>
      <?line 31?>

<t>This document specifies a participant-facing protocol for Privacy Preference
Declarations (PPDs) in home networks.  The protocol is between a home-side PPD
service endpoint and a device-side actor, formally the <tt>PPD participant</tt>, which
is a device or a service acting on behalf of a device.  It defines baseline
operations for endpoint metadata confirmation, participant registration,
optional participant declaration, effective-policy retrieval, policy
acknowledgment, renewal, and reassociation.  This document complements the PPD
architecture and taxonomy documents by defining the message and sequencing
behavior needed for interoperable policy signaling.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://drspangle.github.io/draft-dsmullen-ppd-protocol/draft-dsmullen-ppd-protocol.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-dsmullen-ppd-protocol/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/drspangle/draft-dsmullen-ppd-protocol"/>.</t>
    </note>
  </front>
  <middle>
    <?line 43?>

<section anchor="introduction">
      <name>Introduction</name>
      <t><xref target="I-D.draft-dsmullen-ppd-architecture"/> defines the architectural roles,
trust boundaries, and lifecycle meaning for Privacy Preference Declarations
(PPDs) in home-network environments.
<xref target="I-D.draft-dsmullen-ppd-taxonomy"/> defines the shared semantic floor used to
express privacy rules and participant declarations.
This document specifies the participant-facing protocol behavior that sits
between those two companion documents.
The broader relationship between PPD and earlier work such as DNT, P3P, MUD,
and privacy-vocabulary or policy-expression efforts is discussed in
<xref target="I-D.draft-dsmullen-ppd-architecture"/>.
This document does not restate that comparison except where needed to explain
protocol behavior.</t>
      <t>The protocol defined here is intentionally narrow.
It is designed to ensure that a device-side actor can discover or be
provisioned with candidate home-side PPD service endpoints, confirm the
selected endpoint, register, optionally describe itself, retrieve the current
effective household policy that applies to it, and provide a protected receipt
acknowledgment for that exact policy instance.
The protocol also defines how the home-side service and the device-side actor
keep association current over time, including renewal and reassociation
behavior.</t>
      <t>In the formal architecture terminology reused here, the device-side actor is
the <tt>PPD participant</tt>.
That term can be easy to misread, so this document makes the intended boundary
explicit:
the protocol-side participant is a device or a service acting for a device, not
the homeowner, household member, or operator who set or review household
policy.</t>
      <t>This protocol does not define local dashboards, operator workflow, household
policy authoring, device-behavior enforcement, or internal protocols between a
PPD service endpoint and a distinct policy authority.
Those functions can exist in deployments, but they are outside the baseline
interoperable contract defined here.</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>", "<bcp14>NOT 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>
      <?line -18?>

<t>This document reuses the terminology defined in
<xref target="I-D.draft-dsmullen-ppd-architecture"/>.
In particular, it relies on the meanings of <tt>PPD participant</tt>,
<tt>PPD service endpoint</tt>, <tt>policy authority</tt>, <tt>effective policy</tt>,
<tt>association</tt>, <tt>current association</tt>, <tt>stale association</tt>, and
<tt>needs reassociation</tt>.</t>
      <t>For clarity in this document, <tt>PPD participant</tt> always means a device or a
service acting on behalf of a device.
It does not refer to a homeowner, household member, or other human actor on
the household side of the system.</t>
    </section>
    <section anchor="scope">
      <name>Scope</name>
      <t>This document specifies:</t>
      <ul spacing="normal">
        <li>
          <t>the participant-facing transport and serialization baseline;</t>
        </li>
        <li>
          <t>metadata confirmation for discovered candidate service endpoints;</t>
        </li>
        <li>
          <t>the baseline operation set for participant registration, optional
declaration, policy retrieval, policy acknowledgment, and renewal;</t>
        </li>
        <li>
          <t>message-object expectations for those operations;</t>
        </li>
        <li>
          <t>reassociation behavior when current association can no longer be confirmed;
and</t>
        </li>
        <li>
          <t>protocol-visible error and security behavior.</t>
        </li>
      </ul>
      <t>This document does not specify:</t>
      <ul spacing="normal">
        <li>
          <t>operator-only status, dashboard, or diagnostics surfaces;</t>
        </li>
        <li>
          <t>household policy authoring interfaces;</t>
        </li>
        <li>
          <t>internal service-to-authority protocols;</t>
        </li>
        <li>
          <t>automated enforcement behavior; or</t>
        </li>
        <li>
          <t>non-HTTP transport profiles.</t>
        </li>
      </ul>
    </section>
    <section anchor="protocol-model">
      <name>Protocol Model</name>
      <section anchor="roles">
        <name>Roles</name>
        <t>This protocol defines a participant-facing contract between:</t>
        <ul spacing="normal">
          <li>
            <t>a home-side <tt>PPD service endpoint</tt>, which presents effective policy
instances and records protected policy acknowledgments; and</t>
          </li>
          <li>
            <t>a device-side <tt>PPD participant</tt>, which is a device or backend service acting
on behalf of a device.</t>
          </li>
        </ul>
        <t>A <tt>policy authority</tt> may exist behind the PPD service endpoint, but this
protocol does not require participants to discover or address that authority
directly.
When the service endpoint and policy authority are distinct, the deployment
<bcp14>MUST</bcp14> preserve the authenticity and integrity of the policy information presented
through the participant-facing endpoint.</t>
        <t>The baseline end-to-end story is therefore:</t>
        <ol spacing="normal" type="1"><li>
            <t>the device-side participant learns or is provisioned with a home-side PPD
service endpoint;</t>
          </li>
          <li>
            <t>it confirms the endpoint and the applicable trust profile;</t>
          </li>
          <li>
            <t>it registers and may optionally submit declaration data;</t>
          </li>
          <li>
            <t>the home-side service endpoint returns the current effective policy for that
participant;</t>
          </li>
          <li>
            <t>the device-side participant acknowledges receipt of that exact policy
instance; and</t>
          </li>
          <li>
            <t>both sides use freshness and lifecycle state to determine whether
association remains current or must be renewed or replayed.</t>
          </li>
        </ol>
      </section>
      <section anchor="transport-and-serialization">
        <name>Transport and Serialization</name>
        <t>The baseline participant-facing protocol uses:</t>
        <ul spacing="normal">
          <li>
            <t>HTTP over IP;</t>
          </li>
          <li>
            <t>the path prefix <tt>/ppd/v1</tt>; and</t>
          </li>
          <li>
            <t>JSON request and response bodies using <tt>application/json</tt>.</t>
          </li>
        </ul>
        <t>This document treats JSON as the baseline interoperable encoding.
More compact encodings <bcp14>MAY</bcp14> be defined by future deployment profiles where
resource constraints justify them, but such profiles need to preserve the same
message semantics.</t>
      </section>
      <section anchor="security-profiles">
        <name>Security Profiles</name>
        <t>This protocol defines explicit participant-facing security profiles.
The metadata <tt>security_profile</tt> value identifies which profile a participant-facing
service endpoint expects.</t>
        <t>The following profile identifiers are defined:</t>
        <ul spacing="normal">
          <li>
            <t><tt>direct-constrained</tt>:
authenticated direct-device participation for devices that can meet the
minimum authenticated direct-participant bar without full certificate
lifecycle expectations;</t>
          </li>
          <li>
            <t><tt>direct-certificate</tt>:
authenticated direct-device participation for devices that can support
stronger certificate-capable deployments; and</t>
          </li>
          <li>
            <t><tt>backend-mediated</tt>:
authenticated participation by a service acting on behalf of a device.</t>
          </li>
        </ul>
        <t>The baseline interoperable profile set for this document consists of
<tt>direct-constrained</tt> and <tt>direct-certificate</tt>.
<tt>backend-mediated</tt> is an extension profile.</t>
        <t>This document does not define an unauthenticated direct-participation profile.
Extremely constrained devices that cannot satisfy the minimum authenticated
direct-participant bar are expected to participate indirectly through a trusted
intermediary, or remain non-participating.</t>
        <t>Authenticated participation, regardless of mechanism family, <bcp14>MUST</bcp14> provide:</t>
        <ul spacing="normal">
          <li>
            <t>endpoint authentication sufficient for the participant to authenticate the
selected PPD service endpoint;</t>
          </li>
          <li>
            <t>participant authentication sufficient to bind registration and acknowledgment
state to the same participant identity;</t>
          </li>
          <li>
            <t>confidentiality and integrity protection for participant-facing exchanges;</t>
          </li>
          <li>
            <t>policy-instance integrity sufficient to identify the acknowledged policy
instance unambiguously; and</t>
          </li>
          <li>
            <t>freshness protection sufficient to prevent replay of old acknowledgments as
evidence of current association.</t>
          </li>
        </ul>
        <t>This document does not require one universal credential mechanism across all
participant classes.
It is specific about required security properties first, while leaving room for
deployment profiles to realize those properties differently for constrained
direct devices, certificate-capable direct devices, and backend-mediated
extensions.</t>
      </section>
      <section anchor="candidate-discovery-and-metadata-confirmation">
        <name>Candidate Discovery and Metadata Confirmation</name>
        <t>Every participant <bcp14>MUST</bcp14> support a configured or provisioned participant-facing
PPD service endpoint.
That is the minimum interoperable discovery floor.</t>
        <t>This protocol does not standardize one universal automatic discovery mechanism.
Participants <bcp14>MAY</bcp14> additionally learn candidate PPD service endpoints through
local naming, DHCP-delivered hints, multicast service discovery,
default-gateway probing, Wi-Fi onboarding hints, or comparable local-network
mechanisms.
Such mechanisms are optional discovery profiles unless a deployment profile
requires them.
Discovery yields candidate endpoints only; it does not establish authority.</t>
        <t>A participant that learns a candidate endpoint through any discovery method
<bcp14>MUST</bcp14> confirm that the endpoint supports this protocol before deeper
interaction.
For that purpose, the baseline protocol defines:</t>
        <ul spacing="normal">
          <li>
            <t><tt>GET /ppd/v1/meta</tt></t>
          </li>
        </ul>
        <t>The metadata response is expected to identify at least:</t>
        <ul spacing="normal">
          <li>
            <t>the participant-facing service URI;</t>
          </li>
          <li>
            <t>the protocol version or profile identifier;</t>
          </li>
          <li>
            <t>the taxonomy version or versions understood by the service;</t>
          </li>
          <li>
            <t>whether participant declarations are supported;</t>
          </li>
          <li>
            <t>whether protected acknowledgments are supported; and</t>
          </li>
          <li>
            <t>the expected security mode or trust profile.</t>
          </li>
        </ul>
        <t>The metadata response <bcp14>MUST NOT</bcp14> expose household policy contents, participant
inventory, or acknowledgment history before the normal participant-facing trust
checks succeed.
The participant-facing discovery target is the PPD service endpoint itself, not
an internal repository or policy-authority endpoint.</t>
      </section>
    </section>
    <section anchor="participant-lifecycle">
      <name>Participant Lifecycle</name>
      <section anchor="initial-association">
        <name>Initial Association</name>
        <t>The baseline participant lifecycle is:</t>
        <ol spacing="normal" type="1"><li>
            <t>obtain one or more candidate PPD service endpoints;</t>
          </li>
          <li>
            <t>confirm a selected endpoint using <tt>GET /ppd/v1/meta</tt>;</t>
          </li>
          <li>
            <t>authenticate the selected endpoint according to the deployment's trust
profile;</t>
          </li>
          <li>
            <t>register participant identity and metadata;</t>
          </li>
          <li>
            <t>optionally submit a participant declaration;</t>
          </li>
          <li>
            <t>retrieve the current applicable effective policy instance; and</t>
          </li>
          <li>
            <t>acknowledge receipt of that specific policy instance.</t>
          </li>
        </ol>
        <t>Association is established only when the current applicable effective policy
instance has been delivered and acknowledged.
Acknowledgment is a receipt signal; it is not a claim of compatibility or
compliance.</t>
      </section>
      <section anchor="renewal-and-stale-association">
        <name>Renewal and Stale Association</name>
        <t>Current association is freshness-bound.
A participant <bcp14>MUST</bcp14> renew association often enough that the PPD service endpoint
does not treat the participant as stale.
The participant-facing protocol therefore needs a way to communicate renewal
expectations.</t>
        <t>The baseline effective-policy response and acknowledgment response <bcp14>MUST</bcp14> convey
one of the following:</t>
        <ul spacing="normal">
          <li>
            <t>an absolute renewal deadline; or</t>
          </li>
          <li>
            <t>a bounded renewal interval from the time of response.</t>
          </li>
        </ul>
        <t>For baseline interoperability, the minimum renewal procedure is:</t>
        <ol spacing="normal" type="1"><li>
            <t>the participant retrieves the current applicable effective policy instance
using <tt>GET /ppd/v1/policy/effective/{device_id}</tt>;</t>
          </li>
          <li>
            <t>if the returned <tt>policy_id</tt> and <tt>policy_hash</tt> still identify the same policy
instance the participant currently treats as associated, the participant
renews by sending a fresh Policy Acknowledgment Object for that instance; and</t>
          </li>
          <li>
            <t>if the returned policy instance differs, or if the service indicates
<tt>reassociation-required</tt>, the participant <bcp14>MUST</bcp14> treat the renewal attempt as
escalated to reassociation.</t>
          </li>
        </ol>
        <t>If the applicable effective policy instance remains unchanged but the
participant does not complete that retrieval-and-acknowledgment renewal
procedure before the conveyed freshness limit, the participant enters stale
association.
The participant no longer has current association until it successfully
completes the minimum renewal procedure or, when required by the service,
reassociation.</t>
      </section>
      <section anchor="reassociation-triggers">
        <name>Reassociation Triggers</name>
        <t>A participant enters <tt>needs reassociation</tt> when current association can no
longer be confirmed because:</t>
        <ul spacing="normal">
          <li>
            <t>the applicable effective policy instance changed;</t>
          </li>
          <li>
            <t>participant state relevant to effective-policy derivation changed;</t>
          </li>
          <li>
            <t>enough state was lost that the previous association can no longer be trusted;
or</t>
          </li>
          <li>
            <t>another invalidating event defined by the applicable deployment profile
occurred.</t>
          </li>
        </ul>
        <t>When reassociation is required, the participant <bcp14>MUST</bcp14> retrieve and acknowledge
the current applicable effective policy instance again before current
association is restored.</t>
      </section>
      <section anchor="non-participating-devices">
        <name>Non-Participating Devices</name>
        <t>This protocol does not require every device on a home network to participate in
PPD.
Devices that do not participate remain outside the active message exchange.
Their presence may influence local management or enforcement decisions, but
such decisions are out of scope for this protocol.
Extremely constrained devices that cannot satisfy the minimum authenticated
direct-participant bar <bcp14>MAY</bcp14> instead be represented indirectly by a trusted
intermediary that participates on their behalf.</t>
      </section>
      <section anchor="comparison-outcome-categories">
        <name>Comparison Outcome Categories</name>
        <t>This protocol does not define a universal conflict-resolution procedure between
participant-supplied descriptive material and household policy.
That depends on household intent, participant capability, and deployment logic.</t>
        <t>When a deployment compares participant-side descriptive or policy-related
inputs against household policy and needs to expose the result at the protocol
boundary in the baseline participant-facing protocol, it <bcp14>SHOULD</bcp14> return a
Comparison Outcome Object on the declaration path and classify the result
using one of the following coarse outcome categories:</t>
        <ul spacing="normal">
          <li>
            <t><tt>compatible</tt>:
the compared inputs can coexist without further action;</t>
          </li>
          <li>
            <t><tt>conditionally_satisfiable</tt>:
the compared inputs can coexist if an allowed exception, alternate mode, or
bounded refinement is applied;</t>
          </li>
          <li>
            <t><tt>decision_required</tt>:
household or operator choice is required before a compatible outcome can be
determined;</t>
          </li>
          <li>
            <t><tt>unsatisfiable</tt>:
the compared inputs cannot be satisfied together under the currently known
conditions; or</t>
          </li>
          <li>
            <t><tt>indeterminate</tt>:
the service cannot currently determine a reliable outcome.</t>
          </li>
        </ul>
        <t>This document defines the categories only.
It does not define a universal resolution procedure.</t>
      </section>
    </section>
    <section anchor="protocol-operations">
      <name>Protocol Operations</name>
      <section anchor="overview">
        <name>Overview</name>
        <t>The baseline participant-facing operation set is:</t>
        <ol spacing="normal" type="1"><li>
            <t><tt>GET /ppd/v1/meta</tt></t>
          </li>
          <li>
            <t><tt>POST /ppd/v1/device/register</tt></t>
          </li>
          <li>
            <t><tt>POST /ppd/v1/device/declaration</tt> (optional)</t>
          </li>
          <li>
            <t><tt>GET /ppd/v1/policy/effective/{device_id}</tt></t>
          </li>
          <li>
            <t><tt>POST /ppd/v1/device/ack</tt></t>
          </li>
        </ol>
        <t>These operations form a narrow control path.
They let a device-side participant confirm the home-side service, identify
itself, optionally describe itself, retrieve the current effective household
policy that applies to it, and acknowledge receipt of that specific policy
instance.
They do not define household policy authoring, repository-facing workflows,
compliance attestation, or conflict-resolution procedure.</t>
        <t>When the effective policy changes, when freshness expires, or when other
invalidating events occur, the same narrow operation set is replayed as needed
to restore current association.</t>
        <t>A deployment <bcp14>MAY</bcp14> expose additional readback or manageability operations, but
those are not required for baseline interoperability.
This document also does not define internal repository-facing operations or
operator-only status endpoints.</t>
      </section>
      <section anchor="metadata-confirmation">
        <name>Metadata Confirmation</name>
        <section anchor="get-ppdv1meta">
          <name><tt>GET /ppd/v1/meta</tt></name>
          <t>Purpose:</t>
          <ul spacing="normal">
            <li>
              <t>confirm that a candidate endpoint supports the expected PPD protocol profile;</t>
            </li>
            <li>
              <t>advertise baseline feature support; and</t>
            </li>
            <li>
              <t>communicate security expectations before registration or policy retrieval.</t>
            </li>
          </ul>
          <t>A successful response <bcp14>MUST</bcp14> be a Service Metadata Object.</t>
        </section>
      </section>
      <section anchor="registration">
        <name>Registration</name>
        <section anchor="post-ppdv1deviceregister">
          <name><tt>POST /ppd/v1/device/register</tt></name>
          <t>Purpose:</t>
          <ul spacing="normal">
            <li>
              <t>create or refresh the service endpoint's stored registration for a
participant; and</t>
            </li>
            <li>
              <t>bind the participant's current protocol identity to the registration state.</t>
            </li>
          </ul>
          <t>The request body <bcp14>MUST</bcp14> be a Device Registration Object.</t>
          <t>The request body <bcp14>SHOULD</bcp14> include, when available and appropriate for the
deployment:</t>
          <ul spacing="normal">
            <li>
              <t><tt>manufacturer</tt></t>
            </li>
            <li>
              <t><tt>model</tt></t>
            </li>
            <li>
              <t><tt>firmware_version</tt></t>
            </li>
            <li>
              <t><tt>hostname</tt></t>
            </li>
          </ul>
          <t>The following fields <bcp14>MAY</bcp14> be included when the deployment profile permits them:</t>
          <ul spacing="normal">
            <li>
              <t><tt>mac_address</tt></t>
            </li>
            <li>
              <t><tt>ip_address</tt></t>
            </li>
          </ul>
          <t>A successful response <bcp14>MUST</bcp14> be a Registration Result Object.
Registration success returns the canonical participant identity established or
confirmed by the service.
It <bcp14>MUST NOT</bcp14> repeat metadata-confirmation fields such as the participant-facing
service URI, supported feature flags, or security profile.</t>
        </section>
      </section>
      <section anchor="declaration">
        <name>Declaration</name>
        <section anchor="post-ppdv1devicedeclaration">
          <name><tt>POST /ppd/v1/device/declaration</tt></name>
          <t>Purpose:</t>
          <ul spacing="normal">
            <li>
              <t>provide optional participant-side declaration data that can inform effective
policy derivation or later operator review.</t>
            </li>
          </ul>
          <t>Declarations are optional.
A participant that does not submit a declaration can still establish
association if it can retrieve and acknowledge the applicable policy instance.</t>
          <t>The request body <bcp14>MUST</bcp14> be a Device Declaration Object.</t>
          <t>A declaration carries one or more descriptive statements that use the taxonomy
dimensions defined in <xref target="I-D.draft-dsmullen-ppd-taxonomy"/>, such as data type,
purpose, action, source, and destination.
The taxonomy document defines the meaning and composition of those dimensions.</t>
          <t>A successful declaration response without comparison detail <bcp14>SHOULD</bcp14> use
<tt>204 No Content</tt>.
When the service chooses to expose the result of comparing the declaration
against household policy or effective-policy constraints at this boundary, a
successful response <bcp14>MUST</bcp14> be <tt>200 OK</tt> with a Comparison Outcome Object.
Services are not required to compute or return such an outcome synchronously.
This document does not define a participant-controlled request flag for
comparison outcomes, and this declaration path <bcp14>MUST NOT</bcp14> be treated as a
baseline negotiation or homeowner-prompt channel.</t>
        </section>
      </section>
      <section anchor="effective-policy-retrieval">
        <name>Effective Policy Retrieval</name>
        <section anchor="get-ppdv1policyeffectivedeviceid">
          <name><tt>GET /ppd/v1/policy/effective/{device_id}</tt></name>
          <t>Purpose:</t>
          <ul spacing="normal">
            <li>
              <t>return the effective policy instance currently applicable to the participant;</t>
            </li>
            <li>
              <t>return enough policy-instance provenance information to identify what was
acknowledged; and</t>
            </li>
            <li>
              <t>communicate the association-freshness limit for current association.</t>
            </li>
          </ul>
          <t>A successful response <bcp14>MUST</bcp14> be an Effective Policy Object.</t>
          <t>A successful response <bcp14>SHOULD</bcp14> include policy-instance provenance fields that let later
inspection distinguish the household baseline from any more specific inputs,
such as:</t>
          <ul spacing="normal">
            <li>
              <t><tt>base_policy_id</tt></t>
            </li>
            <li>
              <t><tt>applied_policy_id</tt> when a more specific policy layer was applied</t>
            </li>
            <li>
              <t><tt>computed_at</tt></t>
            </li>
          </ul>
          <t>These fields describe the provenance of the returned policy instance itself.
They do not describe the provenance of data later collected, transformed, or
derived by participant devices or services.</t>
          <t>This operation returns the policy instance the participant is expected to
acknowledge.
It is not required to expose the internal policy-authority topology or the
full derivation algorithm.</t>
        </section>
      </section>
      <section anchor="policy-acknowledgment">
        <name>Policy Acknowledgment</name>
        <section anchor="post-ppdv1deviceack">
          <name><tt>POST /ppd/v1/device/ack</tt></name>
          <t>Purpose:</t>
          <ul spacing="normal">
            <li>
              <t>record a protected acknowledgment that a participant received a specific
policy instance.</t>
            </li>
          </ul>
          <t>The request body <bcp14>MUST</bcp14> be a Policy Acknowledgment Object.</t>
          <t>The acknowledgment payload is a receipt signal only.
It <bcp14>MUST NOT</bcp14> be interpreted as a claim that the participant can satisfy every
policy rule.
If deployments need richer participant-side compatibility or status reporting,
that behavior <bcp14>MUST</bcp14> be defined separately from the baseline acknowledgment.</t>
          <t>A successful acknowledgment response <bcp14>MUST</bcp14> be an Acknowledgment Result Object.
It returns the resulting association state and the next freshness value to be
used for maintaining current association.</t>
          <t>An acknowledgment that refers to a non-current or mismatched policy instance
<bcp14>MUST</bcp14> be rejected.</t>
        </section>
      </section>
    </section>
    <section anchor="message-objects">
      <name>Message Objects</name>
      <t>The following object definitions are normative for baseline interoperability.
Unless otherwise stated:</t>
      <ul spacing="normal">
        <li>
          <t>identifiers such as <tt>device_id</tt>, <tt>declaration_id</tt>, <tt>policy_id</tt>, and
<tt>rule_id</tt> are opaque text strings;</t>
        </li>
        <li>
          <t>timestamp fields use RFC 3339 date-time strings <xref target="RFC3339"/>;</t>
        </li>
        <li>
          <t><tt>policy_hash</tt> uses the form <tt>algorithm:value</tt>, and baseline
implementations <bcp14>MUST</bcp14> support <tt>sha256</tt>.
For the baseline JSON protocol, the hash value is computed over the UTF-8
octets of the Effective Policy Object serialized using the JSON
Canonicalization Scheme (JCS) <xref target="RFC8785"/>, after omitting the <tt>policy_hash</tt>
member itself; and</t>
        </li>
        <li>
          <t><tt>renewal_interval</tt> is a positive integer count of seconds.</t>
        </li>
      </ul>
      <section anchor="compact-term-identifiers">
        <name>Compact Term Identifiers</name>
        <t>Taxonomy-bearing fields use compact term identifiers.
A compact term identifier is a text string whose meaning is determined by:</t>
        <ul spacing="normal">
          <li>
            <t>a reserved core prefix defined by the protocol or taxonomy work; or</t>
          </li>
          <li>
            <t>an explicit extension-prefix declaration in a Taxonomy Context Object.</t>
          </li>
        </ul>
        <t>The term identifier itself is the primary semantic hook.
Taxonomy release metadata remains secondary validation context.
Deployments <bcp14>MAY</bcp14> use company-specific or other non-core taxonomies when their
terms are declared through the applicable taxonomy context and remain reducible
to the shared core semantic model defined by the companion taxonomy work.
For roles such as <tt>data_type</tt>, <tt>purpose</tt>, <tt>source</tt>, <tt>destination</tt>,
<tt>processing_boundary</tt>, and scoped <tt>jurisdiction</tt>, that reduction can rely on
equivalence or broader/narrower placement as defined by the taxonomy.
For the flat <tt>action</tt> family, the reduction needs to preserve exact action
meaning.</t>
        <t>For baseline interoperability, a compact term identifier <bcp14>MUST</bcp14> use the form
<tt>prefix:term</tt>.
The prefix identifies either a reserved core vocabulary or an explicitly
declared non-core vocabulary.
The baseline core prefix is <tt>ppd</tt>.
A receiver <bcp14>MUST NOT</bcp14> silently reinterpret an unresolved compact term as some
other known term.</t>
      </section>
      <section anchor="taxonomy-context-object">
        <name>Taxonomy Context Object</name>
        <t>The Taxonomy Context Object carries optional vocabulary-release context and any
required non-core prefix declarations.</t>
        <t>It <bcp14>MAY</bcp14> include:</t>
        <ul spacing="normal">
          <li>
            <t><tt>release</tt>:
a text identifier for the taxonomy release or profile in view when the object
was produced; and</t>
          </li>
          <li>
            <t><tt>prefixes</tt>:
an object mapping non-core compact prefixes to stable namespace identifiers.</t>
          </li>
        </ul>
        <t>Reserved core prefixes <bcp14>MUST NOT</bcp14> be remapped in <tt>prefixes</tt>.
A Taxonomy Context Object is <bcp14>REQUIRED</bcp14> whenever non-core compact prefixes appear
in the containing object.</t>
      </section>
      <section anchor="term-resolution-behavior">
        <name>Term Resolution Behavior</name>
        <t>Before processing a taxonomy-bearing field, a receiver <bcp14>MUST</bcp14> be able to
deterministically expand each compact term identifier into the corresponding
stable namespace-based term identifier.</t>
        <t>For the baseline protocol:</t>
        <ul spacing="normal">
          <li>
            <t>the core prefix <tt>ppd</tt> <bcp14>MUST</bcp14> be interpreted according to the companion
taxonomy work;</t>
          </li>
          <li>
            <t>any non-core prefix used in the containing object <bcp14>MUST</bcp14> appear in the
applicable Taxonomy Context Object;</t>
          </li>
          <li>
            <t>reserved core prefixes <bcp14>MUST NOT</bcp14> be redeclared or remapped; and</t>
          </li>
          <li>
            <t>a sender <bcp14>MUST NOT</bcp14> emit a taxonomy-bearing object whose compact identifiers it
cannot itself deterministically resolve.</t>
          </li>
        </ul>
        <t>If deterministic expansion fails because a compact identifier is malformed, a
required non-core prefix declaration is missing, or a reserved core prefix is
redeclared or remapped, the receiver <bcp14>MUST</bcp14> treat the object as semantically
unprocessable.</t>
        <t>If deterministic expansion succeeds but the resulting stable term identifier is
not supported for the relevant operation or deployment profile, the receiver
<bcp14>MUST</bcp14> also treat the object as semantically unprocessable.</t>
        <t>When a PPD service endpoint returns a taxonomy-bearing object, it <bcp14>MUST</bcp14> ensure
that the terms it emits are consistent with any attached Taxonomy Context
Object.</t>
      </section>
      <section anchor="service-metadata-object">
        <name>Service Metadata Object</name>
        <t>The service metadata object describes a candidate endpoint before deeper
interaction.
It contains:</t>
        <ul spacing="normal">
          <li>
            <t><tt>service_uri</tt> (required, URI string):
canonical participant-facing service URI;</t>
          </li>
          <li>
            <t><tt>protocol_version</tt> (required, text):
protocol version or profile identifier for the participant-facing contract;</t>
          </li>
          <li>
            <t><tt>declaration_supported</tt> (required, boolean):
whether the service accepts Device Declaration Objects;</t>
          </li>
          <li>
            <t><tt>ack_supported</tt> (required, boolean):
whether the service accepts Policy Acknowledgment Objects;</t>
          </li>
          <li>
            <t><tt>security_profile</tt> (required, text):
deployment security profile identifier, currently one of
<tt>direct-constrained</tt>, <tt>direct-certificate</tt>, or the extension value
<tt>backend-mediated</tt>; and</t>
          </li>
          <li>
            <t><tt>supported_taxonomy_releases</tt> (optional, array of text):
taxonomy release identifiers understood by the service for validation and
reproducibility.
These release identifiers are secondary validation context, not the primary
semantic hook for taxonomy-bearing terms.</t>
          </li>
        </ul>
      </section>
      <section anchor="device-registration-object">
        <name>Device Registration Object</name>
        <t>The registration object identifies the participant and carries optional device
metadata.
The stable identifier is <tt>device_id</tt>.
Other metadata fields are deployment-dependent and do not replace the stable
participant identifier.</t>
        <t>It contains:</t>
        <ul spacing="normal">
          <li>
            <t><tt>device_id</tt> (required, text):
stable participant identifier for this device-side actor;</t>
          </li>
          <li>
            <t><tt>manufacturer</tt> (optional, text):
participant-reported vendor name;</t>
          </li>
          <li>
            <t><tt>model</tt> (optional, text):
participant-reported model name or number;</t>
          </li>
          <li>
            <t><tt>firmware_version</tt> (optional, text):
participant-reported software or firmware version;</t>
          </li>
          <li>
            <t><tt>hostname</tt> (optional, text):
participant-reported hostname when relevant to the deployment;</t>
          </li>
          <li>
            <t><tt>mac_address</tt> (optional, text):
participant-reported link-layer address when the deployment profile permits
it; and</t>
          </li>
          <li>
            <t><tt>ip_address</tt> (optional, text):
participant-reported network address when the deployment profile permits it.</t>
          </li>
        </ul>
      </section>
      <section anchor="registration-result-object">
        <name>Registration Result Object</name>
        <t>The registration result object confirms the canonical participant identity
bound by registration.</t>
        <t>It contains:</t>
        <ul spacing="normal">
          <li>
            <t><tt>device_id</tt> (required, text):
canonical participant identifier established or confirmed by the service.</t>
          </li>
        </ul>
      </section>
      <section anchor="device-declaration-object">
        <name>Device Declaration Object</name>
        <t>The declaration object carries participant-supplied capability or data-handling
information.
At minimum it contains <tt>device_id</tt>, <tt>declaration_id</tt>, and a non-empty
<tt>statements</tt> array.
Declaration statements use the shared taxonomy dimensions defined in
<xref target="I-D.draft-dsmullen-ppd-taxonomy"/>.
The taxonomy document defines the meaning of those roles, the qualifier
families used with them, and the core semantic floor that keeps comparison
computable across richer vocabularies; this protocol document defines only how
such statements are carried.
The baseline declaration is intentionally minimal.
Registration carries participant identity, declarations carry descriptive
participant assertions, and Effective Policy and Acknowledgment Objects carry
the lifecycle-critical policy binding and freshness semantics.</t>
        <t>The declaration is descriptive only.
It <bcp14>MUST NOT</bcp14> include normative policy verdicts such as allow or deny.</t>
        <t>It contains:</t>
        <ul spacing="normal">
          <li>
            <t><tt>device_id</tt> (required, text):
participant identifier to which the declaration applies;</t>
          </li>
          <li>
            <t><tt>declaration_id</tt> (required, text):
stable identifier for this declaration instance;</t>
          </li>
          <li>
            <t><tt>taxonomy</tt> (optional, Taxonomy Context Object):
release context and any required non-core prefix declarations;</t>
          </li>
          <li>
            <t><tt>statements</tt> (required, non-empty array of Declaration Statement Objects):
participant-supplied descriptive cases stating which taxonomy-defined
combinations apply to this participant.</t>
          </li>
        </ul>
        <t>If a declaration uses any non-core compact prefix in its statements or
constraints, the
<tt>taxonomy</tt> object is <bcp14>REQUIRED</bcp14>.</t>
      </section>
      <section anchor="declaration-statement-object">
        <name>Declaration Statement Object</name>
        <t>A Declaration Statement Object is an atomic descriptive statement inside a
Device Declaration Object.
It mirrors the same core dimensions used by policy rules so that participant
assertions can be compared at the same grain, but it <bcp14>MUST NOT</bcp14> include a
normative <tt>effect</tt>.</t>
        <t>It contains:</t>
        <ul spacing="normal">
          <li>
            <t><tt>statement_id</tt> (required, text):
stable identifier for the statement within the declaration instance;</t>
          </li>
          <li>
            <t><tt>data_type</tt> (required, compact term identifier):
data category to which the statement applies;</t>
          </li>
          <li>
            <t><tt>purpose</tt> (required, compact term identifier):
purpose associated with the described handling;</t>
          </li>
          <li>
            <t><tt>action</tt> (required, compact term identifier):
handling action the participant performs or may request;</t>
          </li>
          <li>
            <t><tt>source</tt> (required, compact term identifier):
source context for the handled data;</t>
          </li>
          <li>
            <t><tt>destination</tt> (required, compact term identifier):
destination or handling target described by the participant; and</t>
          </li>
          <li>
            <t><tt>constraints</tt> (optional, Constraints Object):
structured qualifiers that refine the statement.</t>
          </li>
        </ul>
      </section>
      <section anchor="comparison-outcome-object">
        <name>Comparison Outcome Object</name>
        <t>The comparison outcome object carries an optional coarse result for
declaration-to-policy comparison on the declaration path.
It is diagnostic and descriptive.
It reports a coarse result of comparing participant-side atomic declaration
statements against household-side atomic policy rules.
It does not change the meaning of the Effective Policy Object and it is not
part of acknowledgment semantics.
It <bcp14>MUST NOT</bcp14> be treated as a request for policy relaxation, an invitation to
begin a participant-driven bargaining loop, or a trigger for baseline
homeowner consent prompting.</t>
        <t>It contains:</t>
        <ul spacing="normal">
          <li>
            <t><tt>declaration_id</tt> (required, text):
declaration instance to which this comparison result applies;</t>
          </li>
          <li>
            <t><tt>outcome</tt> (required, text):
one of <tt>compatible</tt>, <tt>conditionally_satisfiable</tt>, <tt>decision_required</tt>,
<tt>unsatisfiable</tt>, or <tt>indeterminate</tt>; and</t>
          </li>
          <li>
            <t><tt>detail</tt> (optional, text):
brief human-readable explanation suitable for diagnostics or operator review.</t>
          </li>
        </ul>
        <section anchor="example-device-declaration-object">
          <name>Example Device Declaration Object</name>
          <sourcecode type="json"><![CDATA[
{
  "device_id": "doorbell-7",
  "declaration_id": "doorbell-7-capability-v1",
  "taxonomy": {
    "release": "ppd-core-2026-05"
  },
  "statements": [
    {
      "statement_id": "video-motion-local",
      "data_type": "ppd:videoFrame",
      "purpose": "ppd:motionDetection",
      "action": "ppd:collection",
      "source": "ppd:cameraSensor",
      "destination": "ppd:localProcessing"
    },
    {
      "statement_id": "temperature-product-improvement",
      "data_type": "ppd:temperatureReading",
      "purpose": "ppd:productImprovement",
      "action": "ppd:transfer",
      "source": "ppd:sensor",
      "destination": "ppd:vendorCloud",
      "constraints": {
        "retention": "ppd:indefinite"
      }
    }
  ]
}
]]></sourcecode>
        </section>
      </section>
      <section anchor="effective-policy-object">
        <name>Effective Policy Object</name>
        <t>The effective policy object represents the policy instance the participant must
acknowledge.
It contains the policy identifier, hash, rule set, and
freshness information.
It <bcp14>SHOULD</bcp14> also contain policy-instance provenance fields that make later
recordkeeping and inspection meaningful.</t>
        <t>It contains:</t>
        <ul spacing="normal">
          <li>
            <t><tt>policy_id</tt> (required, text):
stable identifier for the policy instance to be acknowledged;</t>
          </li>
          <li>
            <t><tt>policy_hash</tt> (required, text):
stable content hash for the policy instance.
This hash binds the full returned policy instance, including freshness and
provenance fields, as serialized under the baseline canonicalization rule
above;</t>
          </li>
          <li>
            <t><tt>rules</tt> (required, array of Policy Rule Objects):
normative rule set for this effective policy instance;</t>
          </li>
          <li>
            <t><tt>renew_by</tt> (optional, RFC 3339 date-time string):
absolute deadline by which current association must be renewed if this field
is used;</t>
          </li>
          <li>
            <t><tt>renewal_interval</tt> (optional, positive integer seconds):
bounded interval after response generation within which current association
must be renewed if this field is used;</t>
          </li>
          <li>
            <t><tt>taxonomy</tt> (optional, Taxonomy Context Object):
release context and any required non-core prefix declarations for rule terms;</t>
          </li>
          <li>
            <t><tt>base_policy_id</tt> (optional, text):
identifier for the household baseline policy used in this effective result;</t>
          </li>
          <li>
            <t><tt>applied_policy_id</tt> (optional, text):
identifier for a more specific applied policy layer when present; and</t>
          </li>
          <li>
            <t><tt>computed_at</tt> (optional, RFC 3339 date-time string):
time at which the effective policy instance was computed or materialized.</t>
          </li>
        </ul>
        <t>An Effective Policy Object <bcp14>MUST</bcp14> contain exactly one of <tt>renew_by</tt> or
<tt>renewal_interval</tt>.
These fields govern association freshness for the participant-facing lifecycle.
They do not define abstract policy validity outside that lifecycle.
If any rule uses a non-core compact prefix, the <tt>taxonomy</tt> object is <bcp14>REQUIRED</bcp14>.</t>
      </section>
      <section anchor="policy-rule-object">
        <name>Policy Rule Object</name>
        <t>A Policy Rule Object is an atomic normative statement inside an Effective
Policy Object.</t>
        <t>The baseline rule model uses singular core dimensions.
When multiple cases must be expressed, they are represented as multiple rules
rather than array-valued core dimensions inside one rule.</t>
        <t>It contains:</t>
        <ul spacing="normal">
          <li>
            <t><tt>rule_id</tt> (required, text):
stable identifier for the rule within the policy instance;</t>
          </li>
          <li>
            <t><tt>data_type</tt> (required, compact term identifier):
data category to which the rule applies;</t>
          </li>
          <li>
            <t><tt>purpose</tt> (required, compact term identifier):
purpose for which the data handling is considered;</t>
          </li>
          <li>
            <t><tt>action</tt> (required, compact term identifier):
handling action covered by the rule;</t>
          </li>
          <li>
            <t><tt>source</tt> (required, compact term identifier):
source context for the handled data;</t>
          </li>
          <li>
            <t><tt>destination</tt> (required, compact term identifier):
destination or handling target covered by the rule;</t>
          </li>
          <li>
            <t><tt>effect</tt> (required, text):
normative rule effect, currently one of <tt>allow</tt> or <tt>deny</tt>; and</t>
          </li>
          <li>
            <t><tt>constraints</tt> (optional, Constraints Object):
structured qualifiers that refine the rule.</t>
          </li>
        </ul>
        <t>An Effective Policy Object <bcp14>SHOULD NOT</bcp14> contain two Policy Rule Objects with the
same core dimensions but different <tt>effect</tt> values.
Such contradictions should be resolved before the effective policy is returned.</t>
      </section>
      <section anchor="constraints-object">
        <name>Constraints Object</name>
        <t>The Constraints Object preserves a structured extension point for dataflow
qualifiers without requiring a large qualifier language in the baseline draft.
It is shared by declaration statements and policy rules.</t>
        <t>The initial standardized members are:</t>
        <ul spacing="normal">
          <li>
            <t><tt>retention</tt> (optional, compact term identifier):
baseline retention qualifier for the described or allowed or denied
handling. The baseline compact form is term-valued; future specifications
or deployment profiles <bcp14>MAY</bcp14> define more structured bounded-retention forms;
and</t>
          </li>
          <li>
            <t><tt>processing_boundary</tt> (optional, compact term identifier):
processing-placement qualifier for the described or allowed or denied
handling.</t>
          </li>
        </ul>
        <t>Future specifications or deployment profiles <bcp14>MAY</bcp14> define additional structured
constraint members.
A Constraints Object <bcp14>MUST NOT</bcp14> be treated as an unstructured free-form text
field.</t>
      </section>
      <section anchor="policy-acknowledgment-object">
        <name>Policy Acknowledgment Object</name>
        <t>The acknowledgment object binds a participant identifier to a specific policy
instance and policy hash.
Deployments that claim strong accountability properties <bcp14>MUST</bcp14> protect the
acknowledgment against forgery, replay, and stale-policy confusion.</t>
        <t>It contains:</t>
        <ul spacing="normal">
          <li>
            <t><tt>device_id</tt> (required, text):
participant identifier acknowledging receipt;</t>
          </li>
          <li>
            <t><tt>policy_id</tt> (required, text):
policy instance identifier being acknowledged; and</t>
          </li>
          <li>
            <t><tt>policy_hash</tt> (required, text):
content hash of the acknowledged policy instance, computed according to the
baseline <tt>policy_hash</tt> definition above.</t>
          </li>
        </ul>
        <t>This object is evidentiary only.
It is a receipt for a specific policy instance and <bcp14>MUST NOT</bcp14> be interpreted as a
claim of compatibility or compliance.</t>
      </section>
      <section anchor="acknowledgment-result-object">
        <name>Acknowledgment Result Object</name>
        <t>The acknowledgment result object confirms the lifecycle state after the service
records a protected acknowledgment.</t>
        <t>It contains:</t>
        <ul spacing="normal">
          <li>
            <t><tt>association_status</tt> (required, text):
resulting association state, currently one of <tt>not_associated</tt>,
<tt>associated</tt>, <tt>needs_reassociation</tt>, <tt>stale_association</tt>, or <tt>broken</tt>;</t>
          </li>
          <li>
            <t><tt>renew_by</tt> (optional, RFC 3339 date-time string):
absolute deadline by which current association must be renewed if this field
is used; and</t>
          </li>
          <li>
            <t><tt>renewal_interval</tt> (optional, positive integer seconds):
bounded interval after response generation within which current association
must be renewed if this field is used.</t>
          </li>
        </ul>
        <t>An Acknowledgment Result Object <bcp14>MUST</bcp14> contain exactly one of <tt>renew_by</tt> or
<tt>renewal_interval</tt>.</t>
        <section anchor="example-effective-policy-and-acknowledgment">
          <name>Example Effective Policy and Acknowledgment</name>
          <t>An Effective Policy Object example:</t>
          <sourcecode type="json"><![CDATA[
{
  "policy_id": "effective-doorbell-7-v3",
  "policy_hash": "sha256:8de72af3c4d6d8c9f0b0f6a4a13c8df0f716c9c0a1130d27c855a2dd8dd8e8c7",
  "renewal_interval": 900,
  "taxonomy": {
    "release": "ppd-core-2026-05"
  },
  "base_policy_id": "home-default-v2",
  "applied_policy_id": "doorbell-exception-v1",
  "computed_at": "2026-05-13T18:00:00Z",
  "rules": [
    {
      "rule_id": "r1",
      "data_type": "ppd:videoFrame",
      "purpose": "ppd:motionDetection",
      "action": "ppd:use",
      "source": "ppd:cameraSensor",
      "destination": "ppd:localProcessing",
      "effect": "allow",
      "constraints": {
        "processing_boundary": "ppd:onDeviceOnly"
      }
    }
  ]
}
]]></sourcecode>
          <t>The matching Policy Acknowledgment Object example is:</t>
          <sourcecode type="json"><![CDATA[
{
  "device_id": "doorbell-7",
  "policy_id": "effective-doorbell-7-v3",
  "policy_hash": "sha256:8de72af3c4d6d8c9f0b0f6a4a13c8df0f716c9c0a1130d27c855a2dd8dd8e8c7"
}
]]></sourcecode>
          <t>An Acknowledgment Result Object example is:</t>
          <sourcecode type="json"><![CDATA[
{
  "association_status": "associated",
  "renewal_interval": 900
}
]]></sourcecode>
        </section>
      </section>
      <section anchor="error-object">
        <name>Error Object</name>
        <t>Error responses <bcp14>SHOULD</bcp14> use <tt>application/problem+json</tt> and a structured error
object with at least:</t>
        <ul spacing="normal">
          <li>
            <t><tt>type</tt>:
problem type identifier, including PPD-specific problem types when
applicable;</t>
          </li>
          <li>
            <t><tt>title</tt>:
short problem summary;</t>
          </li>
          <li>
            <t><tt>status</tt>:
HTTP status code for this error; and</t>
          </li>
          <li>
            <t><tt>detail</tt>:
human-readable explanation when useful.</t>
          </li>
        </ul>
        <t>A deployment <bcp14>MAY</bcp14> include:</t>
        <ul spacing="normal">
          <li>
            <t><tt>instance</tt>:
problem-instance identifier; and</t>
          </li>
          <li>
            <t><tt>retryable</tt>:
boolean hint about whether retry is appropriate.</t>
          </li>
        </ul>
        <t>Error responses <bcp14>MUST NOT</bcp14> leak more household or participant metadata than is
necessary to explain the failure.</t>
        <t>For PPD-specific problems, the <tt>type</tt> member <bcp14>SHOULD</bcp14> be one of the following
relative references:</t>
        <ul spacing="normal">
          <li>
            <t><tt>invalid-request</tt></t>
          </li>
          <li>
            <t><tt>invalid-participant-binding</tt></t>
          </li>
          <li>
            <t><tt>reassociation-required</tt></t>
          </li>
          <li>
            <t><tt>stale-association</tt></t>
          </li>
          <li>
            <t><tt>policy-instance-mismatch</tt></t>
          </li>
          <li>
            <t><tt>unsupported-taxonomy-term</tt></t>
          </li>
          <li>
            <t><tt>term-resolution-failed</tt></t>
          </li>
          <li>
            <t><tt>policy-authority-unavailable</tt></t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="error-handling">
      <name>Error Handling</name>
      <t>The baseline protocol uses conventional HTTP status codes.
At minimum, participants need to handle:</t>
      <ul spacing="normal">
        <li>
          <t><tt>200 OK</tt> for successful retrieval or update with a response body;</t>
        </li>
        <li>
          <t><tt>204 No Content</tt> for successful declaration acceptance when no diagnostic
response body is returned;</t>
        </li>
        <li>
          <t><tt>400 Bad Request</tt> for invalid payloads or missing required fields;</t>
        </li>
        <li>
          <t><tt>401 Unauthorized</tt> for failed authentication;</t>
        </li>
        <li>
          <t><tt>403 Forbidden</tt> for authenticated participants that are not authorized for
the requested operation;</t>
        </li>
        <li>
          <t><tt>404 Not Found</tt> for missing participant or policy state;</t>
        </li>
        <li>
          <t><tt>409 Conflict</tt> for lifecycle or policy-instance conflicts, such as
acknowledgments that do not match the current policy instance;</t>
        </li>
        <li>
          <t><tt>422 Unprocessable Content</tt> for well-formed content that cannot be processed
semantically, such as unsupported or unresolvable taxonomy terms;</t>
        </li>
        <li>
          <t><tt>503 Service Unavailable</tt> for transient service or policy-authority
unavailability; and</t>
        </li>
        <li>
          <t>other <tt>5xx</tt> errors for unexpected service failures.</t>
        </li>
      </ul>
      <t>The initial PPD-specific problem vocabulary is:</t>
      <ul spacing="normal">
        <li>
          <t><tt>invalid-request</tt>:
malformed request payload, missing required fields, or invalid field shape;</t>
        </li>
        <li>
          <t><tt>invalid-participant-binding</tt>:
authenticated participant identity does not match the bound registration or
requested participant identifier;</t>
        </li>
        <li>
          <t><tt>reassociation-required</tt>:
current association is no longer valid and the participant must replay the
required lifecycle steps;</t>
        </li>
        <li>
          <t><tt>stale-association</tt>:
the acknowledged policy instance may still be current, but freshness expired
and renewal is required;</t>
        </li>
        <li>
          <t><tt>policy-instance-mismatch</tt>:
the supplied <tt>policy_id</tt> or <tt>policy_hash</tt> does not identify the current
policy instance the service expects;</t>
        </li>
        <li>
          <t><tt>unsupported-taxonomy-term</tt>:
the service recognizes the request shape and can resolve the supplied compact
term identifier or identifiers, but does not support one or more resulting
taxonomy terms for the relevant operation or deployment profile;</t>
        </li>
        <li>
          <t><tt>term-resolution-failed</tt>:
the service cannot deterministically resolve a supplied compact term
identifier to usable protocol semantics, such as because the identifier is
malformed, a required non-core prefix declaration is missing, or a reserved
core prefix was redeclared or remapped; and</t>
        </li>
        <li>
          <t><tt>policy-authority-unavailable</tt>:
the participant-facing service cannot currently obtain or materialize the
effective policy instance it needs to serve.</t>
        </li>
      </ul>
      <t>The following HTTP status mappings are <bcp14>RECOMMENDED</bcp14>:</t>
      <ul spacing="normal">
        <li>
          <t><tt>400 Bad Request</tt> with <tt>invalid-request</tt>;</t>
        </li>
        <li>
          <t><tt>401 Unauthorized</tt> with <tt>invalid-participant-binding</tt> when authentication
fails to establish the expected participant identity;</t>
        </li>
        <li>
          <t><tt>403 Forbidden</tt> with <tt>invalid-participant-binding</tt> when the participant is
authenticated but not authorized for the targeted participant state;</t>
        </li>
        <li>
          <t><tt>409 Conflict</tt> with <tt>reassociation-required</tt>, <tt>stale-association</tt>, or
<tt>policy-instance-mismatch</tt>;</t>
        </li>
        <li>
          <t><tt>422 Unprocessable Content</tt> with <tt>unsupported-taxonomy-term</tt> or
<tt>term-resolution-failed</tt>; and</t>
        </li>
        <li>
          <t><tt>503 Service Unavailable</tt> with <tt>policy-authority-unavailable</tt>.</t>
        </li>
      </ul>
      <t>A participant that receives an error during renewal or reassociation <bcp14>MUST NOT</bcp14>
assume that it still has current association unless the service endpoint has
explicitly confirmed that state.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>Candidate discovery and endpoint trust are separate concerns.
A participant <bcp14>MUST</bcp14> authenticate the selected PPD service endpoint according to
the deployment's security profile before treating policy information as
authoritative.</t>
      <t>All normative PPD participation defined by this document is authenticated
participation.
Deployments <bcp14>MUST NOT</bcp14> present unauthenticated local testing or demo operation as
equivalent to <tt>direct-constrained</tt> or <tt>direct-certificate</tt>
participation when making claims about protected current association.</t>
      <t>All normative PPD participation defined by this document <bcp14>MUST</bcp14> provide:</t>
      <ul spacing="normal">
        <li>
          <t>participant authentication sufficient to bind registration and
acknowledgment state to the same participant identity;</t>
        </li>
        <li>
          <t>participant-facing confidentiality and integrity protection for registration,
policy retrieval, and acknowledgment exchanges;</t>
        </li>
        <li>
          <t>policy integrity sufficient to identify the acknowledged policy instance
unambiguously;</t>
        </li>
        <li>
          <t>freshness protection sufficient to prevent replay of old acknowledgments as
evidence of current association; and</t>
        </li>
        <li>
          <t>protected storage or export of acknowledgment records when those records are
used for later inspection or accountability.</t>
        </li>
      </ul>
      <t>When a PPD service endpoint fronts a distinct policy authority, the deployment
<bcp14>MUST</bcp14> preserve the authenticity and integrity of policy instances, policy hashes,
and freshness metadata across that internal boundary.
This document does not standardize the internal protocol used for that purpose.</t>
      <t>The protocol <bcp14>SHOULD</bcp14> minimize metadata exposure during discovery, registration,
and policy retrieval.
In particular, discovery metadata and unauthenticated error responses <bcp14>SHOULD</bcp14>
avoid exposing household policy contents, participant inventories, or
acknowledgment history.
<xref target="RFC7258"/> remains relevant to these design choices.</t>
    </section>
    <section anchor="internationalization-considerations">
      <name>Internationalization Considerations</name>
      <t>Where policy tags, labels, or other string identifiers are exchanged in this
protocol, future profiles <bcp14>SHOULD</bcp14> define comparison and storage behavior that is
consistent across vendors and locales.
Where internationalized strings are used, alignment with <xref target="RFC7564"/> <bcp14>SHOULD</bcp14> be
considered.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <?line 1138?>

<reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="I-D.draft-dsmullen-ppd-architecture">
          <front>
            <title>Privacy Preference Declaration for Home Networks</title>
            <author fullname="Daniel Smullen" initials="D." surname="Smullen">
              <organization>CableLabs</organization>
            </author>
            <author fullname="Brian Scriber" initials="B." surname="Scriber">
              <organization>CableLabs</organization>
            </author>
            <date day="7" month="May" year="2026"/>
            <abstract>
              <t>   This document describes an architecture for signaling household
   privacy preferences to devices in home networks through Privacy
   Preference Declarations (PPDs).  The architecture enables a PPD
   participant to discover a PPD service endpoint, establish trust in
   that endpoint through the applicable protocol and security profile,
   retrieve the applicable household policy instance, and acknowledge
   receipt of that policy instance.  The acknowledgment establishes that
   a specific policy instance was made available to the participant; it
   does not, by itself, assert anything about the participant's
   subsequent behavior.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-dsmullen-ppd-architecture-05"/>
        </reference>
        <reference anchor="I-D.draft-dsmullen-ppd-taxonomy">
          <front>
            <title>Privacy Preference Declaration Taxonomy</title>
            <author fullname="Daniel Smullen" initials="D." surname="Smullen">
              <organization>CableLabs</organization>
            </author>
            <author fullname="Brian Scriber" initials="B." surname="Scriber">
              <organization>CableLabs</organization>
            </author>
            <date day="7" month="December" year="2025"/>
            <abstract>
              <t>   This document defines a standardized taxonomy for describing data
   handling practices of Internet-connected devices within home
   networks.  It complements the Privacy Preference Declaration (PPD)
   Protocol and architecture by providing the necessary vocabulary and
   semantic structure to represent and reason about data types,
   purposes, actions, sources, and destinations.  This taxonomy supports
   both machine reasoning and human interpretation and can be
   implemented using ontological frameworks such as OWL-DL.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-dsmullen-ppd-taxonomy-02"/>
        </reference>
        <reference anchor="RFC3339">
          <front>
            <title>Date and Time on the Internet: Timestamps</title>
            <author fullname="G. Klyne" initials="G." surname="Klyne"/>
            <author fullname="C. Newman" initials="C." surname="Newman"/>
            <date month="July" year="2002"/>
            <abstract>
              <t>This document defines a date and time format for use in Internet protocols that is a profile of the ISO 8601 standard for representation of dates and times using the Gregorian calendar.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3339"/>
          <seriesInfo name="DOI" value="10.17487/RFC3339"/>
        </reference>
        <reference anchor="RFC8785">
          <front>
            <title>JSON Canonicalization Scheme (JCS)</title>
            <author fullname="A. Rundgren" initials="A." surname="Rundgren"/>
            <author fullname="B. Jordan" initials="B." surname="Jordan"/>
            <author fullname="S. Erdtman" initials="S." surname="Erdtman"/>
            <date month="June" year="2020"/>
            <abstract>
              <t>Cryptographic operations like hashing and signing need the data to be expressed in an invariant format so that the operations are reliably repeatable. One way to address this is to create a canonical representation of the data. Canonicalization also permits data to be exchanged in its original form on the "wire" while cryptographic operations performed on the canonicalized counterpart of the data in the producer and consumer endpoints generate consistent results.</t>
              <t>This document describes the JSON Canonicalization Scheme (JCS). This specification defines how to create a canonical representation of JSON data by building on the strict serialization methods for JSON primitives defined by ECMAScript, constraining JSON data to the Internet JSON (I-JSON) subset, and by using deterministic property sorting.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8785"/>
          <seriesInfo name="DOI" value="10.17487/RFC8785"/>
        </reference>
        <reference anchor="RFC7258">
          <front>
            <title>Pervasive Monitoring Is an Attack</title>
            <author fullname="S. Farrell" initials="S." surname="Farrell"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="May" year="2014"/>
            <abstract>
              <t>Pervasive monitoring is a technical attack that should be mitigated in the design of IETF protocols, where possible.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="188"/>
          <seriesInfo name="RFC" value="7258"/>
          <seriesInfo name="DOI" value="10.17487/RFC7258"/>
        </reference>
        <reference anchor="RFC7564">
          <front>
            <title>PRECIS Framework: Preparation, Enforcement, and Comparison of Internationalized Strings in Application Protocols</title>
            <author fullname="P. Saint-Andre" initials="P." surname="Saint-Andre"/>
            <author fullname="M. Blanchet" initials="M." surname="Blanchet"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>Application protocols using Unicode characters in protocol strings need to properly handle such strings in order to enforce internationalization rules for strings placed in various protocol slots (such as addresses and identifiers) and to perform valid comparison operations (e.g., for purposes of authentication or authorization). This document defines a framework enabling application protocols to perform the preparation, enforcement, and comparison of internationalized strings ("PRECIS") in a way that depends on the properties of Unicode characters and thus is agile with respect to versions of Unicode. As a result, this framework provides a more sustainable approach to the handling of internationalized strings than the previous framework, known as Stringprep (RFC 3454). This document obsoletes RFC 3454.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7564"/>
          <seriesInfo name="DOI" value="10.17487/RFC7564"/>
        </reference>
      </references>
    </references>
  </back>
  <!-- ##markdown-source:
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
+U0OneERLJdLL4X4Tyfi4cH/ARx0D4rOqwAA

-->

</rfc>
