---
id: STATE-PFM-ELG-003
title: Rule use availability
object: DOM-PFM-ELG-002
product_area: platform
module: eligibility
revision: 1
status: draft
design_intent: confirmed
origin: >-
  PLAT-M11 plan D4 "Refuse unless forced", approved by Andrew 2026-10-21; the
  binding compatibility rule of the governance chapter, approved 2026-10-17
implementation_evidence: observed
source_sha:
  services-platform: ad3f6a6582843008ed0f5a17b131878d15829af1
states:
  - name: active
    meaning: >-
      The consumer connection can be evaluated under its selected release and
      policy.
  - name: suspended
    meaning: The evaluator rejects the connection rather than returns ineligible.
  - name: deleted
    meaning: >-
      The connection and its plans were removed; existing decision history
      remains.
transitions:
  - from: active
    to: suspended
    trigger: >-
      Forced publishEligibilityDefinition or
      republishEligibilityDefinitionVersion with incompatible followers
    guard: >-
      Force publication of a release incompatible with an active following
      connection.
    side_effects:
      - Record its suspension with the publish
      - Reject later evaluation
    who: Rule publisher
    provenance: observed
    source: >-
      services-platform:modules/eligibility/services/bindings/consumer-bindings.ts:suspendUnfitBinding
  - from: active
    to: suspended
    trigger: >-
      updateEligibilityBinding or updateEligibilityBindingForService requesting
      suspension
    guard: Binding authority and the expected binding version.
    side_effects:
      - Record the availability change
    who: Consumer administrator or consumer service
    provenance: observed
    source: >-
      services-platform:modules/eligibility/services/bindings/consumer-bindings.ts:changeBinding
  - from: suspended
    to: active
    trigger: >-
      updateEligibilityBindingForService or updateEligibilityBinding requesting
      reactivation
    guard: >-
      Binding authority, matching version, unarchived rule and compatible
      selected release.
    side_effects:
      - Potentially reuse an unchanged cached display result for two minutes
      - Record reactivation
    who: Consumer administrator or consumer service
    provenance: observed
    source: >-
      services-platform:modules/eligibility/lifecycle.ts:bindingCompatibilityRefusal
  - from: active
    to: deleted
    trigger: deleteEligibilityBindingForService or deleteEligibilityBinding
    guard: The caller holds binding-management authority.
    side_effects:
      - Delete associated plans
      - Preserve recorded history
      - Record removal
    who: Consumer administrator or consumer service
    provenance: observed
    source: >-
      services-platform:modules/eligibility/services/bindings/consumer-bindings.ts:unbind
  - from: suspended
    to: deleted
    trigger: deleteEligibilityBindingForService or deleteEligibilityBinding
    guard: The caller holds binding-management authority.
    side_effects:
      - Delete plans
      - Preserve history
    who: Consumer administrator or consumer service
    provenance: observed
    source: >-
      services-platform:modules/eligibility/services/bindings/consumer-bindings.ts:unbind
invalid:
  - from: suspended
    to: active
    why: An archived or incompatible rule prevents reactivation.
  - from: deleted
    to: active
    why: A removed connection must be recreated rather than reactivated.
concurrency: >-
  Creation and change lock the definition and recheck a publication that raced
  the earlier fit check. Binding updates require the version read and reject
  stale changes.
invariants:
  - INV-DOM-PFM-ELG-002-03
  - INV-DOM-PFM-ELG-002-04
  - INV-DOM-PFM-ELG-002-05
  - INV-DOM-PFM-ELG-002-06
evidence:
  - >-
    services-platform at ad3f6a6: modules/eligibility/lifecycle.ts;
    services/bindings/consumer-bindings.ts; services/governance/publish.ts;
    db/eligibility-bindings.table.ts; docs/eligibility.md §7.3, §7.7.
---
# Rule use availability

## The Lifecycle

```mermaid
stateDiagram-v2
  active --> suspended
  suspended --> active
  active --> deleted
  suspended --> deleted
```

## Transitions Explained

Suspension is an operational refusal, not a qualification result. Forced publication can suspend followers; an administrator can reactivate only after compatibility checks succeed.

## What Cannot Happen

An archived or incompatible rule prevents reactivation. A removed connection must be recreated rather than reactivated.

## Concurrency and Timing

Creation and change lock the definition and recheck a publication that raced the earlier fit check. Binding updates require the version read and reject stale changes.
