<?xml version="1.0" encoding="utf-8"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" category="info" docName="draft-watts-authorization-noncollapse-semantics-00" ipr="trust200902" submissionType="IETF" xml:lang="en" version="3">
  <front>
    <title abbrev="Authorization Non-Collapse Semantics">Non-Collapse Semantics for Authorization, Evidence, and Execution State</title>
    <seriesInfo name="Internet-Draft" value="draft-watts-authorization-noncollapse-semantics-00"/>
    <author fullname="Deonté 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="11"/>
    <area>Security</area>
    <workgroup>Web Authorization Protocol</workgroup>
    <keyword>authorization evidence</keyword>
    <keyword>fail closed</keyword>
    <keyword>state transitions</keyword>
    <keyword>invariants</keyword>
    <keyword>distributed systems</keyword>
    <abstract><t>Distributed authorization systems frequently combine observations, policy evaluations, evidence records, authorization decisions, and execution receipts. Treating these different objects as interchangeable can create fail-open behavior, stale-authority bugs, and false claims of completion.</t><t>This document defines non-collapse semantics: explicit typed transitions between observation, evidence, authorization, and execution state; fail-closed treatment of missing or indeterminate premises; and comparison rules for determining when heterogeneous representations agree on a declared invariant. The document is informational and defines no new wire protocol.</t></abstract>
  </front>
  <middle>
<section anchor="intro"><name>Introduction</name><t>Security protocols often cross several semantic layers. A sensor or log records an observation; software interprets that observation; a verifier may accept evidence; an authority component may issue permission; and a separate component executes an action. Operational failures occur when one layer is silently substituted for another.</t>
<figure><artwork type="ascii-art"><![CDATA[
observation != evidence != authorization != execution
]]></artwork></figure>
<t>This document defines a compact model for keeping these layers distinct while still allowing explicit promotion between them.</t>
<section anchor="requirements-language"><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>
<section anchor="types"><name>Typed State Model</name><dl newline="true">
<dt>Observation Record:</dt><dd>A measurement, log entry, status report, or externally visible event.</dd>
<dt>Interpretation Record:</dt><dd>A classification or conclusion derived from one or more observations.</dd>
<dt>Evidence Record:</dt><dd>An interpretation or observation accepted under a declared validation procedure for a defined purpose.</dd>
<dt>Authorization Decision:</dt><dd>A decision that a principal or workload may perform a scoped action under stated conditions.</dd>
<dt>Execution Receipt:</dt><dd>A record that an action was attempted, executed, or became externally effective.</dd>
</dl><t>These types are not interchangeable. A deployment MAY encode them using the same serialization syntax, but it MUST preserve their semantic roles and transition rules.</t></section>
<section anchor="promotion"><name>Explicit Promotion</name><t>A state at layer L_i does not automatically imply a state at L_i+1. Promotion requires an explicit rule P_i with declared inputs, validation criteria, authority, and resulting state.</t>
<figure><artwork type="ascii-art"><![CDATA[
Observation --P0--> Evidence --P1--> Authorization --P2--> Execution
]]></artwork></figure>
<t>If a required premise is false, the transition MUST fail. If no required premise is false but at least one required premise is unknown, unavailable, stale, or indeterminate, the transition MUST NOT be treated as successful.</t></section>
<section anchor="selection"><name>Selection Semantics</name><t>A system selecting among authorized actions MUST distinguish an empty authorized set from a successful selection. If the authorized set is empty, the result is INFEASIBLE and no action is selected. If multiple actions are equally preferred and no deterministic or authorized tie-breaking rule exists, the result is TIE_REQUIRES_SELECTION_RULE and no action is selected.</t><t>"Do nothing" is not implicit authorization. A deployment that permits a no-op or defer action SHOULD model it explicitly.</t></section>
<section anchor="unison"><name>Invariant Agreement Across Representations</name><t>Two records expressed in different units, coordinate systems, or protocol views can agree only after a declared bridge maps them into a common comparison space. Raw coordinate equality is not required; lawful correspondence is.</t>
<sourcecode type="text"><![CDATA[
comparison = (
  source_a, source_b,
  comparison_space,
  projection_a, projection_b,
  metric, tolerance,
  unit_rule, snapshot_rule,
  uncertainty_rule
)
]]></sourcecode>
<t>An empty required comparison set, a missing required representation, unaligned snapshots, or invalid uncertainty coverage is INDETERMINATE. A unit or comparison-space mismatch that violates the declared bridge is FAIL. Neither condition is PASS.</t>
<section anchor="relation-types"><name>Relation Types</name><ul><li>STRICT_INVARIANT: the compared value is unchanged under the declared transformation.</li><li>COVARIANT: the value changes according to a declared transformation law.</li><li>QUOTIENT_EQUIVALENT: different representatives map to the same declared equivalence class.</li><li>TOLERANCE_EQUIVALENT: values agree only within a declared metric and tolerance.</li></ul></section>
</section>
<section anchor="examples"><name>Authorization Examples</name><ul>
<li>A successful OAuth revocation request is an observation about request handling, not proof that all derived authority is closed.</li>
<li>A valid signature proves integrity/authenticity properties of the signed object; it does not by itself prove freshness, authorization, or policy compliance.</li>
<li>An authorization decision does not prove that the requested side effect actually executed.</li>
<li>An execution receipt does not retroactively authorize an action that lacked valid authority.</li>
</ul></section>
<section anchor="relationships"><name>Relationship to Existing IETF Work</name><t><xref target="I-D.liu-oauth-authorization-evidence"/> defines authorization evidence for OAuth access tokens. <xref target="I-D.ietf-oauth-transaction-tokens"/> propagates identity and authorization context through call chains. <xref target="I-D.ietf-wimse-aims"/> distinguishes agent identity, credentials, authentication, authorization, and observability. The non-collapse model in this document is complementary: it focuses on the semantics of transitions among such states.</t><t><xref target="I-D.watts-oauth-agent-revocation-closure"/> is a concrete application of this principle: REQUESTED, invalidated, enforced, and CLOSED are distinct states.</t></section>
<section anchor="security"><name>Security Considerations</name><t>Collapsing state types can create authorization bypasses and false assurances. A system that treats observation as authorization may allow untrusted telemetry to grant privilege. A system that treats request acknowledgement as execution evidence may claim work completed when it did not. A system that treats unknown required premises as true may fail open. Implementations SHOULD therefore retain typed state, provenance, freshness, and transition authority sufficient to reconstruct why a promotion occurred.</t></section>
<section anchor="privacy"><name>Privacy Considerations</name><t>Evidence and execution records can reveal sensitive identities, user actions, delegation relationships, and operational topology. Implementations SHOULD minimize retained fields and SHOULD avoid turning cross-system evidence identifiers into unnecessary global correlation identifiers.</t></section>
<section anchor="iana"><name>IANA Considerations</name><t>This document has no IANA actions.</t></section>
  </middle>
<back><references><name>References</name><references><name>Normative References</name><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 month="March" year="1997"/></front><seriesInfo name="BCP" value="14"/><seriesInfo name="RFC" value="2119"/><seriesInfo name="DOI" value="10.17487/RFC2119"/></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 month="May" year="2017"/></front><seriesInfo name="BCP" value="14"/><seriesInfo name="RFC" value="8174"/><seriesInfo name="DOI" value="10.17487/RFC8174"/></reference></references><references><name>Informative References</name><reference anchor="I-D.liu-oauth-authorization-evidence" target="https://datatracker.ietf.org/doc/draft-liu-oauth-authorization-evidence/"><front><title>Authorization Evidence and Audit Trail for OAuth 2.0 Access Tokens</title><author fullname="D. Liu"/><author fullname="H. Zhu"/><author fullname="S. Krishnan"/><author fullname="A. Parecki"/><date month="June" year="2026"/></front><seriesInfo name="Internet-Draft" value="draft-liu-oauth-authorization-evidence-01"/></reference><reference anchor="I-D.ietf-oauth-transaction-tokens" target="https://datatracker.ietf.org/doc/draft-ietf-oauth-transaction-tokens/"><front><title>Transaction Tokens</title><author fullname="A. Tulshibagwale"/><author fullname="G. Fletcher"/><author fullname="P. Kasselman"/><date month="July" year="2026"/></front><seriesInfo name="Internet-Draft" value="draft-ietf-oauth-transaction-tokens-11"/></reference><reference anchor="I-D.ietf-wimse-aims" target="https://datatracker.ietf.org/doc/draft-ietf-wimse-aims/"><front><title>AI Identity Management System</title><author fullname="P. Kasselman"/><author fullname="J. Lombardo"/><author fullname="Y. Rosomakho"/><author fullname="B. Campbell"/><author fullname="N. Steele"/><author fullname="A. Parecki"/><date month="September" year="2026"/></front><seriesInfo name="Internet-Draft" value="draft-ietf-wimse-aims-00"/></reference><reference anchor="I-D.watts-oauth-agent-revocation-closure" target="https://datatracker.ietf.org/doc/draft-watts-oauth-agent-revocation-closure/"><front><title>Revocation Closure for Agentic Authorization Systems</title><author fullname="D. Watts"/><date month="September" year="2026"/></front><seriesInfo name="Internet-Draft" value="draft-watts-oauth-agent-revocation-closure-00"/></reference></references></references></back></rfc>