<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?><!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.39 (Ruby 3.2.3) --><!DOCTYPE rfc [
<!ENTITY nbsp "&#160;">
<!ENTITY zwsp "&#8203;">
<!ENTITY nbhy "&#8209;">
<!ENTITY wj "&#8288;">
]>
<rfc ipr="trust200902" docName="draft-wei-capability-language-core-01" category="exp" submissionType="independent">
  <front>
    <title abbrev="CLC-v1">Capability Language Core</title>

    <author initials="J." surname="Wei" fullname="Jijie Wei">
      <organization>Individual</organization>
      <address>
        <email>pki@varwof.com</email>
        <uri>https://varwof.com</uri>
      </address>
    </author>

    <date year="2026" month="October" day="24"/>

    
    <workgroup>Network Working Group</workgroup>
    

    <abstract>


<?line 227?>

<t>This document defines the Capability Language Core (CLC), a minimal, executable
language for describing what an agent is authorized to do.  It defines the
capability identifier grammar, the entailment relation between a grant and an
operation, intersection of grants from multiple sources, the constraint model,
and a deterministic decision function with stable reason codes and a
three-valued verdict (<spanx style="verb">allow</spanx>, <spanx style="verb">deny</spanx>, <spanx style="verb">allow_unresolved</spanx>).</t>

<t>The language is carrier-neutral: it defines what is evaluated, not how it is
carried or trusted.  Trust models, native verification, execution lifecycle,
and receipt or token formats are out of scope (Section 11).  Conformance is
exercised by a published corpus of 154 vectors and 1184 property cases; three
implementations (Go, Python, TypeScript) that share an author pass both.
<strong>Implementation conformance and this document's claim of a conformance class
are separate.</strong>  An implementation conforms to CLC-A when it meets the
obligations Section 12 lists for that class, and it may claim that conformance on
its own, whatever other implementations exist.  Section 12 additionally sets a
maturity bar for <em>this document's</em> claim — two independent implementations
agreeing on verdict and reason.  That bar is <strong>not</strong> met here: as Section 12
states under "Independence of implementations", the three implementations named in
the README share an author, so their agreement is a regression test for the text,
not independent validation.  CLC-A is still claimed by this revision as the
baseline authorization class, whose obligations are implementable and exercised by
a published corpus; the independent-implementation threshold is recorded as
unmet.  The evidence-side class CLC-E is <strong>not</strong> claimed: its relations, value
grammar, reference implementation and corpus ship here.</t>

<t>This revision also folds the delegation <strong>containment</strong> relation into the
document (Section 13): <spanx style="verb">Contains(parent, child)</spanx> decides whether a child grant
stays inside a parent's declared boundary — the single question a delegation
chain asks at every hop that the core's entailment and intersection do not
answer.  It ships with the conformance class <strong>CLC-D</strong> and its own corpus, is
strictly additive, and changes no CLC-A verdict, reason code, or vector.  It
absorbs the previously separate experimental containment extension,
which is retired.</t>



    </abstract>



  </front>

  <middle>


<?line 264?>

<section anchor="introduction"><name>Introduction</name>

<t>CLC-v1 is a <strong>universal minimal language</strong> that can be consistently
presented on either the authorization side or the evidence side.</t>

<t>The two sides share five foundational abstractions:</t>

<texttable>
      <ttcol align="left">Foundation</ttcol>
      <ttcol align="left">Authorization Side</ttcol>
      <ttcol align="left">Evidence Side</ttcol>
      <c><strong>Action</strong></c>
      <c>Operation (concrete request)</c>
      <c>ObservedAction (asserted effect)</c>
      <c><strong>Identity</strong></c>
      <c>CapabilityId (class-level)</c>
      <c>ActionId (instance-level)</c>
      <c><strong>Binding</strong></c>
      <c>Entailment (grant ⊆ operation)</c>
      <c>Match (evidence ↔ action)</c>
      <c><strong>Constraint</strong></c>
      <c>Grant params / limits</c>
      <c>Evidence requirements / freshness</c>
      <c><strong>Verdict</strong></c>
      <c>allow / deny / allow_unresolved</c>
      <c>SATISFIED / UNSATISFIED</c>
</texttable>

<t><strong>Conventions.</strong>  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, as shown here.  "UTC instant"
is an <xref target="RFC3339"/> timestamp.  "JCS" is the JSON Canonicalization Scheme
<xref target="RFC8785"/>; "I-JSON" is <xref target="RFC7493"/>.</t>

<t>The language structure is identical on both sides; only the direction
differs:</t>

<t><list style="symbols">
  <t>Authorization: "I grant you permission to do X"</t>
  <t>Evidence: "I have evidence that X was done"</t>
</list></t>

<t>The design principles behind this core — including what the language
<strong>deliberately refuses</strong> (no control flow, no mutable state, no general-purpose
policy language) — are stated in <spanx style="verb">capability-language-core-principles-v1.md</spanx>
(in <xref target="CLC-CORPUS"/>):</t>

<ul empty="true"><li>
  <t>P1 minimal core · P2 no control flow · P3 immutable values ·
P4 domains, not types · P5 deterministic and terminating ·
P6 fail-closed · P7 define once, consume everywhere ·
P8 carriers separate from semantics · P9 local decidability ·
P10 bounded work · P11 composition narrows only ·
P12 ≥2 independent implementations</t>
</li></ul>

</section>
<section anchor="terminology"><name>Terminology</name>

<texttable>
      <ttcol align="left">Term</ttcol>
      <ttcol align="left">Definition</ttcol>
      <c><strong>Action</strong></c>
      <c>The thing being referenced — an abstract operation class (auth) or a concrete asserted effect (evidence).</c>
      <c><strong>CapabilityId</strong></c>
      <c>Structured name identifying a class of actions within a scheme.</c>
      <c><strong>Operation</strong></c>
      <c>Concrete action request: a CapabilityId plus parameters.</c>
      <c><strong>Grant</strong></c>
      <c>Principal's authorization of a CapabilityId with optional params and constraints.</c>
      <c><strong>Binding</strong></c>
      <c>Abstract concept connecting an Identity to an Action. Entailment (auth) and Match (evidence) are concrete instances.</c>
      <c><strong>Entailment</strong></c>
      <c>Authorization-side binding: "Grant G covers operation O" (⊆).</c>
      <c><strong>Match</strong></c>
      <c>Evidence-side binding: "Evidence E is bound to exact action A".</c>
      <c><strong>Constraint</strong></c>
      <c>Bound on how an action may be used (auth) or what evidence is required (evidence).</c>
      <c><strong>Intersection</strong></c>
      <c>Combining multiple grant sources into an effective set (∩).</c>
      <c><strong>Verdict</strong></c>
      <c>Outcome of evaluation: <spanx style="verb">allow</spanx>/<spanx style="verb">deny</spanx>/<spanx style="verb">allow_unresolved</spanx> (auth) or <spanx style="verb">SATISFIED</spanx>/<spanx style="verb">UNSATISFIED</spanx> (evidence).</c>
      <c><strong>Decision</strong></c>
      <c>Authorization-side verdict: <spanx style="verb">allow</spanx>, <spanx style="verb">allow_unresolved</spanx>, or <spanx style="verb">deny</spanx> + reason (+ additive <spanx style="verb">unresolved</spanx>).</c>
      <c><strong>Satisfaction</strong></c>
      <c>Evidence-side verdict: <spanx style="verb">SATISFIED</spanx> or <spanx style="verb">UNSATISFIED</spanx>.</c>
</texttable>

<t>Note: <strong>Binding</strong> in CLC-v1 denotes the identity↔action relation
(coverage on the authorization side, match on the evidence side). It is
<strong>not</strong> key binding (cnf / DPoP / mTLS sender constraint), which belongs
to the native artifact's specification (see Section 11).</t>

<t>Verdicts are written lowercase on the authorization side (<spanx style="verb">allow</spanx>/<spanx style="verb">deny</spanx>/
<spanx style="verb">allow_unresolved</spanx>) and uppercase on the evidence side
(<spanx style="verb">SATISFIED</spanx>/<spanx style="verb">UNSATISFIED</spanx>), following the EMILIA/AEB convention.</t>

</section>
<section anchor="grammar"><name>Grammar</name>

<figure><artwork>
capability-id = scheme ":" action [ ":" wildcard ]
wildcard      = "*"
scheme        = vendor "/" product "-v" major
vendor        = 1*( ALPHA / DIGIT / "-" )
product       = 1*( ALPHA / DIGIT / "-" )
major         = 1*DIGIT
action        = segment *( ":" segment )
segment       = 1*( ALPHA / DIGIT / "-" / "_" / "." )
</artwork></figure>

<t>The trailing wildcard is part of the identifier grammar (the optional final
<spanx style="verb">":" "*"</spanx> above), so <spanx style="verb">std/database-v1:query:*</spanx> is a well-formed
<spanx style="verb">capability-id</spanx>; only that shape is a wildcard (Section 3, below).</t>

<t><strong>Unambiguous <spanx style="verb">scheme</spanx>.</strong>  Because <spanx style="verb">product</spanx> may contain <spanx style="verb">-</spanx>, the <spanx style="verb">-v&lt;major&gt;</spanx>
suffix is the <strong>last</strong> occurrence of <spanx style="verb">-v</spanx> followed by digits.  A <spanx style="verb">product</spanx>
that itself contains the two-character sequence <spanx style="verb">-v</spanx> is invalid
(<spanx style="verb">invalid_capability_id</spanx>), so <spanx style="verb">a/b-v1-v2</spanx> is rejected rather than parsed two
ways; <spanx style="verb">b-v1</spanx> as a product name is not expressible.  A scheme in use before
this rule that relies on such a product is out of grammar in v1.</t>

<t>A v1 identifier is <spanx style="verb">scheme:action</spanx> (e.g. <spanx style="verb">std/database-v1:query:SELECT</spanx>).
Trailing <spanx style="verb">*</spanx> as a complete segment matches <strong>one or more</strong> remaining segments
(it does not match the empty remainder: <spanx style="verb">std/database-v1:query:*</spanx> does not
cover <spanx style="verb">std/database-v1:query</spanx>).</t>

<t><strong>Wildcard scope for v1</strong>: CLC-v1 core defines exactly one wildcard shape:
the complete trailing segment <spanx style="verb">*</spanx>.  Partial (<spanx style="verb">std/crm-v1:re*</spanx>), bare <spanx style="verb">*</spanx>,
<spanx style="verb">**</spanx>, <spanx style="verb">{a,b}</spanx>, <spanx style="verb">[a-z]</spanx> are <strong>reserved for v2</strong>; a v1-conforming
implementation MUST reject them (<spanx style="verb">unsupported_wildcard</spanx>).  If a capability
scheme declares its own extended grammar, that scheme's conforming
implementation may accept it; but CLC-v1 core conformance neither requires
nor authorizes those forms (see Section 12).</t>

<t><strong>Wildcard detection precedes grammar conformance.</strong>  A forbidden
wildcard shape is reported as <spanx style="verb">unsupported_wildcard</spanx> even when the same
string also violates the base grammar (Section 3 <spanx style="verb">segment</spanx>): the wildcard-shape
checks run before the generic <spanx style="verb">invalid_capability_id</spanx> test.</t>

<texttable>
      <ttcol align="left">Examples: std/database-v1:query:SELECT valid</ttcol>
      <ttcol align="left">database:query invalid</ttcol>
      <c><spanx style="verb">std/database-v1:query:*</spanx> valid</c>
      <c><spanx style="verb">std/database-v1:query:SEL*</spanx> invalid</c>
</texttable>

</section>
<section anchor="action"><name>Action</name>

<t>An action is the thing being referenced.  CLC-v1 defines two concrete forms:</t>

<section anchor="operation-authorization-side"><name>Operation (authorization side)</name>

<t>A concrete action request: CapabilityId + parameters.</t>

<figure><artwork>
{ "id": "std/database-v1:query:SELECT",
  "params": {"tables":["customers"], "limit":{"max":50}} }
</artwork></figure>

<t>Missing <spanx style="verb">id</spanx> → <spanx style="verb">deny("missing_capability_id")</spanx>.</t>

</section>
<section anchor="observedaction-evidence-side"><name>ObservedAction (evidence side)</name>

<t>The material action constructed by the effect boundary from
executor-controlled facts.  CLC-v1 defines the interface, not the
construction algorithm.</t>

<t>An ObservedAction carries:</t>

<t><list style="symbols">
  <t><spanx style="verb">action_type</spanx>: the action type name declared by the relying-party-pinned type definition (the class this projection belongs to)</t>
  <t><spanx style="verb">material_fields</spanx>: every field the type definition declares <strong>material</strong></t>
  <t><spanx style="verb">digest</spanx>: computed over the canonical <strong>material projection</strong> (below)</t>
</list></t>

<t>The material projection is deterministic and normative:</t>

<t><list style="symbols">
  <t>The action type declares a <strong>material field set</strong> (required and
optional-but-included).  Only that set enters the digest.</t>
  <t>Canonical serialization is the JSON Canonicalization Scheme (JCS) <xref target="RFC8785"/>;
the one suite defined in v1 is <spanx style="verb">jcs-sha256</spanx> (Section 4.3).</t>
  <t>The projection identity is the language's own, not a CAID:
<spanx style="verb">clc-action:1:&lt;type&gt;:&lt;suite&gt;:&lt;b64url&gt;</spanx>.  A CAID <xref target="CAID"/> covers the <strong>complete</strong>
Action Object under its own suite registry and identifies the action object,
not an occurrence; this projection covers only the declared material set.  The
two are related by a relying-party-pinned Action-Mapping Profile (Section 6.4), never
by treating the strings as interchangeable.</t>
  <t>A field the type does not declare as material MUST be excluded from the
digest and MUST NOT affect Match: an ObservedAction carrying undeclared
fields is not invalidated, but those fields carry no action identity.</t>
  <t>A type-declared material field that is <strong>missing</strong> makes the
ObservedAction non-matchable: coverage MUST NOT be inferred, defaulted,
or repaired (<spanx style="verb">UNSATISFIED</spanx>, Section 10).  This is the evidence-side mirror of
key closure (Section 6.2): the absence of a governing field is fail-closed,
never fail-open.</t>
</list></t>

<t>The effect boundary MUST construct the ObservedAction from facts it
controls.  It MUST NOT copy a requester-supplied action digest without
deriving or checking the corresponding fact.</t>

</section>
<section anchor="identity"><name>Identity</name>

<t>Two identity levels, corresponding to the two Action forms:</t>

<texttable>
      <ttcol align="left">Level</ttcol>
      <ttcol align="left">Identity</ttcol>
      <ttcol align="left">Scope</ttcol>
      <ttcol align="left">Example</ttcol>
      <c>Class</c>
      <c>CapabilityId</c>
      <c>Covers a class of actions</c>
      <c><spanx style="verb">std/database-v1:query:*</spanx></c>
      <c>Instance</c>
      <c>ActionId (projection digest)</c>
      <c>Identifies the material content of one action, <strong>not</strong> an occurrence</c>
      <c><spanx style="verb">clc-action:1:payment.release.1:jcs-sha256:...</spanx></c>
</texttable>

<t>A CapabilityId covers a class; an ActionId identifies the material content of one
action.  It does not identify an <strong>occurrence</strong>: ActionId binds the declared
material content, and correlation to a particular occurrence additionally requires
an occurrence discriminator defined and checked by the consuming profile.  CAID-05
Section 4.7 carries such a discriminator as the optional <spanx style="verb">occurrence_id</spanx> of an
action object; when a profile uses one, it MUST appear among the declared material
fields for it to affect the digest.  Allocating unique occurrences and proving
one-time consumption or execution stay outside both documents (CAID-05 Section 7).
Entailment checks class coverage; Match checks content binding.</t>

</section>
</section>
<section anchor="grant"><name>Grant</name>

<t>A grant = CapabilityId + optional params + optional constraints.</t>

<figure><artwork>
grant       = capability-id [ params ] [ constraints ]
constraint  = scheme ":" type [ ":" params ]
</artwork></figure>

<t>Constraints are deny-when-declared: explicitly empty bound (e.g. zero
max, empty allowlist) denies the class; omitted bound uses scheme default.</t>

</section>
<section anchor="binding"><name>Binding</name>

<t>Binding is the abstract concept of connecting an Identity to an Action.
CLC-v1 defines two concrete instances:</t>

<section anchor="entailment-authorization-binding"><name>Entailment (authorization binding)</name>

<t>Grant G covers operation O if:</t>

<t><list style="numbers" type="1">
  <t><strong>Literal</strong>: G = O (byte-for-byte after normalization).</t>
  <t><strong>Trailing wildcard</strong>: G = <spanx style="verb">scheme:prefix:*</spanx> and O has <strong>at least one</strong>
segment after <spanx style="verb">scheme:prefix:</spanx> (segment-boundary comparison, not lexical
prefix).</t>
</list></t>

<texttable>
      <ttcol align="left">Grant</ttcol>
      <ttcol align="left">Operation</ttcol>
      <ttcol align="left">Result</ttcol>
      <c><spanx style="verb">std/database-v1:query:*</spanx></c>
      <c><spanx style="verb">std/database-v1:query:SELECT</spanx></c>
      <c>yes: wildcard matches</c>
      <c><spanx style="verb">std/database-v1:query:*</spanx></c>
      <c><spanx style="verb">std/database-v1:query:SELECT:deep</spanx></c>
      <c>yes: matches multi-segment</c>
      <c><spanx style="verb">std/database-v1:query:*</spanx></c>
      <c><spanx style="verb">std/database-v1:admin:DDL</spanx></c>
      <c>no: different namespace</c>
      <c><spanx style="verb">std/database-v1:query:SELECT</spanx></c>
      <c><spanx style="verb">std/database-v1:query:INSERT</spanx></c>
      <c>no: literal mismatch</c>
</texttable>

</section>
<section anchor="parameters"><name>Parameters</name>

<texttable>
      <ttcol align="left">Type</ttcol>
      <ttcol align="left">Rule</ttcol>
      <ttcol align="left">Example</ttcol>
      <c>number</c>
      <c>op ≤ grant</c>
      <c>50 ≤ 100 (holds)</c>
      <c>string</c>
      <c>exact</c>
      <c>"a" = "a" (holds)</c>
      <c>boolean</c>
      <c>exact</c>
      <c>true = true (holds)</c>
      <c>array</c>
      <c>set of allowed values (enum): request scalar must equal a member; request array — every element must equal a member</c>
      <c><spanx style="verb">{"station":[1,2,3]}</spanx> ⊇ <spanx style="verb">2</spanx> (holds); ⊇ <spanx style="verb">9</spanx> (does not hold)</c>
      <c>object</c>
      <c>every grant key in op, values recurse</c>
      <c><spanx style="verb">{"t":["id"]}</spanx> ⊆ <spanx style="verb">{"t":["id","name"]}</spanx> (holds)</c>
      <c>other</c>
      <c>exact equality</c>
      <c>—</c>
</texttable>

<t><strong>Boolean parameters are exact only.</strong> A boolean grant value is matched by
exact equality (<spanx style="verb">true</spanx> covers <spanx style="verb">true</spanx> only).  Booleans are <strong>not</strong> numbers: an
implementation MUST NOT interpret <spanx style="verb">true</spanx>/<spanx style="verb">false</spanx> as <spanx style="verb">1</spanx>/<spanx style="verb">0</spanx> and MUST NOT run
them through the numeric-bound rule (op ≤ grant).  They also play no role in
numeric comparisons or bounds.  (Boolean GRANT-side bounds are rare in
practice; the setting that matters — an operation-side boolean value under
key closure — is pinned by <spanx style="verb">undeclared-001</spanx>.)</t>

<t>Table rows map to vectors: number → <spanx style="verb">params-001</spanx>/<spanx style="verb">params-002</spanx>; array scalar
member → <spanx style="verb">params-009</spanx> (holds) / <spanx style="verb">params-010</spanx> (fails); array element-wise →
<spanx style="verb">params-011</spanx> (holds) / <spanx style="verb">params-012</spanx> (fails); object recursion allow → <spanx style="verb">params-015</spanx>,
deny-direction → <spanx style="verb">params-005</spanx>; categorical guard → <spanx style="verb">params-014</spanx>.
Under the old (pre-v1.1) array-as-bound rule the object example read (does not hold); with the
v1.1 enum rule the request-side element <spanx style="verb">id</spanx> is a member of the granted set, so
the row is (holds) (see <spanx style="verb">clc-v1-ambiguities.md</spanx> Section 2).</t>

<t><strong>Enum semantics of arrays (v1.1).</strong> An array-valued grant parameter is the
<strong>set of allowed values</strong>, not an order.  The request MAY supply a single
scalar (must be a member of the set) or an array (every element must be a
member).  Members compare by <strong>exact equality</strong>: a number inside a granted
array denotes that exact value, not a bound.  This is what keeps categorical
identifiers safe — <spanx style="verb">grant {"station":[3]}</spanx> does <strong>not</strong> cover <spanx style="verb">station 2</spanx>
(failure → <spanx style="verb">deny("not_in_enum")</spanx>).  Scheme authors SHOULD encode categorical
parameters (station, cell, batch, tool id) as arrays; a scalar number in the
grant keeps upper-bound (bound) semantics for ordered quantities
(<spanx style="verb">max_rows</spanx>, <spanx style="verb">speed</spanx>, <spanx style="verb">angle</spanx>).</t>

<t>An explicitly empty grant array <spanx style="verb">[]</spanx> denies the class
(<spanx style="verb">empty_bound_denies_class</spanx>).</t>

<t>Grant with no params — or with an <strong>empty <spanx style="verb">{}</spanx> params object</strong> — covers any
operation params (unconstrained).  An absent <spanx style="verb">params</spanx> and <spanx style="verb">"params":{}</spanx> are
semantically equivalent — consistent across entailment (Section 6.3) and
intersection (Section 7 rule 6; Section 9.1).</t>

<t>A <spanx style="verb">null</spanx> parameter value is invalid in v1 → reject (<spanx style="verb">invalid_params_null</spanx>).
Absent ≠ explicitly empty (see Section 8).</t>

<t><strong>Key closure (Plan A).</strong>  A bounded grant governs its declared keys: an
operation carrying a parameter key the grant does not declare is rejected →
<spanx style="verb">deny("undeclared_param")</spanx> (fail-closed, Section 9.1 layer 7 request side).  An
unconstrained grant (no <spanx style="verb">params</spanx>, or <spanx style="verb">params:{}</spanx>) accepts any operation
params, so no key closure applies there.  Within layer 7 the missing-key check
(<spanx style="verb">params_missing</spanx>) resolves <strong>before</strong> the undeclared-key check
(<spanx style="verb">undeclared_param</spanx>); both are key-level and run before the enum/bound value
checks (layers 8–9).</t>

<t><strong>Params representation and input normalization (v1.1).</strong> Before any Section 9.1
layer runs, the <spanx style="verb">params</spanx> object is normalized at the input boundary:</t>

<t><list style="numbers" type="1">
  <t><strong>Canonical serialization.</strong> Params are normalized to the JSON
Canonicalization Scheme form (JCS, RFC 8785): object members sorted by code
unit, numbers in the ECMAScript <spanx style="verb">Number::toString</spanx> form, no insignificant
whitespace.  The original key order, number spelling and spacing are
<strong>not</strong> preserved — canonicalization replaces them with the deterministic
form (this is what the size cap in step 4 and the material digest are
measured on).  Evaluation never guesses; a lossy re-serialization (e.g. a
map that drops duplicate keys) is not used for decisions.</t>
  <t><strong>Duplicate keys.</strong> A params object with a duplicate JSON key is rejected:
<spanx style="verb">deny("invalid_params_duplicate_key")</spanx>.</t>
  <t><strong>Number shape.</strong> A numeric param is rejected with
<spanx style="verb">deny("invalid_params_number")</spanx> when it is <strong>non-finite or out of IEEE-754
range</strong> (e.g. <spanx style="verb">1e400</spanx>, an exponent beyond the representable maximum — it is
an overflow, not an over-precision case) or <strong>over-precision</strong> (more than 17
significant decimal digits, e.g. <spanx style="verb">1.0000000000000001</spanx>).  The digit count operates on the
<strong>JSON token as received</strong> — the raw digit-character sequence at the input
boundary, before it enters any storage / float / decimal representation —
so float64 and decimal/bignum implementations MUST NOT diverge: the judged
input is always the raw token text (<spanx style="verb">params-*</spanx> number probes in the corpus;
near-limit forms such as <spanx style="verb">1.0000000000000001</spanx> extend the probes without
changing the rule).  <strong>Number identity is the JSON number, not its
spelling.</strong>  Two tokens that denote the same JSON number are one value to
the layers: <spanx style="verb">-0</spanx> and <spanx style="verb">0</spanx> (JCS renders both as <spanx style="verb">0</spanx>), <spanx style="verb">1e3</spanx> and <spanx style="verb">1000</spanx>,
<spanx style="verb">1.5e-3</spanx> and <spanx style="verb">0.0015</spanx>, <spanx style="verb">1.0</spanx> and <spanx style="verb">1e0</spanx>.  The layers compare the
canonicalized number, never the received token text.  <strong>Integer bound
(I-JSON).</strong>  An integer-valued number whose magnitude exceeds 2^53 − 1
(<spanx style="verb">9007199254740991</spanx>) is refused with the same code — fail-closed, never
rounded.  2^53 − 1 is the top of the I-JSON interoperability range
(<xref target="RFC7493"/> Section 2.2): it is the largest integer that both has an exact IEEE-754
binary64 representation and is guaranteed to round-trip, whereas a larger
integer-valued number may be silently rounded to a neighbour
(<spanx style="verb">9007199254740993</spanx> → <spanx style="verb">9007199254740992</spanx>).  The bound is judged on the
<strong>mathematical value</strong> of the received token, independent of its spelling
and of whether the port's carrier could hold it exactly — so
<spanx style="verb">9007199254740992</spanx> (2^53) is refused although binary64 represents it
exactly, and <spanx style="verb">1e100</spanx> is refused although binary64 cannot represent it
exactly: an acceptance rule that turned on binary64 representability would
let the numeric carrier a port happens to use change the verdict.  It is
not judged on digit count (<spanx style="verb">9007199254740993</spanx> has 16 digits, so the
over-precision rule above does not catch it).  <spanx style="verb">param_bounds</spanx> numerics
inherit the bound through Section 6.5's input-normalization clause.  <strong>Non-integer
numbers.</strong>  A non-integer-valued token of at most 17 significant digits is
not reached by the integer bound; it arrives as binary64 through step 1
(IEEE-754 round-to-nearest, ties to even), whose result is deterministic
across implementations.  A port whose carrier holds more precision than
binary64 (a decimal or arbitrary-precision type) MUST compare the value by
that same binary64 value and MUST NOT retain precision binary64 cannot hold
— otherwise the carrier, not the language, would decide.  Malformed params
text that cannot be parsed as an object is refused with the same code (see
step 7).</t>
  <t><strong>Size and depth.</strong> Params whose canonical length exceeds 512 <strong>UTF-8
octets</strong> — measured in octets, never in code points or UTF-16 code units
(rev CLC-1.4) — or whose nesting depth exceeds 32, are rejected:
<spanx style="verb">deny("invalid_params_size")</spanx>.  Nesting depth counts <strong>both</strong> objects and
arrays, with the outermost object as level 1 (31 nested arrays inside the
top-level object therefore = depth 32).</t>
  <t><strong>Order of checks.</strong> Size/depth (4) precede duplicate keys (2), which
precedes number shape (3); the first failing check wins.  All five run
before Section 9.1 layer 1, so normalized params are the only view the layers see.
The size in step 4 is measured with every token in its JCS spelling
(numbers re-spelled per ECMAScript <spanx style="verb">Number::toString</spanx>, strings per JCS
Section 3.2.2.2) but <strong>without</strong> requiring key uniqueness, so it is defined even
when a duplicate key makes full JCS undefined; this is why an over-limit
input that also has a duplicate key reports <spanx style="verb">invalid_params_size</spanx>
(<spanx style="verb">params-025</spanx>/<spanx style="verb">params-026</spanx>).</t>
  <t><strong>Decoded-object path.</strong> A caller that supplies params already decoded
(no <spanx style="verb">raw_params</spanx> text) cannot reproduce the original byte stream; in
that case the size check (4) applies to a <strong>canonical serialization</strong>
(the JCS form of the decoded object: sorted keys, compact), and the
depth check (4) applies to the decoded structure directly.
Byte-exactness against a specific original text is guaranteed only for
the raw path; but <strong>both</strong> entry points MUST reject the caps — an
oversized/deep params object is denied whichever way it arrives.</t>
  <t><strong>Malformed Unicode is a property of the received text.</strong>  A lone surrogate
escape, or an octet that is not valid UTF-8, has no JCS form (Section 3.2.2.2):
step 1 cannot normalize it, so the input is refused.  The refusal reuses
<spanx style="verb">invalid_params_number</spanx> (Section 9.2), whose scope is <strong>"the params input is not
representable in canonical form"</strong> — a numeric param that is non-finite /
over-precision <em>or</em> text that is not well-formed Unicode / not parseable as
a JSON object.  (One stable code, not one per malformation: introducing a
second code would change the reason for inputs already pinned to
<spanx style="verb">invalid_params_number</spanx>, which the additive rule forbids.)  That check is defined over the octets as
received and MUST run <strong>before</strong> any decoding step, because a general-purpose
JSON decoder does not preserve the distinction.  Go's <spanx style="verb">encoding/json</spanx>, for
example, replaces both a lone surrogate escape and an invalid octet with
U+FFFD, so <spanx style="verb">{"s":"\ud800"}</spanx>, <spanx style="verb">{"s":"\ufffd"}</spanx> and a literal invalid octet
arrive at the decision function as the same value — <spanx style="verb">{"s":"\ufffd"}</spanx> — and
the refusal cannot be recovered afterwards.  Therefore:  <list style="symbols">
      <t>the party that receives the input MUST run steps 1-5 on the received text,
not on a re-serialization of a decoded value;</t>
      <t>the entry point that takes the text is the <strong>sole conformance entry
point</strong>: conformance (Section 12) is judged there, and an implementation SHOULD
name the two entry points so a caller cannot mistake one for the other;</t>
      <t>a decoded-value entry point inherits the obligation of the received text:
the decoding that produced the value MUST have been <strong>lossless</strong> — a
decoder that repairs malformed input (replacing an invalid octet or an
unpaired surrogate escape with U+FFFD, as Go's <spanx style="verb">encoding/json</spanx> does) MUST
NOT feed an entry point used for a conformance claim, because the repaired
value can no longer reproduce the refusal the received text requires.  An
implementation whose decoded entry cannot establish that its decoding was
lossless MUST NOT be described as refusing malformed Unicode: its verdict
is defined over the value it was handed, which may already be a repaired
one;</t>
      <t>two parties that must agree on the verdict MUST agree on the received
text, or on a digest of it.</t>
    </list></t>
  <t><strong>Byte-order mark is refused (raw path).</strong>  A leading UTF-8 BOM (<spanx style="verb">EF BB BF</spanx>,
U+FEFF) is not part of a JSON text: <xref target="RFC8259"/> Section 8.1 permits a parser to
ignore it, but this specification MUST NOT — params text that begins with a
BOM is refused with <spanx style="verb">deny("invalid_params_number")</spanx> before parsing.  The
refusal outranks the step-4 caps: a BOM-prefixed text that is also over the
size/depth limit reports <spanx style="verb">invalid_params_number</spanx>, never
<spanx style="verb">invalid_params_size</spanx> (<spanx style="verb">params-062</spanx> pins this precedence).  An
implementation MUST NOT strip U+FEFF as whitespace: ECMAScript classifies it
as <spanx style="verb">WhiteSpace</spanx> (so a JavaScript <spanx style="verb">trim()</spanx> pre-step silently accepts a
BOM-prefixed text that Python's <spanx style="verb">str.strip</spanx> and Go's <spanx style="verb">strings.TrimSpace</spanx>
both refuse) — this rule closes that divergence fail-closed.  A BOM inside
the text is likewise invalid (U+FEFF is not a JSON structural character).</t>
  <t><strong>Host numeric carriers normalize to JSON number semantics.</strong>  A numeric
value that reaches a comparison through a host-language numeric type — an
integer type vs. a float type (<spanx style="verb">int</spanx> vs. <spanx style="verb">float64</spanx>), an arbitrary-precision
or decimal carrier (<spanx style="verb">BigInteger</spanx>, <spanx style="verb">BigDecimal</spanx>, <spanx style="verb">decimal</spanx>) — MUST be
compared under the JSON number semantics of steps 1–3: the same JSON number
yields the same verdict whichever host type carries it.  A numeric carrier
MUST NOT fall out of the numeric branch into a string-shaped fallback
comparison, and a host equality MUST NOT be applied that coerces across
JSON types (Section 6.5 layer 8: <spanx style="verb">true ≠ 1</spanx>, <spanx style="verb">"1" ≠ 1</spanx>).  Where a host offers a
carrier binary64 cannot hold, the step 3 integer bound decides acceptance
before any carrier-specific arithmetic; a value that cannot be compared
losslessly fails closed (<spanx style="verb">invalid_params_number</spanx>) rather than being silently
rounded.  The property is not observable from the JSON corpus alone (every
JSON number decodes to one host type per implementation); it is checked by
representation invariance across the port's own numeric types, and
<spanx style="verb">params-040</spanx>/<spanx style="verb">params-041</spanx> guard the contract at the language level.</t>
</list></t>

</section>
<section anchor="algorithm"><name>Algorithm</name>

<figure><artwork>
Entails(G, O) → bool:
  1. G.namespace ≠ O.namespace → false      (namespace = scheme + action Class, Section 9.1 layer 3)
  2. G.id doesn't cover O.id → false        (path coverage, Section 9.1 layer 4)
  3. G declares no key → true               (both `params` and `param_bounds` absent/empty
                                             → grant unconstrained, absent ≡ empty object)
  4. O.params absent → false                (bounded grant, request omits it → fail-closed,
                                             except a declared key marked `optional`, Section 6.5)
  5. params_subset(O.params, keys(params) ∪ keys(param_bounds), param_bounds)
                                            (compare declared set incl. Section 6.5 bounds, Section 9.1 layers 5–9)
</artwork></figure>

<t>Step 5 is the Section 9.1 layers 5–9 comparison over the grant's <strong>declared key set</strong>
(<spanx style="verb">keys(params) ∪ keys(param_bounds)</spanx>, Section 6.5): <spanx style="verb">params</spanx> values follow Section 6.2 value
subset, and a <spanx style="verb">param_bounds</spanx> key additionally enforces its Bound (inclusive
<spanx style="verb">min</spanx>/<spanx style="verb">max</spanx>, <spanx style="verb">step</spanx>, enum cardinality, <spanx style="verb">optional</spanx>, <spanx style="verb">nested</spanx>).  A grant with no
<spanx style="verb">param_bounds</spanx> reduces step 5 to the <spanx style="verb">params</spanx>-only comparison of earlier
revisions.  Steps 3 and 4 read the declared key set, so a grant whose only
declarations are <spanx style="verb">param_bounds</spanx> is still "bounded" for presence purposes.</t>

<t>When more than one check fails, the reported reason follows the fixed
resolved-reason ordering of Section 9.1.  The remaining rules of this section
are unchanged.</t>

<t><strong>Rule for missing operation params</strong>: If the grant has a params bound
(step 3 does not apply) and the operation has <strong>no <spanx style="verb">params</spanx> field at
all</strong> (not merely a key missing, but the entire field absent), step 4
applies: <spanx style="verb">Entails → false</spanx> → <spanx style="verb">deny("params_missing")</spanx>.  This covers
both "operation omits the entire params object" and "operation omits a
single bounded key" — both fail closed.</t>

<t>If a capability scheme declares a default value for a parameter, the
implementation MUST apply that scheme default to O before step 4; absent
such a declared default, step 4 denies.</t>

<t><strong>Layer 6 (null) resolves before presence.</strong>  If the grant's params carry a
<spanx style="verb">null</spanx> value (or the operation's params do), the failure is
<spanx style="verb">invalid_params_null</spanx> (Section 9.1 layer 6) and is reported even when the
operation omits the <spanx style="verb">params</spanx> field entirely — i.e. layer 6 resolves
<strong>before</strong> step 4's <spanx style="verb">params_missing</spanx>.  This is the fixed Section 9.1 ordering; it
shadows the literal step order of the algorithm above, which lists presence
before the null checks.</t>

</section>
<section anchor="match-evidence-binding"><name>Match (evidence binding)</name>

<t>Evidence E is bound to exact action A if:</t>

<t><list style="numbers" type="1">
  <t>E carries a valid ActionId in the language's projection form (<spanx style="verb">clc-action:1:…</spanx>,
Section 4.3).  A CAID is a different object and relates to it only through a pinned
Action-Mapping Profile.</t>
  <t>E's ActionId equals the recomputed ActionId of the ObservedAction.</t>
  <t>The ActionId was computed under the relying-party-pinned suite and
definition source.</t>
</list></t>

<t>Match is content correlation only.  It does not validate a native
artifact and does not authorize execution.  It also does not identify an
occurrence: correlation to a particular occurrence additionally requires an
occurrence discriminator defined and checked by the consuming profile (CAID-05
Section 4.7), and a profile that uses one MUST pin how it is obtained and that the
language sees it among the declared material fields.</t>

<t>Cross-format mapping (E's native format ≠ A's canonical form) uses an
Action-Mapping Profile: a hash-identified projection pinned by the
relying party, with results EQUIVALENT_UNDER_PROFILE, NOT_EQUIVALENT,
or INDETERMINATE.</t>

</section>
<section anchor="extended-parameter-bounds-parambounds"><name>Extended parameter bounds (<spanx style="verb">param_bounds</spanx>)</name>

<t><spanx style="verb">params</spanx> (Section 6.2) stays exactly as defined: a scalar number is an upper bound, an
array is a membership set, an object recurses per key, and there is no lower
bound, no step, no cardinality bound and no optional-key marker.  This
subsection adds those as a <strong>separate, optional grant field</strong>, <spanx style="verb">param_bounds</spanx>,
so that <strong>no existing <spanx style="verb">params</spanx> input changes meaning</strong>: a grant without
<spanx style="verb">param_bounds</spanx> behaves exactly as before, and every <spanx style="verb">params</spanx> verdict is
unchanged.</t>

<t><strong>Binding rule (one authoritative representation per key).</strong>  A parameter key
MUST be declared in <strong>at most one</strong> of <spanx style="verb">params</spanx> and <spanx style="verb">param_bounds</spanx>.  Declaring
the same key in both is rejected: <spanx style="verb">deny("invalid_params_binding")</spanx>.  The
<strong>declared key set</strong> of a grant is <spanx style="verb">keys(params) ∪ keys(param_bounds)</spanx>; key
closure (Section 9.1 layer 7) and the <spanx style="verb">params:{}</spanx>≡absent rule are read over that set.</t>

<t><strong>Four distinct layers — do not collapse them in a decoder.</strong>  A bare <spanx style="verb">{}</spanx> has
different meaning at each layer, and an implementation must keep them separate
before normalizing:</t>

<t><list style="numbers" type="1">
  <t><strong>Container presence</strong> — <spanx style="verb">"params"</spanx> absent vs <spanx style="verb">"params":{}</spanx>.  Both are
<strong>unconstrained</strong> (no declared keys); <spanx style="verb">{}</spanx> is not "declares nothing and
denies".</t>
  <t><strong>Declaration site</strong> — a key is declared via <spanx style="verb">params</spanx> <strong>or</strong> <spanx style="verb">param_bounds</spanx>
(never both).  The site decides which value algebra applies to the key.</t>
  <t><strong>Value constraint</strong> — inside <spanx style="verb">params</spanx>, an empty value <strong>is</strong> a restriction
(<spanx style="verb">{"tables":[]}</spanx> denies the class; deny-when-declared, Section 6.2); inside
<spanx style="verb">param_bounds</spanx>, an empty Bound <spanx style="verb">{}</spanx> declares the key with <strong>no</strong> value
constraint (it only participates in key closure).  Same <spanx style="verb">{}</spanx>, opposite
reading, because the layer differs.</t>
  <t><strong>Request value</strong> — what <spanx style="verb">O</spanx> supplies (or a materialized default), evaluated
per the key's family at layers 7–9.</t>
</list></t>

<t>A decoder that maps <spanx style="verb">{}</spanx>→"absent" or <spanx style="verb">{}</spanx>→"empty set" uniformly across these
layers will disagree with the language on at least one of them.</t>

<t><strong>Bound grammar (closed).</strong>  <spanx style="verb">param_bounds</spanx> maps a key to a <spanx style="verb">Bound</spanx> object:</t>

<figure><artwork>
Bound = {                          // a closed JSON object, at most one family
  // numeric family
  "min":       &lt;number&gt;,           // inclusive lower bound
  "max":       &lt;number&gt;,           // inclusive upper bound
  "step":      &lt;number &gt; 0&gt;,       // value must be an integer multiple of step
  // enum family
  "enum":      [ &lt;scalar&gt; ],       // allowed values (membership set)
  "min_items": &lt;integer &gt;= 0&gt;,     // request cardinality lower bound
  "max_items": &lt;integer &gt;= 0&gt;,     // request cardinality upper bound
  // nested family
  "nested":    { &lt;key&gt;: Bound },   // recursion for an object-valued key
  // orthogonal to all families
  "optional":  &lt;boolean&gt;           // request MAY omit the key (default false)
}
</artwork></figure>
<t>(Bound is JSON, not ASN.1: the members above are JSON keys and the comments are
notation only.)</t>

<t>Every member is optional and the object is <strong>closed</strong> — a member outside this
set is rejected (<spanx style="verb">invalid_params_binding</spanx>).  A Bound carries <strong>at most one
value family</strong>, plus <spanx style="verb">optional</spanx> which is orthogonal:</t>

<t><list style="symbols">
  <t><strong>numeric family</strong> — any of <spanx style="verb">min</spanx>, <spanx style="verb">max</spanx>, <spanx style="verb">step</spanx>;</t>
  <t><strong>enum family</strong> — <spanx style="verb">enum</spanx>, and/or <spanx style="verb">min_items</spanx>/<spanx style="verb">max_items</spanx>;</t>
  <t><strong>nested family</strong> — <spanx style="verb">nested</spanx>.</t>
</list></t>

<t>Mixing families (e.g. <spanx style="verb">enum</spanx> with <spanx style="verb">max</spanx>, or <spanx style="verb">nested</spanx> with <spanx style="verb">min</spanx>) is rejected
(<spanx style="verb">invalid_params_binding</spanx>).  An <strong>empty</strong> Bound <spanx style="verb">{}</spanx> declares the key with no
value constraint (it still participates in key closure).  <spanx style="verb">min &gt; max</spanx>,
<spanx style="verb">step ≤ 0</spanx>, <spanx style="verb">min_items &gt; max_items</spanx>, or a negative <spanx style="verb">min_items</spanx> are rejected
(<spanx style="verb">invalid_params_binding</spanx>).  The whole <spanx style="verb">param_bounds</spanx> object is subject to the
same input normalization as <spanx style="verb">params</spanx> (Section 6.2): canonical serialization, duplicate
keys, number shape, size (512 octets) and depth (32), checked at layer 2.</t>

<t><strong>Entailment semantics (grant <spanx style="verb">G</spanx> vs operation <spanx style="verb">O</spanx>).</strong></t>

<t><list style="symbols">
  <t><strong>Presence (layer 7).</strong>  A declared key with <spanx style="verb">optional: true</spanx> MAY be absent
from <spanx style="verb">O</spanx>; a declared key with <spanx style="verb">optional</spanx> absent or <spanx style="verb">false</spanx> MUST be present
(<spanx style="verb">params_missing</spanx> otherwise).  An operation key not in the declared key set is
<spanx style="verb">undeclared_param</spanx>.  (Unchanged behavior for grants that declare no
<spanx style="verb">param_bounds</spanx>, where every declared key is required.)</t>
  <t><strong>Enum family (layer 8).</strong>  If <spanx style="verb">enum</spanx> is declared, the request value must be a
member (<spanx style="verb">not_in_enum</spanx>, unchanged rule): a scalar request must equal a member;
an array request must have every element equal to a member.  <spanx style="verb">Equal</spanx> here is
<strong>JSON type-sensitive equality</strong>: two values are equal only when they have the
same JSON type <em>and</em> the same value — <spanx style="verb">true</spanx> equals neither <spanx style="verb">1</spanx> nor <spanx style="verb">0</spanx> (the
Section 6.2 rule that booleans are never numbers applies to set membership as well),
and the string <spanx style="verb">"1"</spanx> equals neither the number <spanx style="verb">1</spanx> nor <spanx style="verb">true</spanx>.  Numbers are
compared after the Section 6.2 canonicalization of the input boundary (one IEEE-754
binary64 value, rendered per ECMAScript <spanx style="verb">Number::toString</spanx> under JCS
<xref target="RFC8785"/>), so <spanx style="verb">1</spanx> and <spanx style="verb">1.0</spanx> — the same value in two spellings — <strong>are</strong>
equal.  The same equality is used by Section 6.2 array membership, by the Section 6.6 enum
intersection, and by Section 13.4.3 enum narrowing; implementations MUST NOT
substitute a host-language equality that coerces across JSON types (e.g. a
 language where <spanx style="verb">true == 1</spanx>).  The host's numeric carrier MUST likewise not
decide the comparison branch (Section 6.2 step 9): every numeric carrier — integer,
float, decimal, arbitrary-precision — compares under JSON number semantics.  If <spanx style="verb">min_items</spanx> / <spanx style="verb">max_items</spanx> are declared,
 the <strong>request cardinality</strong> (an array's length; a
 scalar counts as 1) must satisfy <spanx style="verb">min_items ≤ n ≤ max_items</spanx>, else
 <spanx style="verb">params_cardinality</spanx>.</t>
  <t><strong>Numeric family (layer 9).</strong>  <spanx style="verb">min</spanx>/<spanx style="verb">max</spanx> are <strong>inclusive</strong>: a numeric
request value must satisfy <spanx style="verb">min ≤ v ≤ max</spanx> (each bound, when declared), else
<spanx style="verb">params_out_of_range</spanx>.  <spanx style="verb">step</spanx> requires the request value to be an integer
multiple of <spanx style="verb">step</spanx>, evaluated in IEEE-754 binary64 as
<spanx style="verb">let q = v / step in q == floor(q) &amp;&amp; q * step == v</spanx> (deterministic across
implementations, since both operands arrive at the boundary as binary64), else
<spanx style="verb">params_not_multiple</spanx>.  A numeric-family bound applied to a non-number
request value is fail-closed (<spanx style="verb">params_exceed_grant</spanx>).</t>
  <t><strong>Nested family (layer 8/9).</strong>  <spanx style="verb">nested</spanx> recurses the value comparison on an
object-valued request key with the same rules, including symmetric key closure
and <spanx style="verb">optional</spanx> at each depth.  A <spanx style="verb">nested</spanx> bound applied to a non-object
request value is fail-closed (<spanx style="verb">params_exceed_grant</spanx>).</t>
</list></t>

<t><strong>Scheme defaults.</strong>  A capability scheme (Section 3 scheme grammar; <spanx style="verb">data/std/...</spanx>) MAY
declare <spanx style="verb">param_defaults</spanx>, a map from a parameter key to its <strong>default value</strong>.
The consumer obligation of Section 6.3 is thereby made concrete: before evaluating
<spanx style="verb">Entails(G, O)</spanx>, an implementation MUST materialize, for every key <spanx style="verb">O</spanx> omits that
the scheme declares a default for, that default into <spanx style="verb">O</spanx>'s params; precedence is
<strong>explicit operation value &gt; scheme default &gt; absent</strong>.  A default is applied
only when it is needed to satisfy a grant-declared key; it never adds a key the
grant does not declare (the key-closure check is unchanged).</t>

<t><strong><spanx style="verb">optional</spanx> closes the default interaction (no recursion).</strong>  The presence of
the key is decided <strong>first</strong>, by the grant's <spanx style="verb">optional</spanx> marker, and only then is
a default consulted — so there is no "is the default needed?" loop:</t>

<t><list style="symbols">
  <t>a <strong>required</strong> declared key (no <spanx style="verb">optional</spanx>/<spanx style="verb">optional:false</spanx>) that <spanx style="verb">O</spanx> omits:
materialize <spanx style="verb">param_defaults[key]</spanx> if the scheme declares one (the key is then
present with that value), else <spanx style="verb">deny("params_missing")</spanx>;</t>
  <t>an <strong><spanx style="verb">optional:true</spanx></strong> declared key that <spanx style="verb">O</spanx> omits: the default is <strong>not</strong>
materialized — <spanx style="verb">optional</spanx> is the explicit "may be absent" marker and wins over
the default, so the key is simply absent (and satisfies presence);</t>
  <t>either way, an explicitly supplied <spanx style="verb">O</spanx> value wins over the default.</t>
</list></t>

<t>Defaults are <strong>scheme configuration, not language semantics</strong>: the relation
itself takes no scheme argument, and two consumers that load the same scheme
reach the same verdict (a deployment that omits the scheme's defaults is a
different input, and the difference is attributable to the input, not to
<spanx style="verb">Entails</spanx>).  In the containment relation a default is resolved <strong>before</strong> the
grants are compared (Section 13.8.1 obligation 1), so containment compares resolved
declared sets.  A <spanx style="verb">param_defaults</spanx> entry is <strong>not</strong> part of a grant's declared
set and does <strong>not</strong> enter the containment lattice: <spanx style="verb">Contains</spanx> narrows over
<spanx style="verb">keys(params) ∪ keys(param_bounds)</spanx> and the <spanx style="verb">optional</spanx> markers alone, so a
parent's default never widens or inverts the <spanx style="verb">optional</spanx>→required narrowing
direction (Section 13.4.3).</t>

<t><strong>Containment (Section 13).</strong>  Section 13.4.3 narrows a child grant against its parent using
this grammar: a <spanx style="verb">param_bounds</spanx> bound of the child must be within the parent's
bound for the same key (numeric <spanx style="verb">min</spanx> raised or equal, <spanx style="verb">max</spanx> lowered or equal,
<spanx style="verb">step</spanx> refined to an integer multiple, <spanx style="verb">enum</spanx> a subset, cardinality bounds
tightened, <spanx style="verb">optional</spanx> not widened from required to optional, <spanx style="verb">nested</spanx> recursed).
A parameter declared in one of <spanx style="verb">params</spanx>/<spanx style="verb">param_bounds</spanx> and not the other is a
key-set difference and fails key closure (<spanx style="verb">params_not_narrower</spanx>).</t>

</section>
<section anchor="intersection-of-bounds-boundmeet"><name>Intersection of bounds (<spanx style="verb">BoundMeet</spanx>)</name>

<t><spanx style="verb">Intersect</spanx> (Section 7) combines the <spanx style="verb">param_bounds</spanx> of its sources with a <strong>meet</strong>,
over the same "value → authorization set" denotation Section 7 uses for <spanx style="verb">params</spanx>.  The
families are those of Section 6.5; the meet is defined per key declared in
<spanx style="verb">param_bounds</spanx> by two or more sources.</t>

<t><list style="symbols">
  <t><strong><spanx style="verb">optional</spanx></strong> is orthogonal and combines by <strong>conjunction</strong>: the result key is
optional only if every source marks it optional (<spanx style="verb">optional := AND</spanx>); a key
required by any source stays required.</t>
  <t><strong>numeric family</strong> (<spanx style="verb">min</spanx>/<spanx style="verb">max</spanx>/<spanx style="verb">step</spanx>): <spanx style="verb">min</spanx> is the <strong>greatest</strong> declared
minimum, <spanx style="verb">max</spanx> the <strong>least</strong> declared maximum (undeclared means unbounded).
<spanx style="verb">step</spanx>: if both declare one and one is an exact multiple of the other (the
Section 6.5 multiple predicate), the meet's <spanx style="verb">step</spanx> is the <strong>coarser</strong> (larger) of the
two — the coarser grid is a subset of the finer, so it is the meet.  If
neither declared step is an exact integer multiple of the other, the meet
<strong>fails closed</strong> (<spanx style="verb">invalid_params_binding</spanx>).  The two grids may still share
values — the common grid of <spanx style="verb">step:5</spanx> and <spanx style="verb">step:7</spanx> is the set of multiples of
35, so the intersection is not empty — but the meet's <spanx style="verb">step</spanx> must be one of
the two <strong>declared</strong> steps: neither 5 nor 7 is an integer multiple of the
other, so neither declared grid is a subset of the other, and the language
does not synthesize an undeclared grid (such as the least common multiple) —
no single <spanx style="verb">step</spanx> member of the two Bounds denotes both grids.  One declared
<spanx style="verb">step</spanx> is carried through.  <spanx style="verb">min &gt; max</spanx> after combining → the meet is
<strong>empty</strong> → <spanx style="verb">no_overlap</spanx>.</t>
  <t><strong>enum family</strong> (<spanx style="verb">enum</spanx>/<spanx style="verb">min_items</spanx>/<spanx style="verb">max_items</spanx>): the <spanx style="verb">enum</spanx> member sets
intersect (exact equality — the JSON type-sensitive equality Section 6.5 layer 8
defines, so <spanx style="verb">1</spanx>, <spanx style="verb">true</spanx> and <spanx style="verb">"1"</spanx> are three distinct members); if both
sources declare <spanx style="verb">enum</spanx> and the intersection is empty → <spanx style="verb">no_overlap</spanx>;
<spanx style="verb">min_items</spanx> is the <strong>greatest</strong> declared value, <spanx style="verb">max_items</spanx> the <strong>least</strong>;
<spanx style="verb">max_items &lt; min_items</spanx> → <spanx style="verb">no_overlap</spanx>.</t>
  <t><strong>nested family</strong> (<spanx style="verb">nested</spanx>): the two objects MUST have the <strong>same key set</strong>,
else <spanx style="verb">no_overlap</spanx> (exactly as object-valued <spanx style="verb">params</spanx>, Section 7); the result recurses
<spanx style="verb">BoundMeet</spanx> per key, with <spanx style="verb">optional</spanx> combining as above at every depth.</t>
  <t><strong>numeric ∩ enum (either source order)</strong>: <strong>refused — fails closed</strong>
(<spanx style="verb">invalid_params_binding</spanx>).  A sound meet would have to carry both the
numeric side's shape constraint (<spanx style="verb">min</spanx>/<spanx style="verb">max</spanx>/<spanx style="verb">step</spanx>, which Section 6.5 layer 9
applies to numeric scalar request values only) and the enum side's member
set (which Section 6.5 layer 8 applies to scalars <strong>and</strong> to arrays whose elements
are all members) in one Bound — two families, which the closed Section 6.5 grammar
deliberately does not express.  Filtering the member list by the numeric
bound (the rev CLC-1.14 rule, removed here) was <strong>broader than either
source</strong>: for numeric <spanx style="verb">{min:2,max:4}</spanx> ∩ enum <spanx style="verb">{enum:[1,3,5]}</spanx> the filtered
result <spanx style="verb">enum{3}</spanx> accepts the array <spanx style="verb">[3]</spanx> (Section 6.5 layer 8: every element is a
member), while the numeric source fail-closes that same request (Section 6.5 layer
9: a numeric-family bound applied to a non-number request value is
<spanx style="verb">params_exceed_grant</spanx>).  Refusing the whole combination agrees with the rest
of the language: Section 6.5 rejects <em>declaring</em> two families in one Bound
("Mixing families … is rejected (<spanx style="verb">invalid_params_binding</spanx>)"), and Section 13.4.3
rejects <em>narrowing</em> into a family the other side does not declare ("a child
Bound that <strong>adds a family the parent does not declare</strong> … is
<spanx style="verb">params_not_narrower</spanx>").  The refusal covers every numeric × enum pair —
with or without a member list on the enum side (a cardinality-only enum is
the same cross-family clash), and regardless of whether any member happens
to fall inside the numeric range: the family clash is decided <strong>before</strong> any
member or range math, and it is symmetric in the two sources.</t>
  <t><strong>scalar ∩ nested</strong> (numeric or enum vs. <spanx style="verb">nested</spanx>), in either order: a
cross-family meet, refused with <spanx style="verb">invalid_params_binding</spanx> <strong>before</strong> any
value math — no single-family Bound can carry both a scalar shape (a value
presence) and the object recursion; the refusal is symmetric in the sources
and holds regardless of the nested side's contents, exactly like the
numeric × enum case (design-notes D12).  A CLC-1.14 draft read this pair as
an empty meet (<spanx style="verb">no_overlap</spanx>, since no request value is both a scalar and an
object); rev CLC-1.15 adjudicates it to the unrepresentable-meet code so
that the empty-meet code stays reserved for genuinely empty meets <em>within
one value family</em>.</t>
  <t><strong>empty Bound</strong> <spanx style="verb">{}</spanx> is the identity for the value families (<spanx style="verb">{} ∩ X = X</spanx>);
its <spanx style="verb">optional</spanx> still participates.</t>
</list></t>

<t>The result always carries <strong>at most one</strong> value family, so it is a valid Section 6.5
Bound.  All failure modes are the Section 9.2 codes already associated with <spanx style="verb">Intersect</spanx>
(<spanx style="verb">no_overlap</spanx> for an empty meet <em>within one value family</em>, such as <spanx style="verb">min &gt; max</spanx>
or disjoint enums; <spanx style="verb">invalid_params_binding</spanx> for an unrepresentable one — every
cross-family pair in either order, including scalar ∩ nested, and
incommensurable step grids); no new reason code is introduced.</t>

<t><strong>Declared domains meet here too.</strong>  Where a scheme declaration (Section 6.7) names a
domain for a key, two values of the <strong>same</strong> declared domain meet per that
domain's rule in Section 6.7 (<spanx style="verb">quantity</spanx>: the narrower normalized bound, same unit,
<spanx style="verb">unit_mismatch</spanx> otherwise); a pair of <strong>different</strong> declared domains is a
cross-family pair and refuses with <spanx style="verb">invalid_params_binding</spanx>, exactly as the
scalar × enum and scalar × nested pairs above.</t>

<t><strong>Key site.</strong>  A key's <strong>declaration site</strong> (<spanx style="verb">params</spanx> vs <spanx style="verb">param_bounds</spanx>) must
agree across the sources of one <spanx style="verb">Intersect</spanx>.  A key declared in <spanx style="verb">params</spanx> by one
source and in <spanx style="verb">param_bounds</spanx> by another is refused (<spanx style="verb">invalid_params_binding</spanx>).
This can only arise for independent authority sources, never for a delegation
chain: Section 13.4.3 already requires the sites to match at every hop (a site
difference is a key-set difference).  A key that no source declares in
<spanx style="verb">param_bounds</spanx> stays in <spanx style="verb">params</spanx> and follows the Section 7 <spanx style="verb">params</spanx> meet unchanged.</t>

</section>
<section anchor="scheme-declaration-normative"><name>Scheme Declaration (normative)</name>

<t>A <strong>scheme declaration</strong> states, for one scheme, the <strong>domain</strong> of each
parameter.  It is an input to evaluation, pinned by the carrier or the relying
party; the core never fetches it (P9).  The artifact's grammar is
<spanx style="verb">CLC-SCHEME-v1</spanx> (schema: <spanx style="verb">scheme-declaration.schema.json</spanx>); this subsection
fixes what CLC does with it.</t>

<t><strong>Why it exists.</strong>  Without a declaration the domain is inferred from the
value's shape — number → bound, array → enum, scalar → exact (P4).  That
inference cannot express a quantity, a decimal string compared in its value
space, a subdomain, or a path prefix.  A declaration states the domain instead
of leaving it to the shape.  It adds <strong>no grammar</strong>: <spanx style="verb">params</spanx> and <spanx style="verb">param_bounds</spanx>
are unchanged, and a parameter it does not name keeps the inferred domain, so
every existing grant keeps its meaning.</t>

<t><strong>Domains.</strong>  In addition to <spanx style="verb">bound</spanx>, <spanx style="verb">enum</spanx> and <spanx style="verb">exact</spanx>, this revision defines
four domains.  Each is a type, not syntax (Section 6 extension rule), so none of them
adds a wildcard shape or an operator:</t>

<texttable>
      <ttcol align="left">Domain</ttcol>
      <ttcol align="left">Value</ttcol>
      <ttcol align="left">Comparison</ttcol>
      <ttcol align="left">Containment (Section 13.4.3)</ttcol>
      <c><spanx style="verb">quantity</spanx></c>
      <c><spanx style="verb">{"value": &lt;number&gt;, "unit": &lt;string&gt;, "scale"?: &lt;integer&gt;}</spanx></c>
      <c>the unit MUST equal the declaration's <spanx style="verb">unit</spanx> (no conversion, <spanx style="verb">unit_mismatch</spanx> otherwise); <spanx style="verb">value × 10^-scale</spanx> ≤ the granted bound</c>
      <c>same unit; child ≤ parent</c>
      <c><spanx style="verb">decimal-string</spanx></c>
      <c>a decimal literal matching <spanx style="verb">^[+-]?[0-9]+(\.[0-9]+)?([eE][+-]?[0-9]+)?$</spanx> — no surrounding whitespace, no underscores, no <spanx style="verb">NaN</spanx>/<spanx style="verb">Infinity</spanx>, no <spanx style="verb">.5</spanx> or <spanx style="verb">500.</spanx></c>
      <c>value-space comparison (<spanx style="verb">"500"</spanx> ≡ <spanx style="verb">"500.00"</spanx>, <spanx style="verb">"1e3"</spanx> ≡ <spanx style="verb">"1000"</spanx>, <spanx style="verb">"007"</spanx> ≡ <spanx style="verb">"7"</spanx>)</c>
      <c>child ≤ parent</c>
      <c><spanx style="verb">subdomain</spanx></c>
      <c>a DNS name — no surrounding or embedded whitespace, one optional trailing dot</c>
      <c>whole-label suffix, case-insensitive</c>
      <c>child is the parent or below it</c>
      <c><spanx style="verb">path-prefix</spanx></c>
      <c>a path</c>
      <c>segment-boundary prefix (<spanx style="verb">/a/b</spanx> does not cover <spanx style="verb">/a/bc</spanx>)</c>
      <c>child is the parent or below it</c>
</texttable>

<t><strong>Resolution order.</strong>  Declaration validation (member closure, digest match,
known domains) resolves before Section 9.1 layer 1 together with the Section 12.1 revision
check.  A malformed declaration, a digest mismatch, or a domain the
implementation does not support is refused with <spanx style="verb">unsupported_domain</spanx>; a
declaration that requires a later language revision is refused through the
minor gate.</t>

<t>An implementation MAY validate a declaration when it loads it, and the
reference engine does; the evaluation path still refuses an unsupported domain
on its own, so a caller that supplies a declaration through an API without that
pre-validation cannot bypass the rule.</t>

<t><strong>Evaluation rules.</strong></t>

<t><list style="symbols">
  <t>Authorization uses the declared domain's comparison (Section 6.3); a value whose
shape does not match the domain is <spanx style="verb">invalid_params_binding</spanx>.</t>
  <t>A parameter with a declared domain MUST be declared in <spanx style="verb">params</spanx>, not in
<spanx style="verb">param_bounds</spanx>: the domain has its own comparison rule, and a <spanx style="verb">param_bounds</spanx>
family on the same key would be a second, unspecified one.  A
<spanx style="verb">param_bounds</spanx> entry on a declared-domain key is <spanx style="verb">invalid_params_binding</spanx>.</t>
  <t><spanx style="verb">Contains</spanx> compares child against parent under the <strong>parent's</strong> declared
domain.  If the two sides declare different domains for the same key, the
pair is not comparable and the result is <spanx style="verb">params_not_narrower</spanx>.</t>
  <t><spanx style="verb">BoundMeet</spanx> (Section 6.6) meets two values of the same declared domain per that
domain's rule (for <spanx style="verb">quantity</spanx>, the narrower bound with the same unit; a
different unit is <spanx style="verb">unit_mismatch</spanx>), and refuses a cross-domain pair with
<spanx style="verb">invalid_params_binding</spanx>, exactly as CLC-1.15 does for cross-family meets.</t>
  <t>A declaration MUST NOT name a parameter the scheme's capability does not
define, and MUST NOT name a domain outside the set this revision defines.</t>
</list></t>

</section>
</section>
<section anchor="intersection-"><name>Intersection (∩)</name>

<t>P_effective = P_principal ∩ C_agent ∩ P_gateway.</t>

<t>Rules:</t>

<t><list style="numbers" type="1">
  <t>Each source provides a grant set.</t>
  <t>Effective grant MUST be covered by at least one grant from every source.</t>
  <t>Same-capability constraints merged by <strong>union</strong>: every source's constraint
strings are kept (constraints are conjunctive — each is independently
checked, so a tighter bound of the same type binds by construction).  The
merge is a set union of normalized constraint strings, <strong>not</strong> a meet that
discards a looser one; dropping a source's constraint would drop its
restriction.</t>
  <t>Any source missing a capability → capability absent from effective set.</t>
  <t><strong>Zero or absent sources fail closed.</strong> An intersection over <strong>no</strong>
sources at all — an empty source list, or every source absent — has no
effective set: <spanx style="verb">deny("absent_source")</spanx>.  (A source that <em>exists</em> but
carries no grant for the capability is rule 4, not rule 5.)</t>
  <t><strong>Empty params declares no constraint.</strong> A source whose grant has a
present-but-empty <spanx style="verb">params</spanx> object contributes no restriction.  The
accumulated bound is preserved: bounded-then-empty and empty-then-bounded
must give the same result — source order MUST NOT change the outcome
(consistent with direct-grant <spanx style="verb">params:{} ≡ absent</spanx>, Section 6.3 step 3).</t>
</list></t>

<t><strong>Identifier comparison is params-free (rule 2).</strong>  The effective identifier
is the <strong>narrowest</strong> one covered by every source, chosen by the Section 6.1
identifier rules alone.  It MUST NOT be resolved by routing grants through
<spanx style="verb">Entails</spanx> with params — a bounded grant faced with a params-less sibling
would trigger presence handling (Section 6.3 step 4) and wrongly fail this
open; the identifier is compared, params merge separately (rule 3).</t>

<t><strong>Property: composition narrows only.</strong>  If <spanx style="verb">Intersect</spanx> succeeds, the
result MUST be covered by every source and MUST NOT depend on the order
of the sources; otherwise it MUST deny with a normative reason code and
MUST never raise.  This meet-law is what the Section 6.2 param-subset algebra
preserves across sources; it is pinned by <spanx style="verb">property-cases.json</spanx> (1184
cases, Section 12).</t>

<t><strong>Notation in this section</strong>: params are JSON objects (e.g.
 <spanx style="verb">{"tables":["a"]}</spanx>); constraints use colon-notation triples (e.g.
 <spanx style="verb">varwof/constraint-v1:time:window:[{"start":"00:00","end":"01:00"}]</spanx>).  The example tables below use
compact shorthand for readability; each row shows the relevant params or
constraints only.</t>

<t><strong>Deny-when-declared</strong>: <spanx style="verb">{"tables":[]}</spanx> (explicitly empty) = deny the class.
Omitted = scheme default.  A <spanx style="verb">null</spanx> value is invalid in v1 → reject
(<spanx style="verb">invalid_params_null</spanx>).  Canonicalization MUST NOT broaden (segment-boundary
comparison, not lexical prefix).</t>

<texttable>
      <ttcol align="left">Source A</ttcol>
      <ttcol align="left">Source B</ttcol>
      <ttcol align="left">Result</ttcol>
      <c><spanx style="verb">{"tables":["a","b"]}</spanx></c>
      <c><spanx style="verb">{"tables":["a"]}</spanx></c>
      <c><spanx style="verb">{"tables":["a"]}</spanx> (holds)</c>
      <c><spanx style="verb">{"tables":["a"]}</spanx></c>
      <c><spanx style="verb">{"tables":[]}</spanx></c>
      <c>deny</c>
      <c>(unconstrained)</c>
      <c>(no grant)</c>
      <c>deny</c>
      <c><spanx style="verb">{"limit":100}</spanx></c>
      <c><spanx style="verb">{"limit":50}</spanx></c>
      <c><spanx style="verb">{"limit":50}</spanx> (holds)</c>
      <c>(unconstrained)</c>
      <c>constraint <spanx style="verb">time:window:[{"start":"00:00","end":"01:00"}]</spanx></c>
      <c>recognized, not evaluated by core (→ <spanx style="verb">allow_unresolved</spanx> + <spanx style="verb">unresolved</spanx>)</c>
      <c><spanx style="verb">{"tables":["a"]}</spanx></c>
      <c><spanx style="verb">{"tables":["b"]}</spanx></c>
      <c>deny</c>
</texttable>

<t><strong>The meet is over authorization sets, not JSON values.</strong>  Neither <spanx style="verb">Intersect</spanx>
nor Section 6.2 compares JSON values directly; each value denotes an <strong>authorization
set</strong> and the meet is set intersection on that denotation.  A number denotes
<spanx style="verb">(-∞, v]</spanx> (an upper bound), an array denotes a membership set, a string/boolean
denotes the singleton <spanx style="verb">{v}</spanx>, and an object denotes the product of its keys'
denotations.  So <spanx style="verb">{"a":1}</spanx> is not the set <spanx style="verb">{1}</spanx> but <spanx style="verb">(-∞,1]</spanx>, and
<spanx style="verb">{"a":1} ∩ {"a":2} = (-∞,1] = {"a":1}</spanx> — a minimum, not an empty set.  A meet is
<strong>empty</strong> (→ <spanx style="verb">deny("no_overlap")</spanx>) only when the denotations are genuinely
disjoint: two enum sets with no common member (a numeric <spanx style="verb">params</spanx> meet is always
a minimum, since <spanx style="verb">params</spanx> has no lower bound), or divergent key sets (next
paragraph).</t>

<t><strong>Object-value intersection requires identical key sets.</strong>  Two object
values intersect key-by-key only when their key sets are the same; object
values with different key sets → <spanx style="verb">no_overlap</spanx> deny.  Merging "shared keys"
would drop the keys the other source constrains, so the result would not be
covered by that source (P11 composition narrows only): <spanx style="verb">{"a":1}</spanx> ∩ <spanx style="verb">{"b":1}</spanx>
→ deny(<spanx style="verb">no_overlap</spanx>).  When the key sets <strong>are</strong> the same the values recurse
under the Section 6.2 rules, so a numeric leaf intersects to its <strong>minimum</strong>
(<spanx style="verb">{"a":1}</spanx> ∩ <spanx style="verb">{"a":2}</spanx> → <spanx style="verb">{"a":1}</spanx>, not a deny — matching the <spanx style="verb">{"limit":100}</spanx>
∩ <spanx style="verb">{"limit":50}</spanx> row above), and <spanx style="verb">{"a":1}</spanx> ∩ <spanx style="verb">{"a":1}</spanx> → <spanx style="verb">{"a":1}</spanx>.</t>

<t><strong><spanx style="verb">param_bounds</spanx> merges by a defined meet.</strong>  <spanx style="verb">Intersect</spanx> combines each key
declared in <spanx style="verb">param_bounds</spanx> with the meet of Section 6.6: numeric <spanx style="verb">min</spanx>/<spanx style="verb">max</spanx>/<spanx style="verb">step</spanx>,
enum member intersection and cardinality, and <spanx style="verb">nested</spanx> recursion, with
<spanx style="verb">optional</spanx> combined by conjunction.  An empty meet is <spanx style="verb">no_overlap</spanx>; an
unrepresentable one is <spanx style="verb">invalid_params_binding</spanx> — any cross-family pair in
either order (numeric × enum, including a cardinality-only enum and
regardless of whether any member falls inside the numeric range; and scalar ×
<spanx style="verb">nested</spanx>), or two step grids where neither declared step is an exact integer
multiple of the other (Section 6.6).  A key declared in <spanx style="verb">params</spanx> by one source and
<spanx style="verb">param_bounds</spanx> by another is refused (<spanx style="verb">invalid_params_binding</spanx>, Section 6.6 "Key
site").  The Section 7.1
<spanx style="verb">ConstraintUnion</spanx> projection is separate and unaffected.</t>

<section anchor="constraintunion-derived-projection"><name>ConstraintUnion (derived projection)</name>

<t>A consumer that has established a delegation chain often needs the chain's
<strong>whole constraint burden</strong> without computing an effective grant.  That is
exactly the constraint projection of chained <spanx style="verb">Intersect</spanx> (rule 3), exposed as
a named function:</t>

<figure><artwork>
ConstraintUnion(chain) → string[]        // chain = ordered Grant[]
</artwork></figure>

<t>It returns the <strong>normalized union</strong> of every constraint string carried by the
grants in <spanx style="verb">chain</spanx> — duplicates folded, result deterministically ordered.
"Lexically sorted" is pinned to <strong>UTF-8 byte order</strong>: the normalized strings
are compared octet by octet over their UTF-8 encodings.  For well-formed
Unicode text this equals code-point order, and it is identical in every
implementation whatever the host language's native string representation is —
notably it is <strong>not</strong> UTF-16 code-unit order, which places supplementary-plane
characters (encoded as surrogate pairs, first unit <spanx style="verb">U+D800</spanx>–<spanx style="verb">U+DBFF</spanx>) before
characters in <spanx style="verb">U+E000</spanx>–<spanx style="verb">U+FFFF</spanx>, so an emoji would sort before a
private-use-area character although its code point is higher.  This collation
sits <em>after</em> Section 6.2 canonicalization, not instead of it: JCS <xref target="RFC8785"/> Section 3.2.3's
UTF-16 code-unit order governs object <strong>member</strong> order inside a canonical
serialization, while this section's UTF-8 byte order governs the emitted
constraint-string <strong>list</strong>; the two artefacts keep their own pinned collations
and neither re-orders the other.  The union is the same normalization
<spanx style="verb">Intersect</spanx> applies, so the two never disagree.  The residual-obligation list
of Section 8.4 (and the ordered <spanx style="verb">Resolve</spanx> output of Section 8.5) re-uses this same collation;
the collation is defined here once, not restated there.</t>

<t><spanx style="verb">ConstraintUnion</spanx> is a <strong>projection, not a meet</strong>: it does not compare
identifiers or parameters, does not read or validate constraint values, and
does not check containment.  It asserts nothing about authority; the chain's
per-hop <spanx style="verb">Contains</spanx> check (Section 13) and the operation's <spanx style="verb">Authorize</spanx>/<spanx style="verb">Resolve</spanx>
(Section 9, Section 8.5) remain separate steps.  Because it is not an effective-set
computation, it carries no membership semantics of its own — an <strong>empty
<spanx style="verb">chain</spanx> fails closed</strong> with <spanx style="verb">absent_source</spanx> (the same refusal <spanx style="verb">Intersect</spanx>
gives over zero sources, Section 7 rule 5), so a caller that lost the chain cannot
mistake "nothing to union" for "no constraints".</t>

<t>This function is why <spanx style="verb">Contains</spanx> stays pure (Section 13.4.4): containment answers
"is the child's declared boundary inside the parent's?", and the union
answers "what does the chain collectively require?".  Folding the union into
<spanx style="verb">Contains</spanx> would make the relation no longer a subset on the declared tuple
and would let a null constraint check hide a broken boundary.</t>

</section>
</section>
<section anchor="constraint"><name>Constraint</name>

<t>Constraints are shared between authorization and evidence sides.</t>

<section anchor="authorization-side-constraints"><name>Authorization-side constraints</name>

<t>Limit how a capability may be used.  Constraints use colon-notation
triples: <spanx style="verb">scheme:type[:params]</spanx>, where <strong><spanx style="verb">type</spanx> is the second
<spanx style="verb">:</spanx>-delimited segment</strong> (<spanx style="verb">scheme</spanx> <spanx style="verb">:</spanx> <spanx style="verb">type</spanx>, optionally followed by <spanx style="verb">:</spanx> and <spanx style="verb">params</spanx>):</t>

<t><list style="symbols">
  <t><spanx style="verb">varwof/constraint-v1:max_rows:100</spanx> — type <spanx style="verb">max_rows</spanx>, param <spanx style="verb">100</spanx></t>
  <t><spanx style="verb">varwof/constraint-v1:time:window:[{"start":"00:00","end":"01:00"}]</spanx>
— type <spanx style="verb">time</spanx>, param <spanx style="verb">window:</spanx> array of UTC window segments (a single
window = a one-element array).  A scalar form (<spanx style="verb">time:window:3600</spanx>, the
sliding-duration/freshness concept) is not a legal <spanx style="verb">time:window</spanx> value in
v1 → <spanx style="verb">invalid_constraint</spanx>.</t>
  <t><spanx style="verb">varwof/constraint-v1:network:cidr:["10.0.0.0/8"]</spanx> — type <spanx style="verb">network</spanx>, param
<spanx style="verb">cidr:</spanx> JSON array (≤ 32 elements, each a legal IPv4/IPv6 CIDR string)</t>
</list></t>

<t>v1 core <strong>recognizes constraints by <spanx style="verb">(scheme, type)</spanx> pair</strong>, not by type
name alone: the identity of a constraint is <strong>two</strong> things — the declaring
scheme and the type.  The core recognizes exactly these pairs:</t>

<figure><artwork>
varwof/constraint-v1 : max_rows
varwof/constraint-v1 : time
varwof/constraint-v1 : network
</artwork></figure>

<t>Any other <spanx style="verb">(scheme, type)</spanx> — including <spanx style="verb">foo/database-v1:max_rows</spanx> — is
<strong>not</strong> core-recognized: it is rejected as <spanx style="verb">unknown_constraint</spanx> (fail-closed),
never handed to a core evaluator.  This kills cross-scheme semantic
pollution: the type name alone never selects an evaluator, so a scheme
that defines its own <spanx style="verb">max_rows</spanx> cannot have its semantics hijacked by
Core's <spanx style="verb">max_rows</spanx> evaluator (§P7 define once, consume everywhere — scoped
per declaring scheme).  Scheme-defined constraint types belong to the
v2 / profile layer (evaluated by the declaring scheme); core's
non-recognition of them is fail-closed (<spanx style="verb">unknown_constraint</spanx>).</t>

<t>A recognized constraint MUST also conform to that type's <strong>value grammar</strong>
(table below); a recognized type with a non-conforming value is rejected
as <spanx style="verb">invalid_constraint</spanx> — never silently skipped, never passed through.
Intersection itself neither evaluates nor validates constraint values (it
only merges constraint strings; the Section 8.1 value grammar is enforced at the
decision boundary, Section 9, and in the constraint merge rules below).</t>

<t>The core defines an evaluator for <spanx style="verb">max_rows</spanx> only; evaluation of
<spanx style="verb">time</spanx>/<spanx style="verb">network</spanx> bounds is the declaring capability scheme's
responsibility (the scheme evaluates, the core owns only what the Section 8.1
value grammar <em>is</em>, not whether a moment/address currently hits it; Section 11).
A recognized-but-unevaluated constraint is carried
on the decision's additive <spanx style="verb">unresolved</spanx> field — never silently dropped
(Section 8.4).  A non-recognized <spanx style="verb">(scheme,type)</spanx> → <spanx style="verb">deny("unknown_constraint")</spanx>
(fail-closed).</t>

<t><strong><spanx style="verb">max_rows</spanx> meets the Section 6.2 key closure.</strong>  The operand of the <spanx style="verb">max_rows</spanx>
constraint is the operation's <spanx style="verb">max_rows</spanx> parameter, read from the same params
object layer-7 key closure governs.  The parameter is <strong>not</strong> exempt from
closure: an operation carrying <spanx style="verb">max_rows</spanx> against a grant that declares other
params without declaring <spanx style="verb">max_rows</spanx> fails with <spanx style="verb">undeclared_param: max_rows</spanx>
before the constraint is consulted, and an operation omitting the parameter
under a <spanx style="verb">max_rows</spanx> constraint fails closed with <spanx style="verb">max_rows:violated</spanx> (table
below; Appendix B D21).  A grant that therefore declares any params <strong>and</strong>
carries a <spanx style="verb">max_rows</spanx> constraint MUST declare <spanx style="verb">max_rows</spanx> among its
<spanx style="verb">params</spanx>/<spanx style="verb">param_bounds</spanx> keys — the bound is written into both places at once
(the constraint carries the enforced value, the declaration satisfies the
closure), and the two checks apply conjunctively.  Only an unconstrained grant
(no <spanx style="verb">params</spanx>, or <spanx style="verb">params:{}</spanx>) can carry the constraint alone.  A <spanx style="verb">max_rows</spanx>
constraint value whose integer magnitude exceeds the Section 6.2 step 3 integer bound
(2^53 − 1) is out of grammar → <spanx style="verb">invalid_constraint</spanx> (the same fail-closed
bound; no silent binary64 rounding).</t>

<texttable>
      <ttcol align="left">type</ttcol>
      <ttcol align="left">value grammar (v1)</ttcol>
      <ttcol align="left">core behavior</ttcol>
      <c><spanx style="verb">max_rows</spanx></c>
      <c>strict non-negative integer (JSON number grammar: no leading <spanx style="verb">+</spanx>, no <spanx style="verb">0x</spanx>, no trailing characters)</c>
      <c>evaluated against op params; the <strong>operation-side value domain</strong> is a finite non-negative integer — an absent param, a string, a boolean, a negative, a fractional or a non-finite value, or a value above the bound → <spanx style="verb">max_rows:violated</spanx> (cannot be shown conforming = fail-closed; rev CLC-1.4); constraint value out of grammar → <spanx style="verb">invalid_constraint</spanx></c>
      <c><spanx style="verb">time</spanx> (<spanx style="verb">window</spanx>)</c>
      <c>non-empty JSON array (≤ 32 elements), elements <spanx style="verb">{"start":"HH:MM[:SS]","end":"HH:MM[:SS]"}</spanx>, UTC, repeated daily, single window = one-element array; each endpoint is a <strong>seconds-of-day</strong> value (parsed from <spanx style="verb">HH:MM[:SS]</spanx>), with the reserved endpoint <spanx style="verb">"00:00"</spanx> in the <spanx style="verb">end</spanx> position read as <strong>86400</strong> (next-day midnight, 24:00) — so a segment is the half-open <spanx style="verb">[startSec, endSec)</spanx> and MUST satisfy <spanx style="verb">startSec &lt; endSec</spanx> (<strong>not</strong> lexical string order, which would wrongly reject the canonical <spanx style="verb">22:00→00:00</spanx> segment, since <spanx style="verb">"22:00" &gt; "00:00"</spanx> as text); a single segment <strong>must not cross midnight</strong>, so a crossing window is split into two same-day segments (<spanx style="verb">22:00→00:00</spanx> + <spanx style="verb">00:00→06:00</spanx>); the segment list MUST be ascending by <spanx style="verb">(startSec,endSec)</spanx> and <strong>non-overlapping</strong></c>
      <c>recognized only → <spanx style="verb">allow_unresolved</spanx> + <spanx style="verb">unresolved</spanx> (Section 8.4)</c>
      <c><spanx style="verb">network</spanx> (<spanx style="verb">cidr</spanx>)</c>
      <c>legal IPv4/IPv6 CIDR strings (<spanx style="verb">addr/mask</spanx>), syntax-level check only; JSON array ≤ 32 elements</c>
      <c>recognized only → <spanx style="verb">allow_unresolved</spanx> + <spanx style="verb">unresolved</spanx> (Section 8.4)</c>
</texttable>

<t>The expressible window set has no empty window and no full-day window; a
declaring scheme that needs such windows extends the grammar (Section 11).</t>

<t>Merge rules in v1: numeric → minimum wins; allowlist → intersection;
unknown → deny.  The allowlist is the
array-enum set (Section 6.2); intersecting it takes the shared members.  v1 core
defines <strong>no denylist constraint</strong> — merging applies only to the
<spanx style="verb">varwof/constraint-v1</spanx> types the core itself evaluates; it does not
define or merge scheme-defined types (Section 11).  Constraint-set merging is
always <strong>normalized and deterministically ordered</strong> (duplicate strings
collapsed, result ordered) — the same input yields the same constraint
sequence in any implementation.  v1 does not tighten <spanx style="verb">time</spanx>/<spanx style="verb">network</spanx>
bounds at intersection: intersection keeps only the constraint strings it
encounters (no evaluation, no tightening, Section 8.4).</t>

</section>
<section anchor="evidence-side-constraints"><name>Evidence-side constraints</name>

<t>Require specific evidence properties: freshness, consumption, quorum,
initiator-exclusion, etc.</t>

<t>These are structurally identical to authorization constraints — a
<spanx style="verb">type</spanx> plus optional <spanx style="verb">params</spanx> — but evaluated against evidence artifacts
rather than operation parameters.</t>

</section>
<section anchor="unified-constraint-grammar"><name>Unified constraint grammar</name>

<figure><artwork>
constraint = scheme ":" type [ ":" params ]
</artwork></figure>

<t>Both sides use the same grammar.  The validator (authorization) or
evidence evaluator (evidence) interprets the type-specific params.</t>

</section>
<section anchor="recognized-but-not-evaluated-residual-obligation-channel"><name>Recognized but not evaluated (residual-obligation channel)</name>

<t>A recognized constraint whose value conforms to its Section 8.1 value grammar but
for which the v1 core defines <strong>no evaluator</strong> — v1: <spanx style="verb">time</spanx>, <spanx style="verb">network</spanx>;
evaluation belongs to the declaring scheme (Section 11) — MUST NOT be silently
dropped: it must appear
in the decision's additive <spanx style="verb">unresolved</spanx> list (Section 9), and the verdict must be
<strong><spanx style="verb">allow_unresolved</spanx></strong> (not <spanx style="verb">allow</spanx>):</t>

<figure><artwork>
Decision = { verdict: "allow"|"deny"|"allow_unresolved",
             reason, unresolved: string[] }
</artwork></figure>

<t><strong>Fail-closed boundary</strong>: <spanx style="verb">allow_unresolved</spanx> is an <strong>independent enum value</strong>,
never equal to <spanx style="verb">allow</spanx>.  A consumer (PEP / profile / declaring scheme) MUST
evaluate or confirm every <spanx style="verb">unresolved</spanx> constraint before allowing;
<strong>if it cannot execute or confirm, it MUST deny</strong> (AAC Section 6.6: "when it cannot
perform or confirm, it should be treated as deny").  A consumer that only
writes <spanx style="verb">if decision.verdict == "allow"</spanx> cannot, on the literal enum, release
a residual obligation as an already-satisfied allow — a path that leaves
obligations unconfirmed must explicitly handle <spanx style="verb">allow_unresolved</spanx> to pass.
<strong>"the caller is supposed to check unresolved" is not sufficient defense</strong>:
the verdict itself must refuse the two-value short-circuit.</t>

<t><spanx style="verb">unresolved</spanx> semantics and ordering: <spanx style="verb">[]</spanx> for <spanx style="verb">deny</spanx> and for fully evaluated
<spanx style="verb">allow</spanx>; for <spanx style="verb">allow_unresolved</spanx> the normalized constraint strings with
duplicates folded — <strong>the conditional collation order of Section 7.1
(<spanx style="verb">#</spanx>-separated, then by UTF-8 byte sequence), the same comparison the
<spanx style="verb">ConstraintUnion</spanx> payload uses</strong> (rev CLC-1.15).  The order is deterministic:
the same input yields the same byte sequence in any implementation — in
particular NOT the ECMAScript default string order (UTF-16 code-unit order);
join the residual obligations across all sources and sort exactly once,
before emitting the decision.</t>

<t><strong>Combined obligations (consumer side)</strong>: multiple <spanx style="verb">unresolved</spanx> constraints
of the same <spanx style="verb">(scheme,type)</spanx> form a conjunction (AND) — satisfying A and B
satisfies all; OR, any-one, first-wins, and ignoring some entries are all
<strong>forbidden</strong>.  Constraints of different <spanx style="verb">(scheme,type)</spanx> do not interact;
each evaluates under its own declaring scheme (P11 composition narrows only:
conjunction only narrows).</t>

<t>The core owns only the <strong>value grammar</strong> ("what it is"); "whether this
window/CIDR currently forms a boundary" ("how to evaluate") belongs to the
declaring scheme (Section 11) — but the <strong>boundary-moment semantics are part of the
grammar</strong> (Section 8.1: half-open <spanx style="verb">[start, end)</spanx>, single segment within one day,
crossing split into segments), and a scheme MUST NOT change that
interpretation, only evaluate on top of it.</t>

</section>
<section anchor="resolving-residual-obligations-resolve"><name>Resolving residual obligations (<spanx style="verb">Resolve</spanx>)</name>

<t>Section 8.4 delivers residual obligations but leaves the consumer's feedback loop
undefined.  <spanx style="verb">Resolve</spanx> closes it: a consumer reports, per obligation, whether it
is satisfied, violated, or still unknown, and the core collapses the result to
a fresh decision.</t>

<figure><artwork>
Resolution = { constraint: string,
               status: "satisfied" | "violated" | "unknown" }
Resolve(decision, resolutions, now?) → Decision
</artwork></figure>

<t><spanx style="verb">decision</spanx> is a Section 9 <spanx style="verb">Decision</spanx>; <spanx style="verb">resolutions</spanx> is an ordered list (possibly
empty) of <spanx style="verb">Resolution</spanx>; <spanx style="verb">now</spanx> is an optional UTC instant (<spanx style="verb">RFC3339</spanx>, <spanx style="verb">Z</spanx>).
<spanx style="verb">now</spanx> is the only input that lets the core tick a residual itself.</t>

<t>Algorithm, in order:</t>

<t><list style="numbers" type="1">
  <t><strong>Terminal verdicts are fixed.</strong>  If <spanx style="verb">decision.verdict</spanx> is <spanx style="verb">deny</spanx> or
<spanx style="verb">allow</spanx>, <spanx style="verb">Resolve</spanx> returns <spanx style="verb">decision</spanx> unchanged and ignores <spanx style="verb">resolutions</spanx>:
a deny is never revived and an allow carries nothing to discharge.</t>
  <t><strong>Malformed input fails closed.</strong>  An entry that violates the grammar above
(unrecognized <spanx style="verb">status</spanx>, empty/non-string <spanx style="verb">constraint</spanx>) → <spanx style="verb">deny</spanx> with
<spanx style="verb">invalid_resolution</spanx>; a <spanx style="verb">now</spanx> that is not a valid instant →
<spanx style="verb">deny</spanx> with <spanx style="verb">invalid_timestamp</spanx>.</t>
  <t><strong>Discharge on <spanx style="verb">allow_unresolved</spanx>.</strong>  Let <spanx style="verb">O = decision.unresolved</spanx> (already
normalized and sorted, Section 8.4).  For each <spanx style="verb">o ∈ O</spanx>, a status in
<spanx style="verb">{satisfied, violated, unknown}</spanx> is computed by combining the sources below
under the order <strong><spanx style="verb">violated</spanx> ≻ <spanx style="verb">satisfied</spanx> ≻ <spanx style="verb">unknown</spanx></strong> (the most
restrictive source wins — a consumer that reports <spanx style="verb">violated</spanx> is never
overridden by a lenient one, and the core clock is never overridden by a
lenient assertion):
  <list style="symbols">
      <t><strong>Core clock</strong> — if <spanx style="verb">o</spanx> is a core-recognized <spanx style="verb">varwof/constraint-v1:time</spanx>
obligation whose value is a Section 8.1 window array, <strong>and <spanx style="verb">now</spanx> is supplied</strong>,
the core evaluates it: <spanx style="verb">now</spanx> inside a segment → <spanx style="verb">satisfied</spanx>; outside every
segment → <spanx style="verb">violated</spanx>.  This is the obligation's <strong>TTL</strong>: the discharge
horizon is the end of the segment containing <spanx style="verb">now</spanx>, so re-invoking
<spanx style="verb">Resolve</spanx> with a later <spanx style="verb">now</spanx> re-evaluates to <spanx style="verb">violated</spanx> once the window has
passed — a cached <spanx style="verb">allow</spanx> does not outlive its window.</t>
      <t><strong>Consumer resolution</strong> — a <spanx style="verb">Resolution</spanx> for <spanx style="verb">o</spanx> contributes its <spanx style="verb">status</spanx>;
the most restrictive of the two wins.</t>
      <t>Absent everywhere → <spanx style="verb">unknown</spanx>.</t>
    </list></t>
  <t><strong>Repeated entries</strong> for the same <spanx style="verb">constraint</spanx> combine under the same
<spanx style="verb">violated</spanx> ≻ <spanx style="verb">satisfied</spanx> ≻ <spanx style="verb">unknown</spanx> order.</t>
  <t><strong>Unrelated resolutions are ignored.</strong>  A <spanx style="verb">Resolution</spanx> whose <spanx style="verb">constraint</spanx> is
not in <spanx style="verb">O</spanx> cannot widen the outcome; <spanx style="verb">O</spanx> is authoritative.</t>
  <t><strong>Result</strong>:
  <list style="symbols">
      <t>any <spanx style="verb">o</spanx> has status <spanx style="verb">violated</spanx> → <spanx style="verb">deny</spanx>, reason = that constraint's
<spanx style="verb">{type}:violated</spanx> (<spanx style="verb">time:violated</spanx> for a core-clock violation; otherwise
the type segment of the constraint string), <spanx style="verb">unresolved = []</spanx>;</t>
      <t>every <spanx style="verb">o</spanx> is <spanx style="verb">satisfied</spanx> → <spanx style="verb">allow</spanx>, reason <spanx style="verb">null</spanx>, <spanx style="verb">unresolved = []</spanx>;</t>
      <t>otherwise → <spanx style="verb">allow_unresolved</spanx>, reason <spanx style="verb">null</spanx>, <spanx style="verb">unresolved</spanx> = the still-
<spanx style="verb">unknown</spanx> subset (normalized + sorted, Section 8.4).</t>
    </list></t>
</list></t>

<t>Without <spanx style="verb">now</spanx>, the core attaches no TTL to a <spanx style="verb">time:window</spanx> obligation: a
consumer may report it <spanx style="verb">satisfied</spanx> (its declaring scheme owns its clock), but
that discharge is only as fresh as the call, and a consumer that needs a
core-enforced horizon MUST pass <spanx style="verb">now</spanx>.</t>

<t><strong>Acting on a result (caching rule).</strong>  <spanx style="verb">Resolve</spanx> returns a plain decision; it
does <strong>not</strong> carry an expiry field, so a core-clock discharge is only valid for
the instant of the call.  A consumer that acts on a <spanx style="verb">Resolve</spanx> result involving a
core-evaluated <spanx style="verb">time:window</spanx> obligation MUST either re-invoke <spanx style="verb">Resolve</spanx> with a
current <spanx style="verb">now</spanx> immediately before acting, or not cache the result beyond the
current segment's end (the discharge horizon, Section 8.5 step 3) — it MUST NOT hold a
cached <spanx style="verb">allow</spanx> past that horizon.  Equivalently: a suite that needs a
mechanically enforceable "valid until" value derives it from the segment end
itself, not from the returned <spanx style="verb">Decision</spanx>.  (The obligation carried on an
<spanx style="verb">allow_unresolved</spanx> decision remains the Section 8.4 object a consumer evaluates; this
rule is only about not outliving a clock-based discharge.)</t>

<t><spanx style="verb">Resolve</spanx> is deterministic and fail-closed; it is idempotent
(<spanx style="verb">Resolve(Resolve(d, r, now), r, now) = Resolve(d, r, now)</spanx>) and
monotone (adding a <spanx style="verb">violated</spanx> never turns a deny into an allow; removing one
never turns an allow into a deny).  It neither invents nor drops obligations.
It subsumes the coarser identity-level consumer gate (the reference
implementations' <spanx style="verb">Discharge</spanx>, which only answers "do I understand and commit
to every obligation?"): confirming an obligation is the <spanx style="verb">satisfied</spanx> case.  It
defines no policy about <em>how</em> the consumer evaluates an obligation (P2) — that
is the declaring scheme's (Section 11).</t>

</section>
</section>
<section anchor="decision-function-authorization-side"><name>Decision Function (Authorization Side)</name>

<figure><artwork>
Authorize(grants, operation) → Decision
Decision = { verdict: "allow"|"deny"|"allow_unresolved",
             reason: string|null,
             unresolved: string[] }   // additive, Section 8.4
</artwork></figure>

<t>Algorithm.  One precedence rule governs the whole function: <strong>the grant-side
pre-check resolves before operation validation.</strong>  An absent or empty grant set
denies with <spanx style="verb">capability_not_authorized</spanx> even when the operation is absent as well
(Section 9.1 layer 10; Appendix B.5, row D15, pins it), so a caller that passes neither
input gets that reason and not <spanx style="verb">missing_capability_id</spanx>.  The algorithm below
therefore runs the grant-side pre-check <strong>first</strong>, ahead of the numbered
operation steps — the numbering mirrors Section 9.1's layer order for what follows, not
the precedence of the pre-check.</t>

<t><list style="numbers" type="1">
  <t>(Pre-check) An absent or empty grant set → <spanx style="verb">deny("capability_not_authorized")</spanx>
(Section 9.1 layer 10), before any operation check; this is why the absent-grant /
absent-operation pair resolves here and not to a layer-1 code.</t>
  <t>Validate operation: missing/invalid id → deny with stable reason.  The
operation's <strong>specific layer-1 code</strong> is reported — <spanx style="verb">missing_capability_id</spanx>
(no id), <spanx style="verb">unsupported_wildcard</spanx> (v1-forbidden wildcard shape) or
<spanx style="verb">invalid_capability_id</spanx> (other grammar violation) — and is <strong>not</strong>
collapsed to a generic code.</t>
  <t>Find covering grants via Entailment (Section 6.1).  No covering grant →
<spanx style="verb">deny("capability_not_authorized")</spanx> (Section 9.1 layer 10); the absent/empty case
was already resolved by step 0.</t>
  <t>For each covering grant: evaluate constraints (Section 8.1): non-recognized
<spanx style="verb">(scheme,type)</spanx> → <spanx style="verb">unknown_constraint</spanx>; recognized but non-conforming
value → <spanx style="verb">invalid_constraint</spanx>; recognized with a core evaluator
(<spanx style="verb">varwof/constraint-v1:max_rows</spanx>) and violated →
<spanx style="verb">{type}:violated</spanx>; recognized without a core evaluator (<spanx style="verb">time</spanx>,
<spanx style="verb">network</spanx>) → residual obligation (Section 8.4).</t>
  <t><strong>Aggregate</strong> (multi-grant set, Section 9.1):
  <list style="symbols">
      <t>Any covering grant that "allows" (no params/constraint rejection) →
overall allow;</t>
      <t>Residual obligations = the <spanx style="verb">unresolved</spanx> <strong>union across the covering grants
that also allow</strong> (normalized + sorted).  A covering grant that is rejected
at the params/constraint layer contributes <strong>no</strong> obligations: it does not
authorize, so its residuals are not carried.  The union is nevertheless
order-independent, because every covering-and-allowing grant is visited;</t>
      <t>When no covering grant allows: if at least one covering grant rejects at
the params/constraint layer → use the rejection reason of the <strong>first
covering grant in canonical order</strong> (deterministic, Section 9.1); if no grant
covers at all → <spanx style="verb">capability_not_authorized</spanx>.</t>
    </list></t>
  <t>Allow with non-empty residual obligations → <spanx style="verb">verdict = allow_unresolved</spanx>;
allow with empty obligations → <spanx style="verb">verdict = allow</spanx>.</t>
</list></t>

<t>The grant set may be <strong>absent or empty</strong> — e.g. an integrator
calls <spanx style="verb">Authorize</spanx> with no grant value or with an empty capability record.
A safe evaluator MUST NOT raise; it MUST resolve such input to
<spanx style="verb">deny("capability_not_authorized")</spanx> (falling out of layer 10/step 2).
An absent operation resolves to <spanx style="verb">deny("missing_capability_id")</spanx>
(layer 1); the evaluator MUST NOT raise there either.</t>

<t>Properties: deterministic (same input → same output), fail-closed,
stable reason codes.</t>

<section anchor="resolved-reason-ordering-normative"><name>Resolved Reason Ordering (normative)</name>

<t>When more than one condition fails for a grant/operation pair, the
<strong>resolved reason</strong> (the single code reported) is the first applicable
layer in this fixed order.  It applies to <spanx style="verb">Entails</spanx> (Section 6.3),
<spanx style="verb">Intersect</spanx> (Section 7) and <spanx style="verb">Authorize</spanx> (this section).</t>

<t><strong>Declaration validation resolves before layer 1.</strong>  The language-revision
check (Section 12.1) and the scheme declaration (Section 6.7) are evaluated before any layer
below: an input whose declaration is malformed, whose digest does not match, or
which names a domain this implementation does not support is refused with
<spanx style="verb">unsupported_domain</spanx> (or <spanx style="verb">unsupported_language_revision</spanx> where the revision
gate applies), and no layer-1..11 code is reported.</t>

<texttable>
      <ttcol align="left">#</ttcol>
      <ttcol align="left">Layer</ttcol>
      <ttcol align="left">Checks</ttcol>
      <ttcol align="left">Reason code(s)</ttcol>
      <c>1</c>
      <c>CapabilityId validity</c>
      <c>Section 3 grammar, wildcard shape</c>
      <c><spanx style="verb">invalid_capability_id</spanx>, <spanx style="verb">missing_capability_id</spanx>, <spanx style="verb">unsupported_wildcard</spanx></c>
      <c>2</c>
      <c>Params normalization</c>
      <c>Duplicate JSON keys; non-normalizable numbers (non-finite / out-of-range / over-precision) and malformed-Unicode text; size/depth limits (Section 6.2); <spanx style="verb">param_bounds</spanx> well-formedness and the one-representation binding rule (Section 6.5)</c>
      <c><spanx style="verb">invalid_params_duplicate_key</spanx>, <spanx style="verb">invalid_params_number</spanx>, <spanx style="verb">invalid_params_size</spanx>, <spanx style="verb">invalid_params_binding</spanx></c>
      <c>3</c>
      <c>Namespace = scheme + action Class</c>
      <c>Grant vs operation scheme and Class</c>
      <c><spanx style="verb">different_namespace</spanx></c>
      <c>4</c>
      <c>Path coverage (same namespace)</c>
      <c>Literal path segments, trailing-wildcard depth</c>
      <c><spanx style="verb">literal_mismatch</spanx>, <spanx style="verb">wildcard_requires_trailing_segment</spanx></c>
      <c>5</c>
      <c>Explicit empty bound</c>
      <c>Any grant/intersection source declares a <strong>parameter value</strong> that is <spanx style="verb">[]</spanx>/<spanx style="verb">{}</spanx> (a present-but-empty <spanx style="verb">params</spanx> object is <em>no</em> constraint, Section 7 rule 6)</c>
      <c><spanx style="verb">empty_bound_denies_class</spanx></c>
      <c>6</c>
      <c>Null values</c>
      <c>Any <spanx style="verb">null</spanx> parameter value</c>
      <c><spanx style="verb">invalid_params_null</spanx></c>
      <c>7</c>
      <c>Param presence</c>
      <c>Grant bounds a param the operation omits (or operation has no <spanx style="verb">params</spanx>); operation carries a key the grant does not declare.  A <spanx style="verb">param_bounds</spanx> key with <spanx style="verb">optional:true</spanx> is exempt from the omission half (Section 6.5)</c>
      <c><spanx style="verb">params_missing</spanx>, <spanx style="verb">undeclared_param</spanx></c>
      <c>8</c>
      <c>Enum membership and cardinality</c>
      <c>Request value not a member of a granted array set (Section 6.2); request cardinality outside a <spanx style="verb">param_bounds</spanx> <spanx style="verb">min_items</spanx>/<spanx style="verb">max_items</spanx> (Section 6.5)</c>
      <c><spanx style="verb">not_in_enum</spanx>, <spanx style="verb">params_cardinality</spanx></c>
      <c>9</c>
      <c>Bound comparison</c>
      <c>Numeric/bound exceeded; <spanx style="verb">quantity</spanx> value above the declared unit's bound; <spanx style="verb">quantity</spanx> unit differs from the declared unit (no conversion); <spanx style="verb">param_bounds</spanx> <spanx style="verb">min</spanx>/<spanx style="verb">max</spanx> out of range; <spanx style="verb">step</spanx> not an integer multiple (Section 6.5, Section 6.7)</c>
      <c><spanx style="verb">params_exceed_grant</spanx>, <spanx style="verb">unit_mismatch</spanx>, <spanx style="verb">params_out_of_range</spanx>, <spanx style="verb">params_not_multiple</spanx></c>
      <c>10</c>
      <c>Coverage emptiness</c>
      <c>Intersection result empty; zero sources; no grant covers the operation</c>
      <c><spanx style="verb">no_overlap</spanx>, <spanx style="verb">absent_source</spanx>, <spanx style="verb">capability_not_authorized</spanx></c>
      <c>11</c>
      <c>Constraint evaluation</c>
      <c>Non-recognized <spanx style="verb">(scheme,type)</spanx>; recognized type value out of Section 8.1 grammar; recognized type violated</c>
      <c><spanx style="verb">unknown_constraint</spanx>, <spanx style="verb">invalid_constraint</spanx>, <spanx style="verb">{type}:violated</spanx></c>
</texttable>

<t>Notes:</t>

<t><list style="symbols">
  <t><strong>Namespace</strong> is <spanx style="verb">scheme:action_class</spanx> (the first two <spanx style="verb">:</spanx>-delimited
segments).  Identifiers in the same namespace differ only below the
Class; such mismatches are path-level (<spanx style="verb">literal_mismatch</spanx> /
<spanx style="verb">wildcard_requires_trailing_segment</spanx>), not <spanx style="verb">different_namespace</spanx>.</t>
  <t><strong>Params normalization fires at the input boundary</strong>: duplicate keys,
over-precision/non-finite numbers, and size/depth overruns (Section 6.2) are
detected before any grant-vs-operation comparison and therefore before
every other layer of this table.</t>
  <t><strong>Deny-when-declared</strong>: layer 5 is evaluated on the grant/intersection
side — an explicitly empty <spanx style="verb">[]</spanx> or <spanx style="verb">{}</spanx> param value denies the class
regardless of the request, before any member or bound check.</t>
  <t><strong><spanx style="verb">params:{}</spanx> ≡ absent</strong>: the params constraint looks only at the
 <strong>set of declared param names</strong>, independent of carrier form — an absent
 <spanx style="verb">params</spanx> and <spanx style="verb">"params":{}</spanx> both mean "no param names declared" =
 <strong>no param constraint</strong> (consistent across entailment and intersection;
 the same representation cannot have different semantics in different
 functions).  Therefore:
  <list style="symbols">
      <t>Direct grant: a grant with <spanx style="verb">params:{}</spanx> <strong>allows</strong> an op carrying any
params (<spanx style="verb">.{x:1}</spanx> does not trigger <spanx style="verb">undeclared_param</spanx>);</t>
      <t>Intersection: a <spanx style="verb">params:{}</spanx> source <strong>contributes no param constraint</strong>
(<spanx style="verb">{limit:50}</spanx> ∩ <spanx style="verb">{}</spanx> = <spanx style="verb">{limit:50}</spanx>);</t>
      <t>Key closure (next bullet) applies only when the grant declares a
<strong>non-empty</strong> set of param names.</t>
    </list></t>
  <t><strong>Layer 7 key closure runs both directions</strong>: granted keys must be present
in the operation (<spanx style="verb">params_missing</spanx>) and operation keys must be declared by
the grant (<spanx style="verb">undeclared_param</spanx>); the missing-key check resolves first, and
both precede the layer 8–9 value checks.  (Applies only to a non-empty set
of declared names, see the bullet above.)</t>
  <t><strong>Layer 11 runs last by construction</strong>: constraints are evaluated only
after coverage and parameters pass.</t>
  <t><strong>Multi-grant aggregation (normative)</strong>: <spanx style="verb">Authorize</spanx> operates on a
<strong>ordered list of grants</strong>, not a single grant.  Authorization semantics are
order-independent; only reason selection (rule 4) uses the input order.  Rules:
  <list style="numbers" type="1">
      <t><strong>Any one covering-and-allowing grant allows</strong> (∃ <spanx style="verb">g</spanx>: Entails(g,op) ∧
no params-layer rejection ∧ no constraint-layer rejection);</t>
      <t>Residual obligations = <spanx style="verb">unresolved</spanx> <strong>union across the covering grants
that allow</strong> (normalized + sorted).  A covering grant rejected at the
params/constraint layer contributes none — it does not authorize, so its
residuals are not carried (they are never silently dropped from a
decision it does not produce);</t>
      <t>No grant covers → <spanx style="verb">capability_not_authorized</spanx>; op layer-1 errors always
precede any coverage/aggregation decision;</t>
      <t>Some grant covers but all covering grants reject at the params/constraint
layer → deny, reason = the layer 5–11 rejection reason of the <strong>first
covering grant in canonical order</strong> (deterministic).
<strong>Canonical order</strong> = the appearance order in the input grant list (the
capability-record body order); an implementation MUST NOT choose the reason
by internal hash/iteration order.
Counter-examples pinned (forbidden): NOT any-one-allows — otherwise, with
multiple grants held, a narrow grant would wrongly deny the legal operation
of a broad grant; NOT first-match-wins — otherwise grant order would
change the authorization outcome; NOT all-must-pass — synonymous with
"any-one-covers authorizes", letting a narrow grant's existence invalidate a
broad grant.</t>
    </list></t>
  <t><strong>Op-ID validation errors propagate their specific layer-1 code</strong>
(<spanx style="verb">missing_capability_id</spanx> / <spanx style="verb">unsupported_wildcard</spanx> / <spanx style="verb">invalid_capability_id</spanx>),
never <spanx style="verb">capability_not_authorized</spanx> and never an invented catch-all: step 1
reports the very code that describes the operation id.  Only <strong>coverage</strong>
failures (layers 3–4 and 10) collapse to <spanx style="verb">capability_not_authorized</spanx>.</t>
  <t><strong>Layer 1 validates the operation id only.</strong>  A malformed id in a
<strong>grant</strong> makes that grant non-matching for every operation: <spanx style="verb">Entails</spanx>
reports the specific layer-1 code as its false reason, and <spanx style="verb">Authorize</spanx>
folds the non-match into coverage (<spanx style="verb">capability_not_authorized</spanx>) — the
grant's own code is not surfaced by the decision.</t>
  <t>An <strong>absent/empty effective grant</strong> drops straight to layer 10
(<spanx style="verb">capability_not_authorized</spanx>); the evaluator MUST return this decision
rather than raising.  An absent operation drops to layer 1
(<spanx style="verb">missing_capability_id</spanx>).</t>
  <t>A <strong>language revision mismatch</strong> (Section 12.1) is resolved before any layer
and reports <spanx style="verb">unsupported_language_revision</spanx> (fail-closed, no downgrade).</t>
  <t><strong><spanx style="verb">Resolve</spanx> (Section 8.5) is post-decision, not a layer.</strong>  It consumes a
<spanx style="verb">Decision</spanx> and never re-runs <spanx style="verb">Authorize</spanx>; only <spanx style="verb">invalid_resolution</spanx> /
<spanx style="verb">invalid_timestamp</spanx> (Section 9.2) and a <spanx style="verb">{type}:violated</spanx> obligation result are
introduced by it, and only on an <spanx style="verb">allow_unresolved</spanx> input.</t>
</list></t>

</section>
<section anchor="reason-codes-normative"><name>Reason Codes (normative)</name>

<t>Reason codes are stable identifiers. v1 defines:</t>

<t><strong>Canonical code = everything before the first <spanx style="verb">:</spanx></strong>.  An implementation
MAY append <spanx style="verb">: &lt;detail&gt;</spanx> (e.g. the offending parameter name) as a
diagnostic suffix; the canonical code is unchanged.  All tooling and
compatibility checks MUST compare the canonical prefix only.</t>

<texttable>
      <ttcol align="left">Reason code</ttcol>
      <ttcol align="left">Meaning</ttcol>
      <c><spanx style="verb">unsupported_wildcard</spanx></c>
      <c>Wildcard shape forbidden in v1 (bare <spanx style="verb">*</spanx>, partial segment, <spanx style="verb">**</spanx>, <spanx style="verb">{a,b}</spanx>, <spanx style="verb">[a-z]</spanx>)</c>
      <c><spanx style="verb">invalid_capability_id</spanx></c>
      <c>CapabilityId does not conform to the Section 3 grammar</c>
      <c><spanx style="verb">missing_capability_id</spanx></c>
      <c>Operation has no <spanx style="verb">id</spanx> (layer 1)</c>
      <c><spanx style="verb">invalid_params_duplicate_key</spanx></c>
      <c>Params contain a duplicate JSON key (Section 6.2 representation, Section 9.1 layer 2)</c>
      <c><spanx style="verb">invalid_params_number</spanx></c>
      <c>The params input has no canonical form: a numeric param is non-finite, out of IEEE-754 range, or over-precision (&gt; 17 significant decimal digits) (Section 6.2 step 3), or the text is not well-formed Unicode / not parseable as a JSON object (Section 6.2 step 7).  One stable code covers every "cannot be normalized" params failure (Section 6.2 representation, Section 9.1 layer 2)</c>
      <c><spanx style="verb">invalid_params_size</spanx></c>
      <c>Params exceed the 512-byte serialized size or the depth-32 nesting limit (Section 6.2 representation, Section 9.1 layer 2)</c>
      <c><spanx style="verb">invalid_params_binding</spanx></c>
      <c>A <spanx style="verb">param_bounds</spanx> bound is malformed (unknown member, mixed families, <spanx style="verb">min &gt; max</spanx>, <spanx style="verb">step ≤ 0</spanx>, <spanx style="verb">min_items &gt; max_items</spanx>), or a key is declared in both <spanx style="verb">params</spanx> and <spanx style="verb">param_bounds</spanx> (Section 6.5, Section 9.1 layer 2)</c>
      <c><spanx style="verb">different_namespace</spanx></c>
      <c>Grant and operation differ in namespace (scheme + action Class, Section 9.1 layer 3)</c>
      <c><spanx style="verb">literal_mismatch</spanx></c>
      <c>Literal identifiers differ</c>
      <c><spanx style="verb">wildcard_requires_trailing_segment</spanx></c>
      <c>Wildcard has no remaining segment (<spanx style="verb">...:*</spanx> does not cover <spanx style="verb">...</spanx>)</c>
      <c><spanx style="verb">capability_not_authorized</spanx></c>
      <c>No grant in the effective set covers the operation</c>
      <c><spanx style="verb">no_overlap</spanx></c>
      <c>Intersection of multiple sources is empty</c>
      <c><spanx style="verb">absent_source</spanx></c>
      <c>Intersection over zero sources — no effective set (Section 7 rule 5)</c>
      <c><spanx style="verb">params_exceed_grant</spanx></c>
      <c>Request parameters exceed the granted bound</c>
      <c><spanx style="verb">params_missing</spanx></c>
      <c>Grant bounds a parameter but the request omits it, or the request has no <spanx style="verb">params</spanx> field at all (fail-closed, Section 6.3 step 4)</c>
      <c><spanx style="verb">undeclared_param</spanx></c>
      <c>Operation parameter key not declared by the grant's params (key closure, Section 6.2; Section 9.1 layer 7 request side)</c>
      <c><spanx style="verb">empty_bound_denies_class</spanx></c>
      <c>An explicitly empty bound at a parameter value (<spanx style="verb">[]</spanx>/<spanx style="verb">{}</spanx>) denies the class.  <spanx style="verb">params:{}</spanx> is not an empty bound: it is equivalent to an absent <spanx style="verb">params</spanx> (Section 7 rule 6)</c>
      <c><spanx style="verb">not_in_enum</spanx></c>
      <c>Request value is not a member of the allowed set granted as an array (Section 6.2 enum rule)</c>
      <c><spanx style="verb">params_cardinality</spanx></c>
      <c>Request cardinality is outside a <spanx style="verb">param_bounds</spanx> <spanx style="verb">min_items</spanx>/<spanx style="verb">max_items</spanx> (Section 6.5)</c>
      <c><spanx style="verb">params_out_of_range</spanx></c>
      <c>Request value is outside a <spanx style="verb">param_bounds</spanx> <spanx style="verb">min</spanx>/<spanx style="verb">max</spanx> inclusive bound (Section 6.5)</c>
      <c><spanx style="verb">params_not_multiple</spanx></c>
      <c>Request value is not an integer multiple of a <spanx style="verb">param_bounds</spanx> <spanx style="verb">step</spanx>, per the IEEE-754 rule (Section 6.5)</c>
      <c><spanx style="verb">unit_mismatch</spanx></c>
      <c>A <spanx style="verb">quantity</spanx> value's unit differs from the unit fixed by the scheme declaration (Section 6.7).  Units are never converted, so a different unit is never covered</c>
      <c><spanx style="verb">invalid_params_null</spanx></c>
      <c><spanx style="verb">null</spanx> parameter value (rejected in v1)</c>
      <c><spanx style="verb">unsupported_language_revision</spanx></c>
      <c>Declared CLC revision is incompatible with the implementation (Section 12.1; fails closed, no silent downgrade)</c>
      <c><spanx style="verb">unsupported_domain</spanx></c>
      <c>The scheme declaration names a domain this implementation does not support, or the declaration is malformed / its digest does not match (Section 6.7, resolved before Section 9.1 layer 1)</c>
      <c><spanx style="verb">unknown_constraint</spanx></c>
      <c>Unknown constraint type (fail-closed)</c>
      <c><spanx style="verb">invalid_constraint</spanx></c>
      <c>Recognized type whose value fails its Section 8.1 value grammar</c>
      <c><spanx style="verb">{type}:violated</spanx></c>
      <c>A known constraint is violated (e.g. <spanx style="verb">max_rows:violated</spanx>); also reported by <spanx style="verb">Resolve</spanx> for a discharged-as-violated obligation (Section 8.5)</c>
      <c><spanx style="verb">invalid_resolution</spanx></c>
      <c>A <spanx style="verb">Resolve</spanx> resolution entry is malformed (unknown <spanx style="verb">status</spanx>, non-string/empty <spanx style="verb">constraint</spanx>) (Section 8.5)</c>
      <c><spanx style="verb">invalid_timestamp</spanx></c>
      <c>The <spanx style="verb">Resolve</spanx> <spanx style="verb">now</spanx> argument is not a valid UTC instant (Section 8.5)</c>
</texttable>

<t>Other schemes MAY define additional codes, but MUST NOT redefine these.</t>

</section>
</section>
<section anchor="satisfaction-function-evidence-side"><name>Satisfaction Function (Evidence Side)</name>

<figure><artwork>
Satisfy(evidence_set, requirement) → Satisfaction
Satisfaction = { verdict: "SATISFIED"|"UNSATISFIED", reason: string|null }
</artwork></figure>

<t>Algorithm:</t>

<t><list style="numbers" type="1">
  <t>Verify each evidence artifact under its native rules.</t>
  <t>For each required evidence role, check that an artifact fills it.</t>
  <t>Check that each artifact is bound to the exact action via Match (Section 6.4).</t>
  <t>Evaluate freshness, consumption, and role constraints.  The evidence-side
value grammar is defined in this revision: <spanx style="verb">varwof/evidence-v1:freshness:sec:&lt;n&gt;</spanx>,
<spanx style="verb">:consumption:once</spanx>, <spanx style="verb">:quorum:distinct:&lt;n&gt;</spanx>, <spanx style="verb">:exclusion:initiator|executor</spanx>
(Section 8.2).  A recognized constraint whose evaluation belongs to the enforcement
point (consumption) evaluates to <spanx style="verb">unknown</spanx>, which at the top level yields
<spanx style="verb">UNSATISFIED</spanx> (never <spanx style="verb">SATISFIED</spanx>) — the evidence side has no
<spanx style="verb">allow_unresolved</spanx>; <spanx style="verb">unresolved</spanx> is an authorization-side channel (Section 8.4,
Section 11).</t>
  <t>All required roles filled and bound → <spanx style="verb">SATISFIED</spanx>.</t>
  <t>Any role unfilled, unbound, or violated → <spanx style="verb">UNSATISFIED</spanx>.</t>
</list></t>

<t><strong>Tri-state evaluation, binary report.</strong>  A recognized evidence-side constraint
is evaluated three-valued (<spanx style="verb">satisfied</spanx> / <spanx style="verb">violated</spanx> / <spanx style="verb">unknown</spanx>).  <spanx style="verb">Satisfaction</spanx>
itself is binary.  A constraint that evaluates to <spanx style="verb">unknown</spanx> at the top level —
including one whose evaluation belongs to the enforcement point (<spanx style="verb">consumption</spanx>) —
MUST produce <spanx style="verb">UNSATISFIED</spanx> with a stable reason, never <spanx style="verb">SATISFIED</spanx>.  <spanx style="verb">unknown</spanx>
is an internal evaluation result, not a third top-level verdict.</t>

<t>Properties: deterministic, fail-closed, stable reason codes.</t>

</section>
<section anchor="semantic-boundary"><name>Semantic Boundary</name>

<t>CLC-v1 defines the <strong>shared minimal vocabulary</strong> and <strong>evaluation
algorithms</strong> for both authorization and evidence.</t>

<t>A <strong>projection</strong> is not a third decision language.  When a carrier profile maps
native authorization or evidence artifacts into the objects defined here, it
does not add a verdict source.  Authorization and evidence remain distinct, but
share the ActionId (Section 4.3) and constraint vocabulary (Section 8) needed to connect a
proposed action with evidence about the action that occurred.  A projection
MUST NOT report a native check or relation as satisfied unless the carrier's
verifier establishes it; carrier-specific fields, trust decisions and runtime
state remain profile responsibilities.</t>

<t>CLC-v1 does NOT define:</t>

<t><list style="symbols">
  <t><strong>Trust models</strong>: who signs what, issuer trust, delegation chains
(belongs to AIC-JWT <xref target="AIC-JWT"/>, OAuth, SPIFFE, etc.)</t>
  <t><strong>Native verification</strong>: signature checking, schema validation,
freshness enforcement (belongs to each native artifact's spec)</t>
  <t><strong>Execution lifecycle</strong>: consumption, invocation, reconciliation,
outcome classification (belongs to EMILIA AEB <xref target="EMILIA-AEB"/> or equivalent)</t>
  <t><strong>Receipt or token formats</strong>: the wire formats for carrying grants,
evidence, or bindings (belongs to protocol-specific specs)</t>
</list></t>

<t>The boundary is:</t>

<t><list style="symbols">
  <t>CLC-v1 defines <strong>what</strong> to evaluate (grant ⊆ operation, evidence ↔ action)</t>
  <t>Consumers define <strong>how</strong> to evaluate (native verification, trust anchors)</t>
  <t>CLC-v1 defines <strong>what</strong> the output means (allow/deny/allow_unresolved,
SATISFIED/UNSATISFIED) — <strong><spanx style="verb">allow</spanx> and <spanx style="verb">allow_unresolved</spanx> are distinct
enum values</strong>; a consumer MUST NOT treat <spanx style="verb">allow_unresolved</spanx> as <spanx style="verb">allow</spanx>
(Section 8.4)</t>
  <t>Consumers define <strong>what to do</strong> with the output (invoke, record, reconcile)</t>
  <t>CLC-v1 defines each known type's <strong>value grammar</strong> (what counts as a legal
constraint value); the declaring scheme defines <strong>how</strong> that value is
evaluated (whether this window/CIDR currently forms a boundary)</t>
  <t><strong><spanx style="verb">allow_unresolved</spanx> is an authorization result, not evidence.</strong>  It marks an
unresolved authorization (or policy) condition.  A consumer that can evaluate
the obligation under a pinned rule may release it; one that cannot MUST refuse.
It takes on an evidence role only where a relying party separately defines one
together with the native verifier for it (AEB); the language itself makes no
such claim, and <spanx style="verb">unresolved</spanx> MUST NOT be read as "evidence still required"</t>
  <t><strong>A Section 6.2 refusal does not transfer to a decoded value.</strong>  The input-boundary
checks are defined over the text as received (Section 6.2).  A deployment that must
reproduce a refusal, or that applies a permit to a request it did not
evaluate, therefore anchors the decision to the <strong>received octets</strong> or to a
digest of them (Section 4.3) — never to a value a decoder has already normalized.  A
pipeline that can apply a permit to a request whose text was never checked has
left the CLC boundary</t>
  <t>CLC-A stays the <strong>scope language</strong>: material-action identity is referenced from
CAID <xref target="CAID"/>, heterogeneous evidence evaluation from AEC <xref target="AEC"/>, the boundary
lifecycle from AEB <xref target="EMILIA-AEB"/>, and durable consumption/accounting from BCR
<xref target="BCR"/>; the narrow crosswalk between them is the composition point</t>
  <t>Principal/agent delegation and token attenuation stay with PAP <xref target="PAP"/> and AAT
<xref target="AAT"/>; CLC consumes their authorization outcome rather than redefining it</t>
  <t><strong>A relation between two artifacts is not expressible.</strong>  CLC evaluates a
role expression over facts, each with its own constraint; it has no term for a
relation that <em>connects</em> two artifacts — a carrier's "this permit is for that
quorum" (<spanx style="verb">draft-schrock-ep-authorization-evidence-chain-08</spanx> Section 4
<spanx style="verb">required_bindings</spanx>) or an audit record's derived agreement between a decision
and an observed effect (<spanx style="verb">draft-gilda-audit-agent-audit-record-00</spanx> Section 5.3).  A
carrier that carries such a relation MUST normalize it into a fact member that
its own verifier establishes, or enforce it outside the projection; the
presence of the two endpoints MUST NOT be read as the relation holding, and
CLC MUST NOT report an unchecked relation as satisfied.  A carrier that binds
by identity instead (<spanx style="verb">draft-thallapelly-oasnt-02</spanx> Section 6.2 <spanx style="verb">adg</spanx>) needs no such
rule: identity is what Section 4.2 and Section 6.4 already evaluate</t>
</list></t>

</section>
<section anchor="conformance"><name>Conformance</name>

<t>CLC-v1 defines <strong>three conformance classes</strong>:</t>

<t><strong>CLC-A (authorization side)</strong> — the v1 baseline. A conforming
implementation MUST implement: grammar (Section 3), entailment (Section 6.1),
intersection (Section 7), decision function (Section 9), rejection of non-recognized
<spanx style="verb">(scheme,type)</spanx> constraints (<spanx style="verb">unknown_constraint</spanx>, Section 8.1), rejection of
non-conforming recognized-type values (<spanx style="verb">invalid_constraint</spanx>, Section 8.1),
exposure of recognized-but-unevaluated constraints via the decision's
<spanx style="verb">unresolved</spanx> field on an independent <spanx style="verb">allow_unresolved</spanx> verdict (never
silently dropped, Section 8.4), multi-grant aggregation (Section 9.1), and stable
reason codes (Section 9.2).</t>

<t><strong>CLC-D (delegation side)</strong> — the containment relation, defined in
<strong>Section 13</strong>.  A conforming implementation MUST implement
<spanx style="verb">Contains(parent, child)</spanx> with its ordered layers, the relation's two stable
reason codes (<spanx style="verb">child_exceeds_parent</spanx>, <spanx style="verb">params_not_narrower</spanx>) and its profile
contract (Section 13.8.1), and MUST pass <spanx style="verb">containment-vectors.json</spanx>.  The third
CLC-D code, <spanx style="verb">delegation_mode_not_narrower</spanx>, is produced by the binding
profile's delegation-mode pre-check (Section 13.4.5) — never by <spanx style="verb">Contains</spanx>, which
takes no mode argument — and belongs to the profile's obligations.  A
delegation policy that requires each hop
to stay inside the previous hop's boundary reads <spanx style="verb">Contains</spanx>, not Section 7:
entailment and intersection over the <strong>declared</strong> sets are necessary but not
sufficient, because they do not compare a child's boundary against a parent's.
An operation fitting a grant proves nothing about a child staying inside its
parent, and where containment cannot be established a binding profile MUST NOT
authorize the delegation.  <spanx style="verb">Contains</spanx> is a language relation over grant
values, not a wire format; the effective subset a delegation record carries is
still the profile's to define.</t>

<t><strong>CLC-E (evidence side)</strong> — optional conformance profile, <strong>implemented and
pinned by a corpus in this revision, but NOT claimed</strong>.  Section 6.4 (match) and Section 10
(satisfaction) define the evidence-side relations; this revision also defines the
evidence-side constraint value grammar (<spanx style="verb">varwof/evidence-v1:freshness:sec:&lt;n&gt;</spanx>,
<spanx style="verb">:consumption:once</spanx>, <spanx style="verb">:quorum:distinct:&lt;n&gt;</spanx>, <spanx style="verb">:exclusion:initiator|executor</spanx>) and
ships a reference implementation and a corpus.</t>

<t>The class is withheld <strong>on principle, not for lack of material</strong>: agreement is
the bar, and the bar is two <em>independent</em> implementations (Section 12 of the principles
document, P12; Section 12 here, "Independence of implementations").  Parity between
implementations that share an author does not meet it.  A second precondition is
stewardship: the evidence-side semantics are the subject of joint review with
EMILIA, so no claim is made ahead of that review.</t>

<t>A future revision that claims CLC-E would carry these obligations, and an
implementation that claims it today MUST:</t>

<t><list style="symbols">
  <t>evaluate the four evidence-side types over eligible evidence facts, returning
a three-valued result (<spanx style="verb">satisfied</spanx> / <spanx style="verb">violated</spanx> / <spanx style="verb">unknown</spanx>) where <spanx style="verb">unknown</spanx> is
never read as satisfied, and report a recognized constraint whose evaluation
belongs to the enforcement point (<spanx style="verb">consumption</spanx>) as <spanx style="verb">unknown</spanx> rather than
satisfied;</t>
  <t>take eligibility from integrity-protected native results only: a fact that did
not reach VERIFIED, or whose protected subject identifier is absent, MUST NOT
be counted for quorum or exclusion;</t>
  <t>implement instance identity and binding (Section 4.2/Section 6.4): an ActionId is the digest
of the JCS canonical serialization of the <strong>declared material projection</strong>, an
undeclared field MUST NOT affect it, a missing declared material field makes the
action non-matchable (never inferred or defaulted), and a comparison across
suites or action types is INDETERMINATE — a mapping problem, never a match —
unless a relying-party-pinned Action-Mapping Profile projects it;</t>
  <t>implement <spanx style="verb">CLC-REQUIREMENT-v1</spanx> as a <strong>closed</strong> object (an undefined member is
rejected) whose expression uses the bounded grammar — <spanx style="verb">AND</spanx>/<spanx style="verb">OR</spanx> with equal
binding strength, evaluated strictly left to right, parentheses as the only
precedence mechanism — and treat an identifier with no eligible component as
false;</t>
  <t>take the requirement from relying-party configuration: a requirement supplied
by the presenter MUST NOT be accepted or weakened;</t>
  <t>pass <spanx style="verb">evidence-vectors.json</spanx> (Section 12 conformance corpora).</t>
</list></t>

<t>An implementation that implements only CLC-A MUST NOT claim CLC-E.  CLC-E does
not add a wire format: carriers that need one (e.g. an Action Evidence Envelope)
profile Section 6.4/Section 10 themselves.</t>

<t><strong>Conformance corpora.</strong>  The suites below are published in the repository
tree pinned as <xref target="CLC-CORPUS"/>; repository paths written as <spanx style="verb">capability/...</spanx>
throughout this document are relative to that pinned tree, so the exact
vectors named here are retrievable.  CLC-A conformance is exercised by two
machine-readable reference suites at
<spanx style="verb">capability/data/_vectors/clc-v1/</spanx>: <spanx style="verb">vectors.json</spanx> — 154 vectors mapped
to Appendix B — and <spanx style="verb">property-cases.json</spanx> — 1184 cases pinning the Section 7
meet-law, identifier narrowing and source-order independence.  Their
syntax is defined by <spanx style="verb">vectors.schema.json</spanx>; <spanx style="verb">offline-vectors.json</spanx> is a
timestamped snapshot mirror.  A conforming implementation MUST pass both
suites.  CLC-D conformance (Section 13) is exercised by <spanx style="verb">containment-vectors.json</spanx> —
64 vectors mapped to Section 13 — together with <spanx style="verb">containment-property-cases.json</spanx>
(784 cases pinning the Section 13.3–Section 13.7 narrowing laws).  <spanx style="verb">containment-crosswalk-vectors.json</spanx>
carries 45 cross-vendor vectors that map six adjacent capability
representations into CLC grants through pinned profiles and assert the
containment verdict the unchanged relation reaches (Appendix C).</t>

<t><strong>Genericity is exercised, not asserted.</strong>  <spanx style="verb">crosswalk-vectors.json</spanx> in the same
directory carries 13 vectors in both directions: 5 that project a CLC decision
into the members an AEB crossing record asks of a native source (the members CLC
can establish, and the ones it explicitly does not), and 8 that map five foreign
capability representations —
OAuth RAR <spanx style="verb">authorization_details</spanx>, an AIC-JWT delegation authorization, an
Action Evidence Graph capability class, a UCAN <spanx style="verb">{with, can}</spanx> capability, and a
delegation chain — into CLC grants through pinned cross-walk profiles and assert
the decision the unchanged core reaches.  A profile is a few lines of mapping
written by whoever owns the foreign format; the core is not modified for any of
them.</t>

<t>The evidence side ships <spanx style="verb">evidence-vectors.json</spanx> in the same directory — 32 vectors covering the four evidence-side constraint types, their
value-grammar rejections, requirement-expression binding, the closed requirement
object, ActionId computation (Section 4.2: declared material projection, undeclared
fields excluded, missing material field non-matchable, suite-tagged identifiers)
and Match verdicts (Section 6.4: <spanx style="verb">MATCH</spanx> / <spanx style="verb">NOT_EQUIVALENT</spanx> / <spanx style="verb">INDETERMINATE</spanx>).  Its
runner ships with the reference implementation (<spanx style="verb">register</spanx>), and its syntax
mirrors <spanx style="verb">vectors.json</spanx>.</t>

<t>Implementations MUST NOT: redefine semantics, accept v1-forbidden
wildcards, or broaden bounds during canonicalization.</t>

<t><strong>Independence of implementations (honest scope).</strong>  The three implementations
named in this repository's README (Go, Python, TypeScript) are <strong>not independent
evidence</strong>: they share an author, and their agreement is a regression test for
the specification, not third-party validation.  An independent implementation is
invited; until one exists, the parity claim in this document is scoped to
"same-author, three languages, one corpus".  Reviewers SHOULD treat a
single-author parity claim as evidence that the text is <em>implementable</em>, not
that it has been independently <em>interpreted</em>.</t>

<t><strong>Participated in the cross-check vs. published here.</strong>  The normative gaps that
this revision closes were found by checking each rule against several
same-author implementations written in different host languages, because a
carrier-specific value model is exactly where a decision rule goes wrong — an
integer that one runtime widens and another refuses, a string comparison that
orders by UTF-16 code units instead of UTF-8 octets.  <strong>Only the three ports
named above are published</strong>, and they run the machine-readable corpora at their
ordinary test entry points.  This document asserts nothing about the behaviour
of any implementation it does not publish: a further same-author port that took
part in the cross-check carries no public conformance claim, and its results are
not part of the parity claim above.  Readers SHOULD evaluate the rules on their
merits — each is anchored to a cited requirement — and not on the number of
ports that happened to surface it.</t>

<t><strong>Experimental neighbours are not CLC.</strong>  The WIT/WPT interop study in
<spanx style="verb">varwof/aic-jwt</spanx> (<spanx style="verb">wit-wpt-interop/</spanx>) is an <strong>experimental</strong> research artifact that
implements a <em>different</em>, wider wildcard surface (<spanx style="verb">**</spanx>, <spanx style="verb">{a,b}</spanx>, <spanx style="verb">[a-z]</spanx>) which
this revision rejects as <spanx style="verb">unsupported_wildcard</spanx> (Section 9.2).  It is not a CLC-A
implementation and MUST NOT be cited as one; it exists to study WIT/WPT
provisioning and carries its own EXPERIMENTAL banner.</t>

<section anchor="language-revision"><name>Language Revision</name>

<t>Every implementation declares a language revision <spanx style="verb">CLC-&lt;major&gt;.&lt;minor&gt;</spanx> —
this document declares <strong><spanx style="verb">CLC-1.19</spanx></strong>.  A capability input (grant,
operation, or OCM) SHOULD carry the revision it was authored against; an
input without a declared revision is treated as <spanx style="verb">CLC-1.0</spanx>.</t>

<t><list style="symbols">
  <t><strong>Compatible reading</strong>: an implementation MAY evaluate an input whose
declared major equals its own AND whose declared minor is ≤ its own
(so an implementation of CLC-1.3 reads a CLC-1.0/1.1/1.2/1.3
input, but not CLC-1.4 or CLC-2.0).</t>
  <t><strong>CLC-1.2 is additive</strong>: it adds the <spanx style="verb">unresolved</spanx> field to the Decision
shape and the <spanx style="verb">invalid_constraint</spanx> reason code without changing v1
verdicts on existing inputs; a CLC-1.1 implementation MAY claim CLC-1.1
against this document but is not CLC-A conformant (Section 12) until it exposes
<spanx style="verb">unresolved</spanx> and rejects non-conforming recognized-type values.</t>
  <t><strong>CLC-1.3 is additive, with one verdict value re-scoped</strong>: it adds the
<spanx style="verb">allow_unresolved</spanx> verdict value, closes the decision loop for residual
obligations, and re-scopes <spanx style="verb">allow</spanx> to mean "fully enforced" only;
<spanx style="verb">allow</spanx>/<spanx style="verb">deny</spanx> outputs on inputs with <strong>no</strong> residual obligations do not
change.  A CLC-1.2 implementation MAY claim CLC-1.2 against this document
but is not CLC-A conformant (Section 12) until it emits the <spanx style="verb">allow_unresolved</spanx>
value and applies the Section 8.1 <spanx style="verb">(scheme,type)</spanx> identity and cross-midnight
window grammar.</t>
  <t><strong>CLC-1.9 is additive</strong>: it adds the containment relation and conformance
class CLC-D (Section 13) without changing any CLC-A verdict, reason code or
vector.  A CLC-1.8 implementation that does not claim CLC-D MAY claim
CLC-1.8 against this document and remains CLC-A conformant; an
implementation that claims CLC-D MUST pass <spanx style="verb">containment-vectors.json</spanx>
(Section 12).</t>
  <t><strong>CLC-1.10 is additive with a minor gate</strong>: it adds the optional
<spanx style="verb">param_bounds</spanx> field and its four reason codes (Section 6.5).  Every input that
declares no <spanx style="verb">param_bounds</spanx> is unchanged, so a CLC-1.10 implementation reads
every CLC-1.x input.  An input that <strong>uses</strong> <spanx style="verb">param_bounds</spanx> MUST declare
CLC-1.10 or later; an implementation that does not implement Section 6.5 MUST refuse
such an input through the minor gate (<spanx style="verb">unsupported_language_revision</spanx>) and
MUST NOT ignore the field — silently dropping bounds would grant more than
the input declares (fail-closed).</t>
  <t><strong>CLC-1.11 is additive</strong>: it adds the <spanx style="verb">Resolve</spanx> function (Section 8.5) and its two
input-error reason codes (<spanx style="verb">invalid_resolution</spanx>, <spanx style="verb">invalid_timestamp</spanx>) without
changing any <spanx style="verb">Authorize</spanx> verdict, reason code or vector.  A CLC-1.10
implementation that does not implement <spanx style="verb">Resolve</spanx> MAY claim CLC-1.10 against
this document and remains CLC-A conformant; <spanx style="verb">Resolve</spanx> is exercised only when a
consumer feeds a decision back, so no input shape is reinterpreted.  A
<spanx style="verb">time:window</spanx> obligation is still delivered as <spanx style="verb">allow_unresolved</spanx> (Section 8.4) — the
core clock evaluator of Section 8.5 runs only inside <spanx style="verb">Resolve</spanx> with a supplied <spanx style="verb">now</spanx>.</t>
  <t><strong>CLC-1.12 is additive</strong>: it adds the derived function <spanx style="verb">ConstraintUnion</spanx>
(Section 7.1) without changing any other relation, verdict, reason code or vector.
The function is exactly the constraint projection of <spanx style="verb">Intersect</spanx> rule 3, so
<spanx style="verb">Intersect</spanx>'s output is unchanged; an implementation that does not implement
<spanx style="verb">ConstraintUnion</spanx> MAY claim CLC-1.11 against this document and remains CLC-A
conformant.</t>
  <t><strong>CLC-1.13 is additive and CLC-D-scoped</strong>: it adds <spanx style="verb">AuthorizeWithChain</spanx>
(Section 13.11), a CLC-D function that fixes the order of <spanx style="verb">Contains</spanx> and
<spanx style="verb">Authorize</spanx> over an effective-chain <spanx style="verb">Intersect</spanx>.  It changes no CLC-A
verdict, reason code or vector; an implementation claiming only CLC-A is
unaffected, and a CLC-D implementation adds it to its CLC-1.9-era
<spanx style="verb">Contains</spanx> surface.</t>
  <t><strong>CLC-1.14 is additive</strong>: it defines the intersection of <spanx style="verb">param_bounds</spanx>
(<spanx style="verb">BoundMeet</spanx>, Section 6.6) so that <spanx style="verb">Intersect</spanx> can combine a grant carrying the
bounds Section 6.5 defines.  It changes no verdict, reason code or vector for an
input without <spanx style="verb">param_bounds</spanx>; it changes the refusal of an input <strong>with</strong>
<spanx style="verb">param_bounds</spanx> from <spanx style="verb">invalid_params_binding</spanx> to the correct meet or empty-meet
result.  An implementation that does not implement Section 6.6 MUST refuse a
<spanx style="verb">param_bounds</spanx> input through the minor gate rather than intersect it wrongly.
<strong>Honest scope of that change (noted in rev CLC-1.15).</strong>  One subset of
inputs does <strong>not</strong> evaluate identically across the CLC-1.10→1.14 minor
range: the inputs that declare <spanx style="verb">param_bounds</spanx> <em>and</em> reach a relation that
meets them — <spanx style="verb">Intersect</spanx> (Section 7) or <spanx style="verb">AuthorizeWithChain</spanx> step 3 (Section 13.11) —
with two or more sources declaring a Bound for the same key.  On that
subset the direction of the change is <strong>deny → allow</strong>: what CLC-1.10–1.13
uniformly refused (<spanx style="verb">invalid_params_binding</spanx>) becomes the correct meet
result (usually an allow-side effective grant); where the meet is empty,
the denial's reason changes from <spanx style="verb">invalid_params_binding</spanx> to <spanx style="verb">no_overlap</spanx>.
Entailment against a single grant (<spanx style="verb">Entails</spanx>/<spanx style="verb">Authorize</spanx>), containment, and
every input without <spanx style="verb">param_bounds</spanx> are verdict-stable across the whole 1.x
range.  The compatible-reading rule above is therefore intact — it governs
<em>readability</em>, not verdict stability — but verdict stability across minor
revisions does not hold for that one subset, and a consumer MUST NOT assume
it.  (Rev CLC-1.15 moves the same subset again, in the opposite direction,
for cross-family meets only; see its entry below.)</t>
  <t><strong>CLC-1.15 is a corrective revision</strong> (review-driven; see the Revision
History): the cross-family <spanx style="verb">numeric ∩ enum</spanx> meet exception of CLC-1.14 is
removed, so every numeric × enum meet refuses with
<spanx style="verb">invalid_params_binding</spanx> in either source order (Section 6.6); enum membership
<spanx style="verb">equal</spanx> is defined as JSON type-sensitive equality (Section 6.5 layer 8);
<spanx style="verb">ConstraintUnion</spanx>'s deterministic ordering is pinned to UTF-8 byte order
(Section 7.1); <spanx style="verb">delegation_mode_not_narrower</spanx> is attributed to the binding
profile's mode pre-check and moved out of the core reason commitments
(Section 13.4.5, Section 13.5, Section 13.6, Section 13.11); <spanx style="verb">Contains</spanx> antisymmetry is stated on
semantic equivalence classes (Section 13.3); and <spanx style="verb">AuthorizeWithChain</spanx> states the
caller's complete-authenticated-root-first-chain obligation (Section 13.11).  It
changes no verdict, reason code or vector for an input without
<spanx style="verb">param_bounds</spanx>.  On the Section 6.6 meet subset the direction <strong>partly reverses</strong>
CLC-1.14: a cross-family <spanx style="verb">numeric × enum</spanx> intersection that CLC-1.14
reduced to a filtered enum — an allow-side effective grant — now refuses
(<strong>allow → deny</strong>, <spanx style="verb">invalid_params_binding</spanx>), because the filtered enum was
broader than either source (Section 6.6); same-family meets are unchanged.  The
same review adjudicated the scalar × <spanx style="verb">nested</spanx> pair (numeric or enum vs.
object, either order) to the same cross-family refusal: that pair was
already denied in CLC-1.14 (as <spanx style="verb">no_overlap</spanx>), so the direction there
changes the <strong>reason code only</strong> (<spanx style="verb">→ invalid_params_binding</spanx>), not the
verdict (Section 6.6, design-notes D12).  The Section 8.4 residual-obligation list and
the <spanx style="verb">Resolve</spanx> output re-use the Section 7.1 UTF-8 byte-order collation; an
implementation whose native default ordering is UTF-16 code-unit order MUST
apply the pinned comparison explicitly.  An implementation that does not
apply this revision MUST declare CLC-1.14 or earlier and let the minor gate
(Section 12.1) resolve any input that relies on the corrected behavior.</t>
  <t><strong>CLC-1.16 is a corrective revision</strong> (cross-port cross-check; see the
Revision History): the I-JSON integer bound (Section 6.2 step 3), leading-BOM
refusal on the raw path (step 8), host numeric-carrier normalization (step
9), the hardened decoded-entry obligation (step 7), the <spanx style="verb">max_rows</spanx> ×
key-closure reconciliation (Section 8.1) and the containment clarifications
(Section 13.4.2 segments-are-not-a-hierarchy, Section 13.4.3 decision table).  <strong>Honest
scope of the verdict changes.</strong>  Two input subsets move against CLC-1.15:
(1) an integer-valued numeric param whose magnitude exceeds 2^53 − 1 was
previously canonicalized to binary64 (rounded) and compared — it is now
refused (<spanx style="verb">invalid_params_number</spanx>), so whatever verdict the rounded
comparison produced becomes a <strong>deny</strong>; (2) raw params text with a leading
UTF-8 BOM was previously implementation-split (an ECMAScript-whitespace trim
accepted it) — it is now uniformly refused, an <strong>allow → deny</strong> for the
trimming implementations.  The Section 8.1 and Section 13.4 additions codify existing
behavior and change no verdict; every other well-formed input is
verdict-stable against CLC-1.15.  An implementation that does not apply this
revision MUST declare CLC-1.15 or earlier and let the minor gate resolve an
input that relies on the corrected boundaries.</t>
  <t><strong>CLC-1.17 is a corrective revision</strong> (numeric-corner closeout; see the
Revision History): Section 6.2 step 3 is restated so the <strong>I-JSON integer bound is
judged on the mathematical value</strong> of the received token — an integer-valued
number outside <spanx style="verb">[−(2^53 − 1), 2^53 − 1]</spanx> is refused whether or not binary64
represents it exactly (<spanx style="verb">9007199254740992</spanx> is exactly representable but
refused; <spanx style="verb">1e100</spanx> is not exactly representable and is also refused), correcting
a CLC-1.16 justification that had said such a number "has no exact IEEE-754
binary64 representation".  Step 3 additionally states that <strong>number identity
is the JSON number, not its spelling</strong> (<spanx style="verb">-0</spanx> ≡ <spanx style="verb">0</spanx>, <spanx style="verb">1e3</spanx> ≡ <spanx style="verb">1000</spanx>,
<spanx style="verb">1.5e-3</spanx> ≡ <spanx style="verb">0.0015</spanx>) and pins a non-integer token of ≤ 17 significant digits
to its IEEE-754 binary64 value.  <strong>Honest scope: no verdict changes.</strong>  Every
clause restates behavior CLC-1.16 already introduced (Section 6.2 steps 1 and 3), so
no verdict, reason code or vector moves for any input a CLC-1.16
implementation evaluates; the revision exists because the restatement is
normative text and the corpus gains the corner pins.  Corpus: 146 → 154
vectors (<spanx style="verb">params-063</spanx>–<spanx style="verb">params-070</spanx>, kind=entail, tagged CLC-1.17) and
<spanx style="verb">param-bounds-vectors.json</spanx> 43 → 49 (<spanx style="verb">pb-044</spanx>–<spanx style="verb">pb-049</spanx>).  The <xref target="RFC7493"/>
citation is corrected to Section 2.2.</t>
  <t><strong>CLC-1.18 is additive</strong> (binding-profile contract completion; see the
Revision History): Section 13.8.1 gains two profile obligations — a profile that
performs a chain check MUST <strong>declare its transitivity basis</strong>
(definition-derived, mechanically-checkable or asserted, with the finite
domain and deterministic procedure stated for the second), and a profile MUST
NOT <strong>report a union axis as a containment result</strong>.  New Section 13.9.7 is
informative and records how a carrier's own decision states map onto the three
CLC verdicts and the <spanx style="verb">Resolve</spanx> values.  Section 11 adds the evidence-side counterpart:
a <strong>relation between two artifacts is not expressible</strong>, so a carrier either
normalizes it into a fact that its own verifier establishes or enforces it
outside the projection, and the presence of both endpoints is never the
relation.  The profile obligations are on <em>profiles</em>, not on the core relation:
<spanx style="verb">Contains</spanx> remains a per-pair predicate that claims no transitive closure and
reads no constraint, so <strong>no CLC-A verdict, reason code or vector changes</strong> and
a CLC-1.17 implementation stays CLC-A conformant
(it loses only the ability to <em>claim</em> the new profile obligations for a
profile it publishes).  A carrier profile written against Section 13.8.1 before this
revision MUST either add the two declarations or state that it is not
claiming a chain check.</t>
  <t><strong>CLC-1.19 is additive with a minor gate</strong>: it adds the <strong>scheme
declaration</strong> (Section 6.7) and four declared domains (<spanx style="verb">quantity</spanx>,
<spanx style="verb">decimal-string</spanx>, <spanx style="verb">subdomain</spanx>, <spanx style="verb">path-prefix</spanx>), plus the two reason codes
they need (<spanx style="verb">unit_mismatch</spanx>, <spanx style="verb">unsupported_domain</spanx>).  A parameter with no
declaration keeps the shape-inferred domain, so every CLC-1.18 input is
unchanged; an input that relies on a declared domain MUST declare CLC-1.19
or later, and an implementation that does not implement Section 6.7 refuses it
through the minor gate (<spanx style="verb">unsupported_language_revision</spanx>) rather than
evaluating it under the shape rule.  <strong>No CLC-A verdict, reason code or
vector changes for an input without a declaration.</strong></t>
  <t><strong>CLC-A conformance and the minor gate are the two sides of one rule.</strong>
Claiming CLC-A (this section) means implementing the CLC-A-relevant
semantics of the revision claimed — so an implementation that advertises
<spanx style="verb">CLC-1.19</spanx> MUST implement <spanx style="verb">param_bounds</spanx> (grammar and the Section 6.6 meet), <spanx style="verb">Resolve</spanx>, <spanx style="verb">ConstraintUnion</spanx> and
the Section 6.2 canonicalization, not merely tolerate their inputs.  The minor gate
is the complement for an implementation that <strong>lags</strong>: it declares an older
revision and refuses any input that uses a field or function introduced
after it.  The two MUST agree — an implementation MUST NOT claim a revision
higher than it implements (which would silently evaluate newer inputs), nor
claim CLC-A while refusing a well-formed input of its own declared revision.</t>
  <t><strong>Incompatible reading MUST fail closed</strong> with
<spanx style="verb">deny("unsupported_language_revision")</spanx>.  An implementation MUST NOT
silently evaluate under a different revision — no downgrade, no
warning-then-allow.</t>
  <t>The revision check resolves <strong>before any Section 9.1 layer</strong> and yields the
single resolved reason code <spanx style="verb">unsupported_language_revision</spanx>.</t>
</list></t>

<t>Vectors: <spanx style="verb">revision-001</spanx> (input CLC-1.0 against an implementation declaring
CLC-1.3 → eval normally, allow); <spanx style="verb">revision-002</spanx> (input CLC-2.0 → deny
<spanx style="verb">unsupported_language_revision</spanx>).</t>

</section>
</section>
<section anchor="delegation-containment"><name>Delegation Containment</name>

<t>This section defines <strong>containment</strong>, the third grant-level relation of CLC-v1
alongside entailment (Section 6.1) and intersection (Section 7), and the conformance class
<strong>CLC-D</strong> that exercises it.  It is additive: it changes no CLC-A verdict,
reason code or vector, and a CLC-A implementation that does not claim CLC-D is
unaffected.  It was folded into this document from the formerly separate
containment extension, which is retired.</t>

<section anchor="motivation"><name>Motivation</name>

<t>The two relations the core defines answer different questions:</t>

<t><list style="symbols">
  <t><strong>Entailment</strong> (Section 6.1): does an <em>operation</em> fit inside a <em>grant</em>?</t>
  <t><strong>Intersection</strong> (Section 7): what is the effective set when several grants cover one
authority?</t>
</list></t>

<t>Neither answers the question a delegation chain asks of every hop: <strong>is the
child's <em>declared</em> grant inside the parent's <em>declared</em> grant?</strong>  Intersection
delivers a set that is necessarily common to the sources, but a result fitted to
two grants proves nothing that one of the grants' boundaries would not also
authorize on its own — it reasons about the <em>combined set</em>, not about a <em>child</em>
that must be a subset of a <em>specific parent</em>.</t>

<t>The AIC ecosystem needs the child-parent question at two concrete boundaries:</t>

<t><list style="numbers" type="1">
  <t><strong>Delegation</strong> (<spanx style="verb">DelegationAuthTBS</spanx> vs. a principal's grant): a sub-agent's
requested capabilities, constraints and delegation mode must lie inside what
the principal authorized.  Without a shared relation this obligation is the
<em>profile's</em> job and is re-implemented per profile, so two profiles can differ
on the same sub-agent grant.</t>
  <t><strong>Publication bound</strong> (rule signing): a rule a certificate holder publishes
must not exceed the holder's own grant.  This section states the general
relation; <spanx style="verb">register/ruleexec</spanx> already applies the same idea in one instance
(<spanx style="verb">RuleWithinSignerGrant</spanx>), and is a candidate early adopter.</t>
</list></t>

<t>Containment is intentionally <strong>additive, not a CLC-v2 feature</strong>: it does not
change any CLC-A verdict, does not touch the CLC-A corpus, and can be adopted by
any implementation that claims CLC-A without breaking compatible reading of
existing inputs.</t>

</section>
<section anchor="terminology-and-notation"><name>Terminology and Notation</name>

<t>Grant and Operation are as defined in Section 2/Section 5 (identifier per Section 3, parameters per
Section 6.2, constraints per Section 8).  <spanx style="verb">Contains(GP, GC)</spanx> names the relation parent <spanx style="verb">GP</spanx>
× child <spanx style="verb">GC</spanx>.</t>

<t><list style="symbols">
  <t><strong>Declared set</strong> — the parameters a grant carries as constraints on
operations (Section 6.2 value semantics: numbers bind as upper bounds, arrays as
membership sets, objects recursively per key, explicit empty <spanx style="verb">[]</spanx>/<spanx style="verb">{}</spanx> deny
the class, <spanx style="verb">{}</spanx>≡absent).</t>
  <t><strong>Bound</strong> — a declared constraint value as interpreted by Section 6.2/Section 8.1 value
semantics.</t>
  <t><strong>Narrower</strong> — a child grant is narrower than its parent when every value it
declares is within the parent's declared bounds and its key set is closed by
the parent's.  Where the carrier defines a delegation mode, the child's mode
must not widen the parent's either — that half is the binding profile's
pre-check, not part of the language relation (Section 13.4.5).</t>
  <t><strong>Mode lattice</strong> — an abstract carrier-defined order over delegation modes,
exercised by the binding profile's pre-check (Section 13.4.5), never by <spanx style="verb">Contains</spanx>;
the AIC-JWT ordering is pinned in Section 13.8.</t>
</list></t>

</section>
<section anchor="relation-signature"><name>Relation Signature</name>

<figure><artwork>
Contains(GP: Grant, GC: Grant) -&gt; ContainmentResult

ContainmentResult = {        // JSON object (not ASN.1)
  "contains": &lt;boolean&gt;,     // false &lt;=&gt; one of the Section 13.4 layers failed
  "reason":   &lt;string&gt;       // resolved reason code (core Section 9.2 code)
}
</artwork></figure>

<t><list style="symbols">
  <t><spanx style="verb">contains</spanx> is <spanx style="verb">true</spanx> <strong>only when</strong> every layer of Section 13.4 passes.</t>
  <t><spanx style="verb">reason</spanx> on success is empty; on failure it carries the <strong>first failing
layer's</strong> reason code, per Section 13.4 layer order (deterministic: input order of the
two grants never influences which layer reports first).</t>
  <t>The relation is <strong>antisymmetric on semantic equivalence classes</strong>, not on
Grant objects: <spanx style="verb">Contains(A,B)</spanx> and <spanx style="verb">Contains(B,A)</spanx> both hold exactly when A
and B fall in the same class — they denote the same identifier coverage,
the same declared parameter key set and the same bounds under the Section 6.2/Section 6.5
value semantics, with surface-equivalent spellings identified (<spanx style="verb">params:{}</spanx>
≡ absent, Section 6.2).  Two syntactically different Grant objects in one class
(an equivalence, not an identity of JSON text) therefore contain each other;
containment of grants in two <em>distinct</em> classes in both directions is a
contradiction and MUST NOT be reported.  Delegation modes are not part of
the relation (Section 13.4.5), so mode equality is neither required nor observable
here — where a carrier binds modes, the profile's pre-check owns that
comparison.</t>
</list></t>

</section>
<section anchor="containment-algorithm"><name>Containment Algorithm</name>

<t>The relation resolves layers strictly in order; the first failure determines
the reason code.  Every layer is fail-closed: any doubt yields <spanx style="verb">false</spanx>.</t>

<section anchor="layer-1-grant-validity"><name>Layer 1: Grant validity</name>

<t><list style="symbols">
  <t>If a grant identifier is malformed per Section 3, <spanx style="verb">Contains</spanx> returns
<spanx style="verb">false</spanx> with the matching CLC-A syntax code (<spanx style="verb">invalid_capability_id</spanx> /
<spanx style="verb">missing_capability_id</spanx>).  Validation errors are reused from the core,
not re-invented.</t>
  <t>If <spanx style="verb">GC.Params</spanx> violates the grant-side parameter grammar (Section 6.2), the child is
not a valid grant and <spanx style="verb">Contains</spanx> yields <spanx style="verb">false</spanx>
(<spanx style="verb">invalid_params_&lt;n&gt;</spanx> codes as in the core).</t>
  <t>An invalid parent grant also yields <spanx style="verb">false</spanx>: a boundary that cannot itself be
evaluated must not authorize a child.</t>
</list></t>

</section>
<section anchor="layer-2-identifier-coverage"><name>Layer 2: Identifier coverage</name>

<t>The child identifier must be covered by the parent identifier using <strong>exactly
the CLC-v1 path-coverage relation</strong> (the rules <spanx style="verb">Entails</spanx> applies to identifiers,
Section 6.1/Section 6.3, with parameters excluded — the identical keyset empty-object edge is
not relevant here because parameters are excluded from this layer by
construction):</t>

<t><list style="symbols">
  <t>same namespace (<spanx style="verb">scheme:action-class</spanx>) — else <spanx style="verb">different_namespace</spanx>;</t>
  <t>same segment depth with equal literal segments, OR parent trailing <spanx style="verb">*</spanx>
wildcard covering the child's trailing segments ("*" matches one or more
segments, never zero) — else <spanx style="verb">child_exceeds_parent</spanx>.</t>
</list></t>

<t>Mid-identifier wildcards remain <spanx style="verb">unsupported_wildcard</spanx> per Section 3: this section does
not enlarge the v1 wildcard surface.</t>

<t><strong>Segments are not a hierarchy.</strong>  The <spanx style="verb">:</spanx>-separated segments of an identifier
read like a path, but coverage here is only segment equality or the trailing
wildcard — a <em>prefix</em> relation between segments confers nothing.
<spanx style="verb">Contains(std/database-v1:query, std/database-v1:query:SELECT)</spanx> fails at this
layer with <spanx style="verb">child_exceeds_parent</spanx> (the child is deeper and the parent carries
no wildcard), and the reverse order fails the same way: two identifiers of
different segment depth cover each other only through a wildcard.  The
relation between an action <em>class</em> and an action inside it is established
outside this relation — by whatever declares action relations (an action type
definition) — never inferred from the identifier text.  A caller building a
delegation chain obtains coverage only from an explicit parent trailing
wildcard (<spanx style="verb">std/database-v1:query:*</spanx> covers <spanx style="verb">std/database-v1:query:SELECT</spanx>),
never from a shared prefix.</t>

</section>
<section anchor="layer-3-parameter-narrowing"><name>Layer 3: Parameter narrowing</name>

<t>Every parameter the child declares must be <em>within</em> the parent's declared
bounds, using the Section 6.2 value-subset semantics, <strong>and the key sets must be
identical</strong> (symmetric closure).  The child and parent key sets are each the
union of <spanx style="verb">params</spanx> and <spanx style="verb">param_bounds</spanx> keys (Section 6.5):</t>

<t><list style="symbols">
  <t><strong>number (from <spanx style="verb">params</spanx>)</strong>: child value ≤ parent bound (upper bound only in
<spanx style="verb">params</spanx>; richer bounds are expressed in <spanx style="verb">param_bounds</spanx>, below);</t>
  <t><strong>string / boolean</strong>: exact equality with the parent's value;</t>
  <t><strong>array (enum)</strong>: every child element must equal a member of the parent's set;
a child empty array inside a non-empty parent enum is vacuously within it
(child denotes "nothing", which is inside anything) — but a <strong>parent</strong> empty
set denies the class (deny-when-declared), and a child empty set under a
parent empty set is therefore <spanx style="verb">false</spanx> (<spanx style="verb">params_not_narrower</spanx>): the class is
denied, not "narrowed to nothing";</t>
  <t><strong>object</strong>: recursion per shared key, with the same symmetric key closure at
every depth (a child object may not add a key the parent object does not
declare, and may not omit one the parent declares);</t>
  <t><strong><spanx style="verb">param_bounds</spanx> bound (Section 6.5)</strong>: for a key with a Bound on the parent's side,
the child's Bound for that key must be within it — a numeric family bound must
have <spanx style="verb">min</spanx> raised or equal and <spanx style="verb">max</spanx> lowered or equal (<spanx style="verb">min_child ≥ min_parent</spanx>
/ <spanx style="verb">max_child ≤ max_parent</spanx>, and the child MUST declare a <spanx style="verb">min</spanx>/<spanx style="verb">max</spanx> the parent
declares), a <spanx style="verb">step</spanx> must be an integer multiple of the parent's <spanx style="verb">step</spanx> (a
coarser-or-equal grid whose values are a subset of the parent's allowed
values), an <spanx style="verb">enum</spanx> family must be a subset with <spanx style="verb">min_items</spanx>/<spanx style="verb">max_items</spanx>
tightened or equal, and a <spanx style="verb">nested</spanx> bound recurses.  A parent key that is
required (<spanx style="verb">optional</spanx> absent or <spanx style="verb">false</spanx>) forces the child's key to be required;
a child MAY keep an optional key optional or make it required, but MUST NOT
turn a required parent key optional.  A child Bound that adds a family the
parent does not declare, or omits a bound the parent declares, is
<spanx style="verb">params_not_narrower</spanx> (the child would allow a value the parent denies);</t>
  <t><strong>key closure</strong>: the child key set MUST equal the parent key set, both ways.
A child that omits a parent-declared key would allow operations the parent
denies (the missing key is <spanx style="verb">params_missing</spanx> in entailment); a child that adds
a key the parent does not declare allows operations the parent denies
(<spanx style="verb">undeclared_param</spanx>).  Either failure is <spanx style="verb">params_not_narrower</spanx>.  This is the
same symmetric closure Section 6.2 layer 7 applies to an operation vs. a grant,
carried over to grant-vs-grant comparison;</t>
  <t><strong>extra rule</strong>: the parent's <spanx style="verb">{}</spanx> (or absent) params object is unconstrained
and contains any child params; a child <spanx style="verb">{}</spanx> under a <em>bounded</em> parent is
<spanx style="verb">false</spanx> (<spanx style="verb">params_not_narrower</spanx>) — declaring nothing is not the same as
declaring a subset of the parent's bounds.</t>
</list></t>

<t><strong>Decision procedure.</strong>  The rules above reduce to one table; presence is
decided first (Section 6.5's four layers), then the key sets, then the per-key values.
The table is normative over any prose reading:</t>

<texttable>
      <ttcol align="left">parent params/param_bounds</ttcol>
      <ttcol align="left">child</ttcol>
      <ttcol align="left">layer-3 result</ttcol>
      <c>absent or <spanx style="verb">{}</spanx></c>
      <c>absent or <spanx style="verb">{}</spanx></c>
      <c>contains — decided by the identifier layer alone</c>
      <c>absent or <spanx style="verb">{}</spanx></c>
      <c>present</c>
      <c>contains — an unconstrained parent contains any child params</c>
      <c>present</c>
      <c>absent or <spanx style="verb">{}</spanx></c>
      <c><spanx style="verb">params_not_narrower</spanx> — declaring nothing is not a subset of declared bounds</c>
      <c>present</c>
      <c>present, child key set <strong>equal</strong> to the parent's</c>
      <c>contains iff every child value is within the parent's value for that key (rules above)</c>
      <c>present</c>
      <c>present, key sets differing in <strong>either</strong> direction</c>
      <c><spanx style="verb">params_not_narrower</spanx> — a key the child omits would allow operations the parent denies (<spanx style="verb">params_missing</spanx> in entailment); a key the child adds would allow operations the parent denies (<spanx style="verb">undeclared_param</spanx>)</c>
</texttable>

<t>Both shorthand readings of "narrower" are wrong and are refused here: <em>fewer
keys</em> is not narrower (a child that omits a parent-declared key lifts the
parent's bound on it), and <em>more keys</em> is not narrower either (an extra
declared key looks more constrained on the child's own operations, but
containment asks whether every operation the <strong>child</strong> authorizes is one the
<strong>parent</strong> authorizes — and an operation carrying the child's added key is
<spanx style="verb">undeclared_param</spanx> at the parent).  Key-set <strong>equality</strong> (the symmetric closure
above) is the only shape that passes layer 3, decided before any per-key value
comparison.</t>

<t>The presence semantics match Section 6.2 exactly: a grant (parent or child) whose
params are present-but-empty <spanx style="verb">{}</spanx> is unconstrained, identical to an absent
params object (Section 9.2/Section 6.2).</t>

<t>Where a <strong>scheme declaration</strong> (Section 6.7) names a domain for a key, the per-key
value comparison is made under the <strong>parent's</strong> declared domain: <spanx style="verb">quantity</spanx>
compares normalized values of the same unit, <spanx style="verb">decimal-string</spanx> compares value
spaces, <spanx style="verb">subdomain</spanx> compares label suffixes and <spanx style="verb">path-prefix</spanx> compares segment
boundaries.  If the two sides declare <strong>different</strong> domains for the same key,
the pair is not comparable and layer 3 fails closed with
<spanx style="verb">params_not_narrower</spanx> — a child is never narrower merely because it states a
different domain.</t>

</section>
<section anchor="constraints-are-outside-the-relation"><name>Constraints are outside the relation</name>

<t>Constraints are <strong>not</strong> part of <spanx style="verb">Contains</spanx>.  A grant carries constraints (Section 8),
but they are a separate axis with a different composition rule:</t>

<t><list style="symbols">
  <t><strong>Constraints compose by union (conjunction), not by subset.</strong>  Along a
delegation chain the effective constraint set is the <em>union</em> of every link's
constraints (Section 7 <spanx style="verb">Intersect</spanx> already unions them).  A child therefore
need not re-declare its parent's constraints, and adding or tightening a
constraint only narrows.</t>
  <t><strong><spanx style="verb">Contains</spanx> compares identifier and parameters only.</strong>  It does not read,
compare, or validate the <spanx style="verb">constraints</spanx> field: a constraint difference never
changes the <spanx style="verb">Contains</spanx> verdict.</t>
  <t><strong>Constraint grammar and evaluation stay where they already are.</strong>  Whether a
constraint identity is recognized, whether its value is in grammar, and
whether an operation satisfies it are the CLC-A concern of the consumer and
<spanx style="verb">Intersect</spanx>/the decision function (including the <spanx style="verb">allow_unresolved</spanx>
residual-obligation channel, Section 8.4).  This section neither re-decides nor
weakens them.</t>
</list></t>

<t>Consequences a reviewer should take as intended: <spanx style="verb">Contains(P, C)</spanx> does <strong>not</strong>
by itself assert that <spanx style="verb">C</spanx>'s operation set is inside <spanx style="verb">P</spanx>'s when constraints are in
play — the parent's constraints are carried forward by the chain's union
(<spanx style="verb">Intersect</spanx>), and a consumer that uses <spanx style="verb">Contains</spanx> as its <em>only</em> gate must
compose the chain's intersections as well (Section 13.8).  This is the honest reading:
containment is a relation over the declared <strong>identifier and parameter</strong>
boundary, and constraints are enforced by the union, not by this relation.</t>

</section>
<section anchor="delegation-mode-lattice-binding-profile-pre-check"><name>Delegation-mode lattice (binding-profile pre-check)</name>

<t>Where a carrier defines a delegation mode, the child's mode must not widen the
parent's.  This check is a <strong>required binding-profile pre-check</strong>, not a layer
of the language relation: as with constraints (Section 13.4.4), mode is a
carrier-level concept — Grant values carry no mode, and the relation
<spanx style="verb">Contains(GP, GC)</spanx> takes no mode argument, so a core <spanx style="verb">Contains</spanx> verdict can
never express a mode decision.  A binding profile (Section 13.8.1) that maps a
mode-carrying carrier MUST run the mode-lattice check itself, before or
alongside each <spanx style="verb">Contains</spanx> call, and MUST report
<spanx style="verb">delegation_mode_not_narrower</spanx> <strong>from the profile</strong> when the child's mode
widens the parent's; it MUST NOT rely on <spanx style="verb">Contains</spanx> for that check and MUST
NOT present a <spanx style="verb">Contains</spanx> verdict as evidence that the mode narrowed.  The
lattice order is carrier-defined (CLC-D does not invent modes); the AIC-JWT
order is <spanx style="verb">authorized &lt; representative</spanx> — a child may be <spanx style="verb">authorized</spanx> under a
<spanx style="verb">representative</spanx> parent, never the reverse.  A carrier without a mode concept
has no pre-check to run.</t>

</section>
</section>
<section anchor="reason-codes"><name>Reason Codes</name>

<t>CLC-D registers exactly three child-level reason codes; <strong>two of them are
returned by the relation</strong>, and everything else a <spanx style="verb">Contains</spanx> result carries
reuses CLC-A codes.  The third is produced only by the binding-profile
delegation-mode pre-check (Section 13.4.5): the relation takes no mode argument and
MUST NOT return it.  An implementation MAY collapse <spanx style="verb">child_exceeds_parent</spanx>
for identifier failures into the core's <spanx style="verb">capability_not_authorized</spanx> at a
boundary that must not reveal policy shape (Section 11), but MUST NOT collapse
<spanx style="verb">params_not_narrower</spanx>; a profile that maps a mode-carrying carrier MUST NOT
collapse <spanx style="verb">delegation_mode_not_narrower</spanx> either.</t>

<texttable>
      <ttcol align="left">Code</ttcol>
      <ttcol align="left">Produced by</ttcol>
      <ttcol align="left">Meaning</ttcol>
      <c><spanx style="verb">child_exceeds_parent</spanx></c>
      <c><spanx style="verb">Contains</spanx>, layer 2 (Section 13.4.2)</c>
      <c>child identifier not covered by parent identifier</c>
      <c><spanx style="verb">params_not_narrower</spanx></c>
      <c><spanx style="verb">Contains</spanx>, layer 3 (Section 13.4.3)</c>
      <c>a child parameter is not within the parent's declared bounds / key set</c>
      <c><spanx style="verb">delegation_mode_not_narrower</spanx></c>
      <c>binding-profile pre-check (Section 13.4.5) — never by <spanx style="verb">Contains</spanx></c>
      <c>child delegation mode (a carrier concept) widens the parent's</c>
</texttable>

<t>There is deliberately no constraint reason code: constraints are not part of the
relation (Section 13.4.4).</t>

</section>
<section anchor="conformance-class-clc-d"><name>Conformance Class CLC-D</name>

<t><strong>CLC-D</strong> is an optional conformance class stacked on CLC-A.  A conforming
implementation:</t>

<t><list style="symbols">
  <t>MUST implement <spanx style="verb">Contains</spanx> (Section 13.4) and the relation's two Section 13.5 reason codes,
and pass the CLC-D corpus (Section 13.7); where the implementation also ships a
binding profile for a mode-carrying carrier, that profile owns the
<spanx style="verb">delegation_mode_not_narrower</spanx> pre-check (Section 13.4.5);</t>
  <t>MUST (rev CLC-1.13) implement <spanx style="verb">AuthorizeWithChain</spanx> (Section 13.11) and pass the
<spanx style="verb">authorize-chain-vectors.json</spanx> corpus, so the one-call chain check is exercised
by the same class that owns containment;</t>
  <t>MUST NOT alter any CLC-A verdict, reason code, or the CLC-A corpus — this
section is strictly additive;</t>
  <t>MUST treat containment as <strong>declared-set comparison</strong>: it declares no
consequence about execution lifecycle, time windows after the fact, or
post-hoc bounds; where a binding profile cannot establish containment at
delegation time, the profile MUST NOT authorize.</t>
</list></t>

<t>An implementation claiming CLC-A does <strong>not</strong> claim CLC-D.  A delegation profile
(a binding profile (Section 13.8), an AIC-JWT DA validator, a certificate-issuance
stack) that needs the boundary check SHOULD require CLC-D of the module it
delegates to, and MUST NOT substitute intersection (Section 7) for containment.</t>

<t><strong>Implementation status (single-author parity).</strong>  <spanx style="verb">Contains</spanx> is implemented in
all three reference implementations (Go: <spanx style="verb">register/semantics.Contains</spanx>;
Python: <spanx style="verb">aic-capability-demo/clc_semantics.py contains</spanx>; TypeScript:
<spanx style="verb">ts/clc_semantics.ts contains</spanx>) and mirrors the cases this section pins.
Agreement between implementations that share an author is a regression test for
this text, not independent validation — the Section 12 honesty rule applies unchanged
to CLC-D (see Section 13.7).</t>

</section>
<section anchor="corpus"><name>Corpus</name>

<t>Because CLC-D is a new relation, its corpus is new and independent of the CLC-A
suites (<spanx style="verb">vectors.json</spanx> / <spanx style="verb">property-cases.json</spanx> / <spanx style="verb">crosswalk-vectors.json</spanx> /
<spanx style="verb">evidence-vectors.json</spanx>).  The corpus ships as
<spanx style="verb">capability/data/_vectors/clc-d/containment-vectors.json</spanx> (<strong>64</strong> vectors) and a
forward-closure property file
<spanx style="verb">capability/data/_vectors/clc-d/containment-property-cases.json</spanx> (<strong>784</strong> cases
× 39 shared operations, generated by
<spanx style="verb">capability/scripts/gen-contain-property-cases.py</spanx>), plus a cross-walk corpus
<spanx style="verb">capability/data/_vectors/clc-d/containment-crosswalk-vectors.json</spanx> (<strong>45</strong>
vectors) that maps a carrier's native representation (AIC-JWT DA, OAuth RAR,
UCAN, delegation chain, and the adjacent agent drafts ATN, AAT, AIP, AAE, AOA,
AEGIS) to a grant on each side and asserts <spanx style="verb">Contains</spanx> (Section 13.9.3).  Rev CLC-1.13
adds <spanx style="verb">capability/data/_vectors/clc-d/authorize-chain-vectors.json</spanx> (<strong>15</strong>
vectors) pinning the fused <spanx style="verb">AuthorizeWithChain</spanx> relation (Section 13.11).
The vectors cover:</t>

<t><list style="symbols">
  <t><strong>identifier coverage</strong> (layer 2): trailing-wildcard coverage, namespace
mismatch, depth mismatch, same-length literal mismatch, <spanx style="verb">unsupported_wildcard</spanx>
kept stable, wildcard-requires-a-trailing-segment;</t>
  <t><strong>parameter narrowing</strong> (layer 3): number upper bound at/under/over, enum
subset / element-absent / scalar-member, empty child enum under non-empty
parent, parent empty set deny-class, key-closure violation in both directions
(child omits, child adds), nested object recursion and nested key closure,
child <spanx style="verb">{}</spanx> under bounded parent, child <spanx style="verb">null</spanx> (layer-1 grammar), unconstrained
parent <spanx style="verb">{}</spanx>;</t>
  <t><strong>constraint non-participation</strong> (Section 13.4.4): a tighter, wider, added, dropped,
or differently-identified child constraint, and a child constraint the parent
lacks — every one MUST leave the verdict unchanged (all assert <spanx style="verb">contains</spanx>);</t>
  <t><strong>validity</strong> (layer 1): malformed parent/child identifiers, <spanx style="verb">null</spanx> params;</t>
  <t><strong>symmetry</strong>: both-directions containment identity, antisymmetry probe pair
(contain-040/041), a fully-narrower combined grant.</t>
</list></t>

<t>The <strong>delegation-mode lattice</strong> is <em>not</em> part of the language-level corpus: the
relation <spanx style="verb">Contains(GP, GC)</spanx> takes no mode, so a profile that binds a carrier
mode (the AIC-JWT DA validator, Section 13.8) exercises it itself.  The language corpus
therefore ships no mode vectors; a carrier adopting CLC-D MUST add mode vectors
to its own profile corpus.</t>

<t>The <strong>property</strong> the property corpus checks is <em>forward closure</em>: for every
(parent P, child C) and every operation <spanx style="verb">o</spanx> in the shared sample,
<spanx style="verb">Contains(P, C)</spanx> MUST NOT raise, and
<spanx style="verb">Contains(P, C) ∧ Entails(C, o) ⟹ Entails(P, o)</spanx>.  This is the declared-set
consequence that makes a delegation boundary sound, and the reason the Section 13.5
collapse of layer-2 failures into <spanx style="verb">child_exceeds_parent</spanx> cannot weaken the
boundary.  On the shipped corpus the Go and Python/TS runs report the same
120 contained pairs and 30576 operation checks with zero violations.</t>

<t>The parity bar and the "independence of implementations" honesty rule of Section 12
apply unchanged to CLC-D: until two <em>independent</em> implementations agree, the
corpus is evidence that this text is implementable, not that it has been
independently interpreted.</t>

</section>
<section anchor="aic-jwt-aic-certificate-binding"><name>AIC-JWT / AIC Certificate Binding</name>

<t>This subsection is a <em>cross-walk profile of the relation</em>, not part of the
language.  It covers the X.509 AIC model <xref target="AIC"/> and its JWT representation
<xref target="AIC-JWT"/>.  At the AIC delegation boundary the parent grant is produced from
the principal's authorization and the child grant from the
<spanx style="verb">DelegationAuthTBS</spanx>/AIC-JWT DA capabilities:</t>

<t><list style="symbols">
  <t><strong>Parent grant</strong> <spanx style="verb">GP</spanx>: the principal's capability entry (scheme:id params),
plus principal-level <spanx style="verb">authorizationConstraints</spanx> projected as parent
constraints, plus the principal's own delegation mode.</t>
  <t><strong>Child grant</strong> <spanx style="verb">GC</spanx>: the sub-agent's requested capability
(<spanx style="verb">Capability.SchemeId:CapabilityId</spanx>, <spanx style="verb">Parameters</spanx>), its <spanx style="verb">authorizationConstraints</spanx>,
and its <spanx style="verb">DelegationMode</spanx>.</t>
  <t><strong>Boundary result</strong>: <spanx style="verb">P_effective = P_principal ∩ C_agent ∩ P_gateway</spanx>
keeps its intersection meaning — intersection determines the
<em>effective</em> set; containment (Section 13.4) is the <em>per-child</em> admission predicate
that runs before the intersection is composed, on each
(parent-capability, child-capability) pair.  The child's constraints are <strong>not</strong>
compared by containment; they are carried forward by the intersection's union
(Section 13.4.4), so the principal's constraints remain in force in <spanx style="verb">P_effective</spanx>.</t>
  <t>A sub-agent that requests a capability the principal did not grant fails at
layer 2 (<spanx style="verb">child_exceeds_parent</spanx>); a sub-agent whose requested params exceed the
principal's declared bounds fails at layer 3; a sub-agent that widens the
carrier's delegation mode fails the lattice (Section 13.4.5).  Binding profiles MUST
surface the <spanx style="verb">reason</spanx> code into their audit trail, and MUST compose the
intersection so the principal's constraints stay in force.</t>
</list></t>

<section anchor="profile-contract-for-any-binding-profile"><name>Profile contract (for any binding profile)</name>

<t>A <strong>binding profile</strong> maps a carrier's native authorization structure to the CLC
grants <spanx style="verb">Contains</spanx> compares (Section 13.9.3).  The profile is the carrier's, not the
language's (a carrier's field names appear in its own profile, never in the
language text).  Because every Section 13.9.3 mapping is a profile, this subsection
states the obligations a conforming profile carries.  It adds no CLC-A or CLC-D
verdict and changes no relation.</t>

<t><list style="numbers" type="1">
  <t><strong>Resolve the carrier's own inheritance and defaults before mapping.</strong>  The
language has no inheritance, no default values and no "absent means inherit"
rule (Section 13.10.1).  A carrier that resolves an absent dimension against an
ancestor (AIP Section 4.4) MUST do so in the profile and emit the <em>resolved</em> declared
set.  <spanx style="verb">Contains</spanx> is defined over the grants the profile emits, so an
unresolved default is a profile defect, not a containment result.</t>
  <t><strong>Preserve every identity dimension the carrier treats as identity.</strong>  If the
carrier treats two artifacts with the same name but different metadata as
distinct capabilities (ATN Section 9.1: same <spanx style="verb">id</spanx>, different <spanx style="verb">schema.digest</spanx>), the
profile MUST carry that metadata into the mapped grant — here, a trailing
identifier segment — so a mismatch fails closed.  A profile MUST NOT drop an
identity dimension and then compare the artifacts as equal.</t>
  <t><strong>Residualize semantics the relation cannot see; never drop them silently.</strong>
Dimensions the mapped grant has no field for (AEGIS <spanx style="verb">allowed_roles</spanx>,
<spanx style="verb">environment</spanx>, <spanx style="verb">risk_level</spanx>; AAE <spanx style="verb">validity</spanx>) are not compared by <spanx style="verb">Contains</spanx>.
The profile either models them in its own document and enforces them outside
the relation, or declares them out of scope — but it MUST NOT report
containment as if they had been checked (fail-closed: what the relation
cannot see, it does not permit).</t>
  <t><strong>Do not invent carrier semantics the carrier does not state.</strong>  A profile
must not widen what the carrier leaves undefined into an allow.  AEGIS's
dotted ids are hierarchical, but AEGIS grants capabilities individually and
does not define domain-level containment, so the profile does not turn a bare
domain into a namespace wildcard (ccx-042 fails closed).</t>
  <t><strong>Non-goals (recorded, not prohibitions on carriers).</strong>  Three properties are
deliberately outside both the relation and the profile contract:
  <list style="symbols">
      <t><strong>union of authority sources</strong> — a sub-agent that combines narrow delegated
authority with broad independent authority (AEGIS Section 5.1, AOA) composes over a
<em>set</em> of grants, which is carrier composition governance, not a per-pair
predicate;</t>
      <t><strong>chain-level verification</strong> — <spanx style="verb">Contains</spanx> is a per-pair predicate, not a
transitive closure; a chain check is the profile's iteration of <spanx style="verb">Contains</spanx>
over hops (Section 13.9.3, <spanx style="verb">delegation-chain-&gt;clc-v1</spanx>);</t>
      <t><strong>cross-carrier identity</strong> — CLC defines no equivalence between two carriers'
capability names; a profile MAY publish its own mapping, but the language
asserts none.</t>
    </list></t>
  <t><strong>Declare the transitivity basis before claiming a chain check.</strong>
<spanx style="verb">Contains</spanx> is a per-pair predicate: it decides one adjacent-to-adjacent pair
and asserts nothing about a chain, a closure, or a composed authority
(Section 13.3, Section 13.9.3).  A profile that checks a chain of more than one hop is
therefore making a claim the language does not make for it.  Such a profile
MUST state its <strong>transitivity basis</strong> as exactly one of:
  <list style="symbols">
      <t><strong>definition-derived</strong> — the relation is transitive by construction for the
carrier's identifier grammar and parameter family, with the argument
recorded; or</t>
      <t><strong>mechanically-checkable</strong> — the profile declares the finite domain the
claim ranges over and the deterministic procedure that decides it, so a
third party can re-run the claim; or</t>
      <t><strong>asserted</strong> — the carrier states the property and no procedure is offered.</t>
    </list>
The basis is a property of the profile's chain claim, not of <spanx style="verb">Contains</spanx>; a
profile MUST NOT describe a chain check as a CLC relation, and a consumer
MUST NOT read <spanx style="verb">Contains(h1, h2)</spanx> plus <spanx style="verb">Contains(h2, h3)</spanx> as entailing
<spanx style="verb">Contains(h1, h3)</spanx> without the profile's declared basis.  A deployment that
needs only the pairwise judgement (every hop inside its own parent) needs no
basis and MUST NOT claim one.  <vspace blankLines="1"/>
This distinction is also applied to inter-domain agent delegation chains in
<xref target="AHUJA-ROUTING"/> Section 8: per-hop comparisons support a chain-wide statement only
when the shared intermediate value is authenticated and all hops use the same
immutable profile and basis.  That requirement is informative and
routing-layer-specific here; it neither changes <spanx style="verb">Contains</spanx> nor supplies the
authenticated adjacency it requires.</t>
  <t><strong>Never report a union axis as a containment result.</strong>  A carrier field that
is conjunctive over a chain — accumulated <spanx style="verb">constraints</spanx>, ATN
<spanx style="verb">preconditions</spanx>, AAE <spanx style="verb">CONSTRAINTS</spanx>, a <spanx style="verb">requires</spanx> precondition list — is a
<em>union</em> axis: each hop's burden adds to the chain's, and the composition
operator for it is the constraint union of Section 7.1, not the relation of Section 13.4.
A profile MUST route such a field to the union function (or to its own
enforcement outside the relation) and MUST NOT report it as contained,
narrowed, or checked-by-<spanx style="verb">Contains</spanx>.  The failure mode this obligation
closes is a chain reported as contained while a hop's constraint was neither
compared nor carried — a null constraint check is not evidence of
containment (Section 13.4.4).  <vspace blankLines="1"/>
<strong>Evidence.</strong>  Both obligations are pinned by data rather than by prose:
<spanx style="verb">data/_vectors/clc-v1/profile-declarations.json</spanx> carries one declaration per
profile used by the two cross-walk corpora, together with the illustrative
declarations that pin the accept path and the negative cases that pin each
refusal (<spanx style="verb">basis-missing</spanx>, <spanx style="verb">domain-or-procedure-missing</spanx>,
<spanx style="verb">basis-without-claim</spanx>, <spanx style="verb">unknown-basis</spanx>, <spanx style="verb">union-axis-misrouted</spanx>,
<spanx style="verb">union-axis-fields-mismatch</spanx>).  The declarations are checked — including the
requirement that the declared profiles equal the profiles the corpora
actually use — by the Go runner (<spanx style="verb">register/internal/crosswalkvectors</spanx>,
<spanx style="verb">TestProfileDeclarations</spanx>) and by its Java counterpart
(<spanx style="verb">com.varwof.clc.runner.ProfileDeclarationsTest</spanx>).  Both implementations
share an author, so this is regression evidence for the rule, not the
independent-implementation bar of Section 12.</t>
</list></t>

</section>
</section>
<section anchor="related-work-and-positioning"><name>Related Work and Positioning</name>

<t>This subsection is <strong>informative</strong> and carries no requirements.  It records why
a language-level containment relation is needed at all, how CLC relates to the
authorization work already in flight, and what the adoption risks are.</t>

<section anchor="the-gap-clc-fills"><name>The gap CLC fills</name>

<t>CLC <strong>does not define a carrier</strong> — it is not a credential format, a transport,
or a policy store.  It defines the <em>evaluation semantics</em> that carrier-facing
work leaves open: a deterministic decision, stable reason codes, and (here) a
containment relation.  The recurring shortfall in today's landscape is not "how
do I carry an authorization" but "how do two independent implementations agree
on what a carried authorization <em>means</em>, and on whether a delegated one stayed
inside its parent".</t>

</section>
<section anchor="what-containment-is-for"><name>What containment is for</name>

<t><list style="numbers" type="1">
  <t><strong>A standardizable evaluation core.</strong>  Structured authorization payloads
exist, but their semantics are pinned by each profile's own <spanx style="verb">type</spanx>
vocabulary, so cross-implementation agreement is not guaranteed.  CLC
supplies the deterministic decision function and the stable reason-code
registry those profiles can reference instead of re-inventing.</t>
  <t><strong>Verifiable attenuation.</strong>  A delegation chain must only narrow.  Declaring
attenuation is easy; <em>verifying</em> it at the receiving endpoint requires a
shared relation.  <spanx style="verb">Contains</spanx> (Section 13.4) plus its reason codes
(<spanx style="verb">child_exceeds_parent</spanx> et al., Section 13.5) turn "only narrows" from an
application-layer assumption into a checkable language-level fact.</t>
  <t><strong>One model for authorization and evidence.</strong>  The core deliberately uses the
same identifier and constraint model on the authorization side (the grant)
and, prospectively, on the evidence side (the observed action), so an audit
trail can be reasoned about with the same relation that authorized it.</t>
</list></t>

</section>
<section anchor="how-clc-relates-to-adjacent-work"><name>How CLC relates to adjacent work</name>

<t>The comparison below is by role, not by feature count: the other works are
carriers, profiles, or architecture, whereas CLC is the semantic layer.</t>

<t>Two principles keep the relationship complementary rather than competitive:</t>

<t><list style="numbers" type="1">
  <t><strong>CLC defines evaluation, not carriage.</strong>  CLC does not define token
formats, trust models, or policy languages.  The mapping from a carrier's
native authorization structure to a CLC grant is the <strong>carrier profile's
responsibility</strong>; CLC only fixes what the mapped grant then <em>means</em>.</t>
  <t><strong>The core already ships consumption mappings.</strong>  Appendix A ("Consumption
Mapping") lists example consumers (AIC-JWT DA, RAR <spanx style="verb">authorization_details</spanx>,
EMILIA AEB, delegation chains), and
<spanx style="verb">capability/data/_vectors/clc-v1/crosswalk-vectors.json</spanx> pins executable
cross-walk cases for the <spanx style="verb">oauth-rar-&gt;clc-v1</spanx>, <spanx style="verb">aic-jwt-da-&gt;clc-v1</spanx>,
<spanx style="verb">emilia-aeg-&gt;clc-v1</spanx>, <spanx style="verb">ucan-&gt;clc-v1</spanx>, and <spanx style="verb">delegation-chain-&gt;clc-v1</spanx>
profiles.  A carrier adopting CLC-D adds a containment case to that crosswalk
rather than a new mapping mechanism.  CLC-D ships its own such corpus:
<spanx style="verb">capability/data/_vectors/clc-d/containment-crosswalk-vectors.json</spanx> maps a
native representation (AIC-JWT DA, OAuth RAR, UCAN, delegation chain, and the
adjacent drafts ATN, AAT, AIP, AAE, AOA, AEGIS) to a grant on each side and
asserts <spanx style="verb">Contains</spanx> — the attenuation analogue of the CLC-A cross-walk.</t>
</list></t>

<t>The mappings that are already pinned, and the ones a carrier would add, are:</t>

<texttable>
      <ttcol align="left">Carrier / native form</ttcol>
      <ttcol align="left">Maps to CLC</ttcol>
      <ttcol align="left">Relation</ttcol>
      <ttcol align="left">Status</ttcol>
      <c>AIC-JWT DA <spanx style="verb">capability[]</spanx> (<spanx style="verb">{id, params, constraints}</spanx>)</c>
      <c>one Grant per entry</c>
      <c>Entailment; CLC-D <spanx style="verb">Contains</spanx> for the <spanx style="verb">C_agent ⊆ P_grants</spanx> boundary</c>
      <c>pinned (<spanx style="verb">aic-jwt-da-&gt;clc-v1</spanx>, ccx-001..005, ccx-013)</c>
      <c>OAuth RAR <spanx style="verb">authorization_details</spanx> (<spanx style="verb">{type, actions[], params}</spanx>)</c>
      <c>one Grant per action (<spanx style="verb">type:action</spanx>)</c>
      <c>Entailment</c>
      <c>pinned (<spanx style="verb">oauth-rar-&gt;clc-v1</spanx>, ccx-006..007)</c>
      <c>UCAN <spanx style="verb">{with, can}</spanx></c>
      <c>Grant <spanx style="verb">{with:can}</spanx></c>
      <c>Entailment</c>
      <c>pinned (<spanx style="verb">ucan-&gt;clc-v1</spanx>, ccx-008..009)</c>
      <c>EMILIA AEG <spanx style="verb">capability_class</spanx></c>
      <c>Grant <spanx style="verb">{capability_class}</spanx></c>
      <c>Entailment</c>
      <c>pinned (<spanx style="verb">emilia-aeg-&gt;clc-v1</spanx>)</c>
      <c>Delegation chain (per-hop granted sets)</c>
      <c><spanx style="verb">Intersect</spanx> of the links</c>
      <c>Intersection; CLC-D <spanx style="verb">Contains</spanx> per hop for attenuation</c>
      <c>pinned (<spanx style="verb">delegation-chain-&gt;clc-v1</spanx>, ccx-010..012)</c>
      <c>ATN Capability Manifest (<spanx style="verb">draft-somoza-dmsc-atn-agent-trust-negotiation</spanx> Section 5.1/Section 9.1/Section 9.2)</c>
      <c>one Grant per capability: <spanx style="verb">atn/manifest-v1:&lt;id&gt;:&lt;action&gt;[:&lt;schema_digest&gt;]</spanx>; <spanx style="verb">resource_bounds</spanx> and numeric <spanx style="verb">conditions</spanx> → params</c>
      <c>CLC-D <spanx style="verb">Contains</spanx> is the per-capability form of ATN's intersection; ATN's identity rule (same <spanx style="verb">id</spanx> <strong>and</strong> same schema digest) is carried by the digest path segment; <spanx style="verb">preconditions</spanx> are a <strong>union</strong> axis (Section 9.2), never compared</c>
      <c>pinned (<spanx style="verb">atn-manifest-&gt;clc-v1</spanx>, ccx-014..017, ccx-043..044)</c>
      <c>Attenuating Agent Tokens I4 (<spanx style="verb">draft-niyikiza-oauth-attenuating-agent-tokens</spanx> Section 4.5)</c>
      <c>one Grant per tool: <spanx style="verb">aat/toolset-v1:&lt;tool&gt;</spanx>; the argument-constraint map → params</c>
      <c>CLC-D <spanx style="verb">Contains</spanx> for <spanx style="verb">tools(derived) ⊆ tools(parent)</spanx> and the per-type constraint subsumption</c>
      <c>pinned (<spanx style="verb">aat-i4-&gt;clc-v1</spanx>, ccx-018..023)</c>
      <c>AIP attenuation walk (<spanx style="verb">draft-prakash-aip</spanx> Section 4.4)</c>
      <c>Grant <spanx style="verb">aip/scope-v1:&lt;capability&gt;</spanx>; <spanx style="verb">budget</spanx> ceiling → params</c>
      <c>CLC-D <spanx style="verb">Contains</spanx> for the per-dimension narrower-or-equal walk (scope, budget)</c>
      <c>pinned (<spanx style="verb">aip-attenuation-&gt;clc-v1</spanx>, ccx-024..029)</c>
      <c>AAE mandates and CONSTRAINTS (<spanx style="verb">draft-kroehl-agentic-trust-aae</spanx> Section 2.3/Section 3)</c>
      <c>Grant <spanx style="verb">aae/mandate-v1:&lt;action&gt;</spanx>; unwrapped CONSTRAINTS values → params</c>
      <c>CLC-D <spanx style="verb">Contains</spanx> for AAE's per-element "equal to or more restrictive"</c>
      <c>pinned (<spanx style="verb">aae-constraint-&gt;clc-v1</spanx>, ccx-030..034)</c>
      <c>AOA operation scope (<spanx style="verb">draft-liu-agent-operation-authorization</spanx> Section 6.2)</c>
      <c>Grant <spanx style="verb">aoa/scope-v1:&lt;operation&gt;</spanx></c>
      <c>CLC-D <spanx style="verb">Contains</spanx> for the "scope string containment" the AS validates</c>
      <c>pinned (<spanx style="verb">aoa-scope-&gt;clc-v1</spanx>, ccx-035..037)</c>
      <c>AEGIS AIAM-1 delegation (<spanx style="verb">aegis-initiative/aegis-governance</spanx>, <spanx style="verb">AIAM1-DEL-010</spanx>)</c>
      <c>Grant <spanx style="verb">aegis/action-v1:&lt;domain&gt;:&lt;operation&gt;</spanx>; numeric <spanx style="verb">context</spanx> bounds → params</c>
      <c>CLC-D <spanx style="verb">Contains</spanx> for monotonic authority narrowing; <spanx style="verb">allowed_roles</spanx>/<spanx style="verb">environment</spanx>/<spanx style="verb">risk_level</spanx>/<spanx style="verb">scope</spanx> have no CLC field and are left to the carrier, not compared (see Appendix C)</c>
      <c>pinned (<spanx style="verb">aegis-delegation-&gt;clc-v1</spanx>, ccx-038..042)</c>
      <c>W3C ZCAPs capability document</c>
      <c>Grant (delegation schema/type → id; caveats → params/constraints)</c>
      <c>Entailment; CLC-D <spanx style="verb">Contains</spanx> for chained delegation</c>
      <c>profile to be written by the ZCAPs adopter</c>
</texttable>

<t>Two mapping notes the pinned profiles make explicit, because they are places a
reader could mistake a carrier's rule for the relation itself:</t>

<t><list style="numbers" type="1">
  <t><strong>A carrier's own "contains"/"subset" may name a <em>constraint type</em>, not the
capability relation.</strong>  AAT Section 4.5 defines argument-constraint types named
<spanx style="verb">contains</spanx> and <spanx style="verb">subset</spanx> (a required-set superset and an allowed-set subset).
Those are values <em>inside</em> <spanx style="verb">params</spanx>; the capability-level relation is still
<spanx style="verb">Contains</spanx>, and the constraint axes compose by union across a chain.  The
same applies to AAE's <spanx style="verb">allowed_domains</spanx> and AEGIS's <spanx style="verb">context</spanx> bounds.</t>
  <t><strong>A profile resolves a carrier's inheritance and defaults before mapping, and
must not invent semantics the carrier does not state.</strong>  AIP resolves an absent
dimension to its nearest ancestor (Section 4.4), so the profile maps an absent
dimension to <em>no bound</em>, not to a bound.  AEGIS's dotted ids are hierarchical,
but AEGIS grants capabilities individually and does not define domain-level
containment, so the profile does <strong>not</strong> widen a bare domain into a namespace
wildcard (ccx-042 fails closed).  <spanx style="verb">Contains</spanx> is defined over the <em>declared</em> sets
the profile emits: the profile carries the carrier's resolution, and what the
carrier leaves undefined the profile leaves undefined — it does not fill the
gap with an allow.  The full contract is Section 13.8.1.</t>
</list></t>

<t>The rows marked <em>profile to be written</em> are placeholders: this document does not
guess another draft's field grammar.  A carrier profile lands as a <spanx style="verb">MapProfile</spanx>
case plus cross-walk vectors, exactly as the pinned profiles did.</t>

<texttable>
      <ttcol align="left">Work</ttcol>
      <ttcol align="left">Role</ttcol>
      <ttcol align="left">Relationship to CLC</ttcol>
      <c>OAuth Rich Authorization Requests (RAR)</c>
      <c>Structured <spanx style="verb">authorization_details</spanx> carried in the authorization request</c>
      <c>RAR defines the <em>carriage</em> of structured authorization; CLC is a candidate <em>evaluation language</em> for the capabilities RAR declares.  Attenuating-agent-token work observes that RAR expresses a request but does not itself define how a holder derives or verifies a <em>narrower</em> token — the layer <spanx style="verb">Contains</spanx> addresses.  <xref target="LIU-SCHEMAS"/> goes one step further and lets each domain schema define its own subset semantics; the carrier profile's job is to carry that decision into the mapped grant.  <xref target="MISSION"/> supplies a named constraint vocabulary for such a profile (<spanx style="verb">max_amount</spanx> with amount and currency, <spanx style="verb">recipient_domain</spanx>), with no conversion between currencies</c>
      <c>OpenID Connect agent-identity claims</c>
      <c>Agent capability claims in an ID Token</c>
      <c>A profile could define how OIDC-delivered capabilities are evaluated and how a delegation chain is containment-checked</c>
      <c>WIMSE AI Identity Management System (<xref target="WIMSE-AIMS"/>, <spanx style="verb">draft-ietf-wimse-aims</spanx>)</c>
      <c>Informational best-practice framework reusing WIMSE and OAuth; explicitly identifies gaps rather than defining a capability algebra</c>
      <c>CLC is a candidate concrete evaluation language for the authorization step AIMS describes and a candidate answer to the "capability containment" gap it leaves open; the two are complementary, not competing</c>
      <c>WIMSE agent delegation chain (<xref target="ASOR"/>, <spanx style="verb">draft-asor-wimse-agent-delegation-chain</spanx>)</c>
      <c>Token format, chain linkage (<spanx style="verb">par_hash</spanx>), a scope/constraint vocabulary with subsumption rules, and an 8-step offline verification algorithm carried in an RFC 9068 JWT profile</c>
      <c>A carrier-level peer that defines <em>how</em> a narrower token is carried and verified; CLC is the carrier-neutral semantics for the per-hop subset judgement such a verifier performs.  <spanx style="verb">Contains</spanx> is the relation its <spanx style="verb">DT(child) ⊆ DT(parent)</spanx> check needs, and its <spanx style="verb">scopes</spanx>/<spanx style="verb">constraints</spanx> map onto CLC's Grant/params/constraints; the two are complementary, not competing (the AAT row makes the same split one layer up)</c>
      <c>W3C ZCAPs</c>
      <c>Linked-Data-Proof signed capability documents with caveats and chaining</c>
      <c>ZCAPs defines the document/carrier; CLC can define the containment relation over its capabilities</c>
      <c>UCAN</c>
      <c>DID/IPLD authorization tokens with delegation and attenuation</c>
      <c>Same split: UCAN is the carrier, CLC the semantics</c>
      <c>AEGIS capability registry and AIAM-1 delegation (<xref target="AEGIS"/>, <spanx style="verb">aegis-initiative/aegis-governance</spanx>)</c>
      <c>Hierarchical dotted capability registry, per-grant <spanx style="verb">scope</spanx>/<spanx style="verb">constraints</spanx>, a deterministic decision algorithm with verdicts (allow/constrain/escalate/deny), and monotonic authority narrowing (<spanx style="verb">AIAM1-DEL-010</spanx>); composition is explicitly <em>not</em> closed under transitivity (<spanx style="verb">AIAM1-CAP-011</spanx>)</c>
      <c>Closest in <em>goal</em> (capability declaration + deterministic evaluation + narrowing); differs in <em>form</em> — AEGIS is a governance architecture with a policy/registry layer, CLC a carrier-neutral decision function over grants.  <spanx style="verb">Contains</spanx> is the relation AEGIS's monotonic-narrowing check needs; AEGIS's non-transitive composition rule is compatible (CLC-D <spanx style="verb">Contains</spanx> is also non-transitive: it is a per-pair predicate, not a closure)</c>
      <c>Agent Identity Protocol (<xref target="AIP"/>, <spanx style="verb">draft-prakash-aip</spanx>)</c>
      <c>Delegation-chain token with a Datalog policy layer and a structural attenuation walk (V4) over scope, budget, time, domains, principal</c>
      <c>Overlaps CLC's entailment/intersection <em>functionally</em>, but pins a Datalog policy language.  AIP Section 4.4 makes the same distinction CLC-D does — attenuation is a property of capability content, not of the append-only container — so CLC can be the shared deterministic semantics such a checker is validated against</c>
      <c>Agent Trust Negotiation (<xref target="ATN"/>, <spanx style="verb">draft-somoza-dmsc-atn-agent-trust-negotiation</spanx>)</c>
      <c>Capability Manifest JSON with schema binding, dimension semantics, and a Capability Intersection Algebra (Section 9) with per-dimension rules including <spanx style="verb">preconditions</spanx> union</c>
      <c>Overlaps the capability-container target and defines an intersection; CLC-D supplies the <em>single-pair containment</em> predicate that runs before and alongside that intersection (Section 13.8).  ATN's ordered dimension lattices (<spanx style="verb">effects</spanx>, <spanx style="verb">external_calls</spanx>, …) are the carrier-level analogue of CLC-D's mode lattice (Section 13.4.5), which stays out of the language relation</c>
      <c>Agent Operation Authorization (<xref target="AOA"/>, <spanx style="verb">draft-liu-agent-operation-authorization</spanx>)</c>
      <c>Operation-proposal/authorization JWTs with a <spanx style="verb">delegation_chain</spanx>; the AS validates that a sub-operation is "strictly narrower in scope" (Section 6.2) via policy templates, OPA, or scope-string containment</c>
      <c>Same "no escalation beyond the original scope" goal; AOA's scope-string containment is exactly a carrier instance of <spanx style="verb">Contains</spanx>, and AOA's <spanx style="verb">delegation_chain</spanx> is the carrier for the chain CLC-D reasons over</c>
      <c>Attenuating Agent Tokens (<xref target="AAT"/>, <spanx style="verb">draft-niyikiza-oauth-attenuating-agent-tokens</spanx>)</c>
      <c>Token chain with a capability lattice (<spanx style="verb">C(child) ⊆ C(parent)</spanx>, Section 4.1) and six attenuation invariants; I4 defines per-type constraint subsumption with Decidable/Sound/Deterministic requirements (Section 3.5.1)</c>
      <c>The closest formal neighbour at the language level: <spanx style="verb">C(child) ⊆ C(parent)</spanx> is the property <spanx style="verb">Contains</spanx> decides, and AAT's naming of a constraint type <spanx style="verb">contains</spanx> is a caution that the <em>relation</em> and a <em>constraint value</em> must not be conflated</c>
      <c>Agent Authorization Envelope (<xref target="AAE"/>, <spanx style="verb">draft-kroehl-agentic-trust-aae</spanx>)</c>
      <c>Verifiable Credential envelope with MANDATE/<spanx style="verb">CONSTRAINTS</spanx>/VALIDITY blocks and an explicit "equal to or more restrictive" definition per element (Section 3); warns of delegation amplification (Section 7.4)</c>
      <c>AAE defines the carrier blocks and a closed, deterministic constraint language; CLC-D's <spanx style="verb">params_not_narrower</spanx> / <spanx style="verb">child_exceeds_parent</spanx> are the stable reason codes that make AAE's "strictly subordinate" check reportable</c>
      <c>External Verifier Contract (<xref target="EVC"/>, <spanx style="verb">draft-kondoju-evc</spanx>)</c>
      <c>Standardizes <em>how</em> an external verifier is invoked and returns a verdict (allow/deny/denial codes, fail-closed exit semantics)</c>
      <c>Orthogonal and complementary: EVC is the verdict <em>interface</em>, CLC-D is the decision <em>semantics</em> and its reason codes.  An EVC implementation can compute CLC-D's verdict and surface the same reason codes</c>
      <c>Agent-auth architecture drafts (e.g. <spanx style="verb">draft-klrc-aiagent-auth</spanx>)</c>
      <c>"Agent as workload", reusing existing mechanisms; notes that no single existing policy engine covers the full delegation-chain verification need</c>
      <c>A natural consumer: CLC can be the evaluation language such a framework calls into</c>
      <c>Dual-identity / attenuating-token drafts (e.g. <spanx style="verb">draft-ni-wimse-ai-agent-identity</spanx>, AAT above)</c>
      <c>Bind agent identity to owner identity; define how a holder derives and a verifier checks a narrower token</c>
      <c>Answers <em>who delegated</em> and <em>how derivation is carried</em>; CLC answers <em>what was delegated and whether it narrowed</em></c>
      <c>Agent interaction/delegation protocols (e.g. AIDP)</c>
      <c>Interaction and delegation flow over capability systems</c>
      <c>Capability-based sibling; CLC is the evaluation layer rather than the interaction flow</c>
      <c>WIMSE agent credential delegation (<xref target="SWEENEY"/>, <spanx style="verb">draft-sweeney-wimse-credential-delegation</spanx>)</c>
      <c>Server-side counterpart of a delegation-chain token: the same scope/constraint vocabulary applied where the credential is issued</c>
      <c>A carrier-level consumer like <xref target="ASOR"/>, one side of the exchange: the issuance side maps to grants, and <spanx style="verb">Contains</spanx> is the relation its attenuation check needs</c>
      <c>Cross-organisation delegation requirements (<xref target="REECE"/>, <spanx style="verb">draft-reece-wimse-cross-org-delegation</spanx>)</c>
      <c>Requirements only — recursive attenuation (R1), a verdict vocabulary, and a separation of admission from consumption; no token format</c>
      <c>There is nothing to map, so it is cited as requirements, not as a profile: <spanx style="verb">Contains</spanx> per hop plus <spanx style="verb">AuthorizeWithChain</spanx> is a concrete answer to R1, and its verdict vocabulary is the state/reporting layer Section 13.9.7 addresses</c>
</texttable>

<t>The external names above are recorded as context and MUST be re-verified against
their current revisions before any submission or citation; this subsection makes
no claim about their exact present contents.  The mapping rows were checked
against these revisions on 2026-09-21: <spanx style="verb">draft-somoza-dmsc-atn-agent-trust-negotiation-00</spanx>
(Section 5, Section 6, Section 9), <spanx style="verb">draft-niyikiza-oauth-attenuating-agent-tokens-01</spanx> (Section 3.5, Section 4),
<spanx style="verb">draft-prakash-aip-02</spanx> (Section 3.3, Section 4.4), <spanx style="verb">draft-kroehl-agentic-trust-aae-02</spanx> (Section 2.3,
Section 2.5, Section 3), <spanx style="verb">draft-liu-agent-operation-authorization-02</spanx> (Section 3, Section 6),
<spanx style="verb">draft-ietf-wimse-aims-00</spanx>, and the <spanx style="verb">aegis-initiative/aegis-governance</spanx> repository
(AIAM-1 v0.1, <spanx style="verb">AIAM1-DEL-010</spanx>), and <spanx style="verb">draft-asor-wimse-agent-delegation-chain-02</spanx> (Section 3, Section 4, Section 5, Section 6, re-checked 2026-10-17 with AIP-02).  Each of these is an individual draft, an informational draft, or a non-IETF repository, with one exception: the WIMSE working group adopted <spanx style="verb">draft-ietf-wimse-aims</spanx> on 2026-09-09, so it is cited here as a working-group document rather than as an individual draft.  The AEGIS material is an informational architecture, not a specification with a formal standing.</t>

</section>
<section anchor="where-the-demand-actually-is"><name>Where the demand actually is</name>

<t>The need for a shared evaluation layer is increasingly explicit in the
authorization community: the recurring complaint is not a lack of <em>carriage</em>
formats but a lack of agreement on <em>what a carried authorization means</em> and on
how a delegation chain is verified to only narrow.  The following distinction
determines what "demand" should be taken to mean here:</t>

<t><list style="symbols">
  <t><strong>If demand means "adopted as a WG standard":</strong> uncertain.  Several
in-flight efforts (AIP, ATN, AOA, AEGIS, above) are attacking the same
problem from different angles, and there is no consensus that a <em>separate</em>
authorization language is wanted.  A standalone individual draft is unlikely
to be adopted directly on that basis alone.</t>
  <t><strong>If demand means "used by implementers":</strong> the need is real and immediate.
Agent frameworks and enterprise security teams each re-implement an
authorization check and each ask the same question — "what may this agent
actually do, and did the delegation only narrow?".  A small,
carrier-neutral, <em>tested</em> decision function plus corpus is directly reusable
there.</t>
</list></t>

<t>The strategic consequence is that adoption is <em>earned by use</em>, not awaited from
a standards vote: the corpus and the reference implementations are the
contribution, and the standards reference follows if and when downstream
implementers cite it.</t>

</section>
<section anchor="adoption-risks"><name>Adoption risks</name>

<t><list style="symbols">
  <t><strong>Carrier dependence.</strong>  CLC only matters once a carrier (AIC, WIMSE, ZCAPs,
UCAN, a RAR profile) binds it.  The Section 13.8 AIC-JWT cross-walk is one such
binding; without bindings CLC has no reach.</t>
  <t><strong>Competing semantics, not a blank field.</strong>  AIP, ATN, AOA, and AEGIS each
define (or assume) evaluation semantics of their own.  CLC enters a field with
several incumbents, so it must be <em>smaller</em> (a decision function, not a policy
language or registry), <em>carrier-neutral</em>, and <em>tested</em> to be worth citing.</t>
  <t><strong>Ecosystem competition.</strong>  A working group could prefer to define its own
authorization meta-syntax rather than reference an external language.  The
response is scope discipline: CLC defines the <em>evaluation</em> and nothing else,
and stays small enough to be cited.</t>
  <t><strong>Implementation independence.</strong>  The three current implementations share an
author, so they are a regression test, not independent validation (Section 12,
restated for CLC-D in Section 13.7).  Independent implementation remains the gating
risk for any standards claim.</t>
</list></t>

</section>
<section anchor="positioning-statement"><name>Positioning statement</name>

<t>CLC is best positioned not as a standalone standard but as the <strong>language
specification other standards reference</strong> when they need to define authorization
evaluation and delegation narrowing.  Concretely: when an AIP-style Datalog
checker, an ATN-style condition evaluator, or an AEGIS-style policy evaluator
needs a shared, deterministic semantic to validate against or interoperate
with, CLC is a candidate.  Publishing CLC as the capability language core of a
wider agent-authorization architecture (the AIC direction) is exactly that
positioning; containment is kept additive so such a reference can be made
without disturbing the CLC-A core any adopter already implements.</t>

</section>
<section anchor="carrier-decision-states-that-are-not-containment-results"><name>Carrier decision states that are not containment results</name>

<t>This subsection is <strong>informative</strong> and adds no requirement.  Review of the
carrier mappings surfaced a recurring modelling question: adjacent work
introduces decision <em>states</em> that are neither a containment verdict nor an
authorization verdict, and a carrier that adopts CLC should not be pushed into
inventing a fourth verdict for them.  The table records where each such state
lands in CLC's own vocabulary.  Nothing here changes Section 9, Section 8.4, Section 8.5 or Section 13.4.</t>

<texttable>
      <ttcol align="left">A carrier's own state</ttcol>
      <ttcol align="left">Where it is defined (recorded 2026-10-16)</ttcol>
      <ttcol align="left">CLC reading</ttcol>
      <c>refusal is <strong>permanent</strong> for the presented artifact</c>
      <c><xref target="JACKSON"/> Section 5</c>
      <c><spanx style="verb">deny</spanx> with its own Section 9.2 reason if the artifact fails evaluation; the <em>durability</em> of the refusal is the verifier's state, not a CLC value</c>
      <c>refusal is <strong>transient</strong> because an input could not be obtained</c>
      <c><xref target="JACKSON"/> Section 5</c>
      <c>a core decision cannot reach it: an input the core does not hold is a <spanx style="verb">deny</spanx> under Section 6 (fail-closed), while a <em>recognized obligation the core does not evaluate</em> is <spanx style="verb">allow_unresolved</spanx> plus a Section 8.4 residual</c>
      <c><spanx style="verb">evaluation.status = not-evaluated</spanx> with <spanx style="verb">unavailableInput</spanx></c>
      <c><xref target="GILDA"/> Section 5.4</c>
      <c><spanx style="verb">allow_unresolved</spanx> with the residual obligation named; never a fourth verdict.  <spanx style="verb">evaluation.status = evaluated</spanx> with <spanx style="verb">decision.reported = deny</spanx> is <spanx style="verb">deny</spanx></c>
      <c>per-input <strong>established-negative / not-established / stale</strong></c>
      <c><xref target="KONDA"/> Section 6</c>
      <c><spanx style="verb">violated</spanx> / <spanx style="verb">unknown</spanx> / <spanx style="verb">unknown</spanx> respectively at the Section 8.5 <spanx style="verb">Resolve</spanx> boundary; <spanx style="verb">stale</spanx> for a non-<spanx style="verb">time</spanx> input has no core clock, so it is <spanx style="verb">unknown</spanx> until the carrier refreshes it</c>
      <c><strong>undecided</strong> membership or attenuation (<spanx style="verb">UNDECIDED</spanx>)</c>
      <c><xref target="BCR"/> Section 6</c>
      <c><spanx style="verb">allow_unresolved</spanx> for the undecided part, with the remainder decided normally (Section 8.4, Section 8.5)</c>
      <c><strong>local-only</strong> / not decidable without a source the decision point does not hold</c>
      <c><xref target="BCR"/> Section 6</c>
      <c><spanx style="verb">allow_unresolved</spanx> residualized to the consumer; the core is locally decidable by design (P9) and never performs the lookup</c>
</texttable>

<t>Two consequences a carrier should take from the table.  First, <strong>the three
CLC verdicts are closed</strong>: a carrier maps its states onto <spanx style="verb">allow</spanx> / <spanx style="verb">deny</spanx> /
<spanx style="verb">allow_unresolved</spanx> and reports its own subdivision alongside, in its own record
format — the evaluation member of <xref target="GILDA"/> is the
worked example.  Second, <strong>a state that requires a source the decision point
does not hold is a decision to defer, not a new verdict</strong>: the Section 8.4 residual
channel exists precisely so that "I could not check this yet" travels with the
decision instead of being flattened into <spanx style="verb">allow</spanx> (which would grant more than
the artifact declares) or into <spanx style="verb">deny</spanx> (which would misreport a policy decision).</t>

</section>
</section>
<section anchor="open-issues"><name>Open Issues</name>

<t>Section 13.10 records the consciously-deferred gaps surfaced in review; the items
already landed as core revisions are marked <em>closed</em>, the rest are recorded for
later discussion.  Items marked <em>candidate v1.x</em> are candidates for the <em>core
language</em> to adopt without breaking CLC-A inputs; items under "CLC-D" would
extend containment itself.</t>

<section anchor="parameter-model-rigidity-closed-in-clc-110"><name>Parameter model rigidity (closed in CLC-1.10)</name>

<t>Landed as Section 6.5, the optional <spanx style="verb">param_bounds</spanx> field:</t>

<t><list style="symbols">
  <t><strong>Number</strong>: inclusive <spanx style="verb">min</spanx>/<spanx style="verb">max</spanx> intervals and a <spanx style="verb">step</spanx> multiple rule.</t>
  <t><strong>Enums</strong>: array membership plus <spanx style="verb">min_items</spanx>/<spanx style="verb">max_items</spanx> cardinality.</t>
  <t><strong>Optional keys</strong>: an <spanx style="verb">optional</spanx> marker exempts a declared key from the
omission half of layer 7.</t>
  <t><strong>Defaults</strong>: a <spanx style="verb">param_defaults</spanx> grammar with the precedence explicit &gt;
default &gt; absent.</t>
</list></t>

<t>The rejected shape is a <spanx style="verb">{min,max}</spanx> object inside <spanx style="verb">params</spanx> — it would collide
with object recursion (Section 6.2), so the bounds live in a sibling field and no
existing grant changes meaning.</t>

</section>
<section anchor="consumer-obligations-for-allowunresolved-closed-in-clc-111"><name>Consumer obligations for <spanx style="verb">allow_unresolved</spanx> (closed in CLC-1.11)</name>

<t>Section 8.4 delivers residual obligations on an <spanx style="verb">allow_unresolved</spanx> verdict; Section 8.5
<strong>now defines the consumer's feedback loop</strong> and this item is closed:</t>

<t><list style="symbols">
  <t><spanx style="verb">Resolve(decision, resolutions, now?) -&gt; Decision</spanx>, with each unresolved
constraint reported as <spanx style="verb">satisfied</spanx> / <spanx style="verb">violated</spanx> / <spanx style="verb">unknown</spanx>;</t>
  <t>a propagation rule for partially-evaluated sets (all satisfied → <spanx style="verb">allow</spanx>, any
violated → <spanx style="verb">deny</spanx> with <spanx style="verb">{type}:violated</spanx>, remainder → <spanx style="verb">allow_unresolved</spanx>);</t>
  <t>staleness/<strong>TTL</strong> semantics for <spanx style="verb">time:window</spanx> residuals: with <spanx style="verb">now</spanx>, the core
clock evaluates the window and the discharge horizon is the current segment's
end, so a cached <spanx style="verb">allow</spanx> expires with the window.</t>
</list></t>

<t>This went beyond the original "<spanx style="verb">Resolve</spanx> is core, TTL is profile policy" split:
both are now core (Section 8.5).  The coarser identity-level consumer gate <spanx style="verb">Discharge</spanx>
(the reference implementations' helper) remains as the <spanx style="verb">satisfied</spanx>-only case.</t>

</section>
<section anchor="constraints-as-a-union-axis-closed-in-clc-112"><name>Constraints as a union axis (closed in CLC-1.12)</name>

<t>This revision makes an explicit design decision: constraints are <strong>not</strong> part of
the containment relation (Section 13.4.4).  They compose by <em>union</em> (conjunction) along
a chain, which <spanx style="verb">Intersect</spanx> already implements, and no <spanx style="verb">Contains</spanx> layer reads
them.</t>

<t><spanx style="verb">Contains</spanx> therefore stays the smaller relation — containment over
<spanx style="verb">(identifier, parameters)</spanx> — and the "what does the chain collectively
require?" question is answered by the separate derived function
<spanx style="verb">ConstraintUnion</spanx> (Section 7.1, new in CLC-1.12).  Folding the union into <spanx style="verb">Contains</spanx>
was considered and rejected: it would make the relation no longer a pure subset
on the declared tuple, and a null constraint check would then be able to hide a
broken identifier/parameter boundary.  A consumer wanting "the child's whole
authority is inside the parent's" composes the two: <spanx style="verb">Contains</spanx> per hop plus
<spanx style="verb">ConstraintUnion</spanx> over the chain.</t>

</section>
<section anchor="containment-as-evidence-not-authorization-closed-in-clc-113"><name>Containment as evidence, not authorization (closed in CLC-1.13)</name>

<t>Section 13.4 keeps containment a declared-set comparison.  A delegation <em>certificate</em>
binds a child grant; an operation-time authorization still needs the decision
function (Section 9).  CLC-1.13 adds the fourth relation <spanx style="verb">AuthorizeWithChain(chain,
op)</spanx> (Section 13.11), the one-call chain check named here: it evaluates <spanx style="verb">Contains</spanx> per
hop and then <spanx style="verb">Authorize</spanx> against the <strong>intersection</strong> of the chain, so the
parent's constraints (a union axis, outside containment) are not lost.  It is a
CLC-D function, not a core change; a CLC-A implementation is unaffected.</t>

</section>
<section anchor="profile-obligations-for-a-chain-claim-closed-in-clc-118"><name>Profile obligations for a chain claim (closed in CLC-1.18)</name>

<t>Cross-checking the eleven pinned carrier mappings raised two questions the
profile contract did not answer; both are now stated in Section 13.8.1 instead of
being left to each profile's prose:</t>

<t><list style="symbols">
  <t><strong>On what basis may a profile claim transitivity?</strong>  <spanx style="verb">Contains</spanx> is per-pair
(Section 13.3), and the Section 13.8.1 non-goal list already said a chain check is the
profile's iteration — but it did not say what a profile owes a reader when it
performs that iteration.  Section 13.8.1 obligation 6 now requires the basis to be
declared (definition-derived, mechanically-checkable or asserted, with the
finite domain and deterministic procedure stated for the second) and forbids
reading two adjacent <spanx style="verb">Contains</spanx> results as a transitive one.</t>
  <t><strong>What happens to a carrier's conjunctive fields?</strong>  Section 13.4.4 already keeps
constraints outside the relation and Section 7.1 already exposes the union
projection, but a profile could still describe a chain as contained while
carrying a hop's <spanx style="verb">preconditions</spanx>
(<spanx style="verb">draft-somoza-dmsc-atn-agent-trust-negotiation</spanx> Section 9.2), <spanx style="verb">CONSTRAINTS</spanx>
(<spanx style="verb">draft-kroehl-agentic-trust-aae</spanx> Section 3) or <spanx style="verb">requires</spanx>
(<spanx style="verb">draft-izmaylov-agent-permission-receipts</spanx> Section 5) uncompared.  Section 13.8.1
obligation 7 now forbids reporting a union axis as a containment result.</t>
  <t><strong>Where do a carrier's own decision states go?</strong>  The new informative
Section 13.9.7 records the mapping onto the three verdicts and the <spanx style="verb">Resolve</spanx> values
so a carrier is not pushed into inventing a fourth verdict.</t>
</list></t>

<t>All three bind profiles, not the relation: no CLC-A or CLC-D verdict, reason
code or vector moves, and an implementation that publishes no profile is
unaffected.  What changes is what a profile may <em>claim</em>: one written against the
earlier text either adds the declarations or states that it claims no chain
check.</t>

</section>
</section>
<section anchor="authorizewithchain-fused-chain-authorization"><name>AuthorizeWithChain (fused chain authorization)</name>

<t><spanx style="verb">Contains</spanx> is a declared-set comparison and <spanx style="verb">Authorize</spanx> is an operation-time
decision; a delegating consumer that has a chain often wants both in one call.
<spanx style="verb">AuthorizeWithChain</spanx> is that convenience, defined at the CLC-D layer:</t>

<figure><artwork>
AuthorizeWithChain(chain, op) → Decision      // chain = ordered Grant[], root first
</artwork></figure>

<t><list style="numbers" type="1">
  <t>An <strong>empty chain fails closed</strong>: <spanx style="verb">deny("absent_source")</spanx> (Section 7 rule 5).</t>
  <t>For each adjacent pair <spanx style="verb">(chain[i], chain[i+1])</spanx>, evaluate <spanx style="verb">Contains</spanx>
(Section 13.4).  The first hop that is not contained ends the call with
<spanx style="verb">deny(reason)</spanx>, where <spanx style="verb">reason</spanx> is that hop's Section 13.5 code —
<spanx style="verb">child_exceeds_parent</spanx> or <spanx style="verb">params_not_narrower</spanx>, the two codes the
relation can return; <spanx style="verb">delegation_mode_not_narrower</spanx> never appears here,
because the chain gate calls <spanx style="verb">Contains</spanx>, which takes no mode argument
(Section 13.4.5).  This chain gate runs <strong>before</strong> op
validation: a broken chain is reported even when the operation is also
absent, because the chain is the subject of this function.</t>
  <t>Otherwise compute the effective chain grant <spanx style="verb">G = Intersect(chain...)</spanx>
(Section 7).  Because constraints are outside containment (Section 13.4.4), this step is
what brings every ancestor's params <strong>and</strong> constraints into force —
authorizing against the leaf grant alone would let an operation pass that
violates an ancestor's constraints (the union axis is not in <spanx style="verb">Contains</spanx>).
An <spanx style="verb">Intersect</spanx> refusal (<spanx style="verb">no_overlap</spanx>, <spanx style="verb">empty_bound_denies_class</spanx>,
<spanx style="verb">invalid_params_binding</spanx>) is returned as <spanx style="verb">deny(reason)</spanx>.</t>
  <t>Return <spanx style="verb">Authorize(G, op)</spanx> (Section 9) unchanged — <spanx style="verb">allow</spanx> / <spanx style="verb">allow_unresolved</spanx> /
<spanx style="verb">deny</spanx> with its own Section 9 reason codes.</t>
</list></t>

<t><strong>Caller obligation.</strong>  <spanx style="verb">AuthorizeWithChain</spanx> evaluates the chain <strong>as
presented</strong>: the caller MUST supply the complete, authenticated, root-first
chain.  The function fetches no missing link, verifies no signature or trust
anchor, and detects no truncation or reordering — a verdict over a truncated,
reordered or unauthenticated chain is a verdict about the presented sequence,
not about the delegation it does not carry (authentication is the carrier's
concern, Section 11).  This obligation adds no decision rule: the steps above are
unchanged by it.</t>

<t><spanx style="verb">AuthorizeWithChain</spanx> is a <strong>CLC-D function</strong>: it is not part of CLC-A, and an
implementation claiming only CLC-A is unaffected.  It introduces no new core
semantics — it fixes the order of two existing relations and refuses
fail-closed at each step.  A chain carrying <spanx style="verb">param_bounds</spanx> is authorizable:
step 3's <spanx style="verb">Intersect(chain...)</spanx> combines the hops' bounds with the Section 6.6 meet, so
an ancestor's bound (e.g. <spanx style="verb">max:100</spanx>) stays in force over a narrower child
(e.g. <spanx style="verb">max:50</spanx>).  Because Section 13.4.3 requires the declaration site of every key to
match at each hop, a valid chain never presents the cross-site case Section 6.6
refuses.  The two-grant form <spanx style="verb">AuthorizeWithChain(parent, child, op)</spanx> named in
Section 13.10.4 is the degenerate case <spanx style="verb">chain = [parent, child]</spanx>.</t>

</section>
<section anchor="revision-and-governance"><name>Revision and Governance</name>

<t>Containment is folded into this document's revision stream: its changes are
recorded in the Revision History and its conformance class CLC-D is declared in
Section 12.1 in step with the language revision (this revision is <spanx style="verb">CLC-1.19</spanx>; CLC-D
first appeared in <spanx style="verb">CLC-1.9</spanx>, folded from <spanx style="verb">EXT-00 rev 0</spanx>).</t>

<t><list style="symbols">
  <t>A CLC-A input is unaffected by the addition of CLC-D; compatible reading of
CLC-A inputs is the floor.</t>
  <t>CLC-D adoption is per-implementation: an implementation may claim CLC-A
without claiming CLC-D.</t>
  <t>The corpus (64 containment vectors, 784 property cases, 45 cross-walk
vectors, 15 <spanx style="verb">AuthorizeWithChain</spanx> vectors) is a draft snapshot; the README in
<spanx style="verb">capability/data/_vectors/clc-d/</spanx> maintains the live count and the date the
snapshot was generated.</t>
</list></t>

</section>
</section>
<section anchor="security-considerations"><name>Security Considerations</name>

<t><list style="symbols">
  <t><strong>Fail-closed</strong>: undefined/malformed/unknown → deny.</t>
  <t><strong>Deny-when-declared</strong>: empty bounds deny the class.</t>
  <t><strong>No canonical broadening</strong>: segment-boundary, not lexical prefix.</t>
  <t><strong>Composition narrows only</strong>: an intersection removes authority.  Whether a
<em>delegated</em> grant stays inside its parent's boundary is the containment
question Section 13 answers (<spanx style="verb">Contains</spanx>); intersection alone (Section 7) does not answer it,
and a delegation profile MUST NOT substitute one for the other.</t>
  <t><strong>Containment is fail-closed by construction</strong>: every <spanx style="verb">Contains</spanx> layer
defaults to <spanx style="verb">false</spanx>; a grant pair any layer cannot validate is refused, with
no warning-then-allow path (Section 13.4).</t>
  <t><strong>Containment is not a constraint oracle</strong>: <spanx style="verb">Contains</spanx> does not read
constraints (Section 13.4.4).  A consumer that uses <spanx style="verb">Contains</spanx> as its <em>only</em> gate MUST
compose the delegation chain's <spanx style="verb">Intersect</spanx> so the parent's constraints stay in
force; otherwise a child that omits a parent constraint could be admitted
while the constraint is unenforced.  <spanx style="verb">allow_unresolved</spanx> is orthogonal to
containment and MUST NOT be read as a containment result.</t>
  <t><strong>Containment reason-code leakage</strong>: <spanx style="verb">child_exceeds_parent</spanx> reveals that a
child requested an identifier the parent does not cover.  A boundary that must
not leak policy shape MAY collapse that single code into
<spanx style="verb">capability_not_authorized</spanx> (never <spanx style="verb">params_not_narrower</spanx>, Section 13.5).</t>
  <t><strong>Mode lattice must be carrier-pinned</strong>: an implementer that maps
<spanx style="verb">authorized</spanx>/<spanx style="verb">representative</spanx> the wrong way round inverts the boundary; Section 13.8
pins the AIC-JWT ordering, and other carriers MUST pin theirs in the profile that
adopts CLC-D.</t>
  <t><strong>Stable reason codes</strong>: same input → same reason across implementations.</t>
  <t><strong>Evidence binding is separate from native verification</strong>: Match checks
content correlation; native verification is the consumer's responsibility.</t>
  <t><strong>Parsing divergence must not change the decision</strong>: params are
normalized at the input boundary per Section 6.2 (JCS serialization, duplicate
keys, non-finite/over-precision numbers, size/depth caps).  A consumer
that decodes into a re-orderable map and re-encodes loses duplicate keys
and cannot represent non-finite numbers; two such consumers would reach
different verdicts on the same raw input.  Decisions are made on the
boundary-validated form, not on a lossy re-serialization.</t>
  <t><strong>Recognized-but-unevaluated is not silent acceptance</strong>: a constraint
the core recognizes but cannot evaluate MUST appear in the decision's
<spanx style="verb">unresolved</spanx> field — never dropped (Section 8.4).  The consumer must evaluate
or confirm each such constraint before acting, otherwise it MUST deny
(AAC Section 6.6).</t>
  <t><strong>A core-clock discharge is time-bounded</strong>: when <spanx style="verb">Resolve</spanx> (Section 8.5) evaluates a
<spanx style="verb">time:window</spanx> obligation with a supplied <spanx style="verb">now</spanx>, the discharge is valid only
for the segment containing <spanx style="verb">now</spanx>.  A consumer MUST NOT cache the resulting
<spanx style="verb">allow</spanx> past that segment's end — it re-invokes <spanx style="verb">Resolve</spanx> with a current <spanx style="verb">now</spanx>
before acting, or derives the horizon from the segment end.  Caching a
clock-based <spanx style="verb">allow</spanx> turns a window into an unbounded permit.</t>
  <t><strong>Reason-code detail suffix is diagnostic-only</strong>: everything after the
first <spanx style="verb">:</spanx> (e.g. the offending param name) MUST NOT change the verdict and
MUST NOT be relied upon for decisions.  Consumers match on the code
prefix before the <spanx style="verb">:</spanx> (Section 9.2).</t>
  <t><strong>Revision mismatch is fail-closed</strong>: an incompatible language revision
(Section 12.1) yields <spanx style="verb">deny("unsupported_language_revision")</spanx> resolved before
any layer — never a silent downgrade or best-effort re-interpretation.</t>
  <t><strong>Resource exhaustion is bounded at the input boundary</strong>: the 512-byte
serialized-size cap and the depth-32 nesting cap (Section 6.2 step 4) apply to
<spanx style="verb">raw_params</spanx> as much as to every other input, keeping recursive
evaluators safe from deep-nesting and oversized-params blowup.</t>
</list></t>

</section>
<section anchor="iana-considerations"><name>IANA Considerations</name>

<t>This document requests no IANA actions.</t>

<t>Constraint types (<spanx style="verb">max_rows</spanx>, <spanx style="verb">time</spanx>, <spanx style="verb">network</spanx>) and reason codes are defined
by this document as fixed sets.  CLC-1.19 adds two reason codes to that set
(<spanx style="verb">unit_mismatch</spanx>, <spanx style="verb">unsupported_domain</spanx>) and no new constraint type.  Should
this work be adopted by a working group, that group may wish to consider
whether either set warrants a registry; this revision does not propose one.</t>

<t>The containment relation (Section 13) registers three additional reason codes
(<spanx style="verb">child_exceeds_parent</spanx>, <spanx style="verb">params_not_narrower</spanx>,
<spanx style="verb">delegation_mode_not_narrower</spanx> — the last produced by the binding profile's
delegation-mode pre-check, Section 13.4.5, never by the relation itself); they are
part of the same fixed set, and no constraint reason code is defined for
containment because constraints are outside the relation (Section 13.4.4).</t>

</section>
<section anchor="privacy-considerations"><name>Privacy Considerations</name>

<t>The language itself transports and stores nothing.  Privacy exposure comes from
what carriers put into it and from what evaluators report:</t>

<t><list style="symbols">
  <t>Capability identifiers and parameter values describe policy.  They can reveal
organizational structure, service topology, network ranges (<spanx style="verb">network</spanx>
constraints), working hours (<spanx style="verb">time</spanx> windows), tenant names, or purposes.
Deployments should treat grants as policy-confidential material.</t>
  <t>Distinct reason codes reveal the shape of a grant: the difference between
<spanx style="verb">params_missing</spanx>, <spanx style="verb">undeclared_param</spanx> and <spanx style="verb">not_in_enum</spanx> tells an observer what
the grant constrains.  Where the requester is untrusted, a consumer should
consider collapsing reason codes at the boundary, as this specification
already does for identifier-level failures (Section 9.1).</t>
  <t>Parameter values may carry personal data if a scheme defines them that way.
Scheme authors should avoid personal identifiers as parameter names or values.</t>
  <t>Residual obligations (<spanx style="verb">unresolved</spanx>, Section 8.4) and any audit record built
from decisions can persist policy and usage information; retention is the
carrier's responsibility (Section 11).</t>
  <t>The reference corpus published with this document is synthetic and contains
no personal data.</t>
  <t>Containment reasons (Section 13) are emitted to the child's requestor at the
delegation step, not to end-users, and the child receives the failure code,
not the parent's declared bounds.  Where bounds themselves are sensitive
(e.g. network/scope declarations), a profile SHOULD log codes, not values.</t>
</list></t>

</section>
</middle>

  <back>


<references title="References" anchor="sec-combined-references">

    <references title="Normative References" anchor="sec-normative-references">



<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>

<reference anchor="RFC3339">
  <front>
    <title>Date and Time on the Internet: Timestamps</title>
    <author fullname="G. Klyne" initials="G." surname="Klyne"/>
    <author fullname="C. Newman" initials="C." surname="Newman"/>
    <date month="July" year="2002"/>
    <abstract>
      <t>This document defines a date and time format for use in Internet protocols that is a profile of the ISO 8601 standard for representation of dates and times using the Gregorian calendar.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="3339"/>
  <seriesInfo name="DOI" value="10.17487/RFC3339"/>
</reference>

<reference anchor="RFC7493">
  <front>
    <title>The I-JSON Message Format</title>
    <author fullname="T. Bray" initials="T." role="editor" surname="Bray"/>
    <date month="March" year="2015"/>
    <abstract>
      <t>I-JSON (short for "Internet JSON") is a restricted profile of JSON designed to maximize interoperability and increase confidence that software can process it successfully with predictable results.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="7493"/>
  <seriesInfo name="DOI" value="10.17487/RFC7493"/>
</reference>

<reference anchor="RFC8259">
  <front>
    <title>The JavaScript Object Notation (JSON) Data Interchange Format</title>
    <author fullname="T. Bray" initials="T." role="editor" surname="Bray"/>
    <date month="December" year="2017"/>
    <abstract>
      <t>JavaScript Object Notation (JSON) is a lightweight, text-based, language-independent data interchange format. It was derived from the ECMAScript Programming Language Standard. JSON defines a small set of formatting rules for the portable representation of structured data.</t>
      <t>This document removes inconsistencies with other specifications of JSON, repairs specification errors, and offers experience-based interoperability guidance.</t>
    </abstract>
  </front>
  <seriesInfo name="STD" value="90"/>
  <seriesInfo name="RFC" value="8259"/>
  <seriesInfo name="DOI" value="10.17487/RFC8259"/>
</reference>

<reference anchor="RFC8785">
  <front>
    <title>JSON Canonicalization Scheme (JCS)</title>
    <author fullname="A. Rundgren" initials="A." surname="Rundgren"/>
    <author fullname="B. Jordan" initials="B." surname="Jordan"/>
    <author fullname="S. Erdtman" initials="S." surname="Erdtman"/>
    <date month="June" year="2020"/>
    <abstract>
      <t>Cryptographic operations like hashing and signing need the data to be expressed in an invariant format so that the operations are reliably repeatable. One way to address this is to create a canonical representation of the data. Canonicalization also permits data to be exchanged in its original form on the "wire" while cryptographic operations performed on the canonicalized counterpart of the data in the producer and consumer endpoints generate consistent results.</t>
      <t>This document describes the JSON Canonicalization Scheme (JCS). This specification defines how to create a canonical representation of JSON data by building on the strict serialization methods for JSON primitives defined by ECMAScript, constraining JSON data to the Internet JSON (I-JSON) subset, and by using deterministic property sorting.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8785"/>
  <seriesInfo name="DOI" value="10.17487/RFC8785"/>
</reference>




    </references>

    <references title="Informative References" anchor="sec-informative-references">

<reference anchor="AIC-JWT" target="https://datatracker.ietf.org/doc/draft-wei-aic-jwt/">
  <front>
    <title>AI Agent Identity Certificate (AIC) JSON Web Token Profile</title>
    <author initials="J." surname="Wei" fullname="Jijie Wei">
      <organization/>
    </author>
    <date year="2026" month="September"/>
  </front>
</reference>
<reference anchor="AIC" target="https://datatracker.ietf.org/doc/draft-wei-aic-identity-cert/">
  <front>
    <title>AI Agent Identity Certificate (AIC) Extension for X.509 v3</title>
    <author initials="J." surname="Wei" fullname="Jijie Wei">
      <organization/>
    </author>
    <date year="2026" month="September"/>
  </front>
</reference>
<reference anchor="EMILIA-AEB" target="https://datatracker.ietf.org/doc/draft-schrock-action-evidence-boundary/">
  <front>
    <title>The Action Evidence Boundary for Consequential Agent Effects</title>
    <author initials="I." surname="Schrock" fullname="Iman Schrock">
      <organization/>
    </author>
    <date year="2026" month="September"/>
  </front>
  <seriesInfo name="Internet-Draft" value="draft-schrock-action-evidence-boundary-07"/>
</reference>
<reference anchor="AEC" target="https://datatracker.ietf.org/doc/draft-schrock-ep-authorization-evidence-chain/">
  <front>
    <title>Authorization Evidence Chains: Composing Heterogeneous Agent-Action Evidence (EP-AEC)</title>
    <author initials="I." surname="Schrock" fullname="Iman Schrock">
      <organization/>
    </author>
    <date year="2026" month="October"/>
  </front>
  <seriesInfo name="Internet-Draft" value="draft-schrock-ep-authorization-evidence-chain-08"/>
</reference>
<reference anchor="BCR" target="https://datatracker.ietf.org/doc/draft-schrock-ep-bounded-capability-receipts/">
  <front>
    <title>Bounded Capability Receipts and Durable Spend Control for Agent Actions</title>
    <author initials="I." surname="Schrock" fullname="Iman Schrock">
      <organization/>
    </author>
    <date year="2026" month="September"/>
  </front>
  <seriesInfo name="Internet-Draft" value="draft-schrock-ep-bounded-capability-receipts-06"/>
</reference>
<reference anchor="AHUJA-ROUTING" target="https://datatracker.ietf.org/doc/draft-ahuja-agent-routing-policy/">
  <front>
    <title>A Policy Grammar for Inter-Domain Agent Routing</title>
    <author initials="S. P." surname="Ahuja" fullname="Sumit P. Ahuja">
      <organization/>
    </author>
    <date year="2026" month="October"/>
  </front>
  <seriesInfo name="Internet-Draft" value="draft-ahuja-agent-routing-policy-03"/>
</reference>
<reference anchor="PAP" target="https://datatracker.ietf.org/doc/draft-baur-pap/">
  <front>
    <title>Principal Agent Protocol (PAP)</title>
    <author initials="T." surname="Baur" fullname="T. Baur">
      <organization/>
    </author>
    <date year="2026" month="June"/>
  </front>
  <seriesInfo name="Internet-Draft" value="draft-baur-pap-02"/>
</reference>
<reference anchor="ASOR" target="https://datatracker.ietf.org/doc/draft-asor-wimse-agent-delegation-chain/">
  <front>
    <title>Verifiable Attenuated Delegation for AI Agent Chains</title>
    <author initials="R." surname="Asor" fullname="R. Asor">
      <organization/>
    </author>
    <date year="2026" month="October"/>
  </front>
  <seriesInfo name="Internet-Draft" value="draft-asor-wimse-agent-delegation-chain-02"/>
</reference>
<reference anchor="JACKSON" target="https://datatracker.ietf.org/doc/draft-jackson-wimse-evaluation/">
  <front>
    <title>Verifier-Side Evaluation Semantics for Delegated Authority Chains</title>
    <author initials="W." surname="Jackson" fullname="Wes Jackson">
      <organization/>
    </author>
    <date year="2026" month="October"/>
  </front>
  <seriesInfo name="Internet-Draft" value="draft-jackson-wimse-evaluation-04"/>
</reference>
<reference anchor="KONDA" target="https://datatracker.ietf.org/doc/draft-konda-agentproto-evaluation-state/">
  <front>
    <title>Preserving Evaluation State in Agent Protocol Decisions</title>
    <author initials="G." surname="Konda" fullname="Girish Konda">
      <organization/>
    </author>
    <date year="2026" month="October"/>
  </front>
  <seriesInfo name="Internet-Draft" value="draft-konda-agentproto-evaluation-state-02"/>
</reference>
<reference anchor="GILDA" target="https://datatracker.ietf.org/doc/draft-gilda-audit-agent-audit-record/">
  <front>
    <title>An Audit Record Format for AI Agent Authorization Decisions</title>
    <author initials="S." surname="Gilda" fullname="Sankalp Gilda">
      <organization/>
    </author>
    <date year="2026" month="October"/>
  </front>
  <seriesInfo name="Internet-Draft" value="draft-gilda-audit-agent-audit-record-00"/>
</reference>
<reference anchor="WIMSE-AIMS" target="https://datatracker.ietf.org/doc/draft-ietf-wimse-aims/">
  <front>
    <title>AI Identity Management System</title>
    <author initials="P." surname="Kasselman" fullname="Pieter Kasselman">
      <organization/>
    </author>
    <author initials="J." surname="Lombardo" fullname="Jeff Lombardo">
      <organization/>
    </author>
    <author initials="Y." surname="Rosomakho" fullname="Yaroslav Rosomakho">
      <organization/>
    </author>
    <author initials="B." surname="Campbell" fullname="Brian Campbell">
      <organization/>
    </author>
    <author initials="N." surname="Steele" fullname="Nick Steele">
      <organization/>
    </author>
    <author initials="A." surname="Parecki" fullname="Aaron Parecki">
      <organization/>
    </author>
    <date year="2026" month="September"/>
  </front>
  <seriesInfo name="Internet-Draft" value="draft-ietf-wimse-aims-00"/>
</reference>
<reference anchor="SWEENEY" target="https://datatracker.ietf.org/doc/draft-sweeney-wimse-credential-delegation/">
  <front>
    <title>Credential Delegation Protocol for AI Agents in Multi-System Environments</title>
    <author initials="K." surname="Sweeney" fullname="Kieran Sweeney">
      <organization/>
    </author>
    <date year="2026" month="October"/>
  </front>
  <seriesInfo name="Internet-Draft" value="draft-sweeney-wimse-credential-delegation-01"/>
</reference>
<reference anchor="REECE" target="https://datatracker.ietf.org/doc/draft-reece-wimse-cross-org-delegation/">
  <front>
    <title>Cross-Organizational Delegation for Workload and Agent Identity: Problem Statement and Requirements</title>
    <author initials="M." surname="Reece" fullname="M. Reece">
      <organization/>
    </author>
    <date year="2026" month="August"/>
  </front>
  <seriesInfo name="Internet-Draft" value="draft-reece-wimse-cross-org-delegation-02"/>
</reference>
<reference anchor="LIU-SCHEMAS" target="https://datatracker.ietf.org/doc/draft-liu-oauth-authorization-schemas/">
  <front>
    <title>Domain-Specific Authorization Schemas for OAuth 2.0</title>
    <author initials="D." surname="Liu" fullname="D. Liu">
      <organization/>
    </author>
    <date year="2026" month="October"/>
  </front>
  <seriesInfo name="Internet-Draft" value="draft-liu-oauth-authorization-schemas-00"/>
</reference>
<reference anchor="MISSION" target="https://datatracker.ietf.org/doc/draft-mcguinness-oauth-mission/">
  <front>
    <title>Mission-Bound Authorization for OAuth 2.0</title>
    <author initials="K." surname="McGuinness" fullname="Karl McGuinness">
      <organization/>
    </author>
    <date year="2026" month="July"/>
  </front>
  <seriesInfo name="Internet-Draft" value="draft-mcguinness-oauth-mission-01"/>
</reference>


<reference anchor="RFC9396">
  <front>
    <title>OAuth 2.0 Rich Authorization Requests</title>
    <author fullname="T. Lodderstedt" initials="T." surname="Lodderstedt"/>
    <author fullname="J. Richer" initials="J." surname="Richer"/>
    <author fullname="B. Campbell" initials="B." surname="Campbell"/>
    <date month="May" year="2023"/>
    <abstract>
      <t>This document specifies a new parameter authorization_details that is used to carry fine-grained authorization data in OAuth messages.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9396"/>
  <seriesInfo name="DOI" value="10.17487/RFC9396"/>
</reference>


<reference anchor="CAID" target="https://datatracker.ietf.org/doc/draft-schrock-canonical-action-identifier/">
  <front>
    <title>The Canonical Action Identifier (CAID)</title>
    <author initials="I." surname="Schrock" fullname="Iman Schrock">
      <organization/>
    </author>
    <date year="2026" month="October"/>
  </front>
  <seriesInfo name="Internet-Draft" value="draft-schrock-canonical-action-identifier-05"/>
</reference>
<reference anchor="ATN" target="https://datatracker.ietf.org/doc/draft-somoza-dmsc-atn-agent-trust-negotiation/">
  <front>
    <title>Agent Trust Negotiation</title>
    <author>
      <organization/>
    </author>
    <date year="n.d."/>
  </front>
</reference>
<reference anchor="AAT" target="https://datatracker.ietf.org/doc/draft-niyikiza-oauth-attenuating-agent-tokens/">
  <front>
    <title>OAuth 2.0 Attenuating Agent Tokens</title>
    <author>
      <organization/>
    </author>
    <date year="n.d."/>
  </front>
</reference>
<reference anchor="AIP" target="https://datatracker.ietf.org/doc/draft-prakash-aip/">
  <front>
    <title>Agent Identity Protocol</title>
    <author>
      <organization/>
    </author>
    <date year="2026" month="October"/>
  </front>
  <seriesInfo name="Internet-Draft" value="draft-prakash-aip-02"/>
</reference>
<reference anchor="AAE" target="https://datatracker.ietf.org/doc/draft-kroehl-agentic-trust-aae/">
  <front>
    <title>Agentic Trust Agent Authorization Envelope</title>
    <author>
      <organization/>
    </author>
    <date year="n.d."/>
  </front>
</reference>
<reference anchor="AOA" target="https://datatracker.ietf.org/doc/draft-liu-agent-operation-authorization/">
  <front>
    <title>Agent Operation Authorization</title>
    <author>
      <organization/>
    </author>
    <date year="n.d."/>
  </front>
</reference>
<reference anchor="EVC" target="https://datatracker.ietf.org/doc/draft-kondoju-evc/">
  <front>
    <title>External Verifier Contract</title>
    <author>
      <organization/>
    </author>
    <date year="n.d."/>
  </front>
</reference>
<reference anchor="CLC-CORPUS" target="https://github.com/varwof/capability/tree/b15b51b8f94125b7a00aa281f98405806e6ea95c">
  <front>
    <title>Capability Language Core -- conformance corpus, schemas and working documents</title>
    <author initials="J." surname="Wei" fullname="Jijie Wei">
      <organization/>
    </author>
    <date year="2026" month="September"/>
  </front>
</reference>
<reference anchor="AEGIS" target="https://github.com/aegis-initiative/aegis-governance">
  <front>
    <title>AEGIS Governance (AIAM-1 v0.1)</title>
    <author>
      <organization/>
    </author>
    <date year="n.d."/>
  </front>
</reference>


    </references>

</references>



  <section anchor="appendix-a-consumption-mapping"><name>Consumption Mapping</name>

<t>The rows below are examples of consumers of this shared vocabulary, not
required profiles: conformance to CLC-A does not depend on any of them.  RAR
authorization details <xref target="RFC9396"/> are one such carrier; CLC is a candidate
evaluation language for the capabilities they declare.</t>

<texttable>
      <ttcol align="left">Consumer</ttcol>
      <ttcol align="left">Grammar</ttcol>
      <ttcol align="left">Binding</ttcol>
      <ttcol align="left">Verdict</ttcol>
      <ttcol align="left">Notes</ttcol>
      <c>AIC-JWT DA</c>
      <c>capability[].id</c>
      <c>Entailment (Section 6.1)</c>
      <c>Decision (Section 9)</c>
      <c>AIC-JWT Section 5 binding</c>
      <c>EMILIA AEB</c>
      <c>AEG capability_class</c>
      <c>Match (Section 6.4) + Entailment (Section 6.1)</c>
      <c>SATISFIED (Section 10) + Decision (Section 9)</c>
      <c>AEB Section 3 decision levels (VERIFIED/MATCH/SATISFIED) + Section 5.1 ObservedAction + Section 7 AEC slots; a VERIFIED authorization artifact carries the Grant</c>
      <c>RAR authorization_details</c>
      <c>type="capability"</c>
      <c>Entailment (Section 6.1)</c>
      <c>Decision (Section 9)</c>
      <c><xref target="RFC9396"/> format</c>
      <c>Delegation chain</c>
      <c>each hop's declared set</c>
      <c>Intersection (Section 7)</c>
      <c>Decision (Section 9)</c>
      <c>intersection over declared sets only; a hop that must stay inside its parent is checked with Containment (Section 13)</c>
      <c>Delegation containment</c>
      <c>parent and child boundaries</c>
      <c>Contains (Section 13)</c>
      <c>Containment verdict (Section 13)</c>
      <c>per-hop <spanx style="verb">child ⊆ parent</spanx>; carrier vocabularies and reason-code mapping in Appendix C</c>
</texttable>

</section>
<section anchor="appendix-b-reference-vectors"><name>Reference Vectors</name>

<t><strong>Grouping vs <spanx style="verb">kind</spanx> mapping</strong>: The appendix groups vectors by semantic
category (B.1–B.6).  The machine-readable <spanx style="verb">vectors.json</spanx> uses a <spanx style="verb">kind</spanx>
field that collates these groups differently:
<spanx style="verb">kind=entail (65)</spanx> covers B.2 (8), the 53 params vectors that sit under
<spanx style="verb">kind=entail</spanx> (B.3's 70 rows minus <spanx style="verb">params-028/-029/-034/-036</spanx> and the
thirteen type-sensitivity backfill rows <spanx style="verb">params-040</spanx>–<spanx style="verb">params-052</spanx>, all
seventeen being <spanx style="verb">kind=decide</spanx>), and the four scheme stress-test entail vectors
(<spanx style="verb">clinical-001/-002</spanx>, <spanx style="verb">payments-001</spanx>, <spanx style="verb">data-002</spanx>); <spanx style="verb">kind=decide (63)</spanx>
covers the B.5 rows below (34), the seven combined decision vectors,
<spanx style="verb">payments-002</spanx> and <spanx style="verb">data-001</spanx>, the four params boundary decisions that
sit under <spanx style="verb">kind=decide</spanx> (<spanx style="verb">params-028/-029/-034/-036</spanx>, all four also
listed in B.3), the three nested key-closure vectors
(<spanx style="verb">nested-001/-002/-003</spanx>) and the thirteen type-sensitivity backfill
vectors (<spanx style="verb">params-040</spanx>–<spanx style="verb">params-052</spanx>, also listed in B.3);
<spanx style="verb">kind=intersect (17)</spanx> covers B.4 (10), the four combined vectors that
call the intersect function (<spanx style="verb">combined-004/-005/-008/-011</spanx>) and the three
CLC-1.15 cross-type audit vectors (<spanx style="verb">intersect-011/-012/-013</spanx>, outside the
B.1–B.6 tables); <spanx style="verb">kind=syntax (9)</spanx> is exactly B.1.  These counts are reproducible from the corpus itself:
every vector in <spanx style="verb">vectors.json</spanx> carries its <spanx style="verb">kind</spanx>, so the mapping is
machine-checkable rather than maintained by hand.</t>

<section anchor="syntax-9-vectors"><name>Syntax (9 vectors)</name>

<texttable>
      <ttcol align="left">#</ttcol>
      <ttcol align="left">Input</ttcol>
      <ttcol align="left">Expected</ttcol>
      <ttcol align="left">Derivation</ttcol>
      <c>S1</c>
      <c><spanx style="verb">std/database-v1:query:SELECT</spanx></c>
      <c>valid</c>
      <c>literal identifier</c>
      <c>S2</c>
      <c><spanx style="verb">std/database-v1:query:*</spanx></c>
      <c>valid</c>
      <c>trailing wildcard</c>
      <c>S3</c>
      <c><spanx style="verb">*:query:SELECT</spanx></c>
      <c>deny</c>
      <c>bare <spanx style="verb">*</spanx> illegal</c>
      <c>S4</c>
      <c><spanx style="verb">std/database-v1:query:SEL*</spanx></c>
      <c>deny</c>
      <c>partial segment wildcard</c>
      <c>S5</c>
      <c><spanx style="verb">std/database-v1:query:{read,write}</spanx></c>
      <c>deny</c>
      <c>alternation not v1</c>
      <c>S6</c>
      <c><spanx style="verb">std/database-v1:query:[a-z]</spanx></c>
      <c>deny</c>
      <c>character class not v1</c>
      <c>S7</c>
      <c><spanx style="verb">database:query</spanx></c>
      <c>deny(<spanx style="verb">invalid_capability_id</spanx>)</c>
      <c>Section 3 scheme grammar: no vendor <spanx style="verb">"/"</spanx> product <spanx style="verb">"-v"</spanx> major (the spec's own counter-example)</c>
      <c>S8</c>
      <c><spanx style="verb">bad:op</spanx></c>
      <c>deny(<spanx style="verb">invalid_capability_id</spanx>)</c>
      <c>Section 3 scheme grammar: scheme <spanx style="verb">bad</spanx> does not match vendor/product-vN (snips the lax-intake hole)</c>
      <c>S9</c>
      <c><spanx style="verb">std/data-v1:fetch:item:42</spanx></c>
      <c>valid</c>
      <c>multi-segment action + conforming scheme (positive boundary)</c>
</texttable>

</section>
<section anchor="entailment-8-vectors"><name>Entailment (8 vectors)</name>

<texttable>
      <ttcol align="left">#</ttcol>
      <ttcol align="left">Grant</ttcol>
      <ttcol align="left">Operation</ttcol>
      <ttcol align="left">Expected</ttcol>
      <ttcol align="left">Derivation</ttcol>
      <c>E1</c>
      <c><spanx style="verb">std/database-v1:query:SELECT</spanx></c>
      <c><spanx style="verb">std/database-v1:query:SELECT</spanx></c>
      <c>allow</c>
      <c>literal match</c>
      <c>E2</c>
      <c><spanx style="verb">std/database-v1:query:*</spanx></c>
      <c><spanx style="verb">std/database-v1:query:SELECT</spanx></c>
      <c>allow</c>
      <c>trailing wildcard</c>
      <c>E3</c>
      <c><spanx style="verb">std/database-v1:query:*</spanx></c>
      <c><spanx style="verb">std/database-v1:query:SELECT:deep</spanx></c>
      <c>allow</c>
      <c>wildcard multi-segment</c>
      <c>E4</c>
      <c><spanx style="verb">std/database-v1:query:*</spanx></c>
      <c><spanx style="verb">std/database-v1:admin:DDL</spanx></c>
      <c>deny</c>
      <c>different namespace</c>
      <c>E5</c>
      <c><spanx style="verb">std/database-v1:query:*</spanx></c>
      <c><spanx style="verb">std/database-v1:query</spanx></c>
      <c>deny</c>
      <c>no trailing segment</c>
      <c>E6</c>
      <c><spanx style="verb">std/database-v1:query:SELECT</spanx></c>
      <c><spanx style="verb">std/database-v1:query:INSERT</spanx></c>
      <c>deny</c>
      <c>literal mismatch</c>
      <c>E7</c>
      <c><spanx style="verb">std/database-v1:*</spanx></c>
      <c><spanx style="verb">std/database-v1:query:SELECT</spanx></c>
      <c>deny</c>
      <c>class-position (product-segment) wildcard is v1-forbidden: only a trailing action segment may be <spanx style="verb">*</spanx> (Section 3; Section 9.1 layer 3)</c>
      <c>E8</c>
      <c><spanx style="verb">std/database-v1:*</spanx></c>
      <c><spanx style="verb">std/database-v1:admin:DDL</spanx></c>
      <c>deny</c>
      <c>same class-position wildcard; the v1-forbidden shape denies regardless of the action it faces (Section 3; Section 9.1 layer 3)</c>
</texttable>

</section>
<section anchor="params-70-vectors"><name>Params (70 vectors)</name>

<t>The params vectors are grouped by the property each subgroup pins.</t>

<section anchor="basic-bounds-enums-objects-and-unconstrained-grants-p1p15"><name>Basic bounds, enums, objects and unconstrained grants (P1–P15)</name>

<texttable>
      <ttcol align="left">#</ttcol>
      <ttcol align="left">Grant</ttcol>
      <ttcol align="left">Operation</ttcol>
      <ttcol align="left">Expected</ttcol>
      <ttcol align="left">Derivation</ttcol>
      <c>P1</c>
      <c><spanx style="verb">{"limit":100}</spanx></c>
      <c><spanx style="verb">{"limit":50}</spanx></c>
      <c>allow</c>
      <c>50 ≤ 100</c>
      <c>P2</c>
      <c><spanx style="verb">{"limit":100}</spanx></c>
      <c><spanx style="verb">{"limit":150}</spanx></c>
      <c>deny</c>
      <c>150 &gt; 100</c>
      <c>P3</c>
      <c><spanx style="verb">{"tables":["a","b"]}</spanx></c>
      <c><spanx style="verb">{"tables":["a"]}</spanx></c>
      <c>allow</c>
      <c>subset</c>
      <c>P4</c>
      <c><spanx style="verb">{"tables":["a"]}</spanx></c>
      <c><spanx style="verb">{"tables":["a","b"]}</spanx></c>
      <c>deny</c>
      <c>"b" absent (<spanx style="verb">not_in_enum</spanx>)</c>
      <c>P5</c>
      <c><spanx style="verb">{"columns":{"t":["id"]}}</spanx></c>
      <c><spanx style="verb">{"columns":{"t":["id","name"]}}</spanx></c>
      <c>deny</c>
      <c>"name" absent (<spanx style="verb">not_in_enum</spanx>)</c>
      <c>P6</c>
      <c><spanx style="verb">{}</spanx></c>
      <c><spanx style="verb">{"limit":50}</spanx></c>
      <c>allow</c>
      <c>unconstrained (<spanx style="verb">{}</spanx> ≡ absent; the literal <spanx style="verb">{}</spanx> is pinned by <spanx style="verb">decide-028</spanx>, <spanx style="verb">params-006</spanx> pins the absent form)</c>
      <c>P7</c>
      <c><spanx style="verb">{"tables":[]}</spanx></c>
      <c><spanx style="verb">{"tables":["a"]}</spanx></c>
      <c>deny</c>
      <c>explicit empty bound denies the class</c>
      <c>P8</c>
      <c><spanx style="verb">{"limit":100}</spanx></c>
      <c><spanx style="verb">{"limit":null}</spanx></c>
      <c>deny</c>
      <c>null invalid in v1 (<spanx style="verb">invalid_params_null</spanx>)</c>
      <c>P9</c>
      <c><spanx style="verb">{"station":[1,2,3]}</spanx></c>
      <c><spanx style="verb">{"station":2}</spanx></c>
      <c>allow</c>
      <c>scalar member of array set</c>
      <c>P10</c>
      <c><spanx style="verb">{"station":[1,2,3]}</spanx></c>
      <c><spanx style="verb">{"station":9}</spanx></c>
      <c>deny</c>
      <c>9 ∉ allowed set (<spanx style="verb">not_in_enum</spanx>)</c>
      <c>P11</c>
      <c><spanx style="verb">{"station":[1,3]}</spanx></c>
      <c><spanx style="verb">{"station":[1,3]}</spanx></c>
      <c>allow</c>
      <c>array, every element a member</c>
      <c>P12</c>
      <c><spanx style="verb">{"station":[1,3]}</spanx></c>
      <c><spanx style="verb">{"station":[1,2,3]}</spanx></c>
      <c>deny</c>
      <c>2 ∉ allowed set (<spanx style="verb">not_in_enum</spanx>)</c>
      <c>P13</c>
      <c><spanx style="verb">{"station":[1],"speed":0.3}</spanx></c>
      <c><spanx style="verb">{"station":1,"speed":0.25}</spanx></c>
      <c>allow</c>
      <c>member + number bound unaffected</c>
      <c>P14</c>
      <c><spanx style="verb">{"station":[3]}</spanx></c>
      <c><spanx style="verb">{"station":2}</spanx></c>
      <c>deny</c>
      <c>categorical: granting 3 does not cover 1/2 (<spanx style="verb">not_in_enum</spanx>)</c>
      <c>P15</c>
      <c><spanx style="verb">{"columns":{"t":["id","name"]}}</spanx></c>
      <c><spanx style="verb">{"columns":{"t":["id"]}}</spanx></c>
      <c>allow</c>
      <c>object recursion: request element is a member of the granted set (Section 6.2 v1.1)</c>
</texttable>

</section>
<section anchor="raw-input-rejection-and-reason-precedence-p16p27"><name>Raw-input rejection and reason precedence (P16–P27)</name>

<texttable>
      <ttcol align="left">#</ttcol>
      <ttcol align="left">Grant</ttcol>
      <ttcol align="left">Operation</ttcol>
      <ttcol align="left">Expected</ttcol>
      <ttcol align="left">Derivation</ttcol>
      <c>P16</c>
      <c><spanx style="verb">{"limit":100}</spanx></c>
      <c>raw <spanx style="verb">{"limit":100,"limit":150}</spanx></c>
      <c>deny(<spanx style="verb">invalid_params_duplicate_key</spanx>)</c>
      <c>duplicate JSON key rejected at input normalization (Section 6.2 step 2)</c>
      <c>P17</c>
      <c><spanx style="verb">{"limit":100}</spanx></c>
      <c>raw <spanx style="verb">{"limit":1e400}</spanx></c>
      <c>deny(<spanx style="verb">invalid_params_number</spanx>)</c>
      <c>non-finite number literal (Section 6.2 step 3)</c>
      <c>P18</c>
      <c><spanx style="verb">{"s":"x"}</spanx></c>
      <c>raw <spanx style="verb">{"s":"&lt;600 chars&gt;"}</spanx></c>
      <c>deny(<spanx style="verb">invalid_params_size</spanx>)</c>
      <c>serialized form &gt; 512 B (Section 6.2 step 4)</c>
      <c>P19</c>
      <c><spanx style="verb">{"d":0}</spanx></c>
      <c>raw depth-33 object</c>
      <c>deny(<spanx style="verb">invalid_params_size</spanx>)</c>
      <c>nesting beyond depth 32 (Section 6.2 step 4)</c>
      <c>P20</c>
      <c><spanx style="verb">{"s":"x"}</spanx></c>
      <c>raw <spanx style="verb">{"s":"&lt;512 B&gt;"}</spanx></c>
      <c>allow</c>
      <c>serialized = exactly the 512 B limit (<spanx style="verb">≤</spanx>); positive boundary of P18 (Section 6.2 step 4)</c>
      <c>P21</c>
      <c><spanx style="verb">{"d":0}</spanx></c>
      <c>raw depth-32 object</c>
      <c>allow</c>
      <c>depth exactly the 32 limit (<spanx style="verb">≤</spanx>); positive boundary of P19 (Section 6.2 step 4)</c>
      <c>P22</c>
      <c><spanx style="verb">{"flag":true}</spanx></c>
      <c><spanx style="verb">{"flag":1}</spanx></c>
      <c>deny(<spanx style="verb">params_exceed_grant</spanx>)</c>
      <c>boolean is exact and is NOT a number: <spanx style="verb">1</spanx> must not satisfy a granted <spanx style="verb">true</spanx> (<spanx style="verb">params-022</spanx>)</c>
      <c>P23</c>
      <c><spanx style="verb">{"flag":true}</spanx></c>
      <c><spanx style="verb">{"flag":true}</spanx></c>
      <c>allow</c>
      <c>positive side of P22 (<spanx style="verb">params-023</spanx>)</c>
      <c>P24</c>
      <c><spanx style="verb">{"x":null}</spanx></c>
      <c>(no params)</c>
      <c>deny(<spanx style="verb">invalid_params_null</spanx>)</c>
      <c>layer 6 (null) precedes layer 7 (presence) (<spanx style="verb">params-024</spanx>)</c>
      <c>P25</c>
      <c><spanx style="verb">{"s":"x"}</spanx></c>
      <c>raw <spanx style="verb">{"s":"&lt;512 B&gt;","s":"dup"}</spanx></c>
      <c>deny(<spanx style="verb">invalid_params_size</spanx>)</c>
      <c>multi-fault: size (4) precedes duplicate keys (2) (<spanx style="verb">params-025</spanx>)</c>
      <c>P26</c>
      <c><spanx style="verb">{"s":"x"}</spanx></c>
      <c>raw <spanx style="verb">{"n":1e400,"s":"&lt;512 B&gt;"}</spanx></c>
      <c>deny(<spanx style="verb">invalid_params_size</spanx>)</c>
      <c>multi-fault: size (4) precedes number shape (3) (<spanx style="verb">params-026</spanx>)</c>
      <c>P27</c>
      <c><spanx style="verb">{"a":1}</spanx></c>
      <c>raw <spanx style="verb">{"a":1,"a":2,"n":1e400}</spanx></c>
      <c>deny(<spanx style="verb">invalid_params_duplicate_key</spanx>)</c>
      <c>multi-fault under the size limit: duplicate keys (2) precede number shape (3) (<spanx style="verb">params-027</spanx>)</c>
</texttable>

</section>
<section anchor="canonical-size-and-unicode-boundaries-p28p39"><name>Canonical size and Unicode boundaries (P28–P39)</name>

<texttable>
      <ttcol align="left">#</ttcol>
      <ttcol align="left">Grant</ttcol>
      <ttcol align="left">Operation</ttcol>
      <ttcol align="left">Expected</ttcol>
      <ttcol align="left">Derivation</ttcol>
      <c>P28</c>
      <c><spanx style="verb">{}</spanx></c>
      <c>raw <spanx style="verb">{"n":1e-6,"s":"&lt;494 a&gt;"}</spanx></c>
      <c>deny(<spanx style="verb">invalid_params_size</spanx>)</c>
      <c>the received text is 511 octets but the JCS form writes <spanx style="verb">1e-6</spanx> as <spanx style="verb">0.000001</spanx>, so the Section 6.2 step 4 size is 515 (<spanx style="verb">params-033</spanx>)</c>
      <c>P29</c>
      <c><spanx style="verb">{}</spanx></c>
      <c><spanx style="verb">{"n":1e-6,"s":"&lt;494 a&gt;"}</spanx> (decoded)</c>
      <c>deny(<spanx style="verb">invalid_params_size</spanx>)</c>
      <c>decoded counterpart of P28: both boundaries agree (<spanx style="verb">params-034</spanx>)</c>
      <c>P30</c>
      <c><spanx style="verb">{}</spanx></c>
      <c>raw <spanx style="verb">{"n":1.0,"s":"&lt;498 a&gt;"}</spanx></c>
      <c>allow</c>
      <c>the received text is 514 octets but the JCS form writes <spanx style="verb">1.0</spanx> as <spanx style="verb">1</spanx>, so the size is 512 and inside the cap (<spanx style="verb">params-035</spanx>)</c>
      <c>P31</c>
      <c><spanx style="verb">{}</spanx></c>
      <c><spanx style="verb">{"n":1.0,"s":"&lt;498 a&gt;"}</spanx> (decoded)</c>
      <c>allow</c>
      <c>decoded counterpart of P30: a raw check counting the received token would refuse it (<spanx style="verb">params-036</spanx>)</c>
      <c>P32</c>
      <c><spanx style="verb">{}</spanx></c>
      <c>raw <spanx style="verb">{"s":"&lt;100×U+1F600&gt;"}</spanx></c>
      <c>allow</c>
      <c>100 literal astral characters are 408 JCS octets; counting UTF-16 code units would double the count and refuse (<spanx style="verb">params-037</spanx>)</c>
      <c>P33</c>
      <c><spanx style="verb">{}</spanx></c>
      <c>raw <spanx style="verb">{"s":"&lt;100×\ud83d\ude00&gt;"}</spanx></c>
      <c>allow</c>
      <c>escaped spelling of P32: literal and escaped forms of one string MUST reach the same verdict and the same size (<spanx style="verb">params-038</spanx>)</c>
      <c>P34</c>
      <c><spanx style="verb">{}</spanx></c>
      <c>raw <spanx style="verb">{"s":"a\nb"}</spanx> (literal U+000A)</c>
      <c>deny(<spanx style="verb">invalid_params_number</spanx>)</c>
      <c>a literal control character is not valid JSON text; Go and Python refused it already (<spanx style="verb">params-039</spanx>)</c>
      <c>P35</c>
      <c><spanx style="verb">{}</spanx></c>
      <c><spanx style="verb">{"x":"&lt;260×é&gt;"}</spanx> (decoded)</c>
      <c>deny(<spanx style="verb">invalid_params_size</spanx>)</c>
      <c>260 U+00E9 code points serialize to 528 JCS octets &gt; 512; non-ASCII sizes are measured on the canonical UTF-8 form, never in code points or UTF-16 units (<spanx style="verb">params-028</spanx>, rev CLC-1.4)</c>
      <c>P36</c>
      <c><spanx style="verb">{}</spanx></c>
      <c><spanx style="verb">{"x":"&lt;251×é&gt;"}</spanx> (decoded)</c>
      <c>allow</c>
      <c>251 U+00E9 serialize to 510 octets ≤ 512; the positive side of P35 (<spanx style="verb">params-029</spanx>, rev CLC-1.4)</c>
      <c>P37</c>
      <c><spanx style="verb">{"s":"x"}</spanx></c>
      <c>raw <spanx style="verb">{"s":"&lt;251×\u00e9 escapes&gt;"}</spanx></c>
      <c>allow</c>
      <c>the same 510-octet string spelled with <spanx style="verb">\u00e9</spanx> escapes reaches the same verdict and the same size as the literal form of P36 (<spanx style="verb">params-030</spanx>, rev CLC-1.4)</c>
      <c>P38</c>
      <c><spanx style="verb">{"limit":100}</spanx></c>
      <c>raw <spanx style="verb">{"s":"\ud800"}</spanx></c>
      <c>deny(<spanx style="verb">invalid_params_number</spanx>)</c>
      <c>a lone surrogate escape is not valid Unicode: refused at the raw boundary, never repaired to U+FFFD (RFC 8785 Section 3.2.2.2; Section 6.2 step 2; <spanx style="verb">params-031</spanx>, rev CLC-1.6)</c>
      <c>P39</c>
      <c><spanx style="verb">{}</spanx></c>
      <c>raw <spanx style="verb">{"s":"\ud83d\ude02"}</spanx></c>
      <c>allow</c>
      <c>a valid surrogate pair is one character (U+1F602, four UTF-8 octets) and counts as such under the size rule (<spanx style="verb">params-032</spanx>, rev CLC-1.6)</c>
</texttable>

</section>
<section anchor="type-sensitive-equality-p40p52"><name>Type-sensitive equality (P40–P52)</name>

<texttable>
      <ttcol align="left">#</ttcol>
      <ttcol align="left">Grant</ttcol>
      <ttcol align="left">Operation</ttcol>
      <ttcol align="left">Expected</ttcol>
      <ttcol align="left">Derivation</ttcol>
      <c>P40</c>
      <c><spanx style="verb">{"n":50}</spanx></c>
      <c><spanx style="verb">{"n":"50"}</spanx></c>
      <c>deny(<spanx style="verb">params_exceed_grant</spanx>)</c>
      <c>a JSON string is not a number: <spanx style="verb">"50"</spanx> must not satisfy a granted <spanx style="verb">50</spanx> — Section 6.5 layer-8 type sensitivity inside the Section 6.2 algebra; host carriers normalize per Section 6.2 step 9 (<spanx style="verb">params-040</spanx>)</c>
      <c>P41</c>
      <c><spanx style="verb">{"n":"50"}</spanx></c>
      <c><spanx style="verb">{"n":50}</spanx></c>
      <c>deny(<spanx style="verb">params_exceed_grant</spanx>)</c>
      <c>a number never satisfies a string grant — string row, exact; the reverse direction of P40 (<spanx style="verb">params-041</spanx>)</c>
      <c>P42</c>
      <c><spanx style="verb">{"n":100}</spanx></c>
      <c><spanx style="verb">{"n":100.0}</spanx></c>
      <c>allow</c>
      <c><spanx style="verb">100.0</spanx> is the same JSON number as <spanx style="verb">100</spanx> after step-1 canonicalization; 100 ≤ 100 (<spanx style="verb">params-042</spanx>)</c>
      <c>P43</c>
      <c><spanx style="verb">{"n":100}</spanx></c>
      <c><spanx style="verb">{"n":99.5}</spanx></c>
      <c>allow</c>
      <c>a numeric grant is an upper bound, not an exact value: 99.5 ≤ 100 (<spanx style="verb">params-043</spanx>)</c>
      <c>P44</c>
      <c><spanx style="verb">{"n":100}</spanx></c>
      <c><spanx style="verb">{"n":100.5}</spanx></c>
      <c>deny(<spanx style="verb">params_exceed_grant</spanx>)</c>
      <c>100.5 &gt; 100 (<spanx style="verb">params-044</spanx>)</c>
      <c>P45</c>
      <c><spanx style="verb">{"n":100.5}</spanx></c>
      <c><spanx style="verb">{"n":100}</spanx></c>
      <c>allow</c>
      <c>the upper bound in the other direction: 100 ≤ 100.5 (<spanx style="verb">params-045</spanx>)</c>
      <c>P46</c>
      <c><spanx style="verb">{"n":100.5}</spanx></c>
      <c><spanx style="verb">{"n":101}</spanx></c>
      <c>deny(<spanx style="verb">params_exceed_grant</spanx>)</c>
      <c>101 &gt; 100.5 (<spanx style="verb">params-046</spanx>)</c>
      <c>P47</c>
      <c><spanx style="verb">{"s":"abc"}</spanx></c>
      <c><spanx style="verb">{"s":"abc"}</spanx></c>
      <c>allow</c>
      <c>string-branch guard: equal strings still allow under the type-sensitivity backfill (<spanx style="verb">params-047</spanx>)</c>
      <c>P48</c>
      <c><spanx style="verb">{"flag":true}</spanx></c>
      <c><spanx style="verb">{"flag":"true"}</spanx></c>
      <c>deny(<spanx style="verb">params_exceed_grant</spanx>)</c>
      <c>boolean is exact only: the string <spanx style="verb">"true"</spanx> is not the boolean <spanx style="verb">true</spanx> (<spanx style="verb">params-048</spanx>)</c>
      <c>P49</c>
      <c><spanx style="verb">{"n":1}</spanx></c>
      <c><spanx style="verb">{"n":true}</spanx></c>
      <c>deny(<spanx style="verb">params_exceed_grant</spanx>)</c>
      <c><spanx style="verb">true ≠ 1</spanx> (Section 6.5 layer 8) — the boolean-side reverse of P22 (<spanx style="verb">params-049</spanx>)</c>
      <c>P50</c>
      <c><spanx style="verb">{"cfg":{"limit":"10"}}</spanx></c>
      <c><spanx style="verb">{"cfg":{"limit":10}}</spanx></c>
      <c>deny(<spanx style="verb">params_exceed_grant</spanx>)</c>
      <c>nested objects recurse with the same type sensitivity (mirrors <spanx style="verb">nested-003</spanx>) (<spanx style="verb">params-050</spanx>)</c>
      <c>P51</c>
      <c><spanx style="verb">{"ids":[1,2]}</spanx></c>
      <c><spanx style="verb">{"ids":[1,"2"]}</spanx></c>
      <c>deny(<spanx style="verb">not_in_enum</spanx>)</c>
      <c>enum membership is type-sensitive: the member <spanx style="verb">2</spanx> is not the string <spanx style="verb">"2"</spanx> (<spanx style="verb">params-051</spanx>)</c>
      <c>P52</c>
      <c><spanx style="verb">{"ids":[1,2]}</spanx></c>
      <c><spanx style="verb">{"ids":[1.0]}</spanx></c>
      <c>allow</c>
      <c><spanx style="verb">1.0</spanx> is the member <spanx style="verb">1</spanx> after canonicalization (Section 6.5 layer 8) (<spanx style="verb">params-052</spanx>)</c>
</texttable>

</section>
<section anchor="i-json-bound-and-bom-p53p62"><name>I-JSON bound and BOM (P53–P62)</name>

<texttable>
      <ttcol align="left">#</ttcol>
      <ttcol align="left">Grant</ttcol>
      <ttcol align="left">Operation</ttcol>
      <ttcol align="left">Expected</ttcol>
      <ttcol align="left">Derivation</ttcol>
      <c>P53</c>
      <c><spanx style="verb">{"n":9007199254740991}</spanx></c>
      <c>raw <spanx style="verb">{"n":9007199254740991}</spanx></c>
      <c>allow</c>
      <c>top of the I-JSON integer range: 2^53 − 1 is the largest integer-valued magnitude accepted (<spanx style="verb">params-053</spanx>, rev CLC-1.16)</c>
      <c>P54</c>
      <c><spanx style="verb">{"n":9007199254740992}</spanx></c>
      <c>raw <spanx style="verb">{"n":9007199254740992}</spanx></c>
      <c>deny(<spanx style="verb">invalid_params_number</spanx>)</c>
      <c>the first refused integer-valued magnitude above the bound (<spanx style="verb">params-054</spanx>)</c>
      <c>P55</c>
      <c><spanx style="verb">{"n":9007199254740993}</spanx></c>
      <c>raw <spanx style="verb">{"n":9007199254740993}</spanx></c>
      <c>deny(<spanx style="verb">invalid_params_number</spanx>)</c>
      <c>2^53 + 1 rounds to 2^53 in binary64; refused, never rounded (<spanx style="verb">params-055</spanx>)</c>
      <c>P56</c>
      <c><spanx style="verb">{"n":9007199254740993}</spanx></c>
      <c>raw <spanx style="verb">{"n":9.007199254740993e15}</spanx></c>
      <c>deny(<spanx style="verb">invalid_params_number</spanx>)</c>
      <c>the bound is on the mathematical value: the exponent spelling cannot launder an over-bound integer (<spanx style="verb">params-056</spanx>)</c>
      <c>P57</c>
      <c><spanx style="verb">{"n":9007199254740993}</spanx></c>
      <c>raw <spanx style="verb">{"n":9007199254740993.0}</spanx></c>
      <c>deny(<spanx style="verb">invalid_params_number</spanx>)</c>
      <c>a trailing <spanx style="verb">.0</spanx> does not make it a fraction (<spanx style="verb">params-057</spanx>)</c>
      <c>P58</c>
      <c><spanx style="verb">{"n":-9007199254740993}</spanx></c>
      <c>raw <spanx style="verb">{"n":-9007199254740993}</spanx></c>
      <c>deny(<spanx style="verb">invalid_params_number</spanx>)</c>
      <c>the rule is on magnitude: the negative side is refused like the positive (<spanx style="verb">params-058</spanx>)</c>
      <c>P59</c>
      <c><spanx style="verb">{"n":4503599627370495.5}</spanx></c>
      <c>raw <spanx style="verb">{"n":4503599627370495.5}</spanx></c>
      <c>allow</c>
      <c>a non-integer near the top is unaffected: step 1 already fixed its rounding (<spanx style="verb">params-059</spanx>)</c>
      <c>P60</c>
      <c><spanx style="verb">{"n":&lt;30-digit&gt;}</spanx></c>
      <c>raw</c>
      <c>deny(<spanx style="verb">invalid_params_number</spanx>)</c>
      <c>far over the bound and over-precision; both clauses resolve to one stable code (<spanx style="verb">params-060</spanx>)</c>
      <c>P61</c>
      <c><spanx style="verb">{"n":1}</spanx></c>
      <c>raw with a leading UTF-8 BOM</c>
      <c>deny(<spanx style="verb">invalid_params_number</spanx>)</c>
      <c>a leading BOM is not part of a JSON text — refused before parsing (Section 6.2 step 8; <spanx style="verb">params-061</spanx>)</c>
      <c>P62</c>
      <c><spanx style="verb">{}</spanx></c>
      <c>raw: BOM-prefixed <strong>and</strong> over the size cap</c>
      <c>deny(<spanx style="verb">invalid_params_number</spanx>)</c>
      <c>the BOM refusal outranks the step-4 size cap (<spanx style="verb">params-062</spanx>)</c>
</texttable>

</section>
<section anchor="numeric-corner-cases-p63p70"><name>Numeric corner cases (P63–P70)</name>

<texttable>
      <ttcol align="left">#</ttcol>
      <ttcol align="left">Grant</ttcol>
      <ttcol align="left">Operation</ttcol>
      <ttcol align="left">Expected</ttcol>
      <ttcol align="left">Derivation</ttcol>
      <c>P63</c>
      <c><spanx style="verb">{"n":0}</spanx></c>
      <c>raw <spanx style="verb">{"n":-0}</spanx></c>
      <c>allow</c>
      <c><spanx style="verb">-0</spanx> and <spanx style="verb">0</spanx> are one JSON number; JCS renders both as <spanx style="verb">0</spanx> (<spanx style="verb">params-063</spanx>, rev CLC-1.17)</c>
      <c>P64</c>
      <c><spanx style="verb">{"n":1000}</spanx></c>
      <c>raw <spanx style="verb">{"n":1e3}</spanx></c>
      <c>allow</c>
      <c><spanx style="verb">1e3</spanx> ≡ <spanx style="verb">1000</spanx>: number identity is the value, not the spelling (<spanx style="verb">params-064</spanx>)</c>
      <c>P65</c>
      <c><spanx style="verb">{"n":0.0015}</spanx></c>
      <c>raw <spanx style="verb">{"n":1.5e-3}</spanx></c>
      <c>allow</c>
      <c><spanx style="verb">1.5e-3</spanx> ≡ <spanx style="verb">0.0015</spanx> (<spanx style="verb">params-065</spanx>)</c>
      <c>P66</c>
      <c><spanx style="verb">{"n":1e100}</spanx></c>
      <c>raw <spanx style="verb">{"n":1e100}</spanx></c>
      <c>deny(<spanx style="verb">invalid_params_number</spanx>)</c>
      <c><spanx style="verb">1e100</spanx> is integer-valued and far outside the I-JSON range; binary64 cannot represent it exactly, but the mathematical-value bound refuses it independently of carrier representability (<spanx style="verb">params-066</spanx>)</c>
      <c>P67</c>
      <c><spanx style="verb">{"n":1.7976931348623157e308}</spanx></c>
      <c>raw</c>
      <c>deny(<spanx style="verb">invalid_params_number</spanx>)</c>
      <c>the largest finite binary64 is integer-valued and over the bound → refused (<spanx style="verb">params-067</spanx>)</c>
      <c>P68</c>
      <c><spanx style="verb">{"n":5e-324}</spanx></c>
      <c><spanx style="verb">{"n":0}</spanx></c>
      <c>allow</c>
      <c>a subnormal is finite and in range: 0 ≤ 5e-324 (<spanx style="verb">params-068</spanx>)</c>
      <c>P69</c>
      <c><spanx style="verb">{"n":0}</spanx></c>
      <c><spanx style="verb">{"n":5e-324}</spanx></c>
      <c>deny(<spanx style="verb">params_exceed_grant</spanx>)</c>
      <c>the inverse bound direction: 5e-324 &gt; 0 (<spanx style="verb">params-069</spanx>)</c>
      <c>P70</c>
      <c><spanx style="verb">{"n":-0}</spanx></c>
      <c><spanx style="verb">{"n":0}</spanx> (decoded)</c>
      <c>allow</c>
      <c>decoded <spanx style="verb">-0</spanx> is the same number as <spanx style="verb">0</spanx> (<spanx style="verb">params-070</spanx>)</c>
</texttable>

</section>
</section>
<section anchor="intersection-10-vectors"><name>Intersection (10 vectors)</name>

<t>Shorthand: params shown compact; constraints use colon notation.</t>

<texttable>
      <ttcol align="left">#</ttcol>
      <ttcol align="left">Source A</ttcol>
      <ttcol align="left">Source B</ttcol>
      <ttcol align="left">Expected</ttcol>
      <ttcol align="left">Derivation</ttcol>
      <c>I1</c>
      <c><spanx style="verb">{"tables":["a","b"]}</spanx></c>
      <c><spanx style="verb">{"tables":["a"]}</spanx></c>
      <c><spanx style="verb">{"tables":["a"]}</spanx></c>
      <c>overlap</c>
      <c>I2</c>
      <c><spanx style="verb">{"tables":["a"]}</spanx></c>
      <c><spanx style="verb">{"tables":[]}</spanx></c>
      <c>deny</c>
      <c>deny-when-declared</c>
      <c>I3</c>
      <c>(unconstrained)</c>
      <c>(no grant)</c>
      <c>deny</c>
      <c>absent source</c>
      <c>I4</c>
      <c><spanx style="verb">{"limit":100}</spanx></c>
      <c><spanx style="verb">{"limit":50}</spanx></c>
      <c><spanx style="verb">{"limit":50}</spanx></c>
      <c>tighter bound</c>
      <c>I5</c>
      <c>(unconstrained)</c>
      <c>constraint <spanx style="verb">time:window:[{"start":"00:00","end":"01:00"}]</spanx></c>
      <c>recognized, not evaluated → <spanx style="verb">unresolved</spanx> carried on <spanx style="verb">allow_unresolved</spanx> verdict</c>
      <c>constraint added</c>
      <c>I6</c>
      <c><spanx style="verb">{"tables":["a"]}</spanx></c>
      <c><spanx style="verb">{"tables":["b"]}</spanx></c>
      <c>deny</c>
      <c>no overlap</c>
      <c>I7</c>
      <c>(no source / <spanx style="verb">null</spanx>)</c>
      <c>—</c>
      <c>deny(<spanx style="verb">absent_source</spanx>)</c>
      <c>zero sources: fail-closed (Section 7 rule 5)</c>
      <c>I8</c>
      <c><spanx style="verb">{"limit":50}</spanx></c>
      <c><spanx style="verb">{}</spanx></c>
      <c><spanx style="verb">{"limit":50}</spanx></c>
      <c>empty params declares no constraint → bound preserved (bounded then empty, Section 7 rule 6)</c>
      <c>I9</c>
      <c><spanx style="verb">{}</spanx></c>
      <c><spanx style="verb">{"limit":50}</spanx></c>
      <c><spanx style="verb">{"limit":50}</spanx></c>
      <c>source order must not matter (empty then bounded, Section 7 rule 6)</c>
      <c>I10</c>
      <c><spanx style="verb">{}</spanx>, id <spanx style="verb">query:SELECT</spanx></c>
      <c><spanx style="verb">{}</spanx>, id <spanx style="verb">query:*</spanx></c>
      <c><spanx style="verb">{}</spanx></c>
      <c>narrower identifier wins; identifier comparison is params-free (Section 7 rule 2)</c>
</texttable>

</section>
<section anchor="decision-34-vectors"><name>Decision (34 vectors)</name>

<texttable>
      <ttcol align="left">#</ttcol>
      <ttcol align="left">Scenario</ttcol>
      <ttcol align="left">Expected</ttcol>
      <ttcol align="left">Derivation</ttcol>
      <c>D1</c>
      <c>valid grant, valid op, constraints pass</c>
      <c>allow</c>
      <c>all checks pass</c>
      <c>D2</c>
      <c>no matching grant</c>
      <c>deny("capability_not_authorized")</c>
      <c>fail-closed</c>
      <c>D3</c>
      <c>unknown constraint type</c>
      <c>deny("unknown_constraint")</c>
      <c>fail-closed</c>
      <c>D4</c>
      <c>malformed capability_id</c>
      <c>deny("invalid_capability_id")</c>
      <c>input validation</c>
      <c>D5</c>
      <c>same input twice</c>
      <c>same output</c>
      <c>deterministic</c>
      <c>D6</c>
      <c>constraint violation</c>
      <c>deny("{type}:violated")</c>
      <c>constraint fail</c>
      <c>D7</c>
      <c>grant bounds a param, operation omits it</c>
      <c>deny("params_missing")</c>
      <c>Section 6.3 step 4 fail-closed</c>
      <c>D8</c>
      <c>operation param value is <spanx style="verb">null</spanx></c>
      <c>deny("invalid_params_null")</c>
      <c>Section 6.2 null rule; may carry <spanx style="verb">: &lt;param&gt;</spanx> detail (Section 9.2)</c>
      <c>D9</c>
      <c>bounded grant, operation has <strong>no <spanx style="verb">params</spanx> field at all</strong></c>
      <c>deny("params_missing")</c>
      <c>Section 6.3 step 4 fail-closed</c>
      <c>D10</c>
      <c><spanx style="verb">Authorize</spanx> called with an <strong>absent/empty grant</strong></c>
      <c>deny("capability_not_authorized")</c>
      <c>Section 9 fail-closed, no exception</c>
      <c>D11</c>
      <c>input declares CLC-1.0 against a CLC-1.3 implementation</c>
      <c>allow</c>
      <c>same major, 1.0 ≤ 1.3 → compatible (Section 12.1)</c>
      <c>D12</c>
      <c>input declares CLC-2.0 against a CLC-1.3 implementation</c>
      <c>deny("unsupported_language_revision")</c>
      <c>different major → fail-closed (Section 12.1)</c>
      <c>D13</c>
      <c>operation carries a param key the grant does not declare (key closure)</c>
      <c>deny("undeclared_param")</c>
      <c>Section 6.2 key closure, Section 9.1 layer 7 request side</c>
      <c>D14</c>
      <c>both a missing grant key and an undeclared request key</c>
      <c>deny("params_missing")</c>
      <c>layer-7 order: missing before undeclared</c>
      <c>D15</c>
      <c>absent/empty grant <strong>and</strong> absent operation</c>
      <c>deny("capability_not_authorized")</c>
      <c>Section 9.1 pre-check resolves before any layer, incl. the absent-operation case</c>
      <c>D16</c>
      <c>grant valid, operation has <strong>no <spanx style="verb">id</spanx></strong></c>
      <c>deny("missing_capability_id")</c>
      <c>layer 1</c>
      <c>D17</c>
      <c>grant carries <spanx style="verb">time:window</spanx> with a <strong>cross-midnight single segment</strong> (<spanx style="verb">22:00→06:00</spanx>)</c>
      <c>deny("invalid_constraint")</c>
      <c>a single segment crossing midnight is out of grammar (<spanx style="verb">decide-019</spanx>) — a crossing must be split into two segments</c>
      <c>D18</c>
      <c>grant carries <spanx style="verb">network:cidr</spanx> (array form, IPv4/IPv6)</c>
      <c><spanx style="verb">allow_unresolved</spanx>, <spanx style="verb">unresolved:[&lt;constraint&gt;]</spanx></c>
      <c>recognized, no core evaluator → residual obligation (Section 8.4; <spanx style="verb">decide-020</spanx>)</c>
      <c>D19</c>
      <c><spanx style="verb">time:window</spanx> scalar second form (<spanx style="verb">window:3600</spanx>)</c>
      <c>deny("invalid_constraint")</c>
      <c>out of Section 8.1 value grammar (<spanx style="verb">decide-021</spanx>)</c>
      <c>D20</c>
      <c><spanx style="verb">network:cidr</spanx> without prefix length</c>
      <c>deny("invalid_constraint")</c>
      <c>out of Section 8.1 value grammar (<spanx style="verb">decide-022</spanx>)</c>
      <c>D21</c>
      <c><spanx style="verb">max_rows</spanx> constraint, op carries <strong>no</strong> <spanx style="verb">max_rows</spanx> value</c>
      <c>deny("max_rows:violated")</c>
      <c>fail-closed op-absent (<spanx style="verb">decide-023</spanx>)</c>
      <c>D22</c>
      <c><spanx style="verb">time:window</spanx> split-form multi-segment window (<spanx style="verb">22:00→00:00</spanx> + <spanx style="verb">00:00→06:00</spanx>)</c>
      <c><spanx style="verb">allow_unresolved</spanx>, <spanx style="verb">unresolved:[&lt;constraint&gt;]</spanx></c>
      <c>cross-midnight split-segment grammar (<spanx style="verb">decide-024</spanx>)</c>
      <c>D23</c>
      <c>op scheme <spanx style="verb">bad</spanx> passes no vendor/product-vN</c>
      <c>deny("invalid_capability_id")</c>
      <c>Section 3 scheme grammar (<spanx style="verb">decide-025</spanx>)</c>
      <c>D24</c>
      <c>grant id <spanx style="verb">bad:op</spanx> against a valid operation</c>
      <c>deny("capability_not_authorized")</c>
      <c>Section 3 fails in Entails; ID-level reason collapses (<spanx style="verb">decide-026</spanx>)</c>
      <c>D25</c>
      <c><spanx style="verb">max_rows</spanx> exactly at the bound</c>
      <c>allow</c>
      <c>violation is strict <spanx style="verb">&gt;</spanx>; core-evaluated so no unresolved (<spanx style="verb">decide-027</spanx>)</c>
      <c>D26</c>
      <c>grant <spanx style="verb">params:{}</spanx>, op any params → unconstrained</c>
      <c>allow</c>
      <c><spanx style="verb">{}</spanx> ≡ absent (<spanx style="verb">decide-028</spanx>, Section 9.1)</c>
      <c>D27</c>
      <c>multi-grant: G1 <spanx style="verb">{limit:10}</spanx> denies, G2 <spanx style="verb">{limit:100}</spanx> allows</c>
      <c>allow</c>
      <c>any-one-covers authorizes (<spanx style="verb">decide-029</spanx>, Section 9.1)</c>
      <c>D28</c>
      <c>multi-grant: G1 <spanx style="verb">{limit:10}</spanx> + G2 <spanx style="verb">{limit:6}</spanx>, op <spanx style="verb">{limit:50}</spanx></c>
      <c>deny("params_exceed_grant")</c>
      <c>all covering grants reject → first reason in canonical order (<spanx style="verb">decide-030</spanx>, Section 9.1)</c>
      <c>D29</c>
      <c>multi-grant allow_unresolved: G1 <spanx style="verb">network:cidr</spanx> + G2 <spanx style="verb">time:window</spanx></c>
      <c><spanx style="verb">allow_unresolved</spanx>, <spanx style="verb">unresolved:[both]</spanx></c>
      <c>residual obligations union across covering grants (<spanx style="verb">decide-035</spanx>, Section 9.1/Section 8.4)</c>
      <c>D30</c>
      <c>operation id uses a forbidden wildcard shape (<spanx style="verb">*:query:SELECT</spanx>)</c>
      <c>deny("unsupported_wildcard")</c>
      <c>wildcard-shape detection precedes the base grammar, and layer 1 propagates the specific code rather than <spanx style="verb">invalid_capability_id</spanx> (<spanx style="verb">decide-018</spanx>, Section 3/Section 9.1)</c>
      <c>D31</c>
      <c>grant bounds <spanx style="verb">max_rows:10</spanx>, operation carries <spanx style="verb">max_rows:"garbage"</spanx></c>
      <c>deny("max_rows:violated")</c>
      <c>op-side value outside the Section 8.1 domain (finite non-negative integer) fails closed, never passes unchecked (<spanx style="verb">decide-031</spanx>, rev CLC-1.4)</c>
      <c>D32</c>
      <c>grant bounds <spanx style="verb">max_rows:10</spanx>, operation carries <spanx style="verb">max_rows:true</spanx></c>
      <c>deny("max_rows:violated")</c>
      <c>boolean is outside the Section 8.1 domain (<spanx style="verb">decide-032</spanx>, rev CLC-1.4)</c>
      <c>D33</c>
      <c>grant bounds <spanx style="verb">max_rows:10</spanx>, operation carries <spanx style="verb">max_rows:-1</spanx></c>
      <c>deny("max_rows:violated")</c>
      <c>a negative is outside the Section 8.1 domain (<spanx style="verb">decide-033</spanx>, rev CLC-1.4)</c>
      <c>D34</c>
      <c>grant bounds <spanx style="verb">max_rows:10</spanx>, operation carries <spanx style="verb">max_rows:1.5</spanx></c>
      <c>deny("max_rows:violated")</c>
      <c>a fraction is outside the Section 8.1 domain (<spanx style="verb">decide-034</spanx>, rev CLC-1.4)</c>
</texttable>

</section>
<section anchor="combined-11-vectors"><name>Combined (11 vectors)</name>

<texttable>
      <ttcol align="left">#</ttcol>
      <ttcol align="left">Scenario</ttcol>
      <ttcol align="left">Expected</ttcol>
      <ttcol align="left">Derivation</ttcol>
      <c>C1</c>
      <c>wildcard grant + params within bounds</c>
      <c>allow</c>
      <c>E2 + P1</c>
      <c>C2</c>
      <c>wildcard grant + params exceed bounds</c>
      <c>deny</c>
      <c>E2 + P2</c>
      <c>C3</c>
      <c>intersection + constraint violation</c>
      <c>deny</c>
      <c>I4 + D6</c>
      <c>C4</c>
      <c>two-source intersection, both narrow</c>
      <c>allow, narrowest</c>
      <c>I1 + I4</c>
      <c>C5</c>
      <c>grant with empty constraint bound</c>
      <c>deny</c>
      <c>deny-when-declared</c>
      <c>C6</c>
      <c>unknown scheme in grant</c>
      <c>deny("unknown_constraint")</c>
      <c>fail-closed</c>
      <c>C7</c>
      <c>grant: <spanx style="verb">std/database-v1:query:*</spanx>, op: <spanx style="verb">std/database-v1:query:SELECT</spanx>, params mismatch</c>
      <c>deny</c>
      <c>E2 + P4</c>
      <c>C8</c>
      <c>three-source intersection, one absent</c>
      <c>deny</c>
      <c>I3</c>
      <c>C9</c>
      <c>valid grant + valid constraint + valid op</c>
      <c>allow</c>
      <c>D1</c>
      <c>C10</c>
      <c>malformed id in operation</c>
      <c>deny("invalid_capability_id")</c>
      <c>D4</c>
      <c>C11</c>
      <c>delegation chain, intermediate hop declares empty bound</c>
      <c>deny</c>
      <c>deny-when-declared propagates</c>
</texttable>

<t><strong>Total: 154 vectors</strong></t>

<ul empty="true"><li>
  <t>Decisions D17–D28 are the corpus pin for the
residual-obligation channel <spanx style="verb">unresolved</spanx> / <spanx style="verb">allow_unresolved</spanx>, the Section 8.1
<spanx style="verb">(scheme,type)</spanx> identity, the <spanx style="verb">invalid_constraint</spanx> value grammar and the
Section 9.1 multi-grant aggregation.  <spanx style="verb">decide-025/-026</spanx> and <spanx style="verb">syntax-007/-008</spanx>
pin the Section 3 scheme grammar; <spanx style="verb">decide-021/-022</spanx>, <spanx style="verb">decide-019/-024</spanx> pin Section 8.1
time/network value shapes; <spanx style="verb">decide-019</spanx> pins the no-cross-midnight rule;
<spanx style="verb">decide-028/-029/-030</spanx> pin Section 9.1 (<spanx style="verb">{}</spanx>≡absent, any-allow union, deterministic
deny reason); <spanx style="verb">decide-035</spanx> (D29) pins multi-grant residual-obligation
union across covering grants; <spanx style="verb">decide-031/-032/-033/-034</spanx> (D31–D34) pin
the Section 8.1 <spanx style="verb">max_rows</spanx> request-side value domain (rev CLC-1.4); <spanx style="verb">decide-018</spanx>
(D30) pins Section 3 wildcard-shape detection ahead of the base grammar.</t>
</li></ul>

<ul empty="true"><li>
  <t>The corpus additionally carries 6 scheme stress-test vectors
(<spanx style="verb">clinical-001/-002</spanx>, <spanx style="verb">payments-001/-002</spanx>, <spanx style="verb">data-001/-002</spanx>) exercised
against <spanx style="verb">std/{clinical,payments,data}-v1</spanx>: their enum/bound outcomes follow
the grouping rules above (→ B.3 params semantics), and <spanx style="verb">payments-002</spanx>
additionally exercises Section 8 fail-closed <spanx style="verb">unknown_constraint</spanx> for a
scheme-scoped constraint type.  These vectors add no new normative rule;
they exist to record the v2 requirements evidence, not to extend v1.
<spanx style="verb">undeclared-001/-002</spanx> (→ B.5 D13/D14) pin the Section 6.2 key-closure rule.
<spanx style="verb">params-006</spanx>/<spanx style="verb">params-013</spanx> (→ B.3 P6/P13) close two previously-unmapped
rows; <spanx style="verb">params-020/021</spanx> (→ P20/P21) are the positive boundary cases of
<spanx style="verb">params-018/019</spanx>; <spanx style="verb">decide-016/017</spanx> (→ D15/D16) pin the Section 9.1 pre-check and
layer-1 paths for absent/empty grant and id-less operation;
<spanx style="verb">intersect-007..010</spanx> (→ I7..I10) pin Section 7 rules 5–6 including empty-params
sources, order independence, and a params-free identifier comparison;
<spanx style="verb">intersect-011/-012/-013</spanx> (rev CLC-1.15) are the cross-type audit pins of
Section 7 rule 6 (string × number merge refusal, type-sensitive enum-member
equality, <spanx style="verb">1.0</spanx> ≡ <spanx style="verb">1</spanx>) and sit outside the B.1–B.6 tables.  The CLC-1.16
input-boundary pins (<spanx style="verb">params-053</spanx>–<spanx style="verb">params-062</spanx>) and the CLC-1.17
numeric-corner pins (<spanx style="verb">params-063</spanx>–<spanx style="verb">params-070</spanx>) are tabulated in B.3 (P53–P70
above), so the corpus total is 154.  B.5 row labels <spanx style="verb">Dn</spanx> are semantic row numbers, not
corpus ids (D15/D16 ↔ <spanx style="verb">decide-016/-017</spanx>, D29 ↔ <spanx style="verb">decide-035</spanx>); D10
(absent/empty grant, operation present) has no dedicated vector — the
pre-check path is pinned by <spanx style="verb">decide-016</spanx> (D15).</t>
</li></ul>

</section>
<section anchor="containment-external-corpus"><name>Containment (external corpus)</name>

<t>The delegation-containment relation (Section 13) is pinned by a separate corpus at
<spanx style="verb">capability/data/_vectors/clc-d/</spanx>: <spanx style="verb">containment-vectors.json</spanx> (64 vectors,
groups: identifier coverage, parameter narrowing, constraint
non-participation, validity, symmetry), <spanx style="verb">containment-property-cases.json</spanx>
(784 forward-closure cases over 39 shared operations) and
<spanx style="verb">containment-crosswalk-vectors.json</spanx> (45 cross-vendor vectors).  It is not
re-tabulated here; the corpus README maintains the live count and the snapshot
date.</t>

</section>
<section anchor="extended-parameter-bounds-external-corpus"><name>Extended parameter bounds (external corpus)</name>

<t>The Section 6.5 <spanx style="verb">param_bounds</spanx> grammar is pinned by
<spanx style="verb">capability/data/_vectors/clc-v1/param-bounds-vectors.json</spanx> (49 vectors,
groups: numeric interval/step, enum cardinality, optional keys, nested
recursion, the binding rule, malformed bounds, scheme defaults), with
<spanx style="verb">param-bounds-vectors.schema.json</spanx>.  It is not re-tabulated here.  These
vectors exercise a CLC-1.10 field; a CLC-1.9 or earlier implementation refuses
them through the Section 12.1 minor gate rather than ignoring the bounds.  The JSON
type-sensitive enum equality of Section 6.5 layer 8 (rev CLC-1.15) is pinned by the
companion file <spanx style="verb">param-bounds-equality-vectors.json</spanx> in the same directory.</t>

</section>
<section anchor="resolve-external-corpus"><name>Resolve (external corpus)</name>

<t>The Section 8.5 <spanx style="verb">Resolve</spanx> function is pinned by
<spanx style="verb">capability/data/_vectors/clc-v1/resolve-vectors.json</spanx> (26 vectors, groups:
terminal pass-through, all-satisfied → allow, partial → allow_unresolved,
violated → deny, the <spanx style="verb">time:window</spanx> core clock in and out of window, TTL
re-evaluation, bare assertion without <spanx style="verb">now</spanx>, conflict precedence and malformed
input), with <spanx style="verb">resolve-vectors.schema.json</spanx>.  Vectors that exercise the core
clock carry <spanx style="verb">now</spanx>; a CLC-1.10 implementation that does not implement <spanx style="verb">Resolve</spanx>
is unaffected by this corpus.</t>

</section>
<section anchor="constraintunion-external-corpus"><name>ConstraintUnion (external corpus)</name>

<t>The Section 7.1 derived <spanx style="verb">ConstraintUnion</spanx> projection is pinned by
<spanx style="verb">capability/data/_vectors/clc-v1/constraint-union-vectors.json</spanx> (12 vectors:
union over one/many grants, duplicate folding across sources, deterministic
ordering, empty constraints, and the empty-chain <spanx style="verb">absent_source</spanx> refusal),
with <spanx style="verb">constraint-union-vectors.schema.json</spanx>.  The UTF-8 byte-order collation
pinned in rev CLC-1.15 (Section 7.1) — where UTF-16 code-unit order would diverge —
is exercised by the companion file <spanx style="verb">constraint-union-collation-vectors.json</spanx>
in the same directory.</t>

</section>
<section anchor="authorizewithchain-external-corpus"><name>AuthorizeWithChain (external corpus)</name>

<t>The Section 13.11 fused chain check is pinned by
<spanx style="verb">capability/data/_vectors/clc-d/authorize-chain-vectors.json</spanx> (15 vectors:
empty chain, broken identifier/parameter hop, a broken hop reported before op
validation, the degenerate two-grant form, ancestor-constraint enforcement via
the effective intersection, the <spanx style="verb">param_bounds</spanx> refusal, and pass-through of
<spanx style="verb">allow</spanx> / <spanx style="verb">allow_unresolved</spanx> / operation-layer <spanx style="verb">deny</spanx>), with
<spanx style="verb">authorize-chain-vectors.schema.json</spanx>.</t>

</section>
<section anchor="boundmeet-external-corpus"><name>BoundMeet (external corpus)</name>

<t>The Section 6.6 intersection of <spanx style="verb">param_bounds</spanx> is pinned by
<spanx style="verb">capability/data/_vectors/clc-v1/param-bounds-meet-vectors.json</spanx> (groups:
numeric <spanx style="verb">min</spanx>/<spanx style="verb">max</spanx>/<spanx style="verb">step</spanx> meet including the coarser-grid and fail-closed
step cases, enum intersection and tightened cardinality, <spanx style="verb">optional</spanx> conjunction,
<spanx style="verb">nested</spanx> recursion, the empty meets (<spanx style="verb">min&gt;max</spanx>, disjoint enums — empty
<em>within one value family</em>), the unrepresentable crosses (numeric∩enum in
either order and scalar∩nested, refused since rev CLC-1.15; cardinality-only
enum, incommensurable steps → <spanx style="verb">invalid_params_binding</spanx>), the
identity empty Bound, and the cross-site refusal), with
<spanx style="verb">param-bounds-meet-vectors.schema.json</spanx>.  The rev CLC-1.15 meet invariant —
every successful meet authorizes only what <strong>every</strong> source authorizes — is
exercised by <spanx style="verb">param-bounds-meet-property-cases.json</spanx> in the same directory.</t>

</section>
</section>
<section anchor="appendix-c-containment-carrier-vocabulary-and-reason-code-mapping"><name>Containment Carrier Vocabulary and Reason-Code Mapping</name>

<t>This appendix is <strong>informative</strong>.  It puts a carrier's own vocabulary and its
failure codes beside CLC-D's, so an adopter can explain a containment verdict in
the carrier's terms — and can see exactly where the mapping is many-to-one and
therefore not reversible without carrier context.  The profiles named here are
the pinned ones in Section 13.9.3; the profile obligations are Section 13.8.1.</t>

<section anchor="vocabulary"><name>Vocabulary</name>

<texttable>
      <ttcol align="left">Carrier</ttcol>
      <ttcol align="left">Carrier term</ttcol>
      <ttcol align="left">CLC term used here</ttcol>
      <ttcol align="left">Note</ttcol>
      <c>CLC-D</c>
      <c>identifier <spanx style="verb">scheme:action:path</spanx></c>
      <c><spanx style="verb">CapabilityId</spanx></c>
      <c>the relation's left/right identity</c>
      <c>CLC-D</c>
      <c>parameter bound</c>
      <c><spanx style="verb">params</spanx></c>
      <c>declared bound; absent or <spanx style="verb">{}</spanx> = unconstrained</c>
      <c>CLC-D</c>
      <c>constraint (<spanx style="verb">varwof/constraint-v1:*</spanx>)</c>
      <c><spanx style="verb">constraints</spanx></c>
      <c><strong>union</strong> axis, outside <spanx style="verb">Contains</spanx> (Section 13.4.4)</c>
      <c>ATN</c>
      <c><spanx style="verb">resource_bounds</spanx>, numeric <spanx style="verb">conditions</spanx></c>
      <c><spanx style="verb">params</spanx> (upper bounds)</c>
      <c>Section 9.2 takes the per-dimension <spanx style="verb">min</spanx></c>
      <c>ATN</c>
      <c><spanx style="verb">id</spanx> + <spanx style="verb">schema.digest</spanx></c>
      <c>identifier segments</c>
      <c>digest mismatch ⇒ distinct capability (ccx-043)</c>
      <c>ATN</c>
      <c><spanx style="verb">preconditions</spanx></c>
      <c>— (union axis)</c>
      <c>never compared by <spanx style="verb">Contains</spanx></c>
      <c>AAT</c>
      <c><spanx style="verb">tools(derived) ⊆ tools(parent)</spanx></c>
      <c>identifier coverage</c>
      <c> </c>
      <c>AAT</c>
      <c>argument constraints (<spanx style="verb">exact/range/one_of/…</spanx>)</c>
      <c><spanx style="verb">params</spanx></c>
      <c>AAT's own <spanx style="verb">contains</spanx>/<spanx style="verb">subset</spanx> are <em>constraint types</em>, not the relation</c>
      <c>AIP</c>
      <c>scope, budget, expiry, domains</c>
      <c>identifier + <spanx style="verb">params</spanx></c>
      <c>absent ⇒ nearest ancestor, resolved by the profile</c>
      <c>AAE</c>
      <c><spanx style="verb">mandate.actions</spanx></c>
      <c>identifier coverage</c>
      <c> </c>
      <c>AAE</c>
      <c>CONSTRAINTS <spanx style="verb">value</spanx> (unwrapped)</c>
      <c><spanx style="verb">params</spanx></c>
      <c>numeric ≤, allowlist ⊆</c>
      <c>AAE</c>
      <c><spanx style="verb">validity</spanx></c>
      <c>— (carrier/time, CLC-A R1)</c>
      <c>not a declared <spanx style="verb">Contains</spanx> input</c>
      <c>AOA</c>
      <c>operation scope string</c>
      <c>identifier path</c>
      <c><spanx style="verb">*</spanx> maps to a CLC trailing wildcard</c>
      <c>AEGIS</c>
      <c>dotted <spanx style="verb">capability</spanx></c>
      <c>identifier path</c>
      <c> </c>
      <c>AEGIS</c>
      <c>numeric <spanx style="verb">context</spanx></c>
      <c><spanx style="verb">params</spanx></c>
      <c> </c>
      <c>AEGIS</c>
      <c><spanx style="verb">allowed_roles</spanx>, <spanx style="verb">environment</spanx>, <spanx style="verb">risk_level</spanx>, <spanx style="verb">scope</spanx></c>
      <c>— (<strong>not mapped</strong>)</c>
      <c>identity/policy dimensions with no CLC field; the profile leaves them to the carrier (C.3)</c>
</texttable>

</section>
<section anchor="failure-code-mapping"><name>Failure-code mapping</name>

<t>Carrier failure codes collapse onto CLC-D's three codes.  The mapping is
many-to-one and is therefore <strong>not reversible</strong> without the carrier recording
which of its own codes applied before mapping.</t>

<texttable>
      <ttcol align="left">Carrier</ttcol>
      <ttcol align="left">Carrier code / failure</ttcol>
      <ttcol align="left">CLC-D reason</ttcol>
      <c>ATN Section 9.1 identity rule</c>
      <c>different <spanx style="verb">id</spanx></c>
      <c><spanx style="verb">different_namespace</spanx></c>
      <c>ATN Section 9.1 identity rule</c>
      <c>different <spanx style="verb">schema.digest</spanx></c>
      <c><spanx style="verb">child_exceeds_parent</spanx></c>
      <c>ATN Section 9.2</c>
      <c>raised <spanx style="verb">resource_bounds</spanx></c>
      <c><spanx style="verb">params_not_narrower</spanx></c>
      <c>AAT I4</c>
      <c>tool outside parent set</c>
      <c><spanx style="verb">different_namespace</spanx></c>
      <c>AAT I4</c>
      <c>constraint not subsumed</c>
      <c><spanx style="verb">params_not_narrower</spanx></c>
      <c>AIP Section 4.4</c>
      <c><spanx style="verb">aip_scope_insufficient</spanx></c>
      <c><spanx style="verb">child_exceeds_parent</spanx></c>
      <c>AIP Section 4.4</c>
      <c><spanx style="verb">aip_budget_exceeded</spanx></c>
      <c><spanx style="verb">params_not_narrower</spanx></c>
      <c>AIP Section 4.4</c>
      <c><spanx style="verb">aip_depth_exceeded</spanx></c>
      <c><spanx style="verb">child_exceeds_parent</spanx></c>
      <c>AAE Section 3</c>
      <c>action not a subset</c>
      <c><spanx style="verb">different_namespace</spanx></c>
      <c>AAE Section 3/Section 7.4</c>
      <c>constraint not more restrictive</c>
      <c><spanx style="verb">params_not_narrower</spanx></c>
      <c>AOA Section 6.2</c>
      <c>scope not strictly narrower</c>
      <c><spanx style="verb">child_exceeds_parent</spanx></c>
      <c>AEGIS AIAM1-DEL-010</c>
      <c>authority exceeds the delegator's</c>
      <c><spanx style="verb">params_not_narrower</spanx></c>
      <c>AEGIS AIAM1-DEL-011</c>
      <c>capability the delegator lacks</c>
      <c><spanx style="verb">different_namespace</spanx></c>
</texttable>

<t>The collapse is visible in the right column: <spanx style="verb">child_exceeds_parent</spanx> is reached by
both AIP scope and AIP depth failures and by an ATN digest mismatch, and
<spanx style="verb">params_not_narrower</spanx> by every carrier's bound-widening.  A carrier that needs
its own code back must keep it alongside the CLC-D reason; CLC-D guarantees the
stable language-level reason, not the carrier's.</t>

</section>
<section anchor="profile-obligations-exercised-by-the-corpus"><name>Profile obligations exercised by the corpus</name>

<t>Two of the Section 13.8.1 obligations are visible in the pinned vectors:</t>

<t><list style="symbols">
  <t><strong>Identity dimensions the language cannot carry fail closed.</strong>  ATN's schema
digest is carried as an identifier segment (ccx-043) rather than dropped, so a
digest mismatch is <spanx style="verb">child_exceeds_parent</spanx> instead of a silent match.</t>
  <t><strong>Semantics the relation cannot see are a profile limitation, not a CLC gap.</strong>
AEGIS's <spanx style="verb">allowed_roles</spanx>/<spanx style="verb">environment</spanx>/<spanx style="verb">risk_level</spanx> and AAE's <spanx style="verb">validity</spanx> have no
CLC field; the profile leaves them to the carrier and asserts nothing about
them.  They are not modelled here, and a profile MUST NOT claim
containment of a dimension the relation cannot see.</t>
</list></t>

</section>
</section>
<section anchor="acknowledgements" numbered="false"><name>Acknowledgements</name>

<t>Iman Schrock (EMILIA Protocol) reviewed the intersection and constraint
semantics against the revision 1.1 corpus and supplied the adversarial cases
that revisions 1.2 and 1.3 fix: nested partial overlap in intersection,
constraint value handling for <spanx style="verb">max_rows</spanx>, and the public entry-point contract.
For revision 1.4 he re-ran the Go, Python and TypeScript implementations and the
1,184 property cases, and closed the two objections he had raised against the
<spanx style="verb">max_rows</spanx> value domain and the UTF-8 size bound.  For revision 1.5 he re-ran the
three Go suites — 105 authorization, 30 evidence and 13 crosswalk cases — and
supplied the four corrections that revision carries: the collapse from
three-valued evaluation to the binary report (Section 10), the separation of
<spanx style="verb">allow_unresolved</spanx> from evidence (Section 11), the scope of delegation
(Section 12), and the boundary between this projection identity and CAID
(Sections 4.2, 4.3 and 6.4).  For revisions 1.6 to 1.8 he re-ran the three
implementations and reported the raw-boundary cases those revisions fix: the
HTML-escaping and key-order defects in the canonical serializer, the decoded
paths that disagreed with the raw path on malformed Unicode, and the raw size
checks that counted a number by its received spelling and a literal astral
character by UTF-16 code unit.  Revision 1.9 folds the delegation-containment
relation and the CLC-D class into this document (Section 13, Appendix C),
retiring the formerly separate containment extension, and pins it against six
adjacent capability drafts (ATN, AAT, AIP, AAE, AOA, AEGIS) reviewed on
2026-09-21.</t>

</section>


  </back>

<!-- ##markdown-source:
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
9ZTUdYD2oePn39+5JU/evvry1dk7FISxTf2TI7A1Yw/4NCoSgm/72wfZt8/D
dUoZyb4ZHD0+wOP7G2+Fd9H9DzWWy9w47jY4WcsFbm+HO+e9b56XNFrNFq28
e7R9nD9CCLUQ6yv+ZMbL54QwIOlrjnZ7PNJ4+0jf5e1/+N4MgdROR5jwj5B2
aoc5pEpMGYKf1ycb3gds9NvZVCAMVfMUDi9Z7BRUdWx2ipDM3sFeljLJr91f
7Y97kN9/QP9C4seOliToLCiIbbGZWNl5e4S5XeTTyfL2L5uT/I2xsmA6sT+H
J3sg02x//DptlIuZYMjP8x/buCs/wJPl53Vstx7bTl7cCbK+J8O+pUAqXmgr
KeSqY4tJR1gEPLUGl5t/LLxUaZKO9KtIJT7auJiiahvo9U++pDsv7KsnXdhH
f0AefXOjeevpBY9d5iePXX/bXw3+kvEn06K4tS/xY8cnS2/awSPq3wSYyMXk
5csvzV0NAFG+nSWPvoNz7FiHGZnCA7JF0bx3cJJHj/j867ev3lj26U94VppD
Pqwb4WnHqzwMnKvtu6s09L7KSprhZIA31mtzcswUyKnkd8/D4uUa6h7AEXbB
LD9A8IUqkGNnJHOStthgr46evpi6EyYsqspydPLs4rLTl6oeDtABecX9ao7G
mtpo5FIDK1fU+/gJS0i09Mv92tkRgaW846Ria4tAGJJxEzyX3scnWAcXjK6D
RiySxPkiL2eX4vRvOX3/7gY5pRQ7ZvsQiU4S2dSWh24ur6Fkve6N/mrM7TUx
tz/uzWc3s/UeIgwkeMMnI/5AL/+om/78539P3e+IEF73H3m8J8/Lwbs/0+fh
6QH/ljXKvcl3e/lea+9i73sdxH7xfTQP6blGowy3/Xjr0DIb97dE/CkyvH4/
W7zHUWVM5a9HPIYzdO9uFm4QNxxGmk3dMPqCmi9be+Bb+ht9F32283XEhP64
e/9jsmnQz3/+8/+WcU/Excv8h76EM5xTfx3tZmyHwfpiA5Ptma6zkW/VQSwz
hHCWeR1WtnLH8chifZEKJ/RwIEvuL+n77CHE4EePEBAqD+zQVIkgChBsA6fE
NaqBevxGN/WYRyvZ5e/m2mv1WwO/BP95PyYvdChZmZJpLrP0JNfrPnHYYzv3
4/Tnf/6z9h6nwWrpoNfbHLxm6PCpzpom2ZKInbZpyHUVPHb/qWP75cjk+0+c
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
gwMA

-->

</rfc>