---
id: TST-PFM-ELG-412
title: Eligibility evaluate checks
kind: api-lifecycle
product_area: platform
module: eligibility
revision: 1
status: draft
source_sha:
  services-platform: ad3f6a6582843008ed0f5a17b131878d15829af1
repository: services-platform
files:
  - modules/eligibility/tests/e2e/eligibility-evaluate.e2e.spec.js
implements:
  - ATS-PFM-ELG-003-01
  - ATS-PFM-ELG-003-02
  - ATS-PFM-ELG-007-11
  - ATS-PFM-ELG-007-13
  - ATS-PFM-ELG-008-07
  - ATS-PFM-ELG-008-08
  - ATS-PFM-ELG-008-09
  - ATS-PFM-ELG-008-10
  - ATS-PFM-ELG-008-12
  - ATS-PFM-ELG-009-04
  - ATS-PFM-ELG-009-05
  - ATS-PFM-ELG-010-01
  - ATS-PFM-ELG-010-02
environment: local
implementation_state: implemented
latest_result: not-run
conformance: not-verified
estimated_minutes: 5
isolation: Prepared local test database with suite-owned fixture keys and cleanup.
evidence:
  - provenance: test
    source: >-
      services-platform:modules/eligibility/tests/e2e/eligibility-evaluate.e2e.spec.js
    cases:
      - answers one decision for a single evaluation
      - answers the batch’s decisions in the order asked
      - >-
        answers the evaluation of the portal kind without any eligibility
        permission
      - fills actorContact from the member’s own contact
      - answers the member at most the portal explanation
      - >-
        refuses a console caller holding the read key a binding whose consumer
        kind takes system callers only, 403
      - >-
        refuses a portal member a binding whose consumer kind takes no portal
        callers, 403
      - 'refuses a portal member an evaluation of another contact, 403'
      - 'refuses a portal member another contact named as the actor, 403'
      - 'refuses a portal member an authorization evaluation, 403'
      - 'refuses a portal caller whose sign-in is linked to no contact, 403'
      - 'refuses a transactional evaluation, naming evaluateInTransaction, 400'
      - 'refuses a portal member the admin explanation, 403'
      - >-
        refuses a console member without the eligibility read permission, in the
        handler, 403
      - 'refuses a batch of more than 50 evaluations, 400'
      - answers the first display evaluation from the data
      - 'answers the second display evaluation from the cache, without the change'
      - never answers an authorization evaluation from the cache
      - publishes the definition again
      - >-
        answers from the data again once the publish has flushed the
        definition’s decisions
      - lists the subject’s recorded decision without its trace
      - reads one decision with its trace
      - 'refuses a list that names neither a subject nor a definition, 400'
      - 'refuses a page of more than 100 decisions, 400'
      - answers 404 for a decision the tenant does not have
      - 'answers the version’s decision with the trace, never recorded'
      - 'refuses a caller who may not open the primary subject’s record, 403'
      - 'registers the binding, recorded as made by the service principal'
      - 'reads the binding back, and finds it in the consumer’s list'
      - changes the binding at the version read
      - answers the binding’s plan with its hash as the ETag
      - >-
        answers a service principal the whole plan, the predicate requests and
        the registry’s sql included (DEF-ELIG-0005)
      - 'evaluates at transactional consistency, which a person is refused'
      - 'removes the binding, which is then not found'
      - >-
        refuses a console caller a service route over HTTP, as a mismatched
        context
      - refuses a principal the registry does not hold
      - 'still refuses a console caller a transactional evaluation, as before'
      - answers the plan with its hash as the ETag
      - answers 304 when If-None-Match names the plan’s hash
      - >-
        redacts the sql, function, cache, batch and explain internals of the
        plan for a console caller (DEF-ELIG-0005)
      - 'keeps the plan’s hash, tree and node ids for a console caller'
  - provenance: documented
    source: >-
      services-platform:modules/eligibility/tests/e2e/eligibility-evaluate.e2e.spec.js:suite
      header
    note: >-
      The source header describes the verification boundary and declared
      substitutions.
proof_limit: >-
  Only the named scenario checkpoints have a verified source binding; execution
  has not been attempted.
---

# Eligibility evaluate checks

## Verification Boundary

This suite checks the module through real local service and database code at the entry points used by its test cases.

## What This Suite Proves

The mapped scenarios identify the capability and feature checkpoints this file exercises. The source test titles preserve the assertion-level evidence.

## What It Does Not Prove

Registration supplies no execution result or conformance decision. Checks beyond the file’s reachable assertions remain unverified, including production configuration.

## Real Dependencies and Test Doubles

The suite uses local integration fixtures. Signing, caches, provider responses or outbound delivery may be supplied by fixtures where the source declares a substitution. The source imports and suite header identify the exact dependencies.

## Must Not Be Doubled

The module behavior under assertion, transaction boundary and database constraint being checked remain real. Fixture setup cannot stand in for the asserted write or refusal.
