uv.lock has pinned policyengine-us 1.764.6 since #357 (July). #745 (work_experience_inputs, with engine variables in PolicyEngine/policyengine-us#9311) needs the lock to move to a release containing those variables, and a dry run against a 1.817.0-based branch shows the bump fails closed in four places, so it deserves its own reviewed PR:
- Generated-variable audit —
packages/microcosm-frame/src/microcosm/frame/adapters/policyengine_us.py pins _GENERATED_SOURCE_VERSION = "1.764.6" and digests of seven pe-us generator files. Five are unchanged at 1.817.0; reforms/reforms.py and system.py changed. Re-derive _GENERATED_VARIABLE_GROUPS (110 generated variables today) against the exact new version, refresh the digests, and re-pin test_policyengine_us_metadata_index.py (5,770 definitions / 863 input leaves / 4,907 formula-owned at 1.764.6).
- Take-up contract totality —
spec_engine/engine_abi.py requires us/spec/take_up.yaml to cover every engine take-up flag. New since 1.764.6: takes_up_ca_premium_subsidy_if_eligible (consumed by assigned_ca_premium_subsidy), takes_up_co_premium_assistance_if_eligible (assigned_co_premium_assistance), takes_up_nm_premium_assistance_if_eligible (assigned_nm_premium_assistance), takes_up_wic_if_eligible (wic). The three state premium programs look like the CHIP/BHP ownership: engine + engine_default / rate_unsourced precedent (no behavior change) unless someone sources a rate.
- WIC take-up migration — pe-us replaced
would_claim_wic with takes_up_wic_if_eligible (Person, MONTH, default_value = True; wic is now defined_for = "takes_up_wic_if_eligible", and would_claim_wic no longer exists at upstream main). Microcosm's wic_claim stage emits would_claim_wic as a required release column, so the stage output, release coverage manifest, stacked-spine battery metric, transfer target, and the take-up contract entry (wic) all need the rename — and the seeded rate becomes the engine's WIC gate, which is a calibration-facing decision.
- Bundle + ABI lock regeneration —
tools/generate_us_bundle_from_constants.py regenerates us/spec/*.yaml and engine_abi.lock.json from engine metadata (test_us_spec_bundle.py enforces --check); it currently also fails on the metadata index for any unknown engine variable.
Suggested order: merge policyengine-us#9311 → bump PR (this issue) → rebase #745, regenerate the bundle, un-draft.
uv.lockhas pinned policyengine-us 1.764.6 since #357 (July). #745 (work_experience_inputs, with engine variables in PolicyEngine/policyengine-us#9311) needs the lock to move to a release containing those variables, and a dry run against a 1.817.0-based branch shows the bump fails closed in four places, so it deserves its own reviewed PR:packages/microcosm-frame/src/microcosm/frame/adapters/policyengine_us.pypins_GENERATED_SOURCE_VERSION = "1.764.6"and digests of seven pe-us generator files. Five are unchanged at 1.817.0;reforms/reforms.pyandsystem.pychanged. Re-derive_GENERATED_VARIABLE_GROUPS(110 generated variables today) against the exact new version, refresh the digests, and re-pintest_policyengine_us_metadata_index.py(5,770 definitions / 863 input leaves / 4,907 formula-owned at 1.764.6).spec_engine/engine_abi.pyrequiresus/spec/take_up.yamlto cover every engine take-up flag. New since 1.764.6:takes_up_ca_premium_subsidy_if_eligible(consumed byassigned_ca_premium_subsidy),takes_up_co_premium_assistance_if_eligible(assigned_co_premium_assistance),takes_up_nm_premium_assistance_if_eligible(assigned_nm_premium_assistance),takes_up_wic_if_eligible(wic). The three state premium programs look like the CHIP/BHPownership: engine+engine_default/rate_unsourcedprecedent (no behavior change) unless someone sources a rate.would_claim_wicwithtakes_up_wic_if_eligible(Person, MONTH,default_value = True;wicis nowdefined_for = "takes_up_wic_if_eligible", andwould_claim_wicno longer exists at upstream main). Microcosm'swic_claimstage emitswould_claim_wicas a required release column, so the stage output, release coverage manifest, stacked-spine battery metric, transfer target, and the take-up contract entry (wic) all need the rename — and the seeded rate becomes the engine's WIC gate, which is a calibration-facing decision.tools/generate_us_bundle_from_constants.pyregeneratesus/spec/*.yamlandengine_abi.lock.jsonfrom engine metadata (test_us_spec_bundle.pyenforces--check); it currently also fails on the metadata index for any unknown engine variable.Suggested order: merge policyengine-us#9311 → bump PR (this issue) → rebase #745, regenerate the bundle, un-draft.