Rights Layer Specification

Use Case: Insurance (Policyholder’s Right)

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

Scenario

Ken holds a household property insurance policy. Unlike the licensing use cases, the Source here is a private contract: the insurance contract between Ken and an insurer, referenced through an Agreement Reference whose parties are Ken and the insurer. The insurer appears as an Authority in the model’s sense — a contracting party with granting power — acting as grantor of the Right and, through its departments, as issuer of Eligibility Responses. The Object is the policy itself, recorded in the insurer’s policy administration system, which is the Evidence Source for everything about the policy’s state.

The Right — the policyholder’s entitlement under the contract — is again binary in existence. Its single Action is claim-benefit, and the conditions people associate with “whether the insurance pays” are that Action’s three Eligibilities, one requirement each: an insured event as defined in the policy has occurred within the coverage period; premiums are paid up to date; and the claim has been filed within the claim period stipulated by the policy. None of these affect whether the Right exists; each is answered by at most one Eligibility Response issued from outside the layer. The insurer’s claims department attests that the insured event occurred and that the claim was filed in time; the insurer’s policy administration attests that premiums are paid. How they evaluate — claims investigation, file review, payment ledger checks — is outside Rights Layer; only the verifiable Boolean answers enter the model.

The example carries a full exercise chain. Ken files a claim (ExerciseRequested Event), the three Responses are issued (EligibilityResponseIssued Events), and because every Eligibility has exactly one verifiable Response and all are true, a Decision is established (DecisionEstablished Event). The settlement process is the Exercise, bracketed by ExerciseStarted / ExerciseEnded Exercise Events in the append-only history. Had any Response been false — or any Eligibility been left unanswered — no Decision would exist at all: the model has no negative Decision.

Mapping

Rights Layer concept Domain instance
Subject Ken, the policyholder
Object The insurance policy
Right The policyholder’s right under the insurance contract
Source Contract (Agreement Reference; parties: policyholder and insurer)
Authority The insurer (contracting party with granting power; grantor); its claims department as a Response issuer
Action claim-benefit
Eligibility Three Eligibilities, one requirement each: insured event occurred within the coverage period; premiums paid up to date; claim filed within the claim period
Eligibility Response (1:1) Insured event: true by the insurer’s claims department; premiums: true by the insurer; claim period: true by the claims department. How each evaluates is outside the layer.
Evidence / Evidence Source Damage report and premium payment status from the insurer’s policy administration system, referenced by the Responses
Decision Established because all three Responses are verifiable and true; one false or unanswered Eligibility would mean no Decision exists
Exercise / Exercise Event The settlement of the claim after the Decision was established; requested, started, ended
Event RightGranted at contract inception; lapse for non-payment would be a later Event

Chain Instantiation

flowchart TD
    S["Source<br/>Contract:<br/>insurance policy (Agreement Reference)"] --> R["Right<br/>Policyholder's right<br/>(held by Ken)"]
    R --> A["Action<br/>claim-benefit"]
    A --> EL1["Eligibility<br/>insured event occurred"]
    A --> EL2["Eligibility<br/>premiums paid"]
    A --> EL3["Eligibility<br/>claim filed within period"]
    EL1 --> ER1["Response: true<br/>issuer: claims department"]
    EL2 --> ER2["Response: true<br/>issuer: insurer"]
    EL3 --> ER3["Response: true<br/>issuer: claims department"]
    ER1 --> D["Decision<br/>established: all Responses true"]
    ER2 --> D
    ER3 --> D
    D --> EX["Exercise<br/>claim settled"]
    EX --> EE["Exercise Event<br/>requested / started / ended"]

What Rights Layer Does Not Model

Example

Machine-readable expression: insurance.json