<?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.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-dsmullen-ppd-protocol-03" 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-03"/>
    <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="22"/>
    <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.  The household policy
instances carried by this protocol express privacy preferences for signaling
and comparison; they do not by themselves define an enforcement mechanism that
guarantees participant behavior.</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 46?>

<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>The policy instances retrieved through this protocol express household privacy
preferences and comparison inputs. They do not by themselves create or prove a
separate enforcement action against participant behavior. Deployment-specific
enforcement, gating, or control responses are outside the baseline
participant-facing protocol defined here, because this document standardizes
only the interoperable signaling path between the household-side endpoint and
the participant, while enforcement depends on deployment-specific control
surfaces and capabilities beyond that shared protocol baseline.</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>
    </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 release or releases 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.
See Device Declaration Object and Declaration Statement Object below for the
precise object shape.</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 handling context.
In this model, handling context means the context in which a dataflow occurs
or into which it is directed; it is not limited to transfer destinations.
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.
See Effective Policy Object and Policy Rule Object below for the precise
object shape.</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>handling_context</tt>,
and <tt>processing_boundary</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.
For structured <tt>jurisdiction</tt>, the reduction needs to preserve the declared
<tt>scope</tt> and the family-specific country or subdivision comparison model
defined by the taxonomy.</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 descriptive dataflow
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 fields, 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.
This document uses <tt>operation</tt> for participant-facing protocol exchanges such
as registration, retrieval, and acknowledgment. Terms such as <tt>handling</tt>,
<tt>processing</tt>, and <tt>dataflow</tt> inside declaration statements and policy rules
have the meanings defined by the companion taxonomy specification.
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 dataflow 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):
why the dataflow occurs;</t>
          </li>
          <li>
            <t><tt>action</tt> (required, compact term identifier):
which privacy-relevant action the participant performs or may request;</t>
          </li>
          <li>
            <t><tt>source</tt> (required, compact term identifier):
immediate origin of the data in that dataflow;</t>
          </li>
          <li>
            <t><tt>handling_context</tt> (required, compact term identifier):
context in which the dataflow occurs or into which it is directed. For
<tt>collection</tt>, this identifies the context into which collected data is
brought. For <tt>use</tt> and <tt>inference</tt>, it identifies the context in which that
dataflow occurs. For <tt>transfer</tt>, it identifies the recipient-side context
into which data is transferred. The semantic meaning of this field is
defined by <xref target="I-D.draft-dsmullen-ppd-taxonomy"/>; and</t>
          </li>
          <li>
            <t><tt>constraints</tt> (optional, Constraints Object):
structured qualifiers that refine the statement.</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-declaration-v1",
  "taxonomy": {
    "release": "ppd-core-2026-05"
  },
  "statements": [
    {
      "statement_id": "content-security-local-use",
      "data_type": "ppd:contentData",
      "purpose": "ppd:security",
      "action": "ppd:use",
      "source": "ppd:participantObserved",
      "handling_context": "ppd:householdContext",
      "constraints": {
        "processing_boundary": "ppd:onDeviceOnly"
      }
    },
    {
      "statement_id": "sensor-improvement-transfer",
      "data_type": "ppd:sensorData",
      "purpose": "ppd:analyticsAndImprovement",
      "action": "ppd:transfer",
      "source": "ppd:participantObserved",
      "handling_context": "ppd:vendorContext",
      "constraints": {
        "retention": "ppd:indefinite",
        "jurisdiction": {
          "scope": "transfer",
          "countrycode": ["us"]
        }
      }
    }
  ]
}
]]></sourcecode>
        </section>
      </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 reports a coarse diagnostic 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>
      <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>.
A complete example appears below under Example Effective Policy and
Acknowledgment.</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):
why the dataflow occurs;</t>
          </li>
          <li>
            <t><tt>action</tt> (required, compact term identifier):
which privacy-relevant action the rule covers;</t>
          </li>
          <li>
            <t><tt>source</tt> (required, compact term identifier):
immediate origin of the data in that dataflow;</t>
          </li>
          <li>
            <t><tt>handling_context</tt> (required, compact term identifier):
context in which the dataflow occurs or into which it is directed. For
<tt>collection</tt>, this identifies the context into which collected data is
brought. For <tt>use</tt> and <tt>inference</tt>, it identifies the context in which that
dataflow occurs. For <tt>transfer</tt>, it identifies the recipient-side context
into which data is transferred. The semantic meaning of this field is
defined by <xref target="I-D.draft-dsmullen-ppd-taxonomy"/>;</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. The wire container is
named <tt>constraints</tt>, but the companion taxonomy work defines its members as
qualifiers on atomic dataflows.
<xref target="I-D.draft-dsmullen-ppd-taxonomy"/> also defines the semantic meaning of
<tt>retention</tt>, <tt>processing_boundary</tt>, and <tt>jurisdiction</tt>; this document defines
only their participant-facing wire representation.</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 scoped dataflow. The baseline compact
form is term-valued; future specifications or deployment profiles <bcp14>MAY</bcp14>
define more structured bounded-retention forms.</t>
          </li>
          <li>
            <t><tt>processing_boundary</tt> (optional, compact term identifier):
processing-placement qualifier for <tt>use</tt> or <tt>inference</tt> within the declared
handling context.</t>
          </li>
          <li>
            <t><tt>jurisdiction</tt> (optional, object):
declarative jurisdiction qualifier for the scoped dataflow or storage
context.</t>
          </li>
        </ul>
        <t>When present, <tt>jurisdiction</tt> contains:</t>
        <ul spacing="normal">
          <li>
            <t><tt>scope</tt> (required, text):
one of <tt>collection</tt>, <tt>use</tt>, <tt>inference</tt>, <tt>transfer</tt>, or <tt>storage</tt>;</t>
          </li>
          <li>
            <t><tt>countrycode</tt> (optional, array of text):
one or more lowercase country codes using the <tt>countrycode</tt> format
<xref target="RFC8006"/>; and</t>
          </li>
          <li>
            <t><tt>subdivisioncode</tt> (optional, array of text):
one or more lowercase country subdivision codes using the <tt>subdivisioncode</tt>
format <xref target="RFC9388"/>.</t>
          </li>
        </ul>
        <t>At least one of <tt>countrycode</tt> or <tt>subdivisioncode</tt> <bcp14>MUST</bcp14> be present. A sender
<bcp14>MUST NOT</bcp14> include an empty <tt>countrycode</tt> or <tt>subdivisioncode</tt> array. A receiver
<bcp14>MUST</bcp14> treat an unknown <tt>scope</tt>, a malformed <tt>jurisdiction</tt> object, or an
invalid country or subdivision code as invalid input.</t>
        <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:contentData",
      "purpose": "ppd:security",
      "action": "ppd:use",
      "source": "ppd:participantObserved",
      "handling_context": "ppd:householdContext",
      "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 1197?>

<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="20" 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-08"/>
        </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="20" month="May" year="2026"/>
            <abstract>
              <t>   This document defines the core vocabulary, comparison model, and
   extension discipline used by Privacy Preference Declarations (PPDs)
   to express atomic privacy-relevant dataflows in home networks.  It
   complements the companion PPD architecture and protocol work by
   standardizing the core fields used in participant declarations and
   household policy rules.  The core vocabulary is the mandatory shared
   semantic floor for baseline participant-facing interoperability.
   Richer ecosystem-specific vocabularies remain possible, but
   comparison-relevant non-core terms need explicit relationships to the
   shared core so they remain computable.  Baseline participant-facing
   protocol messages use compact identifiers plus taxonomy context
   rather than requiring full ontology exchange on the wire.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-dsmullen-ppd-taxonomy-04"/>
        </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="RFC8006">
          <front>
            <title>Content Delivery Network Interconnection (CDNI) Metadata</title>
            <author fullname="B. Niven-Jenkins" initials="B." surname="Niven-Jenkins"/>
            <author fullname="R. Murray" initials="R." surname="Murray"/>
            <author fullname="M. Caulfield" initials="M." surname="Caulfield"/>
            <author fullname="K. Ma" initials="K." surname="Ma"/>
            <date month="December" year="2016"/>
            <abstract>
              <t>The Content Delivery Network Interconnection (CDNI) Metadata interface enables interconnected Content Delivery Networks (CDNs) to exchange content distribution metadata in order to enable content acquisition and delivery. The CDNI Metadata associated with a piece of content provides a downstream CDN with sufficient information for the downstream CDN to service content requests on behalf of an upstream CDN. This document describes both a base set of CDNI Metadata and the protocol for exchanging that metadata.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8006"/>
          <seriesInfo name="DOI" value="10.17487/RFC8006"/>
        </reference>
        <reference anchor="RFC9388">
          <front>
            <title>Content Delivery Network Interconnection (CDNI) Footprint Types: Country Subdivision Code and Footprint Union</title>
            <author fullname="N. Sopher" initials="N." surname="Sopher"/>
            <author fullname="S. Mishra" initials="S." surname="Mishra"/>
            <date month="July" year="2023"/>
            <abstract>
              <t>&lt;p&gt;Open Caching architecture is a use case of Content Delivery Network Interconnection (CDNI) in which the commercial Content Delivery Network (CDN) is the upstream CDN (uCDN) and the ISP caching layer serves as the downstream CDN (dCDN). RFC 8006 defines footprint types that are used for footprint objects as part of the Metadata interface (MI). The footprint types are also used for the Footprint &amp; Capabilities Advertisement interface (FCI) as defined in RFC 8008. This document defines two new footprint types. The first footprint type defined is an ISO 3166-2 country subdivision code. Defining this country subdivision code improves granularity for delegation as compared to the ISO 3166-1 country code footprint type defined in RFC 8006. The ISO 3166-2 country subdivision code is also added as a new entity domain type in the "ALTO Entity Domain Types" registry defined in Section 7.4 of RFC 9241. The second footprint type defines a footprint union to aggregate footprint objects. This allows for additive semantics over the narrowing semantics defined in Appendix B of RFC 8008 and therefore updates RFC 8008. The two new footprint types are based on the requirements raised by Open Caching but are also applicable to CDNI use cases in general.&lt;/p&gt;</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9388"/>
          <seriesInfo name="DOI" value="10.17487/RFC9388"/>
        </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:
H4sIAAAAAAAAA+196ZLbyJngfzwFVv7hY0jq7larJsajltTbNdtqaXWEY9bh
KIJEsgotEKCRYJXoDvlZ5ln2yfY78wLAotye2dmNiXC4VSCQx5fffeV8Ps/6
qq/N0/zOm666LtaH/E1nNqYzzdrkL8y6Lrqir9oGHrd9u27r/N3OrKtNtabH
d7JiterMNX7/5gW+cyeDX8xl2x2e5lWzabOsbNdNsYUpyq7Y9PPSbvd1bZr5
blfOdzLq/N7DrNlvV6Z7mpXw/dNs3TbWNHZvn+aborYmgzkeZh/N4abtyqdZ
Ps93suCdW7DFx1ft1uSN6eG9j/SganrTwYO83eT9VdVc0tPSXFewRVtdNkUN
D7Nr0+xh3jy/rPqr/Qp2VHZ2VzSXtbl7ZOV34IsaVmx7+OKq73f26d277ssF
D7ao2mNjHPttcdVvYZKs2PdXbYcbhwnzfANvMlTvvCiaysC58Md36Oe2u4Sn
f6Ezepo/L1a1+aFYWfrNbIuqxu0tZL5/XuPvNfy+WLdbmGs4x7ddVTT5u3VX
wRGdPsUKP1tY/uyfYfDdHs5iAZ/CLPP5PIcP+q5Y91n2/qqyOaDKfmuaPreM
ZMbmRb4rur5aVwDQfr4p1nBWuQIn37RdPkTcLEBcm/8GMNP+FtAgRo1Fnr+/
Mn4omH4FPxnTwJz45txWpcnh48yajpDFNOWuBXTKi6aElxiF+DXYQ9vNcD3b
oq4PgGgmX8K34eqXs/zmqlpfZZV1XwMY4d86AYyC2wNyW5mrot4gyuqbsN7z
Hv69qRoAy6qwBtDWZO3O6EYRGG6JW9MXQElFDoS0qWBV+M4sXE7emcsKwU+/
wED436KOXik9IGe52WwMLPDazHdtXQHEO9N3lbkuahiXnmTF+mPT3tSmvMRj
nMEbjbnB3xFinSmsbdcVDUfgD48csaM2+E9L0EPAF936quph0n1naIi++NQ2
7fbgPgNIHBgoCDj8bmusLS75dWv+vAeEQPJGgF5XAKHGmNKUBCziDARAQF7Z
gucIgiBX7d6aq7YudY9VY/sCuU2+LjrYf4lL6HEvDpfMJ2BK1o6xKJrYcx1c
Je686CrbNme4A9xc3rQ9D2u2cNDX8B2fPGwLzhjGWBOoYLfrKyBDu4VXiz67
3MNpwa7g/fAYdfMLprptVZa1ybJf5edN37Xlfo0nkmU///z78/mLxQg3Cg/i
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
2Lj6LrkAAA==

-->

</rfc>
