---
id: SCR-PFM-ELG-007
title: Eligibility rule editor
route: '/console/{tenantId}/configuration/platform/eligibilityRules/{key} (and /new)'
surface: console
product_area: platform
module: eligibility
revision: 1
status: draft
design_intent: confirmed
origin: >-
  PLAT-M11 plan approved by Andrew 2026-10-21 (the rule builder, readback and
  publish flow; D2 placement under Configuration); the built screen is the
  approved baseline under the UI change approval rule
implementation_evidence: observed
inference: []
source_sha:
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
  services-platform: ad3f6a6582843008ed0f5a17b131878d15829af1
purpose: >-
  Build qualification expressions from declared vocabulary, inspect their
  readable meaning and save or govern releases under the appropriate authority.
supports:
  - JNY-PFM-ELG-001
  - CAP-PFM-ELG-001
  - CAP-PFM-ELG-004
  - CAP-PFM-ELG-005
  - CAP-PFM-ELG-006
permission: >-
  platform.eligibility.read to open (read-only); platform.eligibility.write to
  save; platform.eligibility.publish to publish or share a private rule;
  platform.eligibility.retire to deprecate, archive or restore
entry_from:
  - SCR-PFM-ELG-006
  - 'SCR-PFM-ELG-010: consumer-context creation'
exits_to:
  - 'SCR-PFM-ELG-008: trial evaluation'
  - 'SCR-PFM-ELG-009: release and usage views'
displays:
  - field: 'Definition details, fixed key, reuse, member wording and standing'
    source: getEligibilityDefinition (DOM-PFM-ELG-001)
  - field: >-
      Draft groups, conditions, related blocks, references and facts over the
      loaded vocabulary
    source: >-
      getEligibilityDefinition draft; listEligibilityConditionTypes;
      listEligibilityConsumerKinds
  - field: Live readback and returned draft-validation problems
    source: saveEligibilityDefinitionDraft and validateEligibilityDefinition answers
  - field: 'Parameter declarations with types, defaults and constraints'
    source: draft declarations
actions:
  - label: Save Draft
    operation_id: saveEligibilityDefinitionDraft
    permission: platform.eligibility.write
    confirm: false
  - label: Save details
    operation_id: updateEligibilityDefinition
    permission: platform.eligibility.write
    confirm: false
  - label: Create (new rule)
    operation_id: createEligibilityDefinition
    permission: platform.eligibility.write
    confirm: false
  - label: Publish
    operation_id: publishEligibilityDefinition
    permission: platform.eligibility.publish
    confirm: true
  - label: Duplicate
    operation_id: duplicateEligibilityDefinition
    permission: platform.eligibility.write
    confirm: false
  - label: Deprecate
    operation_id: deprecateEligibilityDefinition
    permission: platform.eligibility.retire
    confirm: true
  - label: Archive
    operation_id: archiveEligibilityDefinition
    permission: platform.eligibility.retire
    confirm: true
  - label: Restore
    operation_id: restoreEligibilityDefinition
    permission: platform.eligibility.retire
    confirm: true
  - label: Compare With Published
    operation_id: diffEligibilityDefinitionVersions
    permission: platform.eligibility.read
    confirm: false
states:
  - empty
  - loading
  - error
  - read-only
  - inactive
validation:
  - BR-CAP-PFM-ELG-001-01
  - BR-CAP-PFM-ELG-001-03
  - BR-CAP-PFM-ELG-001-04
  - BR-CAP-PFM-ELG-001-05
  - BR-CAP-PFM-ELG-001-07
  - BR-CAP-PFM-ELG-001-08
  - BR-CAP-PFM-ELG-001-09
  - BR-CAP-PFM-ELG-001-11
  - BR-CAP-PFM-ELG-001-13
  - BR-CAP-PFM-ELG-001-14
  - BR-CAP-PFM-ELG-004-02
  - BR-CAP-PFM-ELG-004-05
  - BR-CAP-PFM-ELG-004-06
  - BR-CAP-PFM-ELG-004-13
  - BR-CAP-PFM-ELG-005-02
patterns:
  - EligibilityBuilder
  - ReadbackPanel
  - DefinitionHeader and inspector tabs
  - EditorActionBar
  - PublishDialog
  - Disabled-control explanation
component: >-
  components/eligibility/definition-editor.tsx; components/eligibility/builder/;
  components/eligibility/governance/publish-dialog.tsx
evidence:
  - >-
    react-console at baf6dae: components/eligibility/definition-editor.tsx,
    editor/, builder/, governance/publish-dialog.tsx; lib/eligibility/api.ts,
    readback.ts, status.ts.
controls: [TC-AVL-001, TC-AVL-004, TC-AVL-005, TC-AZ-001, TC-AZ-002, TC-AZ-003, TC-AZ-004, TC-CHG-001, TC-CHG-002, TC-CHG-003, TC-CHG-004, TC-CHG-005, TC-CHG-006, TC-DAT-001, TC-DAT-002, TC-DAT-003, TC-DAT-004, TC-IAM-001, TC-IAM-002, TC-IAM-004, TC-IAM-005, TC-IAM-006, TC-LOG-001, TC-LOG-002, TC-LOG-003, TC-LOG-004, TC-LOG-005, TC-MON-001, TC-PI-001, TC-PI-002, TC-PI-003, TC-PI-004, TC-PI-005, TC-PRV-001, TC-PRV-002, TC-TEN-001, TC-TEN-002, TC-TEN-003, TC-TEN-004, TC-VEN-001, TC-VEN-002, TC-VEN-003]
---
# Eligibility rule editor

## What the Screen Is For

Authors assemble qualification logic from application declarations and inspect its readable interpretation before releasing it.

## What It Shows and Lets People Do

The full-page builder supports groups, related records, references and facts beside its readback and inspector. Save keeps a draft with returned problems. Publish walks through validation information, summary, simulation choice, release date and note. Duplicate and lifecycle controls use their separate permissions; Test, History and Usage open related pages.

## States and Errors

Read-only and archived modes prevent editing, and a released definition can start another draft. Publication failures show service reasons. The approval branch lacks an enabling setting; lifecycle requests omit expected versions and deprecation supplies no replacement. There is no separate built Validate control despite local validation and returned service problems.

## Patterns It Must Respect

The implementation uses EligibilityBuilder, ReadbackPanel, DefinitionHeader, EditorActionBar and PublishDialog. Disabled actions explain unavailable authority or prerequisites, and future layout changes require the existing UI approval process.
