You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
policyengine-us-data seeded stochastic take-up flags (takes_up_*) so that take-up-gated programs didn't ship at 100% participation. populace produces essentially none of them today (grep -r "takes_up" packages/populace-build/src → 2 incidental hits), so H5 consumers fall back to PE-US defaults. Two release findings are already symptoms of this class:
us-data's parity reference: policyengine_us_data/tests/test_stochastic_variables.py covers at least takes_up_tanf_if_eligible, takes_up_medicaid_if_eligible, takes_up_snap_if_eligible, takes_up_eitc, takes_up_dc_ptc, takes_up_aca_if_eligible, takes_up_head_start_if_eligible; the PE-US variables tree additionally carries CHIP, Basic Health Program, and Early Head Start flags.
Why this is not a straight port
PE-US is mid-migration to model-side take-up for some programs (chip_take_up_seed + gov/hhs/chip/takeup_rate.yaml, aca_take_up_seed; see #76 for the ACA contract change). For those programs the data package must NOT seed flags (it would fight the model's own draw); its job is at most calibrating the rate parameters. For programs still on the data-seeded contract (flag defaults that imply 100% take-up unless the dataset provides them), populace MUST seed or ship known-wrong participation.
Plan
Contract inventory (first, blocking): for every takes_up_* / *_take_up_seed variable in the pinned PE-US version, classify: (a) model-simulated (has its own seed + rate parameter), (b) data-seeded (input flag, no formula or default-True), (c) dead/unused. Output: a checked-in table the build reads, so the classification is asserted against the engine version rather than remembered (same metadata-derivation doctrine as Derive the formula-owned-output rejection set from engine metadata (blocklist can go stale) #301).
Problem
policyengine-us-data seeded stochastic take-up flags (
takes_up_*) so that take-up-gated programs didn't ship at 100% participation. populace produces essentially none of them today (grep -r "takes_up" packages/populace-build/src→ 2 incidental hits), so H5 consumers fall back to PE-US defaults. Two release findings are already symptoms of this class:us-data's parity reference:
policyengine_us_data/tests/test_stochastic_variables.pycovers at leasttakes_up_tanf_if_eligible,takes_up_medicaid_if_eligible,takes_up_snap_if_eligible,takes_up_eitc,takes_up_dc_ptc,takes_up_aca_if_eligible,takes_up_head_start_if_eligible; the PE-US variables tree additionally carries CHIP, Basic Health Program, and Early Head Start flags.Why this is not a straight port
PE-US is mid-migration to model-side take-up for some programs (
chip_take_up_seed+gov/hhs/chip/takeup_rate.yaml,aca_take_up_seed; see #76 for the ACA contract change). For those programs the data package must NOT seed flags (it would fight the model's own draw); its job is at most calibrating the rate parameters. For programs still on the data-seeded contract (flag defaults that imply 100% take-up unless the dataset provides them), populace MUST seed or ship known-wrong participation.Plan
takes_up_*/*_take_up_seedvariable in the pinned PE-US version, classify: (a) model-simulated (has its own seed + rate parameter), (b) data-seeded (input flag, no formula or default-True), (c) dead/unused. Output: a checked-in table the build reads, so the classification is asserted against the engine version rather than remembered (same metadata-derivation doctrine as Derive the formula-owned-output rejection set from engine metadata (blocklist can go stale) #301).Acceptance