<?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.43 (Ruby 3.4.9) -->
<?rfc tocindent="yes"?>
<?rfc strict="yes"?>
<?rfc compact="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-nottingham-archive-embargo-00" category="std" consensus="true" updates="9309" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.0 -->
  <front>
    <title abbrev="Archive-Embargo">Embargoing Archive Publication using robots.txt</title>
    <seriesInfo name="Internet-Draft" value="draft-nottingham-archive-embargo-00"/>
    <author initials="M." surname="Nottingham" fullname="Mark Nottingham">
      <organization/>
      <address>
        <postal>
          <postalLine>Melbourne</postalLine>
          <postalLine>Australia</postalLine>
        </postal>
        <email>mnot@mnot.net</email>
        <uri>https://mnot.net/</uri>
      </address>
    </author>
    <author initials="M." surname="Thomson" fullname="Martin Thomson">
      <organization/>
      <address>
        <postal>
          <postalLine>Sydney</postalLine>
          <postalLine>Australia</postalLine>
        </postal>
        <email>mt@lowentropy.net</email>
      </address>
    </author>
    <date year="2026" month="August" day="30"/>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 47?>

<t>Web sites often block archiving crawlers because they host time-sensitive information. This
specification documents a robots.txt extension, "Archive-Embargo", that can be used to request
that such crawlers delay publication of information.</t>
      <t>This document updates RFC 9309 to add two directives that support embargoes.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-nottingham-archive-embargo/"/>.
      </t>
      <t>
         information can be found at <eref target="https://projects.mnot.net/I-D/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/mnot/I-D/labels/embargo"/>.</t>
    </note>
  </front>
  <middle>
    <?line 55?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Many Web publishers choose not allow their content to be publicly archived, by disallowing archiving crawlers in robots.txt <xref target="ROBOTS"/>. Archiving is widely seen as a public good, enhancing the value of the Internet both for current and future users.</t>
      <t>In some cases, publishers are amenable to archiving in the long term, but sensitive (for various reasons, including commercial considerations) to immediate republication of content in an archive.</t>
      <t>This document proposes updates to <xref target="ROBOTS"/> to address this concern by allowing publishers to state an embargo period for content on their sites.</t>
      <t><xref target="archive-embargo"/> adds an "Archive-Embargo" rule that sets an embargo period. <xref target="embargo-allow"/> defines an "Embargo-Allow" rule that conditionally allows access to resources for crawlers that respect embargos.</t>
      <section anchor="notational-conventions">
        <name>Notational Conventions</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?>

</section>
    </section>
    <section anchor="archive-embargo">
      <name>The "Archive-Embargo" Rule</name>
      <t>This document adds a new rule that associates an embargo period with a group.</t>
      <t>Its value indicates the length of the embargo period, measured from the earliest of the HTTP response's Last-Modified value (when present and parseable; see <xref section="8.8.2" sectionFormat="of" target="HTTP"/>) and the time when the content was first observed. The following values (along with their associated embargo periods) are supported:</t>
      <ul spacing="normal">
        <li>
          <t>"w" - 7 days</t>
        </li>
        <li>
          <t>"m" - 31 days</t>
        </li>
        <li>
          <t>"q" - 90 days</t>
        </li>
      </ul>
      <t>Any other value is unsupported and results in the rule being ignored. Note that the embargo period uses case-insensitive matching, so that "Q" and "q" both indicate 90 days.</t>
      <t>During an embargo period, a crawler <bcp14>MUST NOT</bcp14> allow covered content to be republished in an archive. Its existence <bcp14>MAY</bcp14> be indicated in an archive (e.g. by a "tombstone" entry that includes the URL, response header fields, and/or a cryptographic digest of the content) so long as the response body is not included.</t>
      <t>The rule ABNF <xref target="ABNF"/> pattern from <xref section="2.2" sectionFormat="of" target="ROBOTS"/> is extended as shown in <xref target="f-abnf-embargo"/>.</t>
      <figure anchor="f-abnf-embargo">
        <name>ABNF for Archive-Embargo line</name>
        <sourcecode type="abnf"><![CDATA[
rule =/ embargo

archive-embargo = *WS "archive-embargo" *WS ":" *WS embargo-period EOL

embargo-period = "w" / "m" / "q"
]]></sourcecode>
      </figure>
    </section>
    <section anchor="embargo-allow">
      <name>The "Embargo-Allow" Rule</name>
      <t>Sites wishing to set archive embargoes without knowledge of whether a particular crawler supports this protocol extension need a way to predicate an 'allow' rule on support for it. The "Embargo-Allow" rule serves this function.</t>
      <t>Its semantics are identical to the "Allow" rule in <xref section="2.2.2" sectionFormat="of" target="ROBOTS"/>, except that it is only applicable when the crawler supports and honours the "Archive-Embargo" rule.  This includes having "Embargo-Allow" override an identical-length "Disallow".</t>
      <t>This rule has no effect on its own.  If there is no valid value for "Archive-Embargo" in the group, the "Embargo-Allow" rule <bcp14>MUST</bcp14> be ignored.</t>
      <t>The rule ABNF pattern from <xref section="2.2" sectionFormat="of" target="ROBOTS"/> is extended as shown in <xref target="f-abnf-allow"/>.</t>
      <figure anchor="f-abnf-allow">
        <name>ABNF for Embargo-Allow line</name>
        <sourcecode type="abnf"><![CDATA[
rule =/ embargo-allow

embargo-allow = *WS "embargo-allow" *WS ":" *WS
                (path-pattern / empty-pattern) EOL
]]></sourcecode>
      </figure>
    </section>
    <section anchor="examples">
      <name>Examples</name>
      <t>The following illustrates use of a group that allows the specified crawler to access content under the <tt>/news</tt> path, so long as it embargoes publication of that content for a calendar quarter.</t>
      <t>This depends on knowing that the specified crawler supports this specification.</t>
      <artwork><![CDATA[
User-Agent: ExampleBot
Archive-Embargo: q
Allow: /news
]]></artwork>
      <t>The example below illustrates a group that allows any crawler that supports and honours this specification to crawl resources under the <tt>/news</tt> path, so long as they embargo that content for one month.</t>
      <artwork><![CDATA[
User-Agent: *
Archive-Embargo: m
Embargo-Allow: /news
Disallow: /
]]></artwork>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no actions for IANA.</t>
    </section>
    <section anchor="security">
      <name>Security Considerations</name>
      <t>Embargoing is not a security mechanism; it relies upon crawlers to honour the embargo.</t>
      <t>This mechanism cannot be used to request that the existence of resources be hidden
or that an embargo is in force; see <xref target="archive-embargo"/>.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-normative-references">
      <name>Normative References</name>
      <reference anchor="ABNF">
        <front>
          <title>Augmented BNF for Syntax Specifications: ABNF</title>
          <author fullname="D. Crocker" initials="D." role="editor" surname="Crocker"/>
          <author fullname="P. Overell" initials="P." surname="Overell"/>
          <date month="January" year="2008"/>
          <abstract>
            <t>Internet technical specifications often need to define a formal syntax. Over the years, a modified version of Backus-Naur Form (BNF), called Augmented BNF (ABNF), has been popular among many Internet specifications. The current specification documents ABNF. It balances compactness and simplicity with reasonable representational power. The differences between standard BNF and ABNF involve naming rules, repetition, alternatives, order-independence, and value ranges. This specification also supplies additional rule definitions and encoding for a core lexical analyzer of the type common to several Internet specifications. [STANDARDS-TRACK]</t>
          </abstract>
        </front>
        <seriesInfo name="STD" value="68"/>
        <seriesInfo name="RFC" value="5234"/>
        <seriesInfo name="DOI" value="10.17487/RFC5234"/>
      </reference>
      <reference anchor="ROBOTS">
        <front>
          <title>Robots Exclusion Protocol</title>
          <author fullname="M. Koster" initials="M." surname="Koster"/>
          <author fullname="G. Illyes" initials="G." surname="Illyes"/>
          <author fullname="H. Zeller" initials="H." surname="Zeller"/>
          <author fullname="L. Sassman" initials="L." surname="Sassman"/>
          <date month="September" year="2022"/>
          <abstract>
            <t>This document specifies and extends the "Robots Exclusion Protocol" method originally defined by Martijn Koster in 1994 for service owners to control how content served by their services may be accessed, if at all, by automatic clients known as crawlers. Specifically, it adds definition language for the protocol, instructions for handling errors, and instructions for caching.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="9309"/>
        <seriesInfo name="DOI" value="10.17487/RFC9309"/>
      </reference>
      <reference anchor="HTTP">
        <front>
          <title>HTTP Semantics</title>
          <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
          <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
          <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
          <date month="June" year="2022"/>
          <abstract>
            <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document describes the overall architecture of HTTP, establishes common terminology, and defines aspects of the protocol that are shared by all versions. In this definition are core protocol elements, extensibility mechanisms, and the "http" and "https" Uniform Resource Identifier (URI) schemes.</t>
            <t>This document updates RFC 3864 and obsoletes RFCs 2818, 7231, 7232, 7233, 7235, 7538, 7615, 7694, and portions of 7230.</t>
          </abstract>
        </front>
        <seriesInfo name="STD" value="97"/>
        <seriesInfo name="RFC" value="9110"/>
        <seriesInfo name="DOI" value="10.17487/RFC9110"/>
      </reference>
      <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>
    <?line 169?>

<section anchor="implementing-embargoes-in-archives">
      <name>Implementing Embargoes in Archives</name>
      <t>How archives provide access to their contents
will constrain how they might implement embargoes.
This section considers archives that provide
access to content from individual resources
and archives that provide bulk snapshots
that contain content from many resources.</t>
      <t>Both types of archive need to have a way to store or reconstruct an embargo date
along with each representation that it stores.</t>
      <t>An archive that provides access to single items of content
is simple:
access to content can be limited until its embargo date.</t>
      <t>Managing access to archives that provide bulk access to content
is more complex.
To ensure that embargoed content is not included in archives,
a complete and inaccessible repository containing all archived content.
Periodically, content that has passed its embargo date
can be copied to accessible versions of the repository.</t>
      <t>For large archives,
this sort of update process could be time-consuming,
so updates might only be applied periodically.
For that reason, content might not be available immediately
after the embargo date passes.
Techniques like sharding of archives
or maintaining a sorted index of embargo dates
could make the update process more efficient
or reduce the time between the embargo date passing
and the content being available.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
AA==

-->

</rfc>
