---
id: CAP-PFM-ELG-003
title: Try a rule against real records
feature: FEAT-PFM-ELG-01
product_area: platform
module: eligibility
revision: 1
status: draft
product_intent: confirmed
implementation_evidence: observed
supersedes:
  - CAP-ELIG-EVL-009
  - CAP-ELIG-DEF-014
source_sha:
  services-platform: ad3f6a6582843008ed0f5a17b131878d15829af1
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
intent_sources:
  - >-
    services-platform:docs/milestones/plans/PLAT-M11-plan.md#3. How it works for
    the user
  - 'services-platform:docs/milestones/plans/PLAT-M11-plan.md#D3'
purpose: >-
  Authors need examples that show whether a rule matches their expectations. The
  tester makes an evaluation inspectable before the rule is released.
outcomes:
  - >-
    Condition traces show Met, Not met, Unknown or Skipped alongside observed
    values.
  - Trial evaluation performs no writes or decision recording.
concepts:
  - CON-PFM-ELG-001
  - CON-PFM-ELG-003
actors:
  - ACT-PFM-023
surfaces:
  - console
  - api
preconditions: []
postconditions: []
permissions:
  - key: platform.eligibility.read
    where_checked: api
    scope: tenant
  - key: crm.contacts.read
    where_checked: service
    scope: record
rules:
  - id: BR-CAP-PFM-ELG-003-01
    proved_by: [ATS-PFM-ELG-003-01, ATS-PFM-ELG-003-07, ATS-PFM-ELG-008-15, TST-PFM-ELG-412, TST-PFM-ELG-430]
    statement: >-
      A trial evaluates the selected draft or numbered version for a subject,
      returns a full explanation and creates no decision record.
    kind: policy
    enforced_at:
      - service
    must_prove: true
    provenance: test
    source: >-
      services-platform:modules/eligibility/tests/e2e/eligibility-evaluate.e2e.spec.js#answers
      the version’s decision with the trace, never recorded
    origin: none
  - id: BR-CAP-PFM-ELG-003-02
    proved_by: [ATS-PFM-ELG-003-02, TST-PFM-ELG-152, TST-PFM-ELG-412]
    statement: >-
      Rule testing requires both eligibility read authority and access to the
      selected subject’s record.
    kind: permission
    enforced_at:
      - api
      - service
    must_prove: true
    provenance: test
    source: >-
      services-platform:modules/eligibility/tests/e2e/eligibility-evaluate.e2e.spec.js#refuses
      a caller who may not open the primary subject’s record, 403
    origin: none
  - id: BR-CAP-PFM-ELG-003-03
    proved_by: [ATS-PFM-ELG-001-17, ATS-PFM-ELG-003-03, ATS-PFM-ELG-003-06, TST-PFM-ELG-150]
    statement: >-
      Testing without a current draft or a selected version is rejected, and a
      draft containing errors returns its problems instead of an eligibility
      result.
    kind: validation
    enforced_at:
      - service
    must_prove: true
    provenance: test
    source: >-
      react-console:acceptance/eligibility/playwright/journeys/evaluation/ELIG-ACC-0294.spec.ts#ELIG-ACC-0294
    origin: none
  - id: BR-CAP-PFM-ELG-003-04
    proved_by: [ATS-PFM-ELG-003-04, TST-PFM-ELG-151, TST-PFM-ELG-430]
    statement: >-
      Test subjects are limited to contacts and organizations in the workspace,
      with an absent subject reported as not found.
    kind: validation
    enforced_at:
      - service
    must_prove: true
    provenance: test
    source: >-
      services-platform:modules/eligibility/tests/integration/services/evaluate/hosted-evaluate.integration.spec.js#refuses
      a contact the tenant does not have, RecordNotFound
    origin: none
  - id: BR-CAP-PFM-ELG-003-05
    proved_by: []
    statement: >-
      The subject-opening check projects its display name alone, excluding
      photographs and other record fields.
    kind: policy
    enforced_at:
      - service
    must_prove: false
    provenance: test
    source: >-
      services-platform:modules/eligibility/tests/integration/services/evaluate/hosted-evaluate.integration.spec.js#opens
      the subject by one projection of its display name only
    origin: none
  - id: BR-CAP-PFM-ELG-003-06
    proved_by: [ATS-PFM-ELG-003-05, TST-PFM-ELG-125]
    statement: >-
      Condition rows display Met, Not met, Unknown or Skipped alongside the read
      value; an empty stored field does not satisfy its condition.
    kind: calculation
    enforced_at:
      - service
      - console
    must_prove: true
    provenance: test
    source: >-
      react-console:acceptance/eligibility/playwright/journeys/definitions/ELIG-ACC-0080.spec.ts#ELIG-ACC-0080
    origin: 'services-platform:docs/milestones/plans/PLAT-M11-plan.md#PLAT-M11-S06'
  - id: BR-CAP-PFM-ELG-003-07
    proved_by: []
    statement: >-
      Saved test examples belong to the author’s browser and are separated by
      workspace and rule rather than shared with other staff.
    kind: policy
    enforced_at:
      - console
    must_prove: false
    provenance: observed
    source: 'react-console:lib/eligibility-test/test-cases.ts:browserStore'
    origin: 'services-platform:docs/milestones/plans/PLAT-M11-plan.md#D3'
scenarios:
  - id: SC-CAP-PFM-ELG-003-01
    given: >-
      An active-adult draft has qualifying, inactive and birth-date-empty
      contact examples.
    when: The author runs all three trials.
    then: >-
      Condition rows display values with Met, Not met or Unknown, and the empty
      birth date fails age qualification.
    provenance: test
    source: >-
      react-console:acceptance/eligibility/playwright/journeys/definitions/ELIG-ACC-0080.spec.ts#ELIG-ACC-0080
edge_cases: []
constraints: []
depends_on: []
related:
  - CAP-PFM-ELG-001
  - CAP-PFM-ELG-008
journeys:
  - JNY-PFM-ELG-001
open_questions: []
evidence:
  - >-
    services-platform: docs/eligibility.md;
    docs/milestones/PLAT-M11-eligibility-rules.md and plans/PLAT-M11-plan.md;
    docs/proposals/eligibility/17-decision-register.md; aws/platform.service.ts
    (ELIGIBILITY_PERMISSIONS); modules/eligibility/aws/api/definitions.routes.ts
    (testEligibilityDefinition), services/evaluate/test-definition.ts,
    hosted-evaluate.ts, explain-sentences.ts; rule-level source and test
    references
  - >-
    react-console: components/eligibility/test/**,
    lib/eligibility-test/test-cases.ts;
    acceptance/eligibility/journeys/evaluation/ELIG-ACC-0294 to 0296 and
    definitions/ELIG-ACC-0080.
controls: [TC-AZ-001, TC-AZ-002, TC-AZ-003, TC-AZ-004, TC-DAT-001, TC-DAT-003, TC-LOG-005, TC-PI-001, TC-PI-003, TC-PI-005, TC-PRV-001, TC-PRV-002, TC-TEN-001, TC-TEN-002, TC-TEN-003, TC-VEN-001, TC-VEN-002, TC-VEN-003]
exercised_by: [FAS-PFM-ELG-01-01, FAS-PFM-ELG-01-03, FAS-PFM-ELG-01-05]
suites: [TST-PFM-ELG-125, TST-PFM-ELG-150, TST-PFM-ELG-151, TST-PFM-ELG-152, TST-PFM-ELG-412, TST-PFM-ELG-430]
---
# Try a rule against real records

## Purpose

Authors need examples that show whether a rule matches their expectations. The tester makes an evaluation inspectable before the rule is released.

## How It Works

The author opens Test from the editor and chooses real subjects. They can inspect the current draft or a numbered version. The result separates the overall decision from each condition’s contribution. Expanding the explanation shows the values used. Unknown and Skipped have distinct labels in the current console. A subject that the author cannot open is unsuitable for this trial. A broken draft returns its problems for correction. Saving an example retains it in that browser for later use. The product should reconsider shared examples when team review requires them.

## Relationships

The trial experience uses the evaluation engine and provides preparation for a release.
