Journey: SNAP approval + family consent grants the children Medicaid (Express Lane)
On this page
A family files SNAP for themselves and two young children. The caseworker records the family’s Express Lane Eligibility (ELE) consent and runs the determination — the SNAP approval, with consent on file, grants each eligible child a Medicaid-tier flag without a separate Medicaid determination. The ELE active for 2 children badge appears on the case identity hero, and the applicant can sign back in to see their approved SNAP home.
Reproducibility tier: Fully manual. The applicant files the whole case live at
/apply; the caseworker records consent + determines; the applicant signs back in
to view the outcome. A complete side-by-side dual-persona walk.
This walkthrough is paired with the automated spec
tests/e2e/specs/journey-snap-ele-grant.spec.ts, covering scenario
xp.ele.partner-approval-grants-medicaid. The screenshots below are captured by
that spec. See Verifying the journey to run it.
What this journey shows
-
An applicant files a SNAP application for an adult plus two dependent children, both under the ELE child age gate (the apply wizard’s Express Lane opt-in is left un-ticked — the worker records the family’s consent instead).
-
The caseworker records the family’s ELE consent through the case Action ▾ → Record ELE consent action, while the application is still pre-determination (the action is disabled once determined). Consent is now on file.
-
The caseworker runs the SNAP determination. The zero-income family of three is approved; because consent is on file when the approval fires, the ELE grant subscriber grants (rather than defers) each eligible child — the ELE active for 2 children badge appears on the identity hero.
-
The case Audit stream shows the partner approval → ELE grant chain, and the applicant signs back in to view their approved SNAP home + approval letter.
Personas & credentials
| Persona | Credentials / identity | Role in the journey |
|---|---|---|
Applicant |
Files at the portal |
Files the SNAP application for the family with two children; signs back in to view the outcome. |
Caseworker |
Worker portal, Keycloak login |
Records the family’s ELE consent, runs the determination, confirms the grant. |
Bring-up & reset
cargo xtask dev start --profile full # SNAP + applications + medicaid + notices + the applicant portal
cargo xtask seed --seed 42
# reset between runs: cargo xtask migrate rollback (+ a fresh browser/incognito window)
See the Demo Runbook for full bring-up + reset detail.
Concrete precondition
The applicant files, at /apply:
-
Head of household: Ada Everline, DOB 1986-02-12, at a Georgia address, no income (the family has zero earned income — a determinate, approvable case).
-
Two children (both well under the ELE child age gate): Cora Everline, DOB 2015-05-09, and Milo Everline, DOB 2018-11-30 — relationship
child. -
Express Lane opt-in: left un-ticked on the income step — the caseworker records the family’s consent (the worker-attestation path).
The caseworker records nothing else — the two children under the age gate are what the ELE grant ruleset counts.
The walkthrough, step by step
| # | Screen | Action | Expected | Screenshot |
|---|---|---|---|---|
01 |
Applicant |
At |
The Application submitted screen shows a fresh Application ID ( |
|
02 |
Caseworker |
Log in ( |
The household’s SNAP case opens as Submitted (pre-determination). No ELE badge yet. |
|
03 |
Caseworker |
Open the top-bar Action ▾ dropdown → Record ELE consent. |
Redirects back to the case; the family’s ELE consent is now on file (recorded while the application is still pre-determination). |
|
04 |
Caseworker |
Open Action ▾ → Run Determination. |
SNAP returns Approved; because consent is on file when the approval fires, the ELE grant fires with it. |
|
05 |
Caseworker |
Read the identity hero. |
The ELE active for 2 children until … badge appears — the SNAP approval, with consent on file, granted Medicaid to both eligible children. |
|
06 |
Caseworker |
Open the Audit tab. |
The event stream shows |
|
07 |
Applicant |
Sign in at |
Home shows the approved SNAP hero; Letters shows the approval Notice of Action. |
|
Expected outcome / oracle
The ELE grant surfaces on the case identity hero after the consent-then-approval
(O1), and the badge names exactly two children — the derived count the
ele-grant-2026 ruleset computes from the household composition, never a hardcoded
figure (O2). The audit chain proves snap.application_approved →
medicaid.ele.granted.
Honest scope
-
Consent must precede the determination here. The worker ELE-consent action is enabled only pre-determination (the endpoint 409s once determined), so the live worker walk records consent first; the approval then fires with consent on file and grants immediately. The harness deferred-drain variant (approval fires first, consent drains it later) needs the orchestrator
/determine, which the worker portal does not use — both are the same policy outcome. -
Worker attestation records the applicant as the consent actor (
consent_source = worker_attestation, butconsent_recorded_byis the submitter, ADR-019). The family-native path — the applicant ticking the Express Lane opt-in on the apply wizard’s income step (consent_source = applicant_portal) — is a real, separately-tested capability. -
"Partner approval" is an internal SNAP approval, not an external partner agency (canopy-exchange is a stub). The grant is a Medicaid-tier flag; no separate Medicaid determination is run.
Verifying the journey
cargo xtask e2e --devstack-profile full -- \
specs/journey-snap-ele-grant.spec.ts --project journey
The spec files the SNAP application through the real served portal wizard (two
children, no ELE opt-in), records the family’s ELE consent through the worker
Action ▾ → Record ELE consent action, runs the determination, and asserts the ELE
grant surfaces naming exactly the two eligible children — capturing the step
screenshots into test-results/e2e/walkthroughs/… for commit into
docs/modules/ROOT/assets/images/walkthroughs/….






