PolicyEngine / PolicyEngine/policyengine-us
California BBCE gross screen: derived FPG ratio rejects households inside the published CDSS monthly limit
- Dominant language
- Python
- Stars
- 162
- Forks
- 212
- Avg merge
- 3d 3h
- Merged PRs (30d)
- 97
Description
**Versions:** policyengine-us 1.767.3 (source pin `49d19b239a593dbac8920ac6fd80cfe33372343a`), policyengine-core 3.30.3, Python 3.13.
**Summary:** California administers its BBCE/MCE gross screen against a **published monthly dollar table**, not a recomputed FPG ratio. CDSS ACIN I-46-25 Attachment I gives the operative FY 2026 two-person MCE gross monthly limit as **$3,526**. PolicyEngine derives a ratio from its own FPG series and compares it to exactly 2.0, so a two-person household at $3,525.29 — *below* the published limit — computes a ratio of 2.0001645 and fails the gross test.
**Repro** (two-person CA household, $3,525.29/month gross, 2026):
```python
from policyengine_us import Simulation
sim = Simulation(situation={
"people": {"p1": {"age": {"2026-01": 40}, "employment_income": {"2026": 42303.48}},
"p2": {"age": {"2026-01": 38}}},
"spm_units": {"s": {"members": ["p1", "p2"]}},
"households": {"h": {"members": ["p1", "p2"], "state_code": {"2026": "CA"}}},
})
print(sim.calculate("snap_gross_income", "2026-01")) # [3525.29]
print(sim.calculate("snap_gross_income_fpg_ratio", "2026-01")) # [2.0001645]
print(sim.calculate("meets_tanf_non_cash_gross_income_test", "2026-01")) # [False]
print(sim.calculate("is_tanf_non_cash_eligible", "2026-01")) # [False]
```
The household is inside California's published limit ($3,525.29 ≤ $3,526) but outside PolicyEngine's derived ratio by 0.00016 — an artifact of recomputing the boundary rather than reading the administered table.
**Code path:** `variables/gov/hhs/tanf/non_cash/meets_tanf_non_cash_gross_income_test.py` compares `snap_gross_income_fpg_ratio` against `gov.hhs.tanf.non_cash.income_limit.gross[CA]` (2.0). Consider sourcing the state screen from the administered monthly amounts where a state publishes them, or documenting the rounding convention so boundary households match the administering agency.
**Authority:** CDSS ACIN I-46-25 Attachment I (FY 2026 CalFresh MCE/BBCE gross monthly income limits); ACL 14-56 for the inclusive "at or below 200 percent" screen.
**Impact:** small but real — boundary households at the published limit are denied SNAP entirely. Found via Axiom Foundation cross-engine validation on an Enhanced-CPS California SNAP population (case `ecps-69070`).
Contributor guide
Research direction
Start with variables/gov/hhs/tanf/non_cash/meets_tanf_non_cash_gross_income_test.py and reproduce the two-person California case from the issue for January 2026. Read the referenced CDSS ACIN I-46-25 Attachment I and ACL 14-56, then trace how snap_gross_income_fpg_ratio and the California gross limit are used. Done means households at or below the published monthly limit pass the gross screen, with the applicable rounding or sourcing convention documented.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- backend
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 65/100