---
id: TST-PFM-ELG-430
title: Eligibility hosted evaluate checks
kind: integration
product_area: platform
module: eligibility
revision: 1
status: draft
source_sha:
  services-platform: ad3f6a6582843008ed0f5a17b131878d15829af1
repository: services-platform
files:
  - >-
    modules/eligibility/tests/integration/services/evaluate/hosted-evaluate.integration.spec.js
implements:
  - ATS-PFM-ELG-003-01
  - ATS-PFM-ELG-003-04
  - ATS-PFM-ELG-008-02
  - ATS-PFM-ELG-008-06
  - ATS-PFM-ELG-008-11
  - ATS-PFM-ELG-008-12
  - ATS-PFM-ELG-008-13
  - ATS-PFM-ELG-008-14
  - ATS-PFM-ELG-009-01
  - ATS-PFM-ELG-012-05
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/integration/services/evaluate/hosted-evaluate.integration.spec.js
    cases:
      - answers each of three contacts by the two conditions of the rule
      - >-
        reads the batch’s facts in one predicate statement and makes no other
        read of the contacts
      - >-
        logs one eligibility.evaluate event per evaluation with the plan and the
        state
      - >-
        explains a decision to the administrator with the condition’s
        requirement restored
      - >-
        answers a rule whose required subject is not supplied indeterminate,
        subject_missing
      - >-
        answers a contact no row of the tenant has indeterminate,
        subject_not_found
      - >-
        gives the portal the definition’s message for an indeterminate decision
        under the closed policy
      - answers a related block over each contact’s affiliations
      - >-
        answers an as-of shift from the day asked about, so a contact adult
        today was not in 2015
      - refuses a binding the tenant does not have
      - is a member of the query reader that inherits its privileges
      - >-
        answers a sql condition over crm.contacts with no grant to the
        eligibility reader in crm
      - 'cannot insert into, update or delete from crm.contacts'
      - asks the provider in batches of its declared size with the batch payload
      - >-
        applies the operator to the provider’s facts, and a fact the provider
        could not read is indeterminate
      - >-
        makes an indeterminate decision eligible with review under
        open_with_review
      - 'answers a provider past its timeout indeterminate, provider_timeout'
      - >-
        opens the circuit after five failures and calls the provider no more
        while it is open
      - >-
        records a transactional decision, in the partition of its month, under
        the id it answered
      - 'records a display decision after answering it, at a sample rate of one'
      - never records a dry run
      - sees a contact inserted earlier in the same transaction
      - records the transactional decision in the caller’s transaction
      - answers the SQL function the same state inside the transaction
      - >-
        answers the SQL function’s states the TypeScript path answers for the
        planted contacts
      - answers the committed contact the same after the transaction
      - 'answers an existing contact by the fact, as before'
      - >-
        answers a contact no row of the tenant has indeterminate,
        subject_not_found, ineligible under the closed policy
      - tells the administrator the subject was not found
      - >-
        answers a batch mixing existing and missing contacts each by its own
        existence
      - asks the batch’s contacts in one existence statement and nothing else
      - answers a missing contact subject_not_found inside a transaction
      - >-
        answers the SQL function eligible for an existing contact and
        subject_not_found for a missing one
      - >-
        answers the draft’s decision with the full trace and the administrator’s
        explanation, never recorded
      - answers another seeded contact by its own status
      - opens the subject by one projection of its display name only
      - 'refuses a contact the tenant does not have, RecordNotFound'
      - removes the stored plans of the definition and answers how many
  - provenance: documented
    source: >-
      services-platform:modules/eligibility/tests/integration/services/evaluate/hosted-evaluate.integration.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 hosted 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.
