Capability Systems: Canonical Domain Analysis

Status: Phase B.2-B.3 of the Paper 3 deep-dive reconciliation. First-pass application of the methodology to capability-and-authorization-systems-as-a-domain. Companion to type_systems_domain_analysis/. Source: Paper 3 §2 (Zanzibar / UCAN / Macaroons / Biscuit), classical access-control literature, capability theory (Dennis-Van Horn, Levy 1984), methodology.md. Position in topology: Surface domain with strong substrate-dependence on identity and execution. Prediction (R11): ~25-40% filter, functional-integration core triad. Distinct from type systems in that the domain has a strong temporal/contextual character (authorization is request-bound, not data-bound).


Step 1 — Information Gathering

1.1 Primary literature

1.2 Prior analytical work

1.3 Implementation landscape


Step 2 — Landscape Analysis

2.1 Attractor positions

ClusterExamplesDefining features
Object-capabilityE, Pony, KeyKOS, EROSUnforgeable references; possession = authority; no ambient authority; per-object discretion
Relation-basedZanzibar, OpenFGA, Google Cloud IAMCentralized graph of subject-relation-object; uniform check protocol; single-domain trust
Token-with-caveatsMacaroons, BiscuitBearer tokens with attenuating caveats (predicates); flexible delegation; service-bound
DID-based decentralizedUCAN, AT ProtocolCryptographic identity per agent; signed delegation chains; topology-agnostic
HardwareCHERI, Mill, KeyKOSCapability is a machine word with hardware-enforced authority; fine-grained per-memory-access
ABAC / policy-engineXACML, OPA / Rego, CedarDecoupled policy from data; rich predicate language; attribute-driven

Six attractors, one more than type systems' five. Authorization is a more fragmented design space because each cluster optimizes for a different deployment topology (trusted centralizer vs decentralized agents vs hardware enforcement).

2.2 Entity system positioning

The entity system fits the DID-based decentralized cluster (UCAN-adjacent) with strong substrate-integration: capability tokens are entities, capability checks are dispatch, capability identifiers are content-addressed.


Step 3/3b — Primitive Extraction and Partial Levels

3.1 First-pass primitive candidates (developed without consulting Paper 3)

What does an authorization system structurally do? It evaluates "should this request proceed?" Decomposed:

  1. Subject (Sb) — identifying the principal making the request (who)
  2. Action (Ac) — what is being requested (verb + how to dispatch it)
  3. Object (Ob) — what is being acted upon (target resource/data)
  4. Context (Cx) — environmental conditions (time, location, peer, network attributes)
  5. Authority (Au) — what makes the authorization legitimate (root vs delegated, the source of permission)
  6. Attenuation (At) — how authority can be narrowed in delegation (monotonic shrinkage)
  7. Revocation (Rv) — how authority can be removed once granted (negative move)

7 candidates. Iterate.

3.2 Iteration 1 — collapse / split candidates

3.3 Stable primitive set (provisional)

After iteration:

8 primitives: {Sb, Mc, Vb, Ob, Cx, Au, At, Rv}

Comparison to Paper 3's 7 dimensions:

Methodology arrives at 8 primitives. Paper 3 has 7. The differences:

3.4 Domain-type declaration (R11)

Surface domain. Authorization sits on top of an identity substrate + an execution substrate + a content substrate. R11 predicts ~25-40% filter, functional-integration core triad.

3.5 Partial levels (compressed)

Subject (Sb):

LevelDescription
Sb0Anonymous (no subject discrimination)
Sb1Bearer (whoever has the token)
Sb2Assigned identity (username, role-id)
Sb3Cryptographic identity (signature-bound to a key)
Sb4Content-addressed identity (DID, public-key hash)

Phase transition Sb3→Sb4: identity becomes intrinsic and unforgeable across topology. (Maps to entity primitive I's phase transition.)

Mechanism (Mc):

LevelDescription
Mc0No mechanism discrimination (any code path is authorized equally)
Mc1Service / endpoint scope (per-service auth)
Mc2Handler / module scope (per-mechanism inside a service)
Mc3Open dispatch with per-handler grants (entity-system level)

Verb (Vb):

LevelDescription
Vb0No verb discrimination (any action authorized equally)
Vb1Coarse (read/write split)
Vb2Standard CRUD
Vb3Open verb set per mechanism (extensible operation vocabulary)

Object (Ob):

LevelDescription
Ob0No object scope (system-wide authority only)
Ob1Service-bound (this service's data)
Ob2Path-prefix scope (everything under /a/b/)
Ob3Per-resource grant (a specific resource by id)
Ob4Content-addressed object scope (hash-keyed grants)
Ob5Set-theoretic scope (include + exclude regions, the entity-system case)

Context (Cx):

LevelDescription
Cx0No context (always-on capability, no environmental conditions)
Cx1Time-bound (expiry only)
Cx2Time-bound + temporal window (nbf + exp)
Cx3Time + spatial (peer-scoped, location-scoped)
Cx4Time + spatial + arbitrary attributes (ABAC-rich)

Authority (Au):

LevelDescription
Au0No authority concept (all capabilities are equal/root)
Au1Single-root (everything chains to system root)
Au2Multi-root (multiple authority sources, possibly federated)
Au3Identity-bound roots (each agent is its own root for its own resources)

Attenuation (At):

LevelDescription
At0No attenuation (capabilities pass unchanged)
At1Attenuation by scope-narrowing (smaller subset of object/verb)
At2Attenuation by predicate (added constraints in delegation)
At3Attenuation by composition (multiple caveats compose)

Revocation (Rv):

LevelDescription
Rv0No revocation (capability is forever)
Rv1Expiry-only (revocation via time, not explicit action)
Rv2Explicit revocation lists (CRL-style)
Rv3Push-revocation (subscription/notification on revoke)
Rv4Content-addressed revocation (revocation entities, hash-keyed, subscribable)

3.6 Stability check

Re-test under partial-level decomposition:

8 primitives stable: {Sb, Mc, Vb, Ob, Cx, Au, At, Rv}.


Step 4 — Dependencies

Sb → (none, but pairs heavily with Au)
Mc → (none, but pairs with Ob)
Vb → Mc                  (verbs are dispatched via mechanisms)
Ob → (none, but pairs with Mc for path-bound mechanisms)
Cx → (none, environmental)
Au → Sb                  (authority is held by a subject; even root has a subject)
At → Au                  (attenuation operates on authority chains)
Rv → Au                  (revocation invalidates authority)

DAG:

Sb → Au → At
        ↘
         Rv

Mc → Vb
Ob
Cx

Hubs: Au (Authority) is hub for At and Rv. Sb is upstream of Au. Mc is upstream of Vb.

4.1 Conditional partial-level dependencies

These conditional dependencies tighten the lattice at fine resolution.


Step 5-6 — Pairs and Load Classification

C(8,2) = 28 pairs.

Heavy pairs:

PairWhy heavy
Sb-AuSubject as authority holder; the foundational pair (who authorizes)
Au-AtAuthority + attenuation = delegation chain (Paper 3's "Delegation")
Mc-VbMechanism + verb = action specification
Ob-McObject scoped by mechanism (paths under handlers)
Au-RvAuthority can be revoked (negative move on positive structure)
Cx-AtContext-conditioned attenuation (caveats with predicates)
Sb-CxSubject's contextual binding (token bound to time/peer for this subject)

7 heavy pairs.

Medium pairs:

PairWhy medium
Mc-AuAuthority sometimes scoped to mechanism
Ob-AuAuthority over an object scope
Vb-AuAuthority over a verb set
Ob-CxSome objects exist only in certain contexts
At-RvAttenuated capabilities can also be revoked
Sb-ObSome objects are owned by specific subjects

6 medium pairs.

Light/negligible pairs: remaining 15.

Heavy-pair ratio: 7/28 = 25%. Within R11 surface-domain expected range.


Step 7 — Coherent Sub-lattice (estimated)

2^8 = 256 total subsets. Apply dependencies:

Estimated coherent subset count: 70-100 / 256 → filter ~27-39%. Within R11 surface range.

(Precise count is script-able and deferred.)


Step 8 — Build-up Sequence

Natural build-up of an authorization system from scratch:

  1. {} → no authorization (open system)
  2. {Sb} → identify requesters (audit, not yet authorization)
  3. {Sb, Au} → root authority + identified subjects (single-root authorization)
  4. {Sb, Au, Ob} → authority scoped to objects (DAC begins)
  5. {Sb, Au, Ob, Mc} → mechanism scoping (per-handler grants)
  6. {Sb, Au, Ob, Mc, Vb} → verb scoping (CRUD-level discrimination)
  7. {Sb, Au, Ob, Mc, Vb, At} → delegation (subjects can re-grant subsets)
  8. {Sb, Au, Ob, Mc, Vb, At, Cx} → contextual conditions (time, location, etc.)
  9. {Sb, Au, Ob, Mc, Vb, At, Cx, Rv} → revocation (capabilities can be undone)

This is one natural walk; others exist. Notably, the entity system reaches step 9 plus the strongest partial levels (Sb4 content-addressed subject, Au3 identity-bound roots, At3 composing caveats, Cx3-4, Rv2+).


Step 9 — Load-Bearing Compositions

9.1 Candidate triangles

TriangleWhat it does
Sb + Au + AtDelegation triangle — Paper 3's "Delegation" decomposes into this
Mc + Vb + ObAction-scope triangle — what can be done where
Sb + Au + CxContextual subject authority — the JWT/UCAN token core
Au + At + RvAuthority-management triangle — how capability lifetimes work
Ob + Mc + SbDiscretionary access triangle (DAC core)

9.2 Functional-integration core triad (R11 prediction)

Candidate: {Sb, Au, Ob} — the minimal triad to express "subject S, holding authority A, may act on object O." This is the structural minimum of any authorization system. Matches DAC's foundational position.

Alternative candidate: {Sb, Au, At} — the delegation triangle, which is what makes capabilities distinct from access-control-lists. The cap-systems literature centers here.

Both are reasonable triads. The choice between them depends on whether the analysis emphasizes static access (Sb+Au+Ob) or delegation (Sb+Au+At). Most modern systems require both, so the quad {Sb, Au, Ob, At} might be the load-bearing structure. Quads are higher-arity load-bearing compositions per Step 9.

9.3 Entity system's distinctive activation

Entity system activates all 8 primitives at strong partial levels:

This is the highest activation among the surveyed cluster. UCAN reaches Sb4, Au3, At2-3 but only Cx1-2 and Rv0-1. Zanzibar reaches Ob3, Mc1-2, Au1 but Sb2 only. Macaroons reach At3, Cx1-2 but Sb1-2, Au1, Ob1.


Step 10 — Emergent Properties

CompositionEmergent property
{Sb, Au, At}Delegation chains — power can be re-granted with restriction
{Sb, Au, Ob, Mc, Vb}Fine-grained access control — per-(subject, object, mechanism, verb) authorization
{Au, At, Rv}Capability lifecycle management — grant, attenuate, revoke
{Sb4, Au3, At3}Decentralized authorization without central authority (entity / UCAN / DID class)
{Au, At, Rv, Cx}Conditional / contextual delegation (Macaroons-style caveats)
{Mc, Vb, Ob, Cx}ABAC-style policy evaluation
All 8 + strong partial levelsProgrammable, decentralized, lifecycle-aware capability infrastructure (entity system goal state)

Step 11 — Cross-Domain Patterns

11.1 Map to entity primitives

Cap-system primitiveEntity-substrate grounding
SbI + P (subject identity is content-addressed peer identity at Sb4)
McT + X (mechanism is a tree-located handler, dispatched via X)
VbE + X (verb is a typed operation in handler's vocabulary)
ObT (objects are tree-located entities)
CxM + I/P (context includes temporal — emit ordering — and spatial — peer scope)
AuI + X (authority is a cryptographic claim — capability token signed by identity, verified via X)
AtI + X + E (attenuation operates on signed tokens; the token is a typed entity)
RvT + M + I (revocation entities at paths, emitted, content-addressed)

Authority + Attenuation activates the IXP cryptographic-capability triangle that Paper 3 names. This matches.

All 6 entity primitives are needed: E (typed authority tokens), I (cryptographic identity for Sb/Au), T (object scope, handler scope), M (temporal context, revocation), X (authority verification, dispatch), P (peer scope). Consistent with Paper 3's finding that capability dimensions require the full primitive set.

11.2 Cross-domain pattern: Authority vs Identity

The Authority primitive is the cap-domain analog of the substrate-Identity primitive. Both are about unforgeable claim: substrate-Identity makes content claim unforgeable (hash); cap-Authority makes permission claim unforgeable (cryptographic signature). The methodology surfaces this analogy.


Step 12 — Literature Alignment

The methodology's 8 primitives + partial levels cleanly stratify the comparison systems. Paper 3's 7×4 table is consistent but coarser (binary yes/no per dimension vs partial-level positioning).


Reconciliation with Paper 3

Agreement points

  1. All entity primitives needed: both analyses agree capability systems require the full set {E, I, T, M, X, P}.
  2. IXP cryptographic triangle distinctive: methodology identifies Sb+Au+At as activating IXP at the substrate; Paper 3 names IXP directly. Same finding.
  3. Entity system covers the most of any surveyed system: methodology scores entity at highest partial levels across all 8 primitives; Paper 3 says entity covers all 7 dimensions where others cover subsets.
  4. Handler + Operation split as distinctive: both agree this is the entity system's contribution (relative to systems that bundle them as "permission scope").
  5. Phase-transition pairs require Full I: both agree.

Divergence points

  1. Primitive count: methodology finds 8 primitives (Sb, Mc, Vb, Ob, Cx, Au, At, Rv); Paper 3 finds 7 dimensions (Subject, Handler, Operation, Resource, Peer, Time, Delegation).

  2. Context vs Peer+Time: methodology bundles Peer and Time into Context (Cx) with partial levels for each axis; Paper 3 splits them outright. The split is defensible — every token-based system has Time as first-class; Peer-as-first-class is distinctive of decentralized systems. Methodology may need to split Cx at the substrate-aware refinement level.

  3. Delegation as primitive vs as pair: Paper 3 treats Delegation as one of 7 dimensions; methodology treats it as the {Au, At} pair-relationship (and identifies its triangle with Sb: {Sb, Au, At}). Methodology's view is more structural — delegation is the interaction of authority and attenuation, not a primitive itself.

  4. Revocation as primitive: methodology adds Rv as primitive #8; Paper 3 mentions revocation only as a sub-aspect of Time (expiry). This is a methodology addition — Paper 3 missed revocation as an independent design axis. The Macaroons/UCAN literature confirms it's a distinct primitive: token expiry is necessary but not sufficient for capability lifecycle management; explicit revocation (CRL, push-revoke) is a different mechanism.

  5. Authority as primitive: methodology has Authority (Au) as primitive #6; Paper 3 has no equivalent. Paper 3 implicitly bundles Authority into Subject (the holder of a capability has authority). Methodology argues these are distinct — Subject is the requester at request time, Authority is the source of permission. They can differ (delegated subject ≠ root authority). Methodology's split is justified by capability theory (Au is the foundational object-capability concept) and by the entity system's actual mechanics (cert-chain framework distinguishes peer-keypair from controller-quorum).

Verdict

Significant revision needed: the methodology finds 8 primitives where Paper 3 has 7 dimensions, with two non-trivial additions (Authority, Revocation) and one merge (Peer+Time → Context). Paper 3's framing is consistent with the methodology in spirit (all 7 dimensions map to methodology primitives or pairs) but misses Revocation as a primitive and bundles Authority into Subject.

These are not cosmetic differences. Revocation is a well-known design space in capability systems (the "revocation problem" has its own literature). Authority is the foundational concept of object-capability theory. Paper 3's omission of both reflects its pre-methodology origins — the analysis was empirical-survey-driven, not theory-driven, and these primitives are theory-visible but not always survey-prominent.

Recommendation for Paper 3:

  1. Add Revocation as a 7th... wait, 8th... wait, this is where it gets architecturally messy. Paper 3 currently structures around "7 dimensions" with explicit grant-field mapping. Adding Revocation as an 8th breaks the structure.

  2. Alternative: keep Paper 3's 7-dimension framing for backward consistency but add a "Methodology Refinement" subsection noting:

    • Authority should be split from Subject (matches the cert-chain framework added in Paper 10's recent identity rewrite)
    • Revocation should be a primitive, currently treated only through Time-expiry
    • Peer + Time may bundle into Context as partial levels of one Cx primitive
    • The reconciliation lives in methodology/capability_systems_domain_analysis/
  3. More ambitious: restructure Paper 3 §2 around 8 primitives (or 9 if Peer and Time stay split). This is a larger edit and risks losing the "4-dim grant is principled subset of 7 dimensions" narrative.

The choice depends on whether Paper 3 prioritizes historical continuity (option 2) or theoretical correctness (option 3).


TODO