Rights Layer Specification

Use Case: Subscription (Right to Use a Service)

Status: Draft v0.1.0 — This section is informative.

Scenario

Yuki subscribes to the standard plan of an online media service. The Source of the Right is the subscription agreement concluded under the provider’s terms of service — a Source of kind contract, referenced through an Agreement Reference of kind terms whose parties are Yuki and the provider. The provider is the Authority in the model’s sense: a contracting party with granting power, acting as grantor and as the issuer of Eligibility Responses about the subscription’s state. The Object is the service plan, and the provider’s subscription management system is the Evidence Source for the subscription’s state.

The Right — the subscriber’s entitlement under the agreement — carries two Actions. use-service has two Eligibilities, one requirement each: the subscription is active (not cancelled, expired, or suspended), and payment for the current billing period has been made. cancel is also an Action of the same Right — terminating the relationship is itself something the Subject is entitled to do under the terms — with its own Eligibilities. Each Eligibility is answered by at most one Boolean Eligibility Response issued by the provider; how the provider checks its records is outside Rights Layer.

This use case deliberately shows the negative path. In the example, Yuki requests use of the service; the provider answers the subscription-active Eligibility true but the payment-current Eligibility false — a missed payment. Because one Response is false, no Decision is established: the expression contains no Decision entity and no Exercise entity for use-service — the model has no negative Decision and no third value, so there is simply nothing of that kind to record. The Right itself continues to exist unchanged; when payment is made, a fresh true Response can be issued and a Decision can then be established. That is exactly the distinction the model draws between existence and exercisability. The Eligibilities of cancel are left unanswered, so no Decision exists for that Action either.

Mapping

Rights Layer concept Domain instance
Subject Yuki, the subscriber
Object The subscribed service plan
Right The subscriber’s right to use the service under the agreement
Source Contract: subscription agreement under the terms of service (Agreement Reference, kind terms)
Authority The service provider (contracting party with granting power; grantor and Response issuer)
Action use-service; cancel
Eligibility (use-service) Two Eligibilities, one requirement each: subscription active; payment current for the billing period
Eligibility (cancel) Two Eligibilities: subscription active; cancellation requested in the manner set out in the terms
Eligibility Response (1:1) Subscription active: true by the provider; payment current: false by the provider. How the provider evaluates its records is outside the layer.
Evidence / Evidence Source Subscription record from the provider’s subscription management system, referenced by the true Response
Decision Not established for use-service: one Response is false, so no Decision entity exists (there is no negative Decision)
Exercise / Exercise Event None for use-service — an Exercise presupposes an established Decision; the request remains recorded as an ExerciseRequested Event
Event RightGranted at subscription start; ExerciseRequested; two EligibilityResponseIssued Events, one carrying value: false

Chain Instantiation

flowchart TD
    S["Source<br/>Contract: subscription agreement<br/>under terms of service"] --> R["Right<br/>Subscriber's right to use<br/>the service (held by Yuki)"]
    R --> A1["Action<br/>use-service"]
    R --> A2["Action<br/>cancel"]
    A1 --> EL1["Eligibility<br/>subscription active"]
    A1 --> EL2["Eligibility<br/>payment current"]
    A2 --> EL3["Eligibilities<br/>(unanswered: no Decision)"]
    EL1 --> ER1["Response: true<br/>issuer: the provider"]
    EL2 --> ER2["Response: false<br/>issuer: the provider"]
    ER1 --> D["Decision<br/>NOT established:<br/>one Response is false"]
    ER2 --> D
    D -.->|"no Decision entity,<br/>no Exercise"| EX["(no Exercise)"]

What Rights Layer Does Not Model

Example

Machine-readable expression: subscription.json