<?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-00" 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="September" day="27"/>

    
    <workgroup>Network Working Group</workgroup>
    

    <abstract>


<?line 132?>

<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 123 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 169?>

<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-03
Section 4.6 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-03 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).  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>an implementation that exposes <strong>only</strong> a decoded-value entry point 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.  The
entry point that takes the text is the normative one, and an
implementation SHOULD name the two so a caller cannot mistake one for the
other;</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>
</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-03
Section 4.6), 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>).  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>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>
<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>

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

<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">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)</c>
      <c><spanx style="verb">params_exceed_grant</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">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">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>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>
</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> — 123 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 44 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>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.15</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-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.15</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>

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

</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>44</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.  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>
</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</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 (<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>
</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-01</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-01</spanx> (Section 3, Section 4, Section 5, Section 6, checked 2026-09-26).  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>
<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>
<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.15</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, 44 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.  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="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="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="September"/>
  </front>
  <seriesInfo name="Internet-Draft" value="draft-schrock-ep-authorization-evidence-chain-06"/>
</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="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="September"/>
  </front>
  <seriesInfo name="Internet-Draft" value="draft-asor-wimse-agent-delegation-chain-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="September"/>
  </front>
  <seriesInfo name="Internet-Draft" value="draft-schrock-canonical-action-identifier-03"/>
</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="n.d."/>
  </front>
</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 (47)</spanx> covers B.2 (8), the 35 params vectors that sit under
<spanx style="verb">kind=entail</spanx> (B.3's 39 rows minus <spanx style="verb">params-028/-029/-034/-036</spanx>, which are
<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 (50)</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) and the three nested key-closure vectors
(<spanx style="verb">nested-001/-002/-003</spanx>);
<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-39-vectors"><name>Params (39 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>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>
      <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>
      <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="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: 123 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, taking the
corpus total to 123.  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> (44 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> (43 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:
H4sIAAAAAAAAA8y9WY8jV5Ym+G6/4oIJtEgXSV9iUYguqcYV4VJ6dmwTEcqs
6piA05w0dzeJbsakke7hqVAhgQFysuqxqoB+G0wDM93o+QPzMG/d/0S/ZM53
lrsYSZdSWT2oLJSCTprd5dxzz74MBoNsWS5nxcg9zuf5WTkrl7fuaV5drPKL
wj2uF0WWn50timt64OnjwfV+Nq0nVX5FL0wX+flycFOUg4l/dTDTVwcTenWw
t5dN8yU9e7B38HCw9+ng4JNsQl9c1IvbkSvez7NmdXZVNk1ZV8vbOT1YVtNi
XtB/qmXWLBdFfpV+V84XI7dcrJrlwd7ep3sH9FBeTU/zWV0V/EORTeppWV2M
3Gp5PniU3dSL7y4W9Wo+cs+LJf5yv6P/0BPua3ydZflqeVkvRplzA/p/R9M1
I/eboftdUfLfstvflN+Whf+uXlzkVfmHfEkLH7mTalpel9NVPuMfi6u8nI3c
/Lvyf7rOFzf1+XBSX/Evq0U5cpfL5bwZ7e5Gv2VVvbiiwa4LLOPVV48P9vc/
1Y+P9j+5rx/v3btn335y/9N79sAnjx6MsqyszuNBjk4eD37zuzcjnleP+OjE
HV0QFN0JYImTflwsluV5iTNxXXql537z+sVz2uaZe1N/V1Tu5aI+L2cFjxIA
hf8N1gC1DVgJCsh68sVFsQygoCfy5SKffFcshmWxPB8SfHcJ0XYDjuXlZPDt
zXJXtvYXb+v4/bKogGaOoOT+dvhg71N3fe/fxrZKXfZgQsvGBo+fnTw9ORoc
HX+Z7PPNZeGOJkA5d3yNlyaF+7JeVdN8ccvbelxXTfH7FUbLZwqT4/PzYrJs
tu/0ZOheTy4X9eS71m5PrvIq+Wl9w02xKIsGmGeDnlTLYlEVy8ETbNGIRCOj
DHJe/aDQ1Q/OdPWDvU9+CQB/alhGluMUWTpHDAS9uwGQjy9zBsfj+mpeNyAP
vy5oKzUBsahXjUBz0AZ/9/glHdPjXuffBnyL+SCPtxdAMsH2BnsP/xow/8To
gPaXj18l0Gb0LKYxc3lVTIpyvmwc0W33ZLXIz2aFew36DvxdLuoZ47Jgr8D7
3wj20v7PZD8xx1vofv564N4xOGD78uhlAtuXi7KalHN/04lUL+sJga9LT/a2
g+zN0H2ZrxYteMXfxqB6+BeB6oyGGMzz+YA48y8Ahr3OF/f1ixSXfktrOC8Z
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
tNSGPoE9V64oGRuwhfTqMiYovbArw1+qrAB62jBGCTk6Bzc/ZywROu2lQtyc
UZZ9cF/5X92Hlk70GrN9CIZc+Tv7MIj+l/yx5Tt6heAitgKCwYdI/ekSECYE
ZYhOjLU9/HxGmj6JQGpd6BISEZsn0BRsp+85GdAURx4ySLInUxoViDeYEY7P
MKAMhB/oMi2Bmv43HulLIl90c3ig44D9XREuf/zHPzkvWWK4Z/mS0KPrD+DH
P/2LE5DagI+9LMljfs3jAAGJue8Ss77CLYggi80TorFqQw+cg2KSTNfocL8V
xOexWE6kZyA30j9tsZGeeH305uT1VyfHT+jnb56Hvz5kGa/sGmCjBbIUAqz5
rriFhkUUr/Psm9dviPXxv7CR4fOr4//5m5NXx0/w+fWvj54+7fQz+WBPvP71
i2+ePgmfwpuPXzx7dvz8ibxM37rkq6zz7OjvOnLbOy9evjl58fzoaYcoTipa
MWMiEntWCDGaA2HAQkz5KKYZvfPl45du/777/nv1Df7wg3yGc5A+Q5aSqeqK
CIL8SReJyM58XkCEAPGfQSUpiTZAfMI1Aq1iRuFc55s3j51g0LKT4bpX7q26
HN+RbndF+JtfzfHkbx6/7phRkb2F3mbmLxfU2yJ7q87Jd4ckkgzwKL/3Vt2X
79pKAKEVkZ3VgtUBUZlgiINOVEMPweU/lB0y+yKsEio1LenyLHDnB+k1H9HE
qkbd1is3h7Kj4gl0Nve3HXrDMJUfvsyvI/LDJO1v3Q2Oo66KjiyYllFeVESB
2f4+I4p0VlyWJjSD0zDTol9nq6lXHpfRVglZiXnR4YJs03aIra9IzCek7RJH
mJgbhNAfig4pdSKysJTH38ArRUrSYL5azEnUyeb1rJzc+vF7vAAWy5dsJafz
H2/10oeNEKkfXk3HGdES9zbYOt71CLRfuJf7nuzzJv/b/+NeHrjWgvnbeySe
2KJZgmnoa4xwn+B4BXFBFDj4/Bt+40FLF2UdhP8WU568/tCdEwEbTGY1ZDa8
94nqiIQWEwIN+A7dK5EAbthiLG8+Mv2yCeySFeamIH5OM8oyPnWzGjjHwotp
7zLC/p5TBw2bbPjx/X2akf2FjPcVTVHfNIKi+taB+/Ef/q+DOzUBYrpveKv1
rL64BePCn0TtnmBrMrRnTR/uYj7MJy8BrzNWLby4OBWEqDyPDFRfJZkuuHEP
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
ewf/2TPPE/QubolLirVQRN3rDP9Aub9luK+RbCfAHdqvrDU8C7YpYHbAvBCa
39iCH+G6uKfgGj7E37iI6bv2fu7fmLd2N9rDzJUIfrW+6y/N1vaOzElF3iox
JEZRuKn6kPmXbgmWq7x3U7x+NCiZWWOV0JbE82KTnHR0yBBhKycUbk1qnRxn
4MdhBTGsTNvmlPMep8xAHwyIniC8uNnkL20u8Z9tRN+5LyZk8tZmsnd2wgcb
bTdImye/gTLyvi60II4aivGWof4mvBPj2tjFfzBWQg1KBpGpbiyqHBWaM++8
vrA1tJegBTSD4WxuD2MoAzqWnb+ciosr2yGS+9p6ydXwmh0XnueDWonaVkn2
1zWZyqQqaxqQ5bcLIDGbbtxDUt/Tk633FSGP0fG2vJpI0p6pfIhMZz49V5VL
1urDJxJEea+jMXUWqtB/oLsGBgEqqq/ZGoBIt8pN1n4+L6k6KaAm7oH3m+DS
qBYjUntRLQkY8P9yE4Y8eP/629eHJwA9Z9v0c1B7F5xYHWnTqJGt1Y10/O+V
CjsixNLPt/HzztJb4aUL/0Nos8PQzniCO2vCv9l5sN8d93vJhjHC7fTdu6vb
+ROEeRfgq+WfXXvFhNKnJQod9u4mt7S3uqWfit7f/+yaQIZG2JjwM5CW55t5
jma0Cf69/rJlvlSnJ45HXCBvGpzIX0lGG8AJFITgCKGNtf7aMOctvwh/9W7X
cA/+AlBjkpZhLwneNh0SgPez7cFKw/sX6NtpMRrMrv+2PsnfaGsYTRD2i3Bn
+9LN3u2bvFVNxwLeMyk+9XBWPsIjZP166ace007e0AGStwY7W34HUg5iT7dC
obqqmEaUaM1da3Eu7W1pMr9NusZ/SFTLF0sHU1RWh3nzmw/pgwf29ZMO7KMP
kGfcnWieenrBY4f5yW03n/bX239L+4NRWV77l1jb6crSmx6QEc1vKkZhCwyO
jr51ZzVWv0XCb2r9AcnxwDhcy+RmlylK+v2AJHl0iY/fvH/9zotPW+Fx5Rb5
eVMLT1telWGQXD2DtWvpeZWRtOPKoJhysxfO1+l4NAIRMPmvizh4OYY6B3Ao
nbLIjwXFMZnzZTA2OddKbJnXL54+mKYVpkK72nC08+wq8t2X5FwOdKGsJDw1
Adq2IrydaYDinAgRnjCETDO4w9Pby3f9/2qR8pZEyp/WJuOr8WIN/nG67uIn
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
dSCRCUL0r49fvyuPfy1fI1H9f7wkrXc55AIA

-->

</rfc>