<?xml version="1.0" encoding="UTF-8"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude"
     category="info"
     docName="draft-watts-verification-promotion-boundaries-01"
     ipr="trust200902"
     submissionType="IETF"
     version="3">
  <front>
    <title abbrev="Verification Promotion Boundaries">Verification Promotion Boundaries for Protocol Implementations</title>
    <author fullname="Deonté O'dell Watts" asciiFullname="Deonte O'dell Watts" initials="D. O." surname="Watts">
      <organization>GoodShyt Group Inc.</organization>
      <address>
        <postal>
          <city>San Francisco</city>
          <region>CA</region>
          <country>United States of America</country>
        </postal>
        <email>deonte@goodshyt.fun</email>
        <uri>https://orcid.org/0009-0005-8586-3650</uri>
      </address>
    </author>
    <date year="2026" month="October" day="30"/>
    <keyword>verification</keyword>
    <keyword>conformance</keyword>
    <keyword>evidence</keyword>
    <keyword>reproducibility</keyword>
    <keyword>agentic systems</keyword>
    <abstract>
      <t>Protocol implementations frequently combine specification checks, deterministic test vectors, security testing, independent reproduction, and release decisions. A common failure mode is evidence collapse: a result at one assurance level is silently treated as sufficient for a stronger conclusion. This document defines Verification Promotion Boundaries (VPB), a machine-readable profile and state-transition procedure that separates specification validation, local conformance, independent reproduction, authorized security testing, and release eligibility. VPB also defines dual-state handling for specification defects: detecting a bad normative vector is negative evidence about the tested subject but may be positive fault-detection evidence about the verifier. Unknown evidence never promotes. This document does not define a new cryptographic primitive, authorization protocol, or IETF certification program.</t>
    </abstract>
  </front>

  <middle>
    <section anchor="intro"><name>Introduction</name>
      <t>Protocol research often moves through several evidence classes: a document is written, an implementation passes local vectors, another implementation reproduces the result, security testing is performed, and a human release authority decides whether deployment is appropriate. These states are not interchangeable.</t>
      <t>VPB formalizes the non-collapse rule: a result produced for one assurance class MUST NOT be represented as satisfying a stronger assurance class unless evidence required by the stronger class is present. The profile is designed for laboratories that validate portfolios of related Internet-Drafts or experimental protocol specifications, but it is protocol-neutral.</t>
      <t>A motivating case is arithmetic conformance. A verifier can correctly reject a published elliptic-curve point that does not satisfy the declared curve equation. That outcome is a failure of the tested vector, not a failure of the verifier. VPB therefore keeps subject status separate from verifier-evidence status.</t>
    </section>

    <section anchor="requirements"><name>Requirements Language</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>
    </section>

    <section anchor="terms"><name>Terminology</name>
      <dl>
        <dt>Subject</dt><dd><t>The specification, implementation, vector set, build, or release candidate being evaluated.</t></dd>
        <dt>Verifier</dt><dd><t>The implementation that executes a declared verification procedure.</t></dd>
        <dt>Promotion</dt><dd><t>A transition to a stronger assurance stage.</t></dd>
        <dt>Specification Vector Failure</dt><dd><t>A reproducible finding that a published expected value or normative test input is inconsistent with the specification it is intended to represent.</t></dd>
        <dt>Independent Reproduction</dt><dd><t>A reproduction performed by a producer and implementation distinct from the producer and implementation whose local result is being reproduced.</t></dd>
      </dl>
    </section>

    <section anchor="states"><name>Promotion Stages</name>
      <t>VPB defines the following ordered stages: REGISTERED, SPEC_VALIDATED, LOCAL_CONFORMANT, INDEPENDENTLY_REPRODUCED, SECURITY_TESTED, and RELEASE_ELIGIBLE.</t>
      <t>REGISTERED means only that the subject and its digests are known. SPEC_VALIDATED means required specification preconditions and vector definitions are internally consistent. LOCAL_CONFORMANT means the declared local conformance suite passed in a characterized environment. INDEPENDENTLY_REPRODUCED requires a distinct producer and implementation to reproduce the registered result. SECURITY_TESTED additionally requires authorized penetration testing and fault injection. RELEASE_ELIGIBLE additionally requires signed provenance, no unresolved high-severity finding, and explicit human approval.</t>
      <t>No stage implies a later stage. A relying party MUST NOT infer independent reproduction from a local PASS, or production readiness from independent reproduction.</t>
    </section>

    <section anchor="outcomes"><name>Verification Outcomes</name>
      <t>Each required check has one outcome: PASS, SUBJECT_FAIL, SPEC_VECTOR_FAIL, INDETERMINATE, INTEGRITY_FAIL, or ENVIRONMENT_FAIL.</t>
      <t>INDETERMINATE MUST NOT be interpreted as PASS. INTEGRITY_FAIL terminates evaluation of the affected receipt. SPEC_VECTOR_FAIL blocks conformance promotion of the subject.</t>
    </section>

    <section anchor="dual"><name>Dual Subject and Verifier Evidence</name>
      <t>A verifier that reports SPEC_VECTOR_FAIL has made a negative claim about the tested subject. If the defect is independently reproducible, the same event MAY be recorded as SPECIFICATION_DEFECT_DETECTED in the verifier's evidence ledger.</t>
      <t>This rule prevents a useful failure from being flattened into a generic test failure. The subject remains blocked. The verifier gains only evidence of the specific demonstrated fault-detection capability. It does not gain independent-reproduction, security, release, or certification status.</t>
      <t>Formally, SubjectState and VerifierEvidenceState are separate variables. A transition in one MUST NOT implicitly change the other.</t>
    </section>

    <section anchor="receipt"><name>VPB Receipt</name>
      <t>A VPB receipt is a JSON object. Implementations MUST use RFC 8785 canonicalization before computing interoperable receipt digests <xref target="RFC8785"/>. SHA-256 MAY be used for content digests as specified in <xref target="RFC6234"/>.</t>
      <t>The receipt contains a profile identifier, receipt identifier, subject identifier and digest, verification-procedure digest, vector-set digest, environment digest, producer identifier, requested promotion stage, per-check outcomes, independence assertions, security-testing assertions, human approval, signed-provenance state, unresolved-high-severity count, and predecessor-receipt digests.</t>
      <t>The JSON representation MUST conform to the companion schema for this profile. Unknown or omitted required evidence MUST fail closed for the requested promotion.</t>
    </section>

    <section anchor="algorithm"><name>Promotion Algorithm</name>
      <ol>
        <li><t>Validate the receipt syntax and canonical form.</t></li>
        <li><t>If any integrity check fails, return INTEGRITY_FAIL and grant no promotion.</t></li>
        <li><t>If required evidence is unknown, including an unknown environment, return INDETERMINATE and grant no promotion.</t></li>
        <li><t>If any required check is SUBJECT_FAIL, SPEC_VECTOR_FAIL, or ENVIRONMENT_FAIL, block subject promotion. A SPEC_VECTOR_FAIL MAY additionally create verifier evidence as described in <xref target="dual"/>.</t></li>
        <li><t>Grant LOCAL_CONFORMANT only if every required registered check is PASS.</t></li>
        <li><t>Grant INDEPENDENTLY_REPRODUCED only when the reproducing producer and implementation are distinct from the original producer and implementation.</t></li>
        <li><t>Grant SECURITY_TESTED only when both authorized penetration testing and fault injection are complete.</t></li>
        <li><t>Grant RELEASE_ELIGIBLE only when signed provenance is complete, unresolved high-severity findings equal zero, and a human release authority explicitly approves.</t></li>
      </ol>
    </section>

    <section anchor="vectors"><name>Conformance and Falsification</name>
      <t>A VPB implementation claiming conformance MUST reproduce the normative results in the companion test-vector set. The vectors include local PASS without independent reproduction, specification-vector failure, unknown environment, insufficient independence, missing fault injection, missing human approval, unresolved high-severity findings, and integrity failure.</t>
      <t>The core falsifiers are direct. If a local PASS is promoted to INDEPENDENTLY_REPRODUCED without independent evidence, the implementation is non-conformant. If SPEC_VECTOR_FAIL is treated as subject conformance, it is non-conformant. If INDETERMINATE is promoted as PASS, it is non-conformant.</t>
    </section>

    <section anchor="relationship"><name>Relationship to Existing Work</name>
      <t>RFC 9943 defines a transparency architecture for signed statements and receipts <xref target="RFC9943"/>. VPB does not replace transparency services or receipt cryptography; it defines promotion semantics across verification stages.</t>
      <t>The Correctover Runtime Verification Receipt Internet-Draft specifies a receipt for runtime verification of agent tool invocations <xref target="I-D.ccs"/>. VPB addresses a different lifecycle question: what evidence is sufficient to promote a subject from one verification stage to another.</t>
      <t>Revocation-closure work defines when invalidated authority is no longer usable across declared paths <xref target="I-D.watts-closure"/>. VPB does not define revocation closure; it defines when verification evidence may support stronger assurance claims.</t>
    </section>

    <section anchor="security"><name>Security Considerations</name>
      <t>Expected outputs MUST NOT be generated solely by the implementation under test. Security-critical vectors SHOULD be derived or checked by an independent oracle or independent implementation.</t>
      <t>Receipt integrity authenticates bytes, not truth. A signed receipt can preserve an incorrect conclusion. Consumers must evaluate the procedure, vector provenance, independence class, and environment.</t>
      <t>This profile does not authorize penetration testing against third-party systems. Internet-Draft conformance is not IETF certification, standards adoption, patent validity, or production-security assurance.</t>
    </section>

    <section anchor="ipr"><name>IPR and Research Claims</name>
      <t>This document does not assert patentability, priority, freedom to operate, or ownership of established algorithms. IETF participants remain responsible for applicable IPR disclosure obligations under BCP 79 <xref target="RFC8179"/>. Technical novelty and patentability analysis belongs outside the normative conformance result.</t>
    </section>

    <section anchor="iana"><name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>
  </middle>

  <back>
    <references><name>Normative References</name>
      <reference anchor="RFC2119" target="https://www.rfc-editor.org/rfc/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="RFC" value="2119"/></reference>
      <reference anchor="RFC8174" target="https://www.rfc-editor.org/rfc/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="RFC" value="8174"/></reference>
      <reference anchor="RFC8785" target="https://www.rfc-editor.org/rfc/rfc8785"><front><title>JSON Canonicalization Scheme (JCS)</title><author initials="A." surname="Rundgren"/><author initials="B." surname="Jordan"/><author initials="S." surname="Erlandsson"/><date year="2020" month="June"/></front><seriesInfo name="RFC" value="8785"/></reference>
      <reference anchor="RFC6234" target="https://www.rfc-editor.org/rfc/rfc6234"><front><title>US Secure Hash Algorithms (SHA and SHA-based HMAC and HKDF)</title><author initials="D." surname="Eastlake"/><author initials="T." surname="Hansen"/><date year="2011" month="May"/></front><seriesInfo name="RFC" value="6234"/></reference>
    </references>
    <references><name>Informative References</name>
<reference anchor="RFC8179" target="https://www.rfc-editor.org/rfc/rfc8179"><front><title>Intellectual Property Rights in IETF Technology</title><author initials="S." surname="Bradner"/><author initials="J." surname="Contreras"/><date year="2017" month="May"/></front><seriesInfo name="RFC" value="8179"/></reference>
      <reference anchor="RFC9943" target="https://www.rfc-editor.org/rfc/rfc9943"><front><title>An Architecture for Trustworthy and Transparent Digital Supply Chains</title><author initials="H." surname="Birkholz"/><date year="2026" month="June"/></front><seriesInfo name="RFC" value="9943"/></reference>
      <reference anchor="I-D.ccs" target="https://datatracker.ietf.org/doc/draft-wang-ccs-runtime-verification/"><front><title>A Runtime Verification Receipt Format for Agent Auditing</title><author initials="G." surname="Wang"/><author initials="G." surname="Wang"/><date year="2026" month="August"/></front><seriesInfo name="Internet-Draft" value="draft-wang-ccs-runtime-verification-00"/></reference>
      <reference anchor="I-D.watts-closure" target="https://datatracker.ietf.org/doc/draft-watts-oauth-agent-revocation-closure/"><front><title>Revocation Closure for Agentic Authorization Systems</title><author initials="D." surname="Watts"/><date year="2026" month="October"/></front><seriesInfo name="Internet-Draft" value="draft-watts-oauth-agent-revocation-closure-02"/></reference>
    </references>
  
    <section anchor="changes-since-00" removeInRFC="true"><name>Changes since -00</name>
      <t>Editorial and tooling-conformance changes only; no technical content was changed.</t>
      <ul><li>Replaced Requirements Language paragraph with the exact BCP 14 (RFC 8174) boilerplate (idnits)</li><li>Removed unreferenced bibliography entries (xml2rfc/idnits "unused reference"): RFC6090</li><li>Updated outdated reference draft-watts-oauth-agent-revocation-closure-01 to current -02</li><li>Normalized author metadata (full name with ASCII form, initials, organization GoodShyt Group Inc., San Francisco CA postal, email, ORCID URI)</li><li>Updated document date and revision number.</li></ul>
    </section>
  </back>
</rfc>
