<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE rfc [
<!ENTITY nbsp "&#160;">
<!ENTITY zwsp "&#8203;">
<!ENTITY nbhy "&#8209;">
<!ENTITY wj "&#8288;">
]>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" submissionType="IETF" docName="draft-barrett-dnsop-domain-set-00" category="std" ipr="trust200902" obsoletes="" updates="" xml:lang="en" symRefs="true" sortRefs="true" tocInclude="true" version="3" consensus="true">
  <!-- xml2rfc v2v3 conversion 3.34.0 -->
  <!-- Generated by id2xml 1.6.0 on 2026-08-14T17:50:54Z -->
	<front>
    <title abbrev="domain-set">The Domain Set Discovery Protocol (domain-set)</title>
    <seriesInfo name="Internet-Draft" value="draft-barrett-dnsop-domain-set-00"/>
    <author initials="T." surname="Barrett" fullname="Thomas Barrett">
      <organization>EnCirca, Inc.</organization>
      <address>
        <postal>
          <city>Woburn</city><region>MA</region><country>United States of America</country></postal>
        <email>tbarrett@encirca.com</email>
      </address>
    </author>
    <author initials="C." surname="Schaub" fullname="Chris Schaub">
      <organization>EnCirca, Inc.</organization>
      <address>
        <postal>
          <city>Woburn</city><region>MA</region><country>United States of America</country></postal>
        <email>cschaub@encirca.com</email>
      </address>
    </author>
    <author initials="A." surname="Barrett" fullname="Andrew Barrett">
      <organization>EnCirca, Inc.</organization>
      <address>
        <postal>
          <city>Woburn</city><region>MA</region><country>United States of America</country></postal>
        <email>andrew@encirca.com</email>
      </address>
    </author>
    <author initials="P." surname="Kowalik" fullname="P Kowalik">
      <organization>DENIC eG</organization>
      <address>
        <postal>
          <city>Frankfurt am Main</city><country>Germany</country></postal>
        <email>pawel.kowalik@denic.de</email>
      </address>
    </author>
    <date year="2026" month="August" day="20"/>
    <abstract>
      <t>
   Organizations commonly operate under multiple domain names: a
   primary website, legacy names, defensive registrations, divisional
   brands, and names in restricted or verified top-level domains.  No
   standard mechanism exists for a domain owner to declare, in a
   machine-readable and verifiable way, which domains belong to the
   same organization.  This document defines "domain-set", a protocol
   by which domain operators publish membership in a set of domains
   using a DNS TXT record as the discovery mechanism.  The record
   either lists the members directly or references an extensible
   Domain Set Manifest retrieved over HTTPS.  Mutual attestation is
   the validation requirement: a link between two domains is valid
   only when both domains independently publish records naming each
   other.  Every direction of a link MUST be retrieved over an
   authenticated channel, by DNSSEC or by the Web PKI.  The
   protocol enables browsers, security tooling, and AI systems to
   answer the question "are these two domains operated by the same organization?" from first-party, owner-published data rather than
   inference.</t>
    </abstract>
  </front>
  <middle>
    <section anchor="sect-1" numbered="true" toc="default">
      <name>Introduction</name>
      <section anchor="sect-1.1" numbered="true" toc="default">
        <name>Motivation</name>
        <t>
   A financial institution may operate examplebank.com as its primary
   website, examplebank.bank in a verified namespace, example.org for
   a charitable foundation, and several defensive registrations.  To a
   human customer, a security analyst, or an AI system asked "is examplebank.com the same institution as examplebank.bank?", the
   relationship among these names is not discoverable by any standard
   means.  The ambiguity is actively exploited: phishing campaigns
   depend on users' inability to distinguish a legitimate alternate
   domain from an imposter.</t>
        <t>
   Existing mechanisms address adjacent problems but not this one.
   Certificates bind a key to a name, not names to each other.  WHOIS
   and RDAP <xref target="RFC9083" format="default"/> expose registration metadata that is frequently
   redacted and never designed as an organizational assertion.
   Proprietary databases infer domain ownership clusters
   probabilistically.  What is missing is a first-party, owner-
   published, mutually verifiable declaration that lives where domain
   authority already lives: in the DNS.</t>
        <t>
   This document defines such a mechanism, in the spirit of
   security.txt <xref target="RFC9116" format="default"/>: a deliberately minimal convention that a
   competent operator can deploy in minutes.</t>
        <t>
   The consumers of domain-set data are expected to be programmatic:
   browsers, security tooling, and increasingly autonomous or
   LLM-based agents evaluating a claimed relationship between two
   domains, rather than a human reading DNS or manifest records
   directly.  The protocol is designed for machine consumption
   first; any human-facing explanation of a confirmed link is
   synthesized by the consuming system from the underlying data,
   not read off the record itself.</t>
        <t>
   The expected publishers of domain-set data are businesses and
   other organizations that operate more than one resolving
   domain -- a primary site alongside legacy, defensive,
   verified-namespace, or divisional names -- rather than
   individual registrants or investors holding a single domain
   for its own sake.</t>
      </section>
      <section anchor="sect-1.2" numbered="true" toc="default">
        <name>Design Goals</name>
        <ul spacing="normal">
          <li>
            <t>Deployable in one afternoon with no new infrastructure: a TXT
      record, optionally with a static manifest file.</t>
          </li>
          <li>
            <t>Resistant to unilateral false claims: validity requires mutual
      attestation (<xref target="sect-3.2" format="default"/>).</t>
          </li>
          <li>
            <t>Authenticated in every direction, by DNSSEC or by the Web
      PKI (<xref target="sect-6.2" format="default"/>); neither mechanism is required
      of every publisher, since the two are fully equal
      alternatives.</t>
          </li>
          <li>
            <t>Consumable by automated crawlers, security tooling, browsers,
      and AI systems without registration, permission, or fees.</t>
          </li>
          <li>
            <t>Neutral as to who consumes or aggregates the data.</t>
          </li>
          <li>
            <t>Discoverable without continuous crawling: publication is
      accompanied by lightweight notification to one or more
      OPTIONAL indexes (<xref target="sect-9" format="default"/>).</t>
          </li>
        </ul>
      </section>
      <section anchor="sect-1.3" numbered="true" toc="default">
        <name>Non-Goals</name>
        <t>
   This protocol asserts common operation of domains.  It does NOT
   assert the lawfulness, eligibility, licensure, or trustworthiness
   of the operating organization (see <xref target="sect-8" format="default"/>).  It does not replace
   certificates, RDAP, or registry verification processes, and it does
   not define a trust hierarchy or any central registry.  The
   indexes of <xref target="sect-9" format="default"/> are optional aggregators, of which any
   number may exist; no index is canonical.</t>
      </section>
      <section anchor="sect-1.4" numbered="true" toc="default">
        <name>Related Work</name>
        <t>
   Several existing efforts are adjacent to this protocol; none
   addresses its problem.</t>
        <t>
   Domain control validation.  <xref target="I-D.ietf-dnsop-domain-verification-techniques" format="default"/> catalogs best practices for proving control of a
   single domain via DNS records, typically for one-time bootstrap of
   a service.  This document's TXT record placement follows those
   practices.  Domain-set differs in purpose: it is not a one-time
   proof of control of one domain, but a standing, mutually
   maintained assertion of relationship between domains.</t>
        <t>
   DNS integrations.  <xref target="I-D.ietf-dnsop-integration" format="default"/> describes
   considerations for applications that use domain names as
   identifiers, including lifecycle awareness, control validation,
   and completeness across TLDs.  Domain-set is designed to satisfy
   that document's considerations, and its split between DNS
   discovery and HTTPS manifest retrieval mirrors deployed practice
   described there, such as bidirectional handle verification in
   the AT Protocol.</t>
        <t>
   Provisioning protocols.  The Domain Connect protocol
   <xref target="I-D.ietf-dconn-domainconnect" format="default"/> standardizes how service providers
   and DNS providers cooperate to set DNS records with user consent.
   It configures records; it does not define their meaning.  The two
   compose: a Domain Connect template for the "_domain-set" record
   would allow participating DNS providers to offer one-click
   publication of the records defined here.</t>
        <t>
   Related Website Sets.  The Related Website Sets mechanism <xref target="RWS" format="default"/>
   (formerly First-Party Sets) allows an organization to declare
   related websites for browser storage-access and cookie decisions,
   validated in part through a well-known resource.  It demonstrates
   demand for machine-readable organizational grouping of domains,
   but differs fundamentally in architecture and scope: membership
   is admitted through a single canonical list maintained by one
   browser vendor, subject to numeric limits and purpose-bound to
   browser privacy behavior.  Domain-set requires no central list,
   no admission process, and no designated consumer: any party may
   publish, and any party may validate, using the DNS and the WebPKI
   alone.</t>
        <t>
   Certificates and registration data.  WebPKI certificates bind
   keys to names, not names to each other; multi-SAN certificates
   reflect hosting arrangements rather than organizational
   assertions.  RDAP <xref target="RFC9083" format="default"/> exposes registration metadata that is
   frequently redacted and was never designed as an organizational
   statement.  Neither provides an owner-published relationship
   declaration.</t>
        <t>
   Registry-enforced grouping.  Work in the REGEXT working group on
   same-entity sets <xref target="I-D.ietf-regext-epp-same-entity" format="default"/> allows a
   registry to group domains that must be held by a single
   registrant, generalizing earlier work on internationalized
   variants.  The mechanisms are complementary and operate at
   different layers: same-entity sets are provisioned through EPP
   within a single registry, are enforced by the registry rather
   than asserted by the registrant, and cover names a registry
   defines as equivalent, while domain sets are published in the
   DNS, span registries and top-level domains, are asserted by the
   operators themselves, and cover distinct names an organization
   chooses to associate.</t>
        <t>
   Registry enforcement carries an advantage this protocol cannot
   reproduce.  Where a registry requires the members of a group to
   transfer and be deleted together, the group cannot be partially
   divested, and the dangling attestation described in <xref target="sect-10" format="default"/>
   cannot arise.  Where such a grouping exists and is exposed by a
   registry, a consumer MAY treat it as corroborating a link
   asserted under this document.</t>
      </section>
      <section anchor="sect-1.5" numbered="true" toc="default">
        <name>Why DNS</name>
        <t>
   An HTTPS-only design, in the manner of <xref target="RFC9116" format="default"/>, was
   considered and rejected.  Domains relevant to this protocol
   frequently offer no services -- defensive registrations, brand
   holdings, retired names -- and have no HTTP endpoint.
   Publication in the DNS reaches them; the Domain Set Manifest of
   <xref target="sect-4.3" format="default"/> remains available for publishers who operate
   HTTPS.</t>
      </section>
      <section anchor="sect-1.6" numbered="true" toc="default">
        <name>Limitations</name>
        <t>
   This protocol reaches only domains that are delegated and
   resolving.  A registration that is not delegated cannot publish
   a record and cannot participate, regardless of who holds it, and
   a consumer has no DNS-based means of learning that such a
   registration exists or to whom it relates.  Registration data
   access <xref target="RFC9083" format="default"/> is the only avenue for such names, subject to
   its own availability and redaction limits.</t>
        <t>
   Enumeration of an organization's holdings is therefore outside
   what this protocol can achieve.  A domain-set record or manifest
   is an assertion by a publisher about names it chooses to
   disclose, and MUST NOT be read as a complete account of the
   organization's registrations.</t>
      </section>
      <section anchor="sect-1.7" numbered="true" toc="default">
        <name>Note to Readers (To Be Removed Before Publication)</name>
        <t>[RFC Editor: please remove this section before publication.]</t>
        <t>This revision is an individual submission seeking review and
   dispatch guidance.  Discussion is directed to the dnsop working
   group mailing list (dnsop@ietf.org).</t><t>The authors are aware that this document currently specifies three separable pieces: the DNS record and validation model, the manifest format, and the index role (Section 9).  They are presented together so that initial review can evaluate the design as a whole.  Should the working group adopt this work, the authors intend to restructure it into a slim base specification (record and mutual validation) with the manifest format and the index role as companion documents.</t><t>
   Known open issues deferred to the next revision: completion of
   the ABNF (<xref target="sect-5.2" format="default"/>); registration of a dedicated media type
   for the manifest; CNAME handling at the "_domain-set" node;
   NXDOMAIN/NODATA distinctions and TTL guidance in retrieval,
   including interaction with aggressive negative caching; and
   optional mechanisms by which counterpart re-attestation can
   clear the lapse warnings of <xref target="sect-6.3" format="default"/>.  Text contributions
   on any of these are welcome.</t>
      </section>
    </section>
    <section anchor="sect-2" numbered="true" toc="default">
      <name>Terminology</name>
      <t>
   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED",
   "MAY", and "OPTIONAL" in this document are to be interpreted as
   described in BCP 14 <xref target="RFC2119" format="default"/> <xref target="RFC8174" format="default"/> when, and only when, they
   appear in all capitals, as shown here.</t>
      <t>
   DNS terminology in this document follows <xref target="RFC9499" format="default"/>.</t>
      <dl newline="false" spacing="normal" indent="3">
        <dt>Domain Set:</dt>
        <dd>
          <t>A group of registrable domains declared by their operators to be operated by a single organization.</t></dd>
        <dt>Member:</dt>
        <dd>
          <t>
	A domain that publishes a domain-set record naming other
          </t>
          <t>
	domains in the set.
          </t>
        </dd>
        <dt>Primary Domain:</dt>
        <dd>
          <t>
	The member designated by the set as the
          </t>
          <t>
	organization's canonical web presence.
          </t>
        </dd>
        <dt>Manifest:</dt>
        <dd>
          <t>
	A JSON document containing the authoritative
          </t>
          <t>
	structured representation of a domain set, referenced from a
      member's DNS record (<xref target="sect-4.3" format="default"/>).
          </t>
        </dd>
        <dt>Link:</dt>
        <dd>
          <t>
	An edge between two members.  A link is "asserted" when one
          </t>
          <t>
	member names the other, and "confirmed" when both do.
          </t>
        </dd>
        <dt>Publisher:</dt>
        <dd>
          <t>
	The operator of a member domain who places the record.
          </t>
          <t/>
        </dd>
        <dt>Consumer:</dt>
        <dd>
          <t>
	Any party (crawler, browser, security tool, AI system,
          </t>
          <t>
	aggregator) that retrieves and validates domain-set records.
          </t>
        </dd>
      </dl>
    </section>
    <section anchor="sect-3" numbered="true" toc="default">
      <name>The Domain Set Model</name>
      <section anchor="sect-3.1" numbered="true" toc="default">
        <name>Sets and Members</name>
        <t>
   A domain set is not registered anywhere and has no identifier other
   than its membership.  It exists implicitly as the transitive
   closure of confirmed links (<xref target="sect-6.1" format="default"/>).  Each member publishes
   its own record listing the other members it attests to.  A member
   MAY list a subset of the full set; consumers compute the effective
   set from pairwise confirmed links.</t>
      </section>
      <section anchor="sect-3.2" numbered="true" toc="default">
        <name>Mutual Attestation</name>
        <dl newline="true" spacing="normal" indent="3">
          <dt>The central rule of this protocol:</dt>
          <dd>
	A link between domain A and domain B is CONFIRMED if and only
      if A publishes a record naming B, and B publishes a record
      naming A.
	</dd>
        </dl>
        <t>
   One-directional claims are ASSERTED only and MUST NOT be treated
   by consumers as establishing common operation.  This rule is what
   prevents a malicious registrant of examp1ebank.com from inserting
   itself into a legitimate institution's set: the legitimate members
   will never publish a reciprocal record.</t>
      </section>
      <section anchor="sect-3.3" numbered="true" toc="default">
        <name>Primary Domain</name>
        <t>
   Each member SHOULD designate the set's primary domain via the
   "primary" field.  Consumers SHOULD treat disagreement among
   members about the primary domain as a validation warning
   (<xref target="sect-6.1" format="default"/>) but not as invalidating confirmed links.</t>
      </section>
    </section>
    <section anchor="sect-4" numbered="true" toc="default">
      <name>Publication and Discovery</name>
      <section anchor="sect-4.1" numbered="true" toc="default">
        <name>DNS TXT Record</name>
        <t>The DNS TXT record <xref target="RFC1035" format="default"/> is the discovery mechanism of this protocol.  A publisher places a TXT record at the underscored node name "_domain-set" directly under the registrable domain. This document deliberately uses a TXT record at an underscored name <xref target="RFC8552" format="default"/> rather than a dedicated RRTYPE: such records can be provisioned today through every registrar and DNS-provider interface without software changes, following the deployment path of SPF <xref target="RFC7208" format="default"/> and DKIM <xref target="RFC6376" format="default"/>.  A dedicated RRTYPE MAY be defined in a future revision without changing the data model. The record takes one of two mutually exclusive forms.</t><t>Inline membership.  Small sets MAY list members directly:</t><artwork name="" type="" align="left" alt="">
_domain-set.examplebank.com.  IN  TXT
   "v=domainset1; primary=examplebank.com;
    members=examplebank.bank,example.org,examplebank.net"

</artwork><t>
   Manifest reference.  Larger or extensible sets MAY instead
   reference a Domain Set Manifest (<xref target="sect-4.3" format="default"/>) by URI:</t>
        <artwork name="" type="" align="left" alt="">
   _domain-set.examplebank.com.  IN  TXT
      "v=domainset1;
       uri=https://examplebank.com/.well-known/domain-set"
</artwork>
        <t>
   Exactly one of "members" or "uri" MUST appear in a record.  A
   record containing both, or neither, is malformed and MUST be
   ignored.  The URI form also avoids the practical length
   constraints of TXT record values for large sets.</t>
        <t>
   A TXT RDATA divided into multiple character-strings MUST be
   interpreted as the concatenation of those strings in order,
   without separators, in the manner of Section 3.3 of <xref target="RFC7208" format="default"/>.
   Examples in this document may wrap a character-string across
   lines for readability.</t>
        <t>A publisher MUST NOT place more than one TXT record at the "_domain-set" node.  A consumer observing multiple TXT records at that node MUST treat the publisher's record as absent for the purposes of Section 6 and SHOULD record a validation warning; this mirrors the multiple-record failure semantics of <xref target="RFC7208" format="default"/> and prevents an injected second record from silently widening a set.</t><t>This document defines a single flat set per publishing domain.  A domain that participates in more than one organizationally distinct relationship -- for example, both a corporate family and an unrelated joint venture -- names all such members within that one set, distinguished only by relation type (<xref target="sect-5.1" format="default"/>) where that applies.  Segmenting a domain's membership into separately scoped groups is not defined by this document.</t><t>The record MUST be published at the registrable domain, not at arbitrary subdomains.  Determining the registrable-domain boundary ("public suffix plus one") is itself a known hard problem in the DNS, and no IETF-standard mechanism exists; in current practice consumers determine it using the Public Suffix List <xref target="PSL" format="default"/>, a community-maintained resource.  Consumers MUST apply the same boundary determination consistently to both directions of a link (Section 6.1).</t><t>
   Publication at a subdomain MUST be ignored by consumers.  A
   record published at a public suffix itself MUST be ignored unless
   it conforms to <xref target="sect-4.2" format="default"/>.</t>
        <t>
   Where the zone is signed with DNSSEC <xref target="RFC4033" format="default"/>, the record
   inherits origin authentication, satisfying the authentication
   requirement of <xref target="sect-6.2" format="default"/>.</t>
      </section>
      <section anchor="sect-4.2" numbered="true" toc="default">
        <name>Subtree-Scoped Records</name>
        <t>
   Some top-level domains are operated by and registrable only to a
   single organization and its affiliates.  Single-organization TLDs
   are common in the current namespace: several hundred exist, and
   their registry agreements typically restrict registrations to the
   registry operator and parties it controls.  For such a TLD, per-
   domain publication under <xref target="sect-4.1" format="default"/> is redundant: every name in
   the zone belongs to the same organization by construction, and
   the zone operator is that organization.</t>
        <t>
   A TLD operator MAY therefore publish a single record at the TLD
   apex using the "scope" field:</t>
        <artwork name="" type="" align="left" alt="">
   _domain-set.example.  IN  TXT
      "v=domainset1; scope=subtree; primary=example.com;
       members=example.com,example.co.uk,example-group.net"
</artwork>
        <t>
   A record with "scope=subtree" asserts that every registrable name
   under that node is a member of the declared set.  Consumers
   encountering such a record:</t>
        <ul spacing="normal"><li>MUST treat any name of the form &lt;label&gt;.&lt;tld&gt; as a member of the set, without requiring a per-domain record at that name.</li><li>MUST still apply the mutual attestation rule of Section 3.2 to each named member outside the TLD: a link between the TLD and example.com is CONFIRMED only if example.com reciprocates.</li><li>MUST reject a "scope=subtree" record published at a name that is not a top-level domain.</li></ul><t>A reciprocating member identifies the TLD by its bare label:</t><artwork name="" type="" align="left" alt="">
_domain-set.example.com.  IN  TXT
   "v=domainset1; primary=example.com;
    members=example,example.co.uk"

</artwork><t>
   Consumers MUST accept a bare TLD label as a valid member
   identifier when, and only when, the referenced TLD publishes a
   conforming "scope=subtree" record.</t>
        <t>
   Publishing a "scope=subtree" record does not imply any evaluation
   of the operator's eligibility to operate that TLD (<xref target="sect-8" format="default"/>).
   This protocol does not validate whether a TLD in fact restricts
   registration to its operator; consumers MAY use independent
   knowledge of that fact, in the same manner they rely on the
   Public Suffix List (<xref target="sect-4.1" format="default"/>).</t>
        <t>
   A "scope=subtree" record MUST NOT be published for a TLD that accepts
   registrations from unaffiliated third parties.  Consumers
   encountering a "scope=subtree" record at a TLD known to be open or
   shared SHOULD record a validation warning and SHOULD NOT expand
   the set.</t>
        <t>
   This mechanism is named for the general case of a subtree
   controlled by a single operator, not for top-level domains
   specifically, but conforming use is restricted to top-level
   domains: a TLD's registry agreement is currently the only point
   in the namespace where a consumer can generally confirm
   single-operator control from outside the DNS.  A future revision
   MAY extend "scope=subtree" to other node classes once a
   comparable means of confirming that precondition exists.</t>
      </section>
      <section anchor="sect-4.3" numbered="true" toc="default">
        <name>Domain Set Manifest</name>
        <t>
   A Domain Set Manifest is a JSON <xref target="RFC8259" format="default"/> document containing the
   authoritative structured representation of a domain set.  When a
   record references a manifest via the "uri" field, the manifest
   supplies the set's membership and primary designation; the DNS
   record's role is discovery and authorization of the manifest
   location.</t>
        <t>
   The manifest MUST be retrieved over HTTPS.  Media type:
   application/json.  Example:</t>
        <artwork name="" type="" align="left" alt="">
   {
     "version": "domainset1",
     "primary": "examplebank.com",
     "members": [
       "examplebank.com",
       "examplebank.bank",
       "example.org",
       {"domain": "examplebank.net", "rel": "defensive"}
     ],
     "entity": {},
     "verified": "2026-08-05T00:00:00Z"
   }
</artwork>
        <t>
   The RECOMMENDED manifest location is the well-known path
   (registered in <xref target="sect-12.2" format="default"/>):</t>
        <dl newline="false" spacing="normal" indent="3">
          <dt/>
          <dd>
      https://&lt;domain&gt;/.well-known/domain-set</dd>
        </dl>
        <t>The path deliberately omits a ".json" suffix so that future revisions can employ HTTP content negotiation without changing the discovery URI.  Publishers MAY use any HTTPS URI; the well-known path is a convention, not a requirement, since the authorizing pointer is the DNS record itself (Section 4.4).</t><t>A manifest contains the following members:</t><t>
   version   REQUIRED.  "domainset1".</t>
        <dl newline="false" spacing="normal" indent="10">
          <dt>members</dt>
          <dd>
            <t>
	REQUIRED.  Array of member domains, with the semantics
            </t>
            <t>
	of the "members" field of <xref target="sect-5.1" format="default"/>, except that the
             manifest's members array SHOULD include every member of
             the set, including domains whose records reference this
             manifest.  Each array entry is either a plain domain
             string, or an object of the form
             {"domain": &lt;domain&gt;, "rel": &lt;rel-value&gt;} carrying the
             relation type of <xref target="sect-5.1" format="default"/> for that member.  Consumers
             MUST accept both forms; a plain string entry carries no
             relation type and MUST be treated as "operating" for
             validation purposes, per <xref target="sect-5.1" format="default"/>.
            </t>
          </dd>
          <dt>primary</dt>
          <dd>
            <t>
	OPTIONAL.  As in <xref target="sect-5.1" format="default"/>.  A manifest MUST identify
            </t>
            <t>
	at most one primary domain.
            </t>
          </dd>
        </dl>
        <t>
   verified  OPTIONAL.  As in <xref target="sect-5.1" format="default"/>.</t>
        <dl newline="false" spacing="normal" indent="10">
          <dt>entity</dt>
          <dd>
            <t>
	OPTIONAL.  An open extension point.  The "entity"
            </t>
            <t>
	object MAY contain arbitrary issuer-defined metadata
             describing the organization, project, service, person,
             namespace, or other entity associated with the domain
             set: display names, descriptions, web sites, contact
             information, public identifiers, logos, trust
             statements, verification evidence, or links to
             external resources.  This document defines no members
             of the "entity" object and does not constrain its
             contents.  Consumers MUST ignore unknown members of
             the "entity" object.  Entity metadata MUST NOT affect
             the validation procedure of <xref target="sect-6" format="default"/>.
            </t>
          </dd>
        </dl>
        <t>
   Unknown top-level manifest members MUST be ignored to permit
   extension.</t>
      </section>
      <section anchor="sect-4.4" numbered="true" toc="default">
        <name>Manifest Hosting and Consistency</name>
        <t>
   A manifest MAY be hosted by the primary domain, by any member of
   the set, or by an independent third-party service.  Authority is
   established by publication of the corresponding "_domain-set"
   TXT record(s), not by the hostname serving the manifest: the DNS
   record authorizes the manifest location, and HTTPS authenticates
   its retrieval (<xref target="sect-10" format="default"/>).</t>
        <t>Hosting location does, however, determine whether the link can be authenticated at all.  When the referencing record is retrieved from an unsigned zone, the "uri" pointer itself is unauthenticated, and a certificate valid for a third-party host authenticates only that host, not the publisher.  A manifest therefore satisfies the authentication requirement of Section 6.2 only when the referencing record was DNSSEC-validated or the manifest is hosted at the publishing member's own registrable domain.  Publishers who have not signed their zone MUST host the manifest at their own domain for that direction of a link to be CONFIRMED.</t><t>Multiple participating domains MAY reference the same manifest URI.  Consumers MAY treat shared manifest references as a consistency signal, but the mutual-attestation rule of Section 3.2 remains the sole basis for confirming links: a shared manifest does not substitute for each member's own DNS record.</t><t>
   A consumer that retrieves a manifest MUST verify that the
   queried domain appears in the manifest's "members" array; a
   manifest that omits the domain whose record referenced it is
   inconsistent, and the record MUST be treated as absent.</t>
      </section>
    </section>
    <section anchor="sect-5" numbered="true" toc="default">
      <name>Record Syntax</name>
      <section anchor="sect-5.1" numbered="true" toc="default">
        <name>Fields</name>
        <ul empty="true" spacing="normal">
          <li>
            <t>   v         REQUIRED.  Version tag.  This document defines
             "domainset1".
             Records with unrecognized versions MUST be ignored.</t>
            <dl newline="false" spacing="normal" indent="10">
              <dt>members</dt>
              <dd>
                <t>
	CONDITIONAL.  Comma-separated list of registrable
                </t>
                <t>
	domains (A-labels for IDNs) that this publisher attests
             are operated by the same organization.  The publishing
             domain itself MUST NOT appear in its own members list.
             Exactly one of "members" or "uri" MUST appear.
                </t>
              </dd>
              <dt>uri</dt>
              <dd>
                <t>
	CONDITIONAL.  An HTTPS URI <xref target="RFC3986" format="default"/> referencing the set's
   Domain Set Manifest (<xref target="sect-4.3" format="default"/>), from which consumers
             obtain the membership.  Exactly one of "members" or
             "uri" MUST appear.
                </t>
              </dd>
              <dt>primary</dt>
              <dd>
                <t>
	OPTIONAL.  A single registrable domain designated as
                </t>
                <t>
	the set's canonical presence.  MAY be the publishing
             domain itself.
                </t>
              </dd>
              <dt>scope</dt>
              <dd>
                <t>
	OPTIONAL.  Declares the breadth of the record.  The
                </t>
                <t>
	only value defined by this document is "subtree", valid
             only in records published at a top-level domain, with
             the semantics of <xref target="sect-4.2" format="default"/>.  Absent this field, a
             record speaks only for the publishing domain.
                </t>
              </dd>
              <dt>rel</dt>
              <dd>
                <t>
	OPTIONAL.  Characterizes the role of the publishing domain
             within the set, as the publisher uses it.  Values are
             recorded in the "Domain Set Relation Types" registry
             (<xref target="sect-12.4" format="default"/>).  This document registers the
             following initial values:
                </t>
                <dl newline="false" spacing="compact" indent="12">
                  <dt>primary</dt><dd>the set's canonical public presence</dd>
                  <dt>operating</dt><dd>actively serves content or services</dd>
                  <dt>redirect</dt><dd>resolves and redirects to another member</dd>
                  <dt>defensive</dt><dd>held to prevent third-party registration; not in active use</dd>
                  <dt>reserved</dt><dd>held for future or internal use</dd>
                </dl>
                <t>
             Values not found in the registry MUST be treated as
             "operating" for validation purposes and surfaced
             unchanged to consumers; implementations validate
             against this rule, not the registry's contents.  A
             relation type describes the publisher's use of a name,
             not an assessment of it (<xref target="sect-8" format="default"/>).
                </t>
              </dd>
              <dt>verified</dt>
              <dd>
                <t>
	OPTIONAL.  Timestamp <xref target="RFC3339" format="default"/> recording when the
                </t>
                <t>
	publisher last reviewed and confirmed the domain set.
             This is a freshness indicator, not an expiration date.
             See <xref target="sect-6.3" format="default"/>.
                </t>
              </dd>
              <dt>contact</dt>
              <dd>
                <t>
	OPTIONAL.  A URI (typically "mailto:" or "https:")
                </t>
                <t>
	identifying an operational point of contact for the
             publisher's domain-set records, in the manner of the
             SOA RNAME field and the Contact field of <xref target="RFC9116" format="default"/>.
             Publishers SHOULD use role-based rather than personal
             addresses (<xref target="sect-11" format="default"/>).
                </t>
              </dd>
            </dl>
          </li>
        </ul>
        <t>
   Unknown fields MUST be ignored to permit extension.</t>
      </section>
      <section anchor="sect-5.2" numbered="true" toc="default">
        <name>ABNF</name>
        <t>
   Formal syntax in ABNF <xref target="RFC5234" format="default"/> (informative in this revision;
   to be completed):</t>
        <artwork name="" type="" align="left" alt="">
   record     = "v=domainset1" *( ";" [FWS] field )
   field      = members-f / uri-f / primary-f / scope-f /
                rel-f / verified-f / contact-f / ext-f
                ; exactly one of members-f / uri-f per record
   members-f  = "members=" member *( "," member )
   member     = domain / tld-label
   uri-f      = "uri=" https-URI        ; [RFC3986]
   primary-f  = "primary=" domain
   scope-f    = "scope=" "subtree"
   rel-f      = "rel=" rel-value
   rel-value  = 1*32(ALPHA / DIGIT / "-")
                ; registered values: Section 12.4
   verified-f = "verified=" date-time   ; [RFC3339]
   contact-f  = "contact=" URI          ; [RFC3986]
   ext-f      = ext-name "=" ext-value
</artwork>
      </section>
      <section anchor="sect-5.3" numbered="true" toc="default">
        <name>Examples</name>
        <t>Minimal record (member of a two-domain set):</t><artwork name="" type="" align="left" alt="">
_domain-set.examplebank.bank.  IN  TXT
   "v=domainset1; primary=examplebank.com;
    members=examplebank.com"
</artwork><t>Subtree-scoped record (single-organization TLD):</t><artwork name="" type="" align="left" alt="">
_domain-set.example.  IN  TXT
   "v=domainset1; scope=subtree; primary=example.com;
    members=example.com,example.co.uk"
</artwork><t>Record referencing a manifest:</t><artwork name="" type="" align="left" alt="">
_domain-set.example.org.  IN  TXT
   "v=domainset1;
    uri=https://example.org/.well-known/domain-set"
</artwork><t>Record with a verified timestamp:</t><artwork name="" type="" align="left" alt="">
_domain-set.example.org.  IN  TXT
   "v=domainset1; primary=examplebank.com;
    members=examplebank.com,examplebank.bank;
    verified=2026-08-05T00:00:00Z"

</artwork></section>
    </section>
    <section anchor="sect-6" numbered="true" toc="default">
      <name>Validation Procedure</name>
      <section anchor="sect-6.1" numbered="true" toc="default">
        <name>Link Validation</name>
        <t>
   For every comparison of domain names in this document, names
   MUST first be canonicalized: converted to lowercase, represented
   as A-labels, and stripped of any trailing root separator (".").
   Both directions of a link MUST be evaluated using the same
   registrable-domain boundary determination (<xref target="sect-4.1" format="default"/>).</t>
        <t>
   To validate a claimed link between A and B, a consumer:</t>
        <ol spacing="normal" type="1"><li>
            <t>Retrieves A's domain-set record (<xref target="sect-4" format="default"/>).  If the record
       contains a "uri" field, retrieves the referenced manifest
       (<xref target="sect-4.3" format="default"/>), verifies that A appears in the manifest's
       members array, and obtains A's membership from the manifest;
       otherwise obtains it from the inline "members" field.
       Confirms B appears in that membership.</t>
          </li>
          <li>
            <t>Performs the same procedure for B's record and confirms A
       appears in B's membership.</t>
          </li>
          <li>
            <t>If both succeed and both directions satisfy the
       authentication requirement of <xref target="sect-6.2" format="default"/>, the link
       A&lt;-&gt;B is CONFIRMED.  If only one direction exists, or
       authentication fails in either direction, the link is
       ASSERTED (where mutuality nonetheless holds) and MUST NOT be
       presented as establishing common operation.</t>
          </li>
        </ol>
        <t>
   A record whose referenced manifest cannot be retrieved, is
   malformed, or omits the referencing domain MUST be treated as
   absent for the purposes of this procedure.</t>
        <t>
   Where A is a name under a TLD publishing a conforming
   "scope=subtree" record (<xref target="sect-4.2" format="default"/>), step 1 is satisfied by that
   apex record; step 2 is unchanged, and the bare TLD label is the
   identifier B must name.</t>
        <t>The effective domain set containing A is the transitive closure of confirmed links reachable from A.  Closure computation MUST employ cycle detection, visiting each member at most once, and consumers MUST bound the resources spent per validation: this document RECOMMENDS a default limit of 64 members per closure and 10 retrievals (DNS lookups plus manifest fetches) per link. A closure truncated at a limit is reported as truncated, with a validation warning; truncation does not invalidate the links already confirmed.  Consumers SHOULD record validation warnings for: disagreement on the primary domain, asserted-only links, aged "verified" timestamps within the closure (Section 6.3), and manifest inconsistencies (Section 4.4).</t></section>
      <section anchor="sect-6.2" numbered="true" toc="default">
        <name>Authentication</name>
        <t>
   Every direction of a link MUST be retrieved over an
   authenticated channel.  A record satisfies this when retrieved
   from a DNSSEC-signed zone with a validated chain of trust
   <xref target="RFC4033" format="default"/>, or when the referenced manifest is retrieved
   over HTTPS with a certificate valid for the publishing domain
   and hosted at the publishing member's own registrable domain (or
   a subdomain of it).  A manifest hosted elsewhere authenticates
   only its own host, not the publisher: if the record naming it
   was not itself DNSSEC-validated, that direction does not meet
   this requirement regardless of the manifest's certificate.  The
   two mechanisms MAY be mixed across the two directions of a link.</t>
        <t>
   A record retrieved from an unsigned zone over unauthenticated
   DNS, or a manifest that fails the authentication test above,
   MUST NOT establish a CONFIRMED link.  Consumers MAY retain such a
   record as an unauthenticated observation for diagnostic purposes
   and MUST NOT present it as establishing common operation.</t>
        <t>
   DNSSEC signatures are independently verifiable by any party;
   HTTPS establishes trust only for the party that performed the
   retrieval.  A consumer republishing a link established through a
   manifest MUST NOT represent it as independently verifiable.
   Publishers for whom downstream verification matters SHOULD sign
   their zones.  This document does not require every publisher to
   deploy DNSSEC; the HTTPS path is a fully equal alternative.</t>
        <t>
   This requirement excludes a domain with an unsigned zone that
   publishes inline "members" without a manifest hosted at its own
   domain: such a domain cannot reach CONFIRMED status.  This
   targets the dangling-attestation risk discussed in <xref target="sect-10.3" format="default"/>.</t>
        <t>
   Authentication is independent of the ASSERTED/CONFIRMED mutuality
   test of <xref target="sect-3.2" format="default"/>: CONFIRMED requires both mutuality and
   authentication, in both directions.</t>
      </section>
      <section anchor="sect-6.3" numbered="true" toc="default">
        <name>Freshness</name>
        <t>
   Mutual attestations rot: organizations divest brands, let
   defensive names lapse, and forget records.  Therefore:</t>
        <t/>
        <ul spacing="normal">
          <li>
            <t>Publishers SHOULD include a "verified" timestamp recording
      when they last reviewed and confirmed the set, and SHOULD
      refresh it at least annually and upon any change-of-control
      event of <xref target="sect-6.4" format="default"/>.  The annual cadence is a floor,
      chosen to coincide with the registration renewal cycle,
      when membership changes are most likely to occur; operators
      of high-value sets MAY adopt a shorter cadence.</t>
          </li>
          <li>
            <t>The "verified" timestamp is a freshness indicator, not an
      expiration date.  Consumers MAY use its age as an input to
      confidence or presentation decisions, and MAY surface an
      aged timestamp as a validation warning, but MUST NOT
      invalidate an otherwise valid domain set solely because its
      "verified" timestamp is old or absent.  The timestamp is
      self-asserted and unverifiable: any party controlling the
      record can refresh it without performing a review.  It MUST
      NOT be an input to the link validation of <xref target="sect-6.1" format="default"/>,
      whose security rests on mutual attestation alone.</t>
          </li>
          <li>
            <t>Consumers SHOULD re-validate confirmed links at least every 30
      days and MUST NOT serve cached confirmations older than 90
      days without revalidation.</t>
          </li>
          <li>
            <t>A domain whose registration has lapsed and been re-registered
      may retain stale inbound attestations from former set members.
      The mutual-attestation rule limits the damage (the new
      registrant cannot force reciprocation from members it does not
      control).  Consumers with access to registration data SHOULD
      consume change-of-control signals as follows, in decreasing
      order of strength:</t>
            <ol spacing="normal" type="1"><li>
                <t>Creation date.  A change in the domain's creation date,
          as reported in registration data (the RDAP "registration"
          event), means the prior registry object was deleted and
          the name re-registered.  Renewal and restoration never
          alter the creation date, so this signal cannot misfire
          on a late renewal.  Consumers SHOULD invalidate cached
          links involving the domain and revalidate from live
          records.</t>
              </li>
              <li>
                <t>Lapse indicators.  Registry grace statuses observed on a
          member (auto-renew period, redemption period, pending
          restore <xref target="RFC3915" format="default"/>), or an expiration event earlier than
          the observation time, indicate that the registration
          lapsed before renewal.  Control may have changed without
          deletion: expiry-stream auctions convey lapsed names to
          new operators by renewal, preserving the creation date,
          so this is the only registration-data trace of that
          acquisition path.  Because late renewal by the same
          operator is also common, consumers SHOULD record this as
          a validation warning and SHOULD trigger prompt
          revalidation, rather than invalidating automatically.</t>
              </li>
              <li>
                <t>Transfer indicators.  A registration-data transfer event
          or a change of sponsoring registrar SHOULD likewise be
          recorded as a validation warning.</t>
                </li>
            </ol>
          <t>A change of control that surfaces no registration-data signal at all -- for example, a sale effected within a single registrar without lapse -- is not detectable by consumers; the publisher duties of <xref target="sect-6.4" format="default"/> are the control for that case.</t></li>
        </ul>
        <t>
   Publishers SHOULD additionally notify an index (<xref target="sect-9.2" format="default"/>)
   when a record is first published and whenever its membership
   materially changes.</t>
      </section>
      <section anchor="sect-6.4" numbered="true" toc="default">
        <name>Revocation and Change of Control</name>
        <t>Removal of a record is revocation.  A publisher withdraws its attestations by deleting its "_domain-set" record (or, for a single member, by removing that member from its membership). A consumer that observes, on revalidation, that a previously retrieved record is absent or no longer names a counterpart MUST cease treating the affected links as CONFIRMED.  There is no grace period for presentation: a revoked link MAY be retained internally as history, but MUST NOT be presented as a current confirmed link.  The revalidation limits of Section 6.3 bound how long a revocation can remain unobserved; publishers wanting prompt effect SHOULD resubmit the affected domains to indexes (Section 9.2), which triggers immediate revalidation.</t><t>Attestations are made by the party operating a domain, and do not survive that party.  When control of a member changes -- through sale, transfer, divestiture, or lapse and re-registration -- the prior operator's outbound attestations and the counterparts' inbound attestations both refer to an organization that no longer operates the name.  Therefore:</t><ul spacing="normal">
          <li>
            <t>A publisher MUST promptly remove from its membership any
      domain it has divested or allowed to lapse; a stale entry is
      a standing offer of confirmation to the name's next operator
      (<xref target="sect-10" format="default"/>).</t>
          </li>
          <li>
            <t>A publisher transferring a domain away SHOULD delete its
      "_domain-set" record before or at transfer, and remove the
      departing domain from the records of remaining members.</t>
          </li>
          <li>
            <t>A publisher acquiring a domain SHOULD review and remove or
      reissue any inherited "_domain-set" record before relying
      on it, and SHOULD refresh the "verified" timestamp only
      after that review.</t>
          </li>
          <li>
            <t>Consumers with access to registration data SHOULD apply the
      graded change-of-control signals of Section 6.3:
      invalidation on a creation-date change, and validation
      warnings on lapse or transfer indicators.</t>
          </li>
        </ul>
        <t>
   Counterpart members cannot observe a transfer directly; their
   protection is the annual review cadence of <xref target="sect-6.3" format="default"/> and the
   stale-attestation guidance of <xref target="sect-10" format="default"/>.</t>
      </section>
    </section>
    <section anchor="sect-7" numbered="true" toc="default">
      <name>Consumer Behavior</name>
      <t>
   Consumers presenting domain-set data to end users or downstream
   systems:</t>
      <ul spacing="normal">
        <li>
          <t>MUST distinguish confirmed links from asserted claims.</t>
        </li>
        <li>
          <t>SHOULD present whether a link satisfies the authentication
      requirement of <xref target="sect-6.2" format="default"/> where the
      consuming context involves security decisions.</t>
        </li>
        <li>
          <t>MUST NOT present set membership as implying eligibility,
      licensure, endorsement, safety, or reputation (<xref target="sect-8" format="default"/>).</t>
        </li>
        <li>
          <t>MUST NOT represent a confirmed link, or a relation type
      (<xref target="sect-5.1" format="default"/>), as a trust, safety, or reputation signal,
      whether to end users or to downstream automated consumers.</t>
        </li>
        <li>
          <t>SHOULD attribute the data as published by the domain operators
      themselves, i.e., first-party assertion, not third-party
      verification.</t>
        </li>
      </ul>
    </section>
    <section anchor="sect-8" numbered="true" toc="default">
      <name>Relationship to Eligibility Verification</name>
      <t>
   Some top-level domains impose eligibility verification at
   registration: examples include charter verification, professional
   licensure, or accreditation screening.  A domain-set record makes
   no claim about any such verification.  The protocol answers
   "operated by the same organization?" -- it cannot answer "is that organization a licensed bank?"</t>
      <t>
   The two layers compose naturally: a consumer may combine a
   confirmed link between a verified-namespace domain and a legacy
   domain with knowledge of the namespace's registration policy to
   conclude that the legacy domain is operated by an organization
   that passed the namespace's verification.  Registries, registrars,
   and third-party indexes MAY provide that policy layer; this
   protocol deliberately does not.</t>
      <t>
   A consumer MUST NOT conclude from a confirmed link that the
   linked domain is safe, that content served there is authorized,
   or that the organization is trustworthy -- only that it satisfied
   the namespace's registration policy at the time of registration.
   Consumers that summarize this data for downstream systems,
   including natural-language generators, SHOULD carry that scoping
   forward rather than collapsing a link into a single confidence
   measure.</t>
    </section>
    <section anchor="sect-9" numbered="true" toc="default">
      <name>Domain-Set Indexes</name>
      <t>Domain-set records are self-published and validated pairwise; nothing in this protocol requires an aggregator.  In practice, many consumers will prefer to query an index rather than perform live DNS retrieval and closure computation.  This section defines an OPTIONAL index role so that discovery can be event-driven rather than dependent on continuous crawling of the namespace.</t><section anchor="sect-9.1" numbered="true" toc="default">
        <name>The Index Role</name>
        <t>A domain-set index is any party that accepts submissions of domain names, retrieves and validates the corresponding records under Sections 4 through 6, and republishes the results.  The role is deliberately generic: any number of indexes may operate concurrently, none is canonical, and this document establishes no admission, accreditation, or coordination among them.  The design follows the precedent of Certificate Transparency logs <xref target="RFC9162" format="default"/>: the specification defines the role, and operation is open to any party.</t><t>An index is a consumer in the sense of Section 7 and is subject to all requirements of that section, in particular the distinction between confirmed and asserted links and the prohibition on presenting membership as eligibility or endorsement.</t></section>
      <section anchor="sect-9.2" numbered="true" toc="default">
        <name>Submission</name>
        <dl newline="true" spacing="normal" indent="3">
          <dt>An index accepting submissions exposes an endpoint at:</dt>
          <dd>
	https://&lt;index&gt;/.well-known/domain-set-submit
	</dd>
        </dl>
        <t>
   A submission is an HTTP POST whose body is a JSON object with
   a single member:</t>
        <artwork name="" type="" align="left" alt="">

{ "domain": "examplebank.com" }
</artwork><t>The submitted value names one registrable domain (or, for subtree-scoped records, one TLD label).  The submission deliberately carries no other data: no set membership, no contact information, and no registration or authentication requirement.  The submission is a pointer, not an assertion; the authoritative description of the set is whatever the named domain itself publishes under Section 4.  Submissions naming domains the submitter does not operate are permitted; the mutual-attestation rule of Section 3.2 makes third-party submission harmless.</t><t>Publishers SHOULD submit their domain to at least one index when a record is first published and whenever its membership materially changes.  Because a record participates in discovery only after an index learns of it, the incentive to submit rests with the publisher; indexes are not expected to crawl for unsubmitted records, though they MAY discover records by any other means.</t></section>
      <section anchor="sect-9.3" numbered="true" toc="default">
        <name>Index Behavior</name>
        <t>
   On receiving a submission, an index:</t>
        <ol spacing="normal" type="1"><li>
            <t>Retrieves the named domain's record (<xref target="sect-4" format="default"/>).  If none
       exists, the submission is discarded.</t>
          </li>
          <li>
            <t>Validates links to listed members under <xref target="sect-6" format="default"/>,
       retrieving each member's record to test reciprocation.</t>
          </li>
          <li>
            <t>Records the outcome (confirmed, asserted, warnings,
       authentication status) together with a retrieval timestamp.</t>
          </li>
        </ol>
        <t>Indexes MUST expose the retrieval timestamp alongside any republished result, SHOULD expose the record's "verified" timestamp where present, and are bound by the revalidation limits of Section 6.3 for any result they continue to serve. A record that has changed in the DNS but has not been resubmitted may be served stale within those limits; the notification duty of Section 9.2 places responsibility for promptness on the publisher.</t><t>
   Submissions naming different members of the same set MUST be
   treated idempotently: they update the same computed set
   rather than creating duplicates.</t>
      </section>
    </section>
    <section anchor="sect-10" numbered="true" toc="default">
      <name>Security Considerations</name>
      <section anchor="sect-10.1" numbered="true" toc="default">
      <name>Unilateral Insertion</name>
      <t>
   The primary abuse case is a hostile domain
   claiming membership in a victim's set.  Mutual attestation
   (<xref target="sect-3.2" format="default"/>) is the structural defense: the claim remains
   ASSERTED and MUST NOT be surfaced as common operation.  Consumer
   implementations that skip the reciprocity check reintroduce the
   entire vulnerability; <xref target="sect-7" format="default"/>'s requirements are therefore
   normative, not advisory.</t>
      </section>
      <section anchor="sect-10.2" numbered="true" toc="default">
      <name>Compromise of One Member</name>
      <t>
   An attacker controlling one member's
   DNS (or web server, for the well-known mechanism) can add
   reciprocal records linking the victim set to attacker domains.
   Mitigations: the revalidation cadence of <xref target="sect-6.3" format="default"/> bounds the
   exposure window; publishers SHOULD monitor their own records;
   DNSSEC signing raises the cost of off-path attacks; and consumers
   SHOULD treat sudden set-membership growth as anomalous.</t>
      </section>
      <section anchor="sect-10.3" numbered="true" toc="default">
      <name>Dangling Outbound Attestations</name>
      <t>A stale entry in a "members" list is not merely clutter; it is a standing offer of confirmation.  If a member domain lapses and is re-registered by an attacker while other members still name it, the attacker controls the reciprocating side: publishing a record naming the remaining members yields links that are CONFIRMED under Section 3.2, attaching an attacker-operated domain to a legitimate set.  This is the protocol's most consequential maintenance failure, and it is created entirely by the victim's own stale data.  Mitigations: the prompt-removal requirement of Section 6.4 is the primary control; the annual "verified" review of Section 6.3 exists chiefly to catch this case; consumers SHOULD treat a creation-date change on a member as invalidating cached links, SHOULD treat lapse indicators as a warning (an expiry-stream auction conveys control of a lapsed name without altering its creation date), and SHOULD weight recently re-registered or recently lapsed members with suspicion even when links validate; and indexes SHOULD flag confirmed links in which one side's zone or registration is materially newer than the counterpart's attestation.</t>
      </section>
      <section anchor="sect-10.4" numbered="true" toc="default">
      <name>Resource Consumption</name>
      <t>
   Validation is recursive by nature:
   records reference manifests, and closures traverse members that
   each require further retrievals.  Maliciously constructed sets
   (long member chains, mutually referencing records, oversized
   manifests) could otherwise draw a naive consumer into unbounded
   work, in the manner of the processing-limit failures that
   motivated the lookup limits of <xref target="RFC7208" format="default"/>.  The cycle-detection
   and resource-limit requirements of <xref target="sect-6.1" format="default"/> are mandatory
   for this reason, and consumers SHOULD additionally cap manifest
   sizes and retrieval timeouts.</t>
      </section>
      <section anchor="sect-10.5" numbered="true" toc="default">
      <name>Subtree-Scoped Records</name>
      <t>A "scope=subtree" record expands set membership to an entire zone, so its misuse has correspondingly broad effect.  Two constraints bound the risk: the record can only be placed by the party operating the TLD's zone, and links to members outside the TLD still require reciprocation.  The principal residual risk is a shared or open TLD publishing "scope=subtree", which would sweep unaffiliated registrants into a set; Section 4.2 requires consumers to reject expansion in that case.  Consumers SHOULD maintain independent knowledge of which TLDs are single-organization rather than relying on the record's own assertion.</t>
      </section>
      <section anchor="sect-10.6" numbered="true" toc="default">
      <name>Homograph and Look-Alike Domains</name>
      <t>
   Nothing in this protocol
   prevents an attacker from building a valid domain set among
   attacker-controlled look-alike domains.  A confirmed set of
   malicious domains is still malicious.  Consumers MUST NOT treat
   set validity as a reputation signal in itself.</t>
      </section>
      <section anchor="sect-10.7" numbered="true" toc="default">
      <name>Manifest Retrieval</name>
      <t>
   The DNS record authorizes the manifest
   location; HTTPS authenticates its retrieval.  An attacker who
   can serve content at the manifest URI but cannot modify the
   publisher's DNS cannot forge authorization, but can alter the
   membership the manifest reports.  Three constraints bound this:
   the manifest MUST be served over HTTPS with a valid certificate
   for its host; a manifest omitting the referencing domain is
   rejected (<xref target="sect-4.4" format="default"/>); and links to members added by a
   compromised manifest still require reciprocal records under
   <xref target="sect-3.2" format="default"/>, which the attacker does not control.  Publishers
   using third-party manifest hosting SHOULD monitor the served
   content, and SHOULD prefer hosts they operate.  DNSSEC, where
   deployed, protects the authorizing pointer itself.</t>
      </section>
      <section anchor="sect-10.8" numbered="true" toc="default">
      <name>Subdomain Confusion</name>
      <t>
   Restricting publication to the registrable
   domain (<xref target="sect-4.1" format="default"/>) prevents hosting customers on shared
   platforms from publishing records that appear to speak for the
   platform's domain.</t>
      </section>
      <section anchor="sect-10.9" numbered="true" toc="default">
      <name>Submission Endpoint Abuse</name>
      <t>The submission endpoint of Section 9.2 causes an index to issue DNS and HTTPS retrievals toward arbitrary domains, and is therefore a reflection and amplification primitive if left unconstrained.  Indexes MUST rate-limit submissions per submitting source and per target domain, SHOULD apply backoff to repeated submissions naming domains that publish no record, and SHOULD bound the closure walk of Section 9.3 by the membership the retrieved records themselves declare.  Because submissions are unauthenticated, an index MUST NOT interpret the act of submission as evidence of anything about the submitter or the named domain.</t>
      </section>
    </section>
    <section anchor="sect-11" numbered="true" toc="default">
      <name>Privacy Considerations</name>
      <t>Domain-set records are public by design and reveal organizational relationships between domains, some of which an organization may have preferred to keep unlinked (e.g., a defensive registration of a controversial brand).  Publication is voluntary and per- domain; operators control exposure by choosing what to attest. Records identify organizations by domains.  The OPTIONAL "contact" field (Section 5.1) is the only field intended to carry an address; publishers SHOULD populate it with role-based rather than personal addresses, and MUST NOT place personal data in any other field, including extension fields. Because domain-set records are public, an address placed in the "contact" field must be assumed to be harvested; the field exists so that operational contact can be published deliberately, in the manner of <xref target="RFC9116" format="default"/>, rather than scraped from incidental sources.  Submission to an index (Section 9.2) discloses no information beyond the domain name submitted.</t></section>
    <section anchor="sect-12" numbered="true" toc="default">
      <name>IANA Considerations</name>
      <section anchor="sect-12.1" numbered="true" toc="default">
        <name>Underscored Node Name</name>
        <t>
   IANA is requested to add the following entry to the "Underscored and Globally Scoped DNS Node Names" registry <xref target="RFC8552" format="default"/>:</t>
        <artwork name="" type="" align="left" alt="">
   RR Type: TXT
   _NODE NAME: _domain-set
   Reference: [this document]
</artwork>
      </section>
      <section anchor="sect-12.2" numbered="true" toc="default">
        <name>Well-Known URI</name>
        <t>
   IANA is requested to register "domain-set" in the "Well-Known URIs" registry <xref target="RFC8615" format="default"/>:</t>
        <artwork name="" type="" align="left" alt="">
   URI Suffix: domain-set
   Change Controller: IETF
   Reference: [this document]
</artwork>
        <t>
   The suffix omits a format extension so that future revisions of
   this specification can employ HTTP content negotiation at the
   same URI.</t>
      </section>
      <section anchor="sect-12.3" numbered="true" toc="default">
        <name>Well-Known URI for Index Submission</name>
        <t>
   IANA is requested to register "domain-set-submit" in the
   "Well-Known URIs" registry <xref target="RFC8615" format="default"/>:</t>
        <artwork name="" type="" align="left" alt="">
   URI Suffix: domain-set-submit
   Change Controller: IETF
   Reference: [this document]
</artwork>
      </section>
      <section anchor="sect-12.4" numbered="true" toc="default">
        <name>Domain Set Relation Types</name>
        <t>
   IANA is requested to create a new registry titled "Domain Set
   Relation Types."  New assignments are made under the Expert
   Review policy <xref target="RFC8126" format="default"/>.  Registrations
   consist of a value (an ASCII token matching the "rel-value" ABNF
   production of <xref target="sect-5.2" format="default"/>), a short
   description of the publisher role it denotes, and a reference.
   Designated experts should confirm that a proposed value denotes
   how a publisher uses a name, rather than a judgment about the
   name's safety, reputation, or eligibility (<xref target="sect-8" format="default"/>),
   before approving it.</t>
        <t>
   The registry is initially populated as follows:</t>
        <table>
          <thead>
            <tr><th>Value</th><th>Description</th><th>Reference</th></tr>
          </thead>
          <tbody>
            <tr><td>primary</td><td>the set's canonical public presence</td><td>[this document]</td></tr>
            <tr><td>operating</td><td>actively serves content or services</td><td>[this document]</td></tr>
            <tr><td>redirect</td><td>resolves and redirects to another member</td><td>[this document]</td></tr>
            <tr><td>defensive</td><td>held to prevent third-party registration; not in active use</td><td>[this document]</td></tr>
            <tr><td>reserved</td><td>held for future or internal use</td><td>[this document]</td></tr>
          </tbody>
        </table>
      </section>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name><reference anchor="RFC1035" target="https://www.rfc-editor.org/info/rfc1035"><front><title>Domain Names - Implementation and Specification</title><author initials="P." surname="Mockapetris"/><date year="1987" month="November"/></front><seriesInfo name="STD" value="13"/><seriesInfo name="RFC" value="1035"/></reference><reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119"><front><title>Key words for use in RFCs to Indicate Requirement Levels</title><author initials="S." surname="Bradner"/><date year="1997" month="March"/></front><seriesInfo name="BCP" value="14"/><seriesInfo name="RFC" value="2119"/></reference><reference anchor="RFC3339" target="https://www.rfc-editor.org/info/rfc3339"><front><title>Date and Time on the Internet: Timestamps</title><author initials="G." surname="Klyne"/><author initials="C." surname="Newman"/><date year="2002" month="July"/></front><seriesInfo name="RFC" value="3339"/></reference><reference anchor="RFC3986" target="https://www.rfc-editor.org/info/rfc3986"><front><title>Uniform Resource Identifier (URI): Generic Syntax</title><author initials="T." surname="Berners-Lee"/><author initials="R." surname="Fielding"/><author initials="L." surname="Masinter"/><date year="2005" month="January"/></front><seriesInfo name="STD" value="66"/><seriesInfo name="RFC" value="3986"/></reference><reference anchor="RFC4033" target="https://www.rfc-editor.org/info/rfc4033"><front><title>DNS Security Introduction and Requirements</title><author initials="R." surname="Arends"/><author initials="R." surname="Austein"/><author initials="M." surname="Larson"/><author initials="D." surname="Massey"/><author initials="S." surname="Rose"/><date year="2005" month="March"/></front><seriesInfo name="RFC" value="4033"/></reference><reference anchor="RFC5234" target="https://www.rfc-editor.org/info/rfc5234"><front><title>Augmented BNF for Syntax Specifications: ABNF</title><author initials="D." surname="Crocker"/><author initials="P." surname="Overell"/><date year="2008" month="January"/></front><seriesInfo name="STD" value="68"/><seriesInfo name="RFC" value="5234"/></reference><reference anchor="RFC8126" target="https://www.rfc-editor.org/info/rfc8126"><front><title>Guidelines for Writing an IANA Considerations Section in RFCs</title><author initials="M." surname="Cotton"/><author initials="B." surname="Leiba"/><author initials="T." surname="Narten"/><date year="2017" month="June"/></front><seriesInfo name="BCP" value="26"/><seriesInfo name="RFC" value="8126"/></reference><reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174"><front><title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title><author initials="B." surname="Leiba"/><date year="2017" month="May"/></front><seriesInfo name="BCP" value="14"/><seriesInfo name="RFC" value="8174"/></reference><reference anchor="RFC8259" target="https://www.rfc-editor.org/info/rfc8259"><front><title>The JavaScript Object Notation (JSON) Data Interchange Format</title><author initials="T." surname="Bray" role="editor"/><date year="2017" month="December"/></front><seriesInfo name="STD" value="90"/><seriesInfo name="RFC" value="8259"/></reference><reference anchor="RFC8552" target="https://www.rfc-editor.org/info/rfc8552"><front><title>Scoped Interpretation of DNS Resource Records through "Underscored" Naming of Attribute Leaves</title><author initials="D." surname="Crocker"/><date year="2019" month="March"/></front><seriesInfo name="BCP" value="222"/><seriesInfo name="RFC" value="8552"/></reference><reference anchor="RFC8615" target="https://www.rfc-editor.org/info/rfc8615"><front><title>Well-Known Uniform Resource Identifiers (URIs)</title><author initials="M." surname="Nottingham"/><date year="2019" month="May"/></front><seriesInfo name="RFC" value="8615"/></reference></references>
      <references>
        <name>Informative References</name><reference anchor="I-D.ietf-regext-epp-same-entity" target="https://datatracker.ietf.org/doc/html/draft-ietf-regext-epp-same-entity"><front><title>Same Entity Set Support for the Extensible Provisioning Protocol (EPP)</title><author initials="J." surname="Galvin"/><date/></front><seriesInfo name="Internet-Draft" value="draft-ietf-regext-epp-same-entity"/><refcontent>Work in Progress</refcontent></reference><reference anchor="I-D.ietf-dconn-domainconnect" target="https://datatracker.ietf.org/doc/html/draft-ietf-dconn-domainconnect"><front><title>Domain Connect Protocol - DNS provisioning between Services and DNS Providers</title><author initials="P." surname="Kowalik"/><author initials="A." surname="Blinn"/><author initials="J." surname="Kolker"/><author initials="S." surname="Kerola"/><date/></front><seriesInfo name="Internet-Draft" value="draft-ietf-dconn-domainconnect"/><refcontent>Work in Progress</refcontent></reference><reference anchor="I-D.ietf-dnsop-domain-verification-techniques" target="https://datatracker.ietf.org/doc/html/draft-ietf-dnsop-domain-verification-techniques"><front><title>Domain Control Validation using DNS</title><author initials="S. K." surname="Sahib"/><author initials="S." surname="Huque"/><author initials="P." surname="Wouters"/><author initials="E." surname="Nygren"/><date/></front><seriesInfo name="Internet-Draft" value="draft-ietf-dnsop-domain-verification-techniques"/><refcontent>Work in Progress</refcontent></reference><reference anchor="I-D.ietf-dnsop-integration" target="https://datatracker.ietf.org/doc/html/draft-ietf-dnsop-integration"><front><title>Integration of DNS Domain Names into Application Environments: Motivations and Considerations</title><author initials="S." surname="Sheth"/><author initials="A." surname="Kaizer"/><author initials="B." surname="Newbold"/><author initials="N." surname="Johnson"/><date/></front><seriesInfo name="Internet-Draft" value="draft-ietf-dnsop-integration"/><refcontent>Work in Progress</refcontent></reference><reference anchor="PSL" target="https://publicsuffix.org/"><front><title>Public Suffix List</title><author><organization>Mozilla Foundation</organization></author><date/></front></reference><reference anchor="RFC3915" target="https://www.rfc-editor.org/info/rfc3915"><front><title>Domain Registry Grace Period Mapping for the Extensible Provisioning Protocol (EPP)</title><author initials="S." surname="Hollenbeck"/><date year="2004" month="September"/></front><seriesInfo name="RFC" value="3915"/></reference><reference anchor="RFC6376" target="https://www.rfc-editor.org/info/rfc6376"><front><title>DomainKeys Identified Mail (DKIM) Signatures</title><author initials="D." surname="Crocker" role="editor"/><author initials="T." surname="Hansen" role="editor"/><author initials="M." surname="Kucherawy" role="editor"/><date year="2011" month="September"/></front><seriesInfo name="STD" value="76"/><seriesInfo name="RFC" value="6376"/></reference><reference anchor="RFC7208" target="https://www.rfc-editor.org/info/rfc7208"><front><title>Sender Policy Framework (SPF) for Authorizing Use of Domains in Email, Version 1</title><author initials="S." surname="Kitterman"/><date year="2014" month="April"/></front><seriesInfo name="RFC" value="7208"/></reference><reference anchor="RFC9083" target="https://www.rfc-editor.org/info/rfc9083"><front><title>JSON Responses for the Registration Data Access Protocol (RDAP)</title><author initials="S." surname="Hollenbeck"/><author initials="A." surname="Newton"/><date year="2021" month="June"/></front><seriesInfo name="STD" value="95"/><seriesInfo name="RFC" value="9083"/></reference><reference anchor="RFC9116" target="https://www.rfc-editor.org/info/rfc9116"><front><title>A File Format to Aid in Security Vulnerability Disclosure</title><author initials="E." surname="Foudil"/><author initials="Y." surname="Shafranovich"/><date year="2022" month="April"/></front><seriesInfo name="RFC" value="9116"/></reference><reference anchor="RFC9162" target="https://www.rfc-editor.org/info/rfc9162"><front><title>Certificate Transparency Version 2.0</title><author initials="B." surname="Laurie"/><author initials="E." surname="Messeri"/><author initials="R." surname="Stradling"/><date year="2021" month="December"/></front><seriesInfo name="RFC" value="9162"/></reference><reference anchor="RFC9499" target="https://www.rfc-editor.org/info/rfc9499"><front><title>DNS Terminology</title><author initials="P." surname="Hoffman"/><author initials="K." surname="Fujiwara"/><date year="2024" month="March"/></front><seriesInfo name="BCP" value="219"/><seriesInfo name="RFC" value="9499"/></reference><reference anchor="RWS" target="https://github.com/WICG/first-party-sets"><front><title>Related Website Sets</title><author><organization>W3C WICG / Google Privacy Sandbox</organization></author><date/></front></reference></references>
    </references>
    <section anchor="sect-a" numbered="true" toc="default">
      <name>Worked Example</name>
      <t>
   Snug Harbor Bank (fictional) operates snugharbor.bank in a
   verified namespace, snugharborbank.com as its primary website,
   and three additional names.  Each domain publishes:</t>
      <artwork name="" type="" align="left" alt="">
_domain-set.snugharborbank.com.  IN  TXT
   "v=domainset1; primary=snugharborbank.com;
    members=snugharbor.bank,snugharborbank.net,
    snugharborbank.org,shbmortgage.com;
    verified=2026-08-05T00:00:00Z"

_domain-set.snugharbor.bank.  IN  TXT
   "v=domainset1; primary=snugharborbank.com;
    members=snugharborbank.com; verified=2026-08-05T00:00:00Z"
</artwork>
      <t>
   (Similar records at the remaining members.)</t>
      <t>
   Equivalently, the primary could reference a manifest:</t>
      <artwork name="" type="" align="left" alt="">
_domain-set.snugharborbank.com.  IN  TXT
   "v=domainset1;
    uri=https://snugharborbank.com/.well-known/domain-set"
</artwork>
      <t>
   with the manifest carrying the membership and any issuer-defined
   entity metadata:</t>
      <artwork name="" type="" align="left" alt="">

{
  "version": "domainset1",
  "primary": "snugharborbank.com",
  "members": [
    "snugharborbank.com",
    "snugharbor.bank",
    "snugharborbank.net",
    "snugharborbank.org",
    "shbmortgage.com"
  ],
  "entity": {
    "name": "Snug Harbor Bank"
  },
  "verified": "2026-08-05T00:00:00Z"
}
</artwork><t>A consumer asked "is snugharborbank.com the same institution as snugharbor.bank?" validates both directions, finds the link CONFIRMED, confirms both directions are authenticated under Section 6.2 (both zones are DNSSEC-signed), and can additionally observe -- from outside this protocol -- that .bank registration requires charter verification, composing a strong answer from first-party data.</t><t>
   A phishing domain snugharb0r-secure.com publishing
   "members=snugharborbank.com" achieves nothing: no member
   reciprocates, the link remains ASSERTED, and conforming consumers
   never present it.</t>
    </section>
    <section anchor="sect-b" numbered="true" toc="default">
      <name>Worked Example: Single-Organization TLD</name>
      <t>
   A manufacturer operates the TLD .example, restricted by its
   registry agreement to the operator and its affiliates, alongside
   a legacy portfolio.  The TLD publishes one record:</t>
      <artwork name="" type="" align="left" alt="">
_domain-set.example.  IN  TXT
   "v=domainset1; scope=subtree; primary=example.com;
    members=example.com,example.co.uk,example-group.net;
    verified=2026-08-05T00:00:00Z"
</artwork>
      <t>
   Each legacy domain reciprocates, naming the TLD by its bare
   label:</t>
      <artwork name="" type="" align="left" alt="">
_domain-set.example.com.  IN  TXT
   "v=domainset1; primary=example.com;
    members=example,example.co.uk,example-group.net;
    verified=2026-08-05T00:00:00Z"
</artwork>
      <t>
   A consumer asked whether support.example and example.com are the
   same organization finds the apex record covering support.example
   without a per-name lookup, confirms reciprocation from
   example.com, and reports the link CONFIRMED.  No records were
   published at individual names in the .example zone.</t>
    </section>
    <section anchor="sect-c" numbered="true" toc="default">
      <name>Future Extensions (Informative)</name>
      <t>This appendix is informative.  It records extensions and applications of this protocol that the authors anticipate, in sufficient detail that a person skilled in the art could implement them.  Nothing here is normative, and future companion documents may specify these mechanisms differently. The appendix exists so that the design space around this protocol is documented in the open literature as of this document's publication date.</t><section anchor="sect-c.1" numbered="true" toc="default">
        <name>Platform Identifiers</name>
        <t>A domain set could be extended to associate platform-scoped identifiers -- accounts on social media or messaging platforms -- with the organization the set describes.  Identifiers would be carried in the manifest (for example within the "entity" object, or a dedicated "identifiers" array pairing a platform label with an account identifier).  Because most platforms cannot publish reciprocal DNS records, such identifiers would carry a per-identifier corroboration state rather than participating in mutual attestation: "attested" where only the set publisher states the association, and "corroborated" where an independent check closes the loop.  Corroboration mechanisms include: for the AT Protocol, resolving the "_atproto" TXT record of a claimed handle and matching the resulting DID against the account identifier stated in the manifest; for platforms supporting profile link verification, confirming a rel="me" or equivalent verified backlink from the platform profile to a member domain; and, as a weakest form, confirming that the platform profile's stated web address is a member of the set.  Consumers would surface corroboration state exactly as Section 6.2 surfaces authentication status.  Note that identifiers which are themselves domain names -- such as AT Protocol handles hosted at a member domain -- require no extension at all: they participate in the base protocol as ordinary members.</t></section>
      <section anchor="sect-c.2" numbered="true" toc="default">
        <name>Corroboration Against Authoritative Registers</name>
        <t>The "entity" object could carry references to entries in authoritative external registers: legal entity identifiers (LEI), banking charter or license records maintained by financial regulators, professional licensure databases, or registry-operator eligibility rosters.  An implementation would record, per reference: the register, the identifier within it, the retrieval or verification date, and the party that performed the check.  Consumers or indexes could then corroborate the set's claimed organizational identity against the register, composing with (not altering) the validation of Section 6, in the layered manner described in Section 8.</t></section>
      <section anchor="sect-c.3" numbered="true" toc="default">
        <name>Delegated and Registry Attestation</name>
        <t>A registry operator, registrar, or DNS provider could publish or co-publish "_domain-set" records on behalf of registrants it serves: at registration time via an EPP extension carrying the membership; continuously, by provisioning and refreshing records under registrant authorization; or via Domain Connect templates <xref target="I-D.ietf-dconn-domainconnect" format="default"/> enabling one-click publication.  A delegated record could carry an extension field identifying the provisioning party, allowing consumers to distinguish operator-published from provider-published records without changing validation.</t></section>
      <section anchor="sect-c.4" numbered="true" toc="default">
        <name>Assurance Tiering</name>
        <t>Consumers and indexes could derive a graded assurance level for a set or link from observable inputs: DNSSEC presence on each side (Section 6.2), the age and refresh recency of "verified" timestamps, the age of the links themselves, the number and strength of corroborations under C.1 and C.2, and the stability of membership over time.  Tier definitions could themselves be published machine-readably so that independent consumers compute comparable levels.</t></section>
      <section anchor="sect-c.5" numbered="true" toc="default">
        <name>Index Federation and Lifecycle Behavior</name>
        <t>Indexes (Section 9) could adopt common lifecycle conventions: freezing a set's published state when revalidation begins to fail, displaying the last successful retrieval time during the frozen interval, and aging the entry out after a defined window; reconciling submissions naming different members of one set; and exchanging submissions or computed results with other indexes (gossip), following the multi-log model of Certificate Transparency <xref target="RFC9162" format="default"/>.</t></section>
      <section anchor="sect-c.6" numbered="true" toc="default">
        <name>Consumption by Automated Agents</name>
        <t>Computed set data could be exposed to automated consumers -- including AI systems and agent frameworks -- through structured query endpoints or agent tool-calling protocols, returning the effective set, per-link confirmation status, authentication status, corroboration states, and freshness metadata for a queried domain.  An agent deciding whether two names represent the same organization would weight confirmed, authenticated, corroborated links above any inference from content similarity, and would decline to infer relationships that the protocol data does not support.</t></section>
      <section anchor="sect-c.7" numbered="true" toc="default">
        <name>Hierarchical and Transitive Sets</name>
        <t>A set could reference another set -- a parent organization naming the sets of its subsidiaries -- via a manifest member carrying the referenced set's primary domain.  Such references would be subject to the same mutuality rule at the set level (each set's manifest names the other), with explicit scoping of what the relationship asserts (common ownership rather than common operation) and loop detection during closure computation.</t></section>
      <section anchor="sect-c.8" numbered="true" toc="default">
        <name>Integrity and Transparency Mechanisms</name>
        <t>The manifest could be signed (for example as a JWS) by a key published in or referenced from the DNS record; the DNS record could carry a digest of the manifest content in an extension field (for example "hash="), making substitution at the manifest host detectable without DNSSEC; and set changes could be recorded in an append-only, publicly auditable transparency log analogous to Certificate Transparency <xref target="RFC9162" format="default"/>, enabling detection of retroactive alteration and providing an audit trail of membership over time.</t></section>
      <section anchor="sect-c.9" numbered="true" toc="default">
        <name>Abuse Monitoring and Notification</name>
        <t>An index or monitoring service could detect unreciprocated records naming a given domain -- the ASSERTED-only claims of Section 3.2 -- and notify the named domain's operator via the "contact" URI of its own record, enabling the operator to discover impersonation attempts, look-alike registrations claiming affiliation, and stale attestations, and to feed established takedown or dispute processes.</t></section>
      <section anchor="sect-c.10" numbered="true" toc="default">
        <name>Privacy-Preserving Membership</name>
        <t>An organization wanting verifiability without public enumeration could publish hashed member identifiers (salted digests of member domains) in place of cleartext membership, disclosing the preimages selectively to chosen consumers, who then validate reciprocation in the normal way.  This trades open discoverability for confidentiality and would be signaled by a distinct field so that ordinary consumers skip such records cleanly.</t></section>
    </section>
    <section numbered="false" anchor="acknowledgments" toc="default">
      <name>Acknowledgments</name>
      <t>
   This document draws on the deployment philosophy of security.txt
   <xref target="RFC9116" format="default"/> and on operational experience indexing verified domain
   namespaces.</t>
    </section>
  </back>
</rfc>