<?xml version="1.0" encoding="UTF-8"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude"
     category="info"
     docName="draft-watts-verification-promotion-boundaries-00"
     ipr="trust200902"
     submissionType="IETF"
     version="3">
  <front>
    <title abbrev="Verification Promotion Boundaries">Verification Promotion Boundaries for Protocol Implementations</title>
    <author fullname="Deonte O'dell Watts" initials="D. O." surname="Watts">
      <organization>GoodShyt Group Inc.</organization>
      <address>
        <postal>
          <city>San Francisco</city>
          <region>CA</region>
          <country>US</country>
        </postal>
        <email>deonte@goodshyt.fun</email>
        <uri>https://orcid.org/0009-0005-8586-3650</uri>
      </address>
    </author>
    <date year="2026" month="October" day="14"/>
    <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 "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"/> <xref target="RFC8174"/> when, and only when, they appear in all capitals.</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="RFC6090" target="https://www.rfc-editor.org/rfc/rfc6090"><front><title>Fundamental Elliptic Curve Cryptography Algorithms</title><author initials="D." surname="McGrew"/><author initials="K." surname="Igoe"/><author initials="M." surname="Salter"/><date year="2011" month="February"/></front><seriesInfo name="RFC" value="6090"/></reference>
      <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-01"/></reference>
    </references>
  </back>
</rfc>
