diff --git a/changelog.d/us-local-jurisdiction-flags.added.md b/changelog.d/us-local-jurisdiction-flags.added.md new file mode 100644 index 0000000000..580599da26 --- /dev/null +++ b/changelog.d/us-local-jurisdiction-flags.added.md @@ -0,0 +1 @@ +Derive the policyengine-us input-only local flags `in_denver`, `in_yonkers`, `in_wilmington` and `pa_philadelphia_wage_tax_resident` from household geography through a SHA-pinned registry checked against the 2020 Gazetteer, P.L. 94-171 counts and the block ladder. The block-ladder line writes all four; the PUMA and pooled ACS lines write the county-rule flags and record the place-rule flags (Yonkers, Wilmington) as unavailable instead of writing `False`. The L0/refit export and the fiscal refresh release builder re-derive the flags from an existing base's own geography, so a base built before this change no longer exports without them, and both ladder gates now fail a table that lacks a flag its geography decides. diff --git a/changelog.d/us-local-work-location-inputs.added.md b/changelog.d/us-local-work-location-inputs.added.md new file mode 100644 index 0000000000..d5e7124701 --- /dev/null +++ b/changelog.d/us-local-work-location-inputs.added.md @@ -0,0 +1 @@ +Derive `pa_philadelphia_wage_tax_taxable_wages` for Philadelphia residents as `max(employment_income_before_lsr, 0)` and 0 for everyone else, through a SHA-pinned registry (`us_local_tax_inputs.json`), so `pa_philadelphia_wage_tax` no longer returns 0 for every microcosm household. The block-ladder line, the stacked pool's derive stage, the pooled ACS line, the L0/refit export, the fiscal refresh release builder and annual static aging all write or re-derive it. The registry records the nonresident component and the other four work-location and refund inputs (`ny_yonkers_nonresident_earnings`, `de_wilmington_nonresident_earnings`, `co_denver_employee_occupational_privilege_tax_months`, `pa_philadelphia_wage_tax_reduced_rate_eligible`) as unavailable, with the reason no source decides each. They are never written, so the engine default applies, and the pool manifest shows them as unavailable instead of declared-absent. diff --git a/docs/evidence/spec-engine/us-f0-coverage.json b/docs/evidence/spec-engine/us-f0-coverage.json index 9071607114..ddfba9bda6 100644 --- a/docs/evidence/spec-engine/us-f0-coverage.json +++ b/docs/evidence/spec-engine/us-f0-coverage.json @@ -6,7 +6,7 @@ "country": "us", "documentation_sha256": "811b4091f9419c8792e5cc7fcda30d54c5a7c6d35dd944c26c005e32cae06647", "field_usage": { - "authored_normative_field_count": 32524, + "authored_normative_field_count": 32525, "claim_count": 49, "claims": [ { @@ -530,8 +530,8 @@ ], "mode": "legacy_behavior", "pointer_class": "all", - "pointer_count": 88, - "pointer_sha256": "ae011455154bae0df3913ca9a056058a909d913439b292cb46c11f63c7d0d9a3", + "pointer_count": 89, + "pointer_sha256": "68a3a00171aca397db079a7482b68aba8a7b4ad88235ac1bd0d8d7061a242e1c", "rationale": null, "relative_sink_prefix": null, "source_prefix": "/authored/spec~1spine.yaml/pipeline_contract", @@ -722,8 +722,8 @@ ], "mode": "legacy_behavior", "pointer_class": "all", - "pointer_count": 8614, - "pointer_sha256": "66eec1216f404e43f7605fba0016d1cd666e71ebe3e35278d14a944d8b48b619", + "pointer_count": 8655, + "pointer_sha256": "e8cb4e455fd52f3ff9fffe402fc5a943dea81c89a1310a458649c7561b286ccb", "rationale": null, "relative_sink_prefix": null, "source_prefix": "/resolved/generated_authorities", @@ -772,21 +772,21 @@ "verifier": "vintages" } ], - "configuration_field_count": 42305, - "consumed_field_count": 42305, + "configuration_field_count": 42347, + "consumed_field_count": 42347, "generation0_effect_counts": { - "legacy_behavior": 38608, + "legacy_behavior": 38650, "no_generation0_effect": 3697 }, "mode_counts": { "compiler_semantic": 27751, "front_end_validation": 354, "identity_only": 103, - "legacy_behavior": 14097 + "legacy_behavior": 14139 }, "multiple_primary_use_field_count": 0, - "pointer_inventory_sha256": "d51087fd950f99fb7fcf126c31419374172d946f5846d2bf9d0eb0e7a6dfca46", - "resolved_binding_field_count": 9781, + "pointer_inventory_sha256": "29f7f23ad778c4a3f56f5cc269bd8868739fd39470e5f9fbb0089c205ad56238", + "resolved_binding_field_count": 9822, "unused_field_count": 0 }, "inventory_coverage": { @@ -1656,13 +1656,13 @@ "compiler_ir.node_slices" ], "expected": { - "map_sha256": "488846129a3c47e89d54538515e6bdbd7ce849e4081ab8a4ad40c9ce2a1e1391", - "protocol_sha256": "87f44e60621c45d2fc1448fda11cd446960d6bab7cb51b346367339e2e751e1f" + "map_sha256": "42c141d97283222723e0e96822f62f49829d3c5a1904fac950b1110af85028da", + "protocol_sha256": "cf465029597523a6efc4fd411601180ff811d26614f3af85ef0e0610f8b8f24d" }, "failures": [], "observed": { - "map_sha256": "488846129a3c47e89d54538515e6bdbd7ce849e4081ab8a4ad40c9ce2a1e1391", - "protocol_sha256": "87f44e60621c45d2fc1448fda11cd446960d6bab7cb51b346367339e2e751e1f" + "map_sha256": "42c141d97283222723e0e96822f62f49829d3c5a1904fac950b1110af85028da", + "protocol_sha256": "cf465029597523a6efc4fd411601180ff811d26614f3af85ef0e0610f8b8f24d" }, "status": "covered" }, @@ -1677,7 +1677,7 @@ "compiler_ir.seed_stream_map" ], "expected": { - "implementation_sha256": "87f44e60621c45d2fc1448fda11cd446960d6bab7cb51b346367339e2e751e1f", + "implementation_sha256": "cf465029597523a6efc4fd411601180ff811d26614f3af85ef0e0610f8b8f24d", "protocol": "legacy-v1", "streams": [ "build_model", @@ -1698,7 +1698,7 @@ }, "failures": [], "observed": { - "implementation_sha256": "87f44e60621c45d2fc1448fda11cd446960d6bab7cb51b346367339e2e751e1f", + "implementation_sha256": "cf465029597523a6efc4fd411601180ff811d26614f3af85ef0e0610f8b8f24d", "protocol": "legacy-v1", "streams": [ "build_model", @@ -1887,7 +1887,7 @@ "alpha", "zeta" ], - "sha256": "69c2e4fcc8ebdf1e6257ccaf4787b736c4822beda5f4ee01a53ffa3945f4936f" + "sha256": "668073673f214f8cee24f435a5b8f6167831ac6a4e303fc6420b8ad3684ed9db" }, "failures": [], "observed": { @@ -1911,7 +1911,7 @@ "alpha", "zeta" ], - "sha256": "69c2e4fcc8ebdf1e6257ccaf4787b736c4822beda5f4ee01a53ffa3945f4936f" + "sha256": "668073673f214f8cee24f435a5b8f6167831ac6a4e303fc6420b8ad3684ed9db" }, "status": "covered" }, @@ -1975,7 +1975,7 @@ "take_up_contract", "us_qbi_reconciliation_contract" ], - "sha256": "7248c2831f3772e75f22dbabcbb5794d5d81138009a38aae8410e43aa05fb656" + "sha256": "cac308466b897bc5652fc1cd9e6304fcc98c3b4bd5141b03268c4b5f1139de5d" }, "status": "covered" }, @@ -2599,7 +2599,7 @@ "country": "us", "schema_id": "country_spec", "schema_version": 1, - "spec_sha256": "9b4b3260c20c30ba71a0947f8d78e322c8d2a3e6cb94e87a3729be950a9e90f2" + "spec_sha256": "c69a4313618e0099e9d4dbeb18af80e7a3aac797c0263bd0e4f16d87b442af0e" } }, "report_schema_version": 3, @@ -2609,7 +2609,7 @@ "country": "us", "schema_id": "country_spec", "schema_version": 1, - "spec_sha256": "9b4b3260c20c30ba71a0947f8d78e322c8d2a3e6cb94e87a3729be950a9e90f2" + "spec_sha256": "c69a4313618e0099e9d4dbeb18af80e7a3aac797c0263bd0e4f16d87b442af0e" }, "status": "pass" } diff --git a/packages/microcosm-build/src/microcosm/build/spec_engine/field_usage.py b/packages/microcosm-build/src/microcosm/build/spec_engine/field_usage.py index 522d3bc109..460a21b5b6 100644 --- a/packages/microcosm-build/src/microcosm/build/spec_engine/field_usage.py +++ b/packages/microcosm-build/src/microcosm/build/spec_engine/field_usage.py @@ -26,9 +26,9 @@ ) from .schemas import load_schema_registry -EXPECTED_AUTHORED_FIELD_COUNT = 32_524 -EXPECTED_RESOLVED_BINDING_FIELD_COUNT = 9_781 -EXPECTED_CONFIGURATION_FIELD_COUNT = 42_305 +EXPECTED_AUTHORED_FIELD_COUNT = 32525 +EXPECTED_RESOLVED_BINDING_FIELD_COUNT = 9822 +EXPECTED_CONFIGURATION_FIELD_COUNT = 42347 class FieldUsageError(AssertionError): @@ -377,8 +377,8 @@ def _path_inventory(rows: Sequence[tuple[str, object]]) -> tuple[int, str]: "8a186065f5b8ffc59bc3f62fe927975e6f36bc1e913aa61761652c9a8aa67988", ), "generated_authorities": ( - 8_614, - "66eec1216f404e43f7605fba0016d1cd666e71ebe3e35278d14a944d8b48b619", + 8655, + "e8cb4e455fd52f3ff9fffe402fc5a943dea81c89a1310a458649c7561b286ccb", ), "geography_assignment": ( 28, @@ -505,8 +505,8 @@ def _path_inventory(rows: Sequence[tuple[str, object]]) -> tuple[int, str]: "cf0000464013118955571dac2691d4cc1b900c97c6570349b489678cdf937649", ), "spine_pipeline_contract": ( - 88, - "ae011455154bae0df3913ca9a056058a909d913439b292cb46c11f63c7d0d9a3", + 89, + "68a3a00171aca397db079a7482b68aba8a7b4ad88235ac1bd0d8d7061a242e1c", ), "spine_sampling": ( 17, diff --git a/packages/microcosm-build/src/microcosm/build/spec_engine/inventory_coverage.py b/packages/microcosm-build/src/microcosm/build/spec_engine/inventory_coverage.py index 2845ac1496..f507da54a3 100644 --- a/packages/microcosm-build/src/microcosm/build/spec_engine/inventory_coverage.py +++ b/packages/microcosm-build/src/microcosm/build/spec_engine/inventory_coverage.py @@ -350,7 +350,7 @@ "acs_person_predictors": "878c788a6f037d7aca12b3586ea034eff04f3034ffa11935a736493042551f25", "authority": "bf681aedc859fd6398ef72da68f584069b7d25b3085c549bf99f82e8324c4eef", "early_families": "4aa9f736fd76e83955477ad1667e58f48f264783f05bdc7f0102cd32d61323bd", - "full_checkpoint": "69c2e4fcc8ebdf1e6257ccaf4787b736c4822beda5f4ee01a53ffa3945f4936f", + "full_checkpoint": "668073673f214f8cee24f435a5b8f6167831ac6a4e303fc6420b8ad3684ed9db", "gap_fill_schedule": "1c31f9868f7884347cc19cf1ff65da43f950b9114941a715bab168246db414a7", "graph_nodes": "1b208fff4f6d878c522147fee617177544bda8963c940f98a4bfc37507cb955f", "geography_assignment": "44e7f5f6cd7ceeef85d532c3d46306d03de4f4ee811376e6d29920742746b65c", @@ -380,8 +380,8 @@ # microcosm#1259's recipient-share bound in puf_support moves both again. # microcosm#1261 moves both again: the PUF donor carries partnership and # S-corp line-32 shares as separate leaves. - "seed_map": "488846129a3c47e89d54538515e6bdbd7ce849e4081ab8a4ad40c9ce2a1e1391", - "seed_protocol": "87f44e60621c45d2fc1448fda11cd446960d6bab7cb51b346367339e2e751e1f", + "seed_map": "42c141d97283222723e0e96822f62f49829d3c5a1904fac950b1110af85028da", + "seed_protocol": "cf465029597523a6efc4fd411601180ff811d26614f3af85ef0e0610f8b8f24d", "source_manifest": "608c3621b1e4a108e57c8f83d16a184acdb3d05e16a81b895f7f72dbf5d0685c", "take_up": "9522ce40f7dea569312dd7a7beb474e5a5afadd2f1e10cb5876534c3ef623d35", "tail": "071d418bb49976f4682c320d2ad07097c177de3a645d2524f235e1ff33ac83f9", diff --git a/packages/microcosm-build/src/microcosm/build/us/engine_abi.lock.json b/packages/microcosm-build/src/microcosm/build/us/engine_abi.lock.json index f1bd8a1e11..4b0d2e025f 100644 --- a/packages/microcosm-build/src/microcosm/build/us/engine_abi.lock.json +++ b/packages/microcosm-build/src/microcosm/build/us/engine_abi.lock.json @@ -1 +1 @@ -{"engine":{"package":"policyengine-us","version":"2.2.1"},"programs":{"aca":{"consumers":["assigned_aca_ptc","person_receives_aca","selected_marketplace_plan_actuarial_value","selected_marketplace_plan_premium_proxy"],"default":true,"engine_class":"data_seeded","entity":"tax_unit","value_type":"bool","variable":"takes_up_aca_if_eligible"},"basic_health_program":{"consumers":["basic_health_program_enrolled"],"default":true,"engine_class":"data_seeded","entity":"person","value_type":"bool","variable":"takes_up_basic_health_program_if_eligible"},"ca_premium_subsidy":{"consumers":["assigned_ca_premium_subsidy"],"default":true,"engine_class":"data_seeded","entity":"tax_unit","value_type":"bool","variable":"takes_up_ca_premium_subsidy_if_eligible"},"chip":{"consumers":["chip_enrolled"],"default":true,"engine_class":"data_seeded","entity":"person","value_type":"bool","variable":"takes_up_chip_if_eligible"},"co_premium_assistance":{"consumers":["assigned_co_premium_assistance"],"default":true,"engine_class":"data_seeded","entity":"tax_unit","value_type":"bool","variable":"takes_up_co_premium_assistance_if_eligible"},"dc_ptc":{"consumers":["dc_ptc"],"default":true,"engine_class":"data_seeded","entity":"tax_unit","value_type":"bool","variable":"takes_up_dc_ptc"},"early_head_start":{"consumers":["early_head_start"],"default":true,"engine_class":"data_seeded","entity":"person","value_type":"bool","variable":"takes_up_early_head_start_if_eligible"},"eitc":{"consumers":["dc_eitc_without_qualifying_child","eitc","nj_eitc","ok_federal_eitc","wa_working_families_tax_credit","wa_working_families_tax_credit_age_expansion_eligible"],"default":true,"engine_class":"data_seeded","entity":"tax_unit","value_type":"bool","variable":"takes_up_eitc"},"head_start":{"consumers":["head_start"],"default":true,"engine_class":"data_seeded","entity":"person","value_type":"bool","variable":"takes_up_head_start_if_eligible"},"housing_assistance":{"consumers":["housing_assistance"],"default":true,"engine_class":"data_seeded","entity":"spm_unit","value_type":"bool","variable":"takes_up_housing_assistance_if_eligible"},"medicaid":{"consumers":["medicaid_enrolled"],"default":true,"engine_class":"data_seeded","entity":"person","value_type":"bool","variable":"takes_up_medicaid_if_eligible"},"medicare":{"consumers":["medicare_enrolled"],"default":true,"engine_class":"data_seeded","entity":"person","value_type":"bool","variable":"takes_up_medicare_if_eligible"},"nm_premium_assistance":{"consumers":["assigned_nm_premium_assistance"],"default":true,"engine_class":"data_seeded","entity":"tax_unit","value_type":"bool","variable":"takes_up_nm_premium_assistance_if_eligible"},"snap":{"consumers":["snap"],"default":true,"engine_class":"data_seeded","entity":"spm_unit","value_type":"bool","variable":"takes_up_snap_if_eligible"},"ssi":{"consumers":["ca_sbd_general_relief_receives_other_cash_assistance","ssi"],"default":true,"engine_class":"data_seeded","entity":"person","value_type":"bool","variable":"takes_up_ssi_if_eligible"},"tanf":{"consumers":["ca_calworks_child_care_eligible","tanf"],"default":true,"engine_class":"data_seeded","entity":"spm_unit","value_type":"bool","variable":"takes_up_tanf_if_eligible"},"wic":{"consumers":["wic"],"default":true,"engine_class":"data_seeded","entity":"person","value_type":"bool","variable":"takes_up_wic_if_eligible"}},"remaining_stage_input_manifest":{"receipt":{"consumer_counts":{"PolicyEngineUSEngine.materialize":12,"_complete_schedule_d_input":5,"_simulation_projection":926,"prepare_stacked_tail_derivation":2,"seed_multispine_pool_inputs":17,"ssi_static_dependency_closure":54,"with_us_qbi_input_reconciliation":27,"with_us_take_up_inputs":16},"engine_input_projection_contract":{"default_count":925,"defaults_sha256":"f938af6506623f453ca55922cf4a8ba6443d5f780f85e4381b777083a90396a0","engine_version_ref":{"kind":"engine_abi_lock","pointer":"/engine/version"},"input_count":926,"sha256":"cefb137f164c6629589a887bbb56831ebc463cd46909a72ead4dbe0557961e61"},"entry_count":1059,"manifest_sha256":"d4fb9de9c0b8081474a24d0abde84ebf05eb346483fc20e3852e29abc769a501","schema_version":1,"sha256":"c6f1e936179aab0db0436e8c9620327d0a379b614f3a03523246792d2ad4b20a","ssi_dependency_contract":{"edge_count":187,"engine_version_ref":{"kind":"engine_abi_lock","pointer":"/engine/version"},"formula_node_count":63,"input_leaf_count":54,"root":"ssi","sha256":"200ca39e784511e9ede685261f5e0840198ec2b9c4292a522c0fc504c535b31c"},"stage_counts":{"derive":34,"seed":33,"simulate":992}},"rows":[{"available_by":"transferred","consumer":"_complete_schedule_d_input","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"pool_input_surface:puf_tax_itemization","stage":"derive","variable":"long_term_capital_gains_before_response"},{"available_by":"transferred","consumer":"_complete_schedule_d_input","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"pool_input_surface:puf_tax_itemization","stage":"derive","variable":"non_sch_d_capital_gains"},{"available_by":"assembled","consumer":"_complete_schedule_d_input","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"frame_membership","stage":"derive","variable":"person_tax_unit_id"},{"available_by":"transferred","consumer":"_complete_schedule_d_input","entity":"person","execution_scope":"whole_pool","fallback":"derive_from_finite_transferred_parents","provision":"optional_transferred_or_schedule_d_derived","stage":"derive","variable":"schedule_d_capital_gain_distributions"},{"available_by":"assembled","consumer":"_complete_schedule_d_input","entity":"tax_unit","execution_scope":"whole_pool","fallback":null,"provision":"frame_entity_id","stage":"derive","variable":"tax_unit_id"},{"available_by":"assembled","consumer":"prepare_stacked_tail_derivation","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"assembly_support_provenance","stage":"derive","variable":"person_support_clone_index"},{"available_by":"transferred","consumer":"prepare_stacked_tail_derivation","entity":"person","execution_scope":"clone_2","fallback":"absent_or_cleared_then_schedule_d_derived","provision":"optional_existing_derived_leaf","stage":"derive","variable":"schedule_d_capital_gain_distributions"},{"available_by":"assembled","consumer":"with_us_qbi_input_reconciliation","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"assembled_raw_acs_source_authority","stage":"derive","variable":"SEMP"},{"available_by":"assembled","consumer":"with_us_qbi_input_reconciliation","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"assembled_native_person_input","stage":"derive","variable":"age"},{"available_by":"transferred","consumer":"with_us_qbi_input_reconciliation","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"pool_input_surface:puf_tax_itemization","stage":"derive","variable":"business_is_sstb"},{"available_by":"transferred","consumer":"with_us_qbi_input_reconciliation","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"pool_input_surface:puf_tax_itemization","stage":"derive","variable":"estate_income"},{"available_by":"transferred","consumer":"with_us_qbi_input_reconciliation","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"pool_input_surface:puf_tax_itemization","stage":"derive","variable":"estate_income_would_be_qualified"},{"available_by":"transferred","consumer":"with_us_qbi_input_reconciliation","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"pool_input_surface:puf_tax_itemization","stage":"derive","variable":"farm_operations_income_would_be_qualified"},{"available_by":"transferred","consumer":"with_us_qbi_input_reconciliation","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"pool_input_surface:puf_tax_itemization","stage":"derive","variable":"farm_rent_income_would_be_qualified"},{"available_by":"transferred","consumer":"with_us_qbi_input_reconciliation","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"pool_input_surface:puf_tax_itemization","stage":"derive","variable":"non_qualified_dividend_income"},{"available_by":"transferred","consumer":"with_us_qbi_input_reconciliation","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"pool_input_surface:puf_tax_itemization","stage":"derive","variable":"partnership_income"},{"available_by":"transferred","consumer":"with_us_qbi_input_reconciliation","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"pool_input_surface:puf_tax_itemization","stage":"derive","variable":"partnership_s_corp_income_would_be_qualified"},{"available_by":"assembled","consumer":"with_us_qbi_input_reconciliation","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"frame_entity_id","stage":"derive","variable":"person_id"},{"available_by":"assembled","consumer":"with_us_qbi_input_reconciliation","entity":"person","execution_scope":"whole_pool","fallback":"person_id_for_unstacked_lineage_digest","provision":"assembly_support_source_identity","stage":"derive","variable":"person_source_id"},{"available_by":"assembled","consumer":"with_us_qbi_input_reconciliation","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"assembly_support_provenance","stage":"derive","variable":"person_support_channel"},{"available_by":"assembled","consumer":"with_us_qbi_input_reconciliation","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"assembly_support_provenance","stage":"derive","variable":"person_support_clone_index"},{"available_by":"assembled","consumer":"with_us_qbi_input_reconciliation","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"frame_membership","stage":"derive","variable":"person_tax_unit_id"},{"available_by":"transferred","consumer":"with_us_qbi_input_reconciliation","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"pool_input_surface:puf_tax_itemization","stage":"derive","variable":"qualified_bdc_income"},{"available_by":"transferred","consumer":"with_us_qbi_input_reconciliation","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"pool_input_surface:puf_tax_itemization","stage":"derive","variable":"qualified_reit_and_ptp_income"},{"available_by":"transferred","consumer":"with_us_qbi_input_reconciliation","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"pool_input_surface:puf_tax_itemization","stage":"derive","variable":"rental_income_would_be_qualified"},{"available_by":"transferred","consumer":"with_us_qbi_input_reconciliation","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"pool_input_surface:puf_tax_itemization","stage":"derive","variable":"s_corp_income"},{"available_by":"transferred","consumer":"with_us_qbi_input_reconciliation","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"pool_input_surface:primary_puf_qrf_nontransfer","stage":"derive","variable":"self_employment_income_before_lsr"},{"available_by":"transferred","consumer":"with_us_qbi_input_reconciliation","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"pool_input_surface:puf_tax_itemization","stage":"derive","variable":"self_employment_income_would_be_qualified"},{"available_by":"transferred","consumer":"with_us_qbi_input_reconciliation","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"pool_input_surface:puf_tax_itemization","stage":"derive","variable":"sstb_self_employment_income_before_lsr"},{"available_by":"transferred","consumer":"with_us_qbi_input_reconciliation","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"pool_input_surface:puf_tax_itemization","stage":"derive","variable":"sstb_self_employment_income_would_be_qualified"},{"available_by":"transferred","consumer":"with_us_qbi_input_reconciliation","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"pool_input_surface:puf_tax_itemization","stage":"derive","variable":"sstb_unadjusted_basis_qualified_property"},{"available_by":"transferred","consumer":"with_us_qbi_input_reconciliation","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"pool_input_surface:puf_tax_itemization","stage":"derive","variable":"sstb_w2_wages_from_qualified_business"},{"available_by":"transferred","consumer":"with_us_qbi_input_reconciliation","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"pool_input_surface:puf_tax_itemization","stage":"derive","variable":"unadjusted_basis_qualified_property"},{"available_by":"transferred","consumer":"with_us_qbi_input_reconciliation","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"pool_input_surface:puf_tax_itemization","stage":"derive","variable":"w2_wages_from_qualified_business"},{"available_by":"seeded","consumer":"seed_multispine_pool_inputs","entity":"person","execution_scope":"whole_pool","fallback":"checked_take_up_contract_engine_default","provision":"preserved_input_or_disclosed_engine_default","stage":"seed","variable":"takes_up_basic_health_program_if_eligible"},{"available_by":"seeded","consumer":"seed_multispine_pool_inputs","entity":"person","execution_scope":"whole_pool","fallback":"checked_take_up_contract_engine_default","provision":"preserved_input_or_disclosed_engine_default","stage":"seed","variable":"takes_up_chip_if_eligible"},{"available_by":"seeded","consumer":"seed_multispine_pool_inputs","entity":"person","execution_scope":"whole_pool","fallback":"checked_take_up_contract_engine_default","provision":"preserved_input_or_disclosed_engine_default","stage":"seed","variable":"takes_up_early_head_start_if_eligible"},{"available_by":"seeded","consumer":"seed_multispine_pool_inputs","entity":"person","execution_scope":"whole_pool","fallback":"checked_take_up_contract_engine_default","provision":"preserved_input_or_disclosed_engine_default","stage":"seed","variable":"takes_up_head_start_if_eligible"},{"available_by":"seeded","consumer":"seed_multispine_pool_inputs","entity":"person","execution_scope":"whole_pool","fallback":"checked_take_up_contract_engine_default","provision":"preserved_input_or_disclosed_engine_default","stage":"seed","variable":"takes_up_medicaid_if_eligible"},{"available_by":"transferred","consumer":"seed_multispine_pool_inputs","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"transferred_or_preserved_input","stage":"seed","variable":"takes_up_medicare_if_eligible"},{"available_by":"seeded","consumer":"seed_multispine_pool_inputs","entity":"person","execution_scope":"whole_pool","fallback":"checked_take_up_contract_engine_default","provision":"preserved_input_or_disclosed_engine_default","stage":"seed","variable":"takes_up_ssi_if_eligible"},{"available_by":"transferred","consumer":"seed_multispine_pool_inputs","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"transferred_or_preserved_input","stage":"seed","variable":"takes_up_wic_if_eligible"},{"available_by":"transferred","consumer":"seed_multispine_pool_inputs","entity":"spm_unit","execution_scope":"whole_pool","fallback":null,"provision":"transferred_or_preserved_input","stage":"seed","variable":"takes_up_housing_assistance_if_eligible"},{"available_by":"seeded","consumer":"seed_multispine_pool_inputs","entity":"spm_unit","execution_scope":"whole_pool","fallback":"checked_take_up_contract_engine_default","provision":"preserved_input_or_disclosed_engine_default","stage":"seed","variable":"takes_up_snap_if_eligible"},{"available_by":"seeded","consumer":"seed_multispine_pool_inputs","entity":"spm_unit","execution_scope":"whole_pool","fallback":"sourced_seed_when_input_is_missing","provision":"administrative_seed_or_preserved_input","stage":"seed","variable":"takes_up_tanf_if_eligible"},{"available_by":"seeded","consumer":"seed_multispine_pool_inputs","entity":"tax_unit","execution_scope":"whole_pool","fallback":"checked_take_up_contract_engine_default","provision":"preserved_input_or_disclosed_engine_default","stage":"seed","variable":"takes_up_aca_if_eligible"},{"available_by":"seeded","consumer":"seed_multispine_pool_inputs","entity":"tax_unit","execution_scope":"whole_pool","fallback":"checked_take_up_contract_engine_default","provision":"preserved_input_or_disclosed_engine_default","stage":"seed","variable":"takes_up_ca_premium_subsidy_if_eligible"},{"available_by":"seeded","consumer":"seed_multispine_pool_inputs","entity":"tax_unit","execution_scope":"whole_pool","fallback":"checked_take_up_contract_engine_default","provision":"preserved_input_or_disclosed_engine_default","stage":"seed","variable":"takes_up_co_premium_assistance_if_eligible"},{"available_by":"seeded","consumer":"seed_multispine_pool_inputs","entity":"tax_unit","execution_scope":"whole_pool","fallback":"checked_take_up_contract_engine_default","provision":"preserved_input_or_disclosed_engine_default","stage":"seed","variable":"takes_up_dc_ptc"},{"available_by":"seeded","consumer":"seed_multispine_pool_inputs","entity":"tax_unit","execution_scope":"whole_pool","fallback":"sourced_seed_when_input_is_missing","provision":"administrative_seed_or_preserved_input","stage":"seed","variable":"takes_up_eitc"},{"available_by":"seeded","consumer":"seed_multispine_pool_inputs","entity":"tax_unit","execution_scope":"whole_pool","fallback":"checked_take_up_contract_engine_default","provision":"preserved_input_or_disclosed_engine_default","stage":"seed","variable":"takes_up_nm_premium_assistance_if_eligible"},{"available_by":"assembled","consumer":"with_us_take_up_inputs","entity":"family","execution_scope":"whole_pool","fallback":null,"provision":"assembly_support_source_identity","stage":"seed","variable":"family_source_id"},{"available_by":"assembled","consumer":"with_us_take_up_inputs","entity":"household","execution_scope":"whole_pool","fallback":null,"provision":"assembly_support_source_identity","stage":"seed","variable":"household_source_id"},{"available_by":"assembled","consumer":"with_us_take_up_inputs","entity":"marital_unit","execution_scope":"whole_pool","fallback":null,"provision":"assembly_support_source_identity","stage":"seed","variable":"marital_unit_source_id"},{"available_by":"assembled","consumer":"with_us_take_up_inputs","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"assembled_native_person_input","stage":"seed","variable":"age"},{"available_by":"assembled","consumer":"with_us_take_up_inputs","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"assembly_support_source_identity","stage":"seed","variable":"person_source_id"},{"available_by":"assembled","consumer":"with_us_take_up_inputs","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"frame_membership","stage":"seed","variable":"person_spm_unit_id"},{"available_by":"assembled","consumer":"with_us_take_up_inputs","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"frame_membership","stage":"seed","variable":"person_tax_unit_id"},{"available_by":"assembled","consumer":"with_us_take_up_inputs","entity":"person","execution_scope":"whole_pool","fallback":"support_source_id_then_entity_id","provision":"optional_assembled_source_identity","stage":"seed","variable":"source_household_id"},{"available_by":"assembled","consumer":"with_us_take_up_inputs","entity":"person","execution_scope":"whole_pool","fallback":"support_source_id_then_entity_id","provision":"optional_assembled_source_identity","stage":"seed","variable":"source_person_id"},{"available_by":"assembled","consumer":"with_us_take_up_inputs","entity":"person","execution_scope":"whole_pool","fallback":"support_source_id_then_entity_id","provision":"optional_assembled_source_identity","stage":"seed","variable":"source_year"},{"available_by":"assembled","consumer":"with_us_take_up_inputs","entity":"spm_unit","execution_scope":"whole_pool","fallback":null,"provision":"frame_resolve_weights_from_household_weight","stage":"seed","variable":""},{"available_by":"assembled","consumer":"with_us_take_up_inputs","entity":"spm_unit","execution_scope":"whole_pool","fallback":null,"provision":"frame_entity_id","stage":"seed","variable":"spm_unit_id"},{"available_by":"assembled","consumer":"with_us_take_up_inputs","entity":"spm_unit","execution_scope":"whole_pool","fallback":null,"provision":"assembly_support_source_identity","stage":"seed","variable":"spm_unit_source_id"},{"available_by":"assembled","consumer":"with_us_take_up_inputs","entity":"tax_unit","execution_scope":"whole_pool","fallback":null,"provision":"frame_resolve_weights_from_household_weight","stage":"seed","variable":""},{"available_by":"assembled","consumer":"with_us_take_up_inputs","entity":"tax_unit","execution_scope":"whole_pool","fallback":null,"provision":"frame_entity_id","stage":"seed","variable":"tax_unit_id"},{"available_by":"assembled","consumer":"with_us_take_up_inputs","entity":"tax_unit","execution_scope":"whole_pool","fallback":null,"provision":"assembly_support_source_identity","stage":"seed","variable":"tax_unit_source_id"},{"available_by":"assembled","consumer":"PolicyEngineUSEngine.materialize","entity":"family","execution_scope":"whole_pool","fallback":null,"provision":"frame_entity_id","stage":"simulate","variable":"family_id"},{"available_by":"assembled","consumer":"PolicyEngineUSEngine.materialize","entity":"household","execution_scope":"whole_pool","fallback":null,"provision":"frame_household_weight","stage":"simulate","variable":""},{"available_by":"assembled","consumer":"PolicyEngineUSEngine.materialize","entity":"household","execution_scope":"whole_pool","fallback":null,"provision":"frame_entity_id","stage":"simulate","variable":"household_id"},{"available_by":"assembled","consumer":"PolicyEngineUSEngine.materialize","entity":"marital_unit","execution_scope":"whole_pool","fallback":null,"provision":"frame_entity_id","stage":"simulate","variable":"marital_unit_id"},{"available_by":"assembled","consumer":"PolicyEngineUSEngine.materialize","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"frame_membership","stage":"simulate","variable":"person_family_id"},{"available_by":"assembled","consumer":"PolicyEngineUSEngine.materialize","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"frame_membership","stage":"simulate","variable":"person_household_id"},{"available_by":"assembled","consumer":"PolicyEngineUSEngine.materialize","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"frame_entity_id","stage":"simulate","variable":"person_id"},{"available_by":"assembled","consumer":"PolicyEngineUSEngine.materialize","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"frame_membership","stage":"simulate","variable":"person_marital_unit_id"},{"available_by":"assembled","consumer":"PolicyEngineUSEngine.materialize","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"frame_membership","stage":"simulate","variable":"person_spm_unit_id"},{"available_by":"assembled","consumer":"PolicyEngineUSEngine.materialize","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"frame_membership","stage":"simulate","variable":"person_tax_unit_id"},{"available_by":"assembled","consumer":"PolicyEngineUSEngine.materialize","entity":"spm_unit","execution_scope":"whole_pool","fallback":null,"provision":"frame_entity_id","stage":"simulate","variable":"spm_unit_id"},{"available_by":"assembled","consumer":"PolicyEngineUSEngine.materialize","entity":"tax_unit","execution_scope":"whole_pool","fallback":null,"provision":"frame_entity_id","stage":"simulate","variable":"tax_unit_id"},{"available_by":"assembled","consumer":"_simulation_projection","entity":"family","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"frame_structural_engine_input","stage":"simulate","variable":"family_id"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"family","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"family_weight"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ak_ssp_excluded_institutional_setting"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"auto_loan_balance"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"auto_loan_interest"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"average_home_energy_use_in_state"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"bedrooms"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"block_geoid"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"cbo_corporate_income_tax"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"cbo_excise_tax"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"cbsa_code"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"congressional_district_geoid"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"county_fips"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ct_tfa_region"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"current_home_energy_use"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"de_ssp_living_arrangement"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"household_business_assets_debt"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"household_business_assets_equity"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"household_business_assets_value"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"household_count"},{"available_by":"assembled","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"frame_structural_engine_input","stage":"simulate","variable":"household_id"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"household_income_ami_ratio"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"household_other_real_estate_debt"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"household_other_real_estate_equity"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"household_other_real_estate_value"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"household_rental_property_debt"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"household_rental_property_equity"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"household_rental_property_value"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"household_vehicles_debt"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"household_vehicles_equity"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"household_vehicles_owned"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"household_vehicles_value"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"household_weight"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"in_denver"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"in_wilmington"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"in_yonkers"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_homeless"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_in_public_housing"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_non_english_speaking_home"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_on_tribal_land"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_rural"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_shared_living"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_sro"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"living_arrangements_allow_for_food_preparation"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ma_state_living_arrangement"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"net_worth"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ny_drive_clean_purchased_qualifying_vehicle"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ny_drive_clean_vehicle_cost"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ny_drive_clean_vehicle_electric_range"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"parent_has_less_than_high_school_education"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"place_fips"},{"available_by":"assembled","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_for_null","provision":"preserved_stacked_engine_input","stage":"simulate","variable":"puma"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"qualified_passenger_vehicle_loan_interest"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"sldl"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"sldu"},{"available_by":"assembled","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"preserved_stacked_engine_input","stage":"simulate","variable":"state_fips"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"tenant_pays_utilities"},{"available_by":"assembled","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"assembled_native_engine_input","stage":"simulate","variable":"tenure_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"tract_geoid"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"vtd"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"zcta"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"zip_code"},{"available_by":"assembled","consumer":"_simulation_projection","entity":"marital_unit","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"frame_structural_engine_input","stage":"simulate","variable":"marital_unit_id"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"able_contributions_person"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"adopted_this_year"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"after_school_expenses"},{"available_by":"assembled","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"assembled_native_engine_input","stage":"simulate","variable":"age"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ak_ccap_care_schedule"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ak_ccap_charged_rate"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ak_ccap_provider_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ak_resides_in_assisted_living_home"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"al_ccsp_provider_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"al_ccsp_quality_tier"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"al_level_b_care"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"al_meets_snf_criteria"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"al_receives_elderly_disabled_medicaid_waiver"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"al_ssp_care_setting"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"al_ssp_grandfathered"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"al_ssp_living_arrangement"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"al_ui_base_period_wages"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"al_ui_high_quarter_wages"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"al_ui_quarters_with_wages"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"al_ui_second_high_quarter_wages"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"al_ui_weekly_earnings"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"alimony_expense"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"alimony_income"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ambulance_expense"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"american_opportunity_credit_claimed_prior_years"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"amt_foreign_tax_credit"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ar_sra_care_type"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"attends_eligible_educational_institution_for_american_opportunity_credit"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"attends_eligible_educational_institution_for_lifetime_learning_credit"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"az_530a_distribution"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"az_ccap_provider_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"az_ccap_quality_enhanced_provider"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default","provision":"declared_deferred_null_input","stage":"simulate","variable":"bank_account_assets"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default","provision":"declared_deferred_null_input","stage":"simulate","variable":"bond_assets"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"business_is_qualified"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"business_is_sstb"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ca_calworks_child_care_factor_category"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ca_calworks_child_care_provider_category"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ca_calworks_child_care_time_category"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ca_calworks_child_care_welfare_to_work"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ca_cvrp_vehicle_rebate_amount"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ca_in_home_supportive_services"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ca_in_medical_care_facility"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ca_state_disability_insurance"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"care_and_support_costs"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"care_and_support_payments_from_tax_filer"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"casualty_loss"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"charitable_cash_donations"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"charitable_non_cash_donations"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"charitable_non_cash_donations_non_50_pct_orgs"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"child_support_expense"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"child_support_received"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"childcare_attending_days_per_month"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"childcare_days_per_week"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"childcare_hours_per_day"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"childcare_provider_type_group"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"claimed_as_dependent_on_another_return"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"claimed_ma_covid_19_essential_employee_premium_pay_program_2020"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"co_care_worker_credit_eligible_care_worker"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"co_denver_employee_occupational_privilege_tax_months"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"co_glendale_employee_occupational_privilege_tax_months"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"co_greenwood_village_employee_occupational_privilege_tax_months"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"co_quality_rating_of_child_care_facility"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"co_sheridan_employee_occupational_privilege_tax_months"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"cost_of_attending_college"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"count_529_contribution_beneficiaries"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"cps_race"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"csrs_retirement_pay"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ct_c4k_provider_accredited"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ct_c4k_provider_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ct_ssp_has_therapeutic_diet"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ct_ssp_lives_with_others"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ct_ssp_resides_in_boarding_home"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"current_pregnancy_month"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"dc_ccsp_childcare_provider_category"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"dc_ccsp_schedule_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"dc_ossp_facility_size"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"dc_ossp_in_adult_foster_care"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"de_additions"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"de_poc_provider_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"de_wilmington_nonresident_earnings"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"debt_relief"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"dependent_care_employer_benefits"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"detailed_industry_recode"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"detailed_occupation_recode"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"disability_benefits"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"divorce_year"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"e00700"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"e01100"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"e01200"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"e02000"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"e03220"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"e03230"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"e03240"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"e03270"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"e03290"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"e03300"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"e03400"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"e03500"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"e07240"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"e07260"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"e07300"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"e09700"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"e09800"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"e09900"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"e11200"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"e18500"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"e19200"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"e19800"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"e20100"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"e20400"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"e24515"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"e24518"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"e26270"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"e27200"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"e32800"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"e58990"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"e62900"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"e87521"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"e87530"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"early_withdrawal_penalty"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"educational_assistance"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"educator_expense"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"employer_contribution_to_health_insurance_premiums_category"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"employer_headcount"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"employer_ny_mctmt_zone_1_quarterly_payroll_expense"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"employer_ny_mctmt_zone_2_quarterly_payroll_expense"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"employer_quarterly_payroll_expense_override"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"employer_sponsored_insurance_premiums"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"employer_state_unemployment_tax_rate_override"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"employer_total_co_denver_occupational_privilege_tax_employee_months"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"employer_total_co_denver_occupational_privilege_tax_owner_months"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"employer_total_co_glendale_occupational_privilege_tax_employee_months"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"employer_total_co_glendale_occupational_privilege_tax_owner_months"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"employer_total_co_greenwood_village_occupational_privilege_tax_employee_months"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"employer_total_co_greenwood_village_occupational_privilege_tax_owner_months"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"employer_total_co_sheridan_occupational_privilege_tax_employee_months"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"employer_total_mo_st_louis_payroll_expense"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"employer_total_or_lane_transit_district_taxable_wages"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"employer_total_or_trimet_taxable_wages"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"employer_total_payroll_tax_gross_wages"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"employer_total_taxable_earnings_for_federal_unemployment_tax"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"employer_total_taxable_earnings_for_social_security"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"employer_total_taxable_earnings_for_state_unemployment_tax"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"employer_total_wa_seattle_payroll_expense_current_year_total"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"employer_total_wa_seattle_payroll_expense_lower_band_taxable_payroll"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"employer_total_wa_seattle_payroll_expense_prior_year_total"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"employer_total_wa_seattle_payroll_expense_upper_band_taxable_payroll"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"employer_total_wa_seattle_social_housing_excess_compensation"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"employment_income_before_lsr"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"er_visit_expense"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"estate_income"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"estate_income_would_be_qualified"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"excess_withheld_payroll_tax"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"farm_income"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"farm_operations_income"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"farm_operations_income_would_be_qualified"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"farm_rent_income"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"farm_rent_income_would_be_qualified"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"financial_assistance"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"fl_oss_community_care_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"fl_oss_program_track"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"fl_sr_provider_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"four_year_college_student"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"fsla_overtime_premium"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ga_caps_care_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ga_caps_provider_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ga_caps_quality_rating"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ga_ssp_in_nursing_home_or_institutionalized_hospice"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"gambling_losses"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"gambling_winnings"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"general_assistance"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"general_business_credit"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"gi_cash_assistance"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"has_american_opportunity_credit_1098_t_or_exception"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"has_american_opportunity_credit_institution_ein"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"has_applied_for_unemployment_compensation"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"has_bcc_qualifying_coverage"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"has_champva_health_coverage_at_interview"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"has_chip_health_coverage_at_interview"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"has_completed_first_four_years_of_postsecondary_education"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"has_developmental_delay"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"has_emergency_medical_condition"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"has_esi"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"has_felony_drug_conviction"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"has_health_coverage_other_than_chip"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"has_indian_health_service_coverage_at_interview"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"has_individualized_education_program"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"has_lifetime_learning_credit_1098_t_or_exception"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"has_long_distance_medical_travel_for_medicaid_ce"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"has_marketplace_health_coverage_at_interview"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"has_medicaid_health_coverage_at_interview"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"has_never_worked"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"has_no_prior_formal_early_learning"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"has_non_marketplace_direct_purchase_health_coverage_at_interview"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"has_other_means_tested_health_coverage_at_interview"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"has_tricare_health_coverage_at_interview"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"has_va_health_coverage_at_interview"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"health_insurance_premiums"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"health_insurance_premiums_without_medicare_part_b"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"health_savings_account_payroll_contributions"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"heating_expense_person"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"hi_ccap_provider_category"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"hi_oss_care_facility_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"home_equity"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"home_is_on_agricultural_land"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"home_mortgage_interest"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"hourly_wage"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"hours_worked_last_week"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ia_cca_provider_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ia_cca_quality_rating"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"id_aabd_living_arrangement"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"id_iccp_provider_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"il_aabd_is_bedfast"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"il_ccap_base_day_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"illicit_income"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"imaging_expense"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"immigration_status_str"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"in_ccdf_provider_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"in_ccdf_ptq_level"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"in_out_of_home_care_facility"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"in_resides_in_licensed_residential_facility"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"in_resides_in_unlicensed_residential_facility"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"inpatient_expense"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"investment_expenses"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"investment_in_529_plan_indv"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"investment_income_elected_form_4952"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"investment_interest_expense"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_american_indian_or_alaska_native_for_medicaid_ce"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"is_blind"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_born_outside_us"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_breastfeeding"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_complying_with_tanf_work_requirements"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_computer_scientist"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_deaf"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_deceased"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"is_disabled"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_english_proficient"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"is_enrolled_at_least_half_time_for_american_opportunity_credit"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_enrolled_in_ccdf"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_enrolled_in_head_start"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_executive_administrative_professional"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_farmer_fisher"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_federal_work_study_participant"},{"available_by":"assembled","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"assembled_native_engine_input","stage":"simulate","variable":"is_female"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"is_full_time_college_student"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_fully_disabled_service_connected_veteran"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_grandparent_of_filer_or_spouse"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_hispanic"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_hospitalized_for_medicaid_ce"},{"available_by":"assembled","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"assembled_native_engine_input","stage":"simulate","variable":"is_household_head"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_household_spouse"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_in_adult_residential_care"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_in_foster_care"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_in_foster_care_group_home"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_in_k12_nonpublic_school"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_in_medicaid_community_engagement_treatment_program"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_in_medicaid_facility"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_in_residential_care_facility"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_in_secondary_school"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_in_substance_use_treatment_program"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_in_work_program"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"is_incapable_of_self_care"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_incarcerated"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_medicaid_1115_mec_adult"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_medicaid_community_engagement_seasonal_worker"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_medically_frail_or_has_special_medical_needs_for_medicaid_ce"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_migratory_child"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_military"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_paid_hourly"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_parent_of_filer_or_spouse"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_part_time_college_student"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_permanently_and_totally_disabled"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_permanently_disabled_veteran"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"is_pregnant"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"is_pursuing_credential_for_american_opportunity_credit"},{"available_by":"assembled","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"preserved_stacked_engine_input","stage":"simulate","variable":"is_related_to_head_or_spouse"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_runaway_child"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_self_employed"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"is_separated"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_severely_disabled"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_snap_abawd_discretionary_exempt"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_snap_abawd_indian_exempt"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_snap_employment_training_student"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_snap_work_incentive_student"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_snap_work_program_participant"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_snap_work_registration_noncompliant"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_snap_workfare_participant"},{"available_by":"release","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"refuse_null_if_present_no_default","provision":"unprovisioned_source_input","stage":"simulate","variable":"is_spm_independent_minor_role"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_surviving_child_of_disabled_veteran"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"is_surviving_spouse"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_surviving_spouse_of_disabled_veteran"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_tafdc_related_to_head_or_spouse"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_union_member_or_covered"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_unmarried_partner_of_household_head"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_wccc_enrolled"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_wic_at_nutritional_risk"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_wic_fully_breastfeeding"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"keogh_distributions"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ks_ccap_provider_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ky_additions"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ky_ccap_provider_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ky_service_credit_months_post_1997"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ky_service_credit_months_pre_1998"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ky_ssp_care_receivers"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ky_ssp_category"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"la_ccap_provider_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"la_quality_rating_of_child_care_facility"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"la_receives_blind_exemption"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"lab_expense"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"life_insurance_benefits"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"long_term_capital_gains_basis"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"long_term_capital_gains_before_response"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"long_term_capital_gains_on_assets_eligible_for_vt_exclusion"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"long_term_capital_gains_on_collectibles"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"long_term_capital_gains_on_small_business_stock"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"long_term_capital_gains_years_held"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"long_term_health_insurance_premiums"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ma_ccfa_care_provider_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ma_ccfa_is_in_relatives_home_care"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ma_ccfa_schedule_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"major_industry_recode"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"md_ccs_provider_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"md_paa_living_arrangement"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"md_paa_pending_federal_benefit"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"me_ccap_provider_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"me_ssp_living_arrangement"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"medicaid_claiming_tax_unit_id"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"medicaid_community_engagement_community_service_hours"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"medicaid_community_engagement_less_than_half_time_education_hours"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"medicaid_community_engagement_six_month_average_income"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"medicaid_community_engagement_work_program_hours"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"medicaid_tax_dependent_exception_non_custodial_parent"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"medicare_part_b_premiums_reported"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"medicare_quarters_of_coverage"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"meets_ssi_disability_criteria"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"mi_ccap_exempt_level"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"mi_ccap_provider_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"mi_ccap_star_rating"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"mi_ssp_living_arrangement"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"military_basic_pay"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"military_retirement_pay"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"military_retirement_pay_survivors"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"military_service_income"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"miscellaneous_income"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"mn_ccap_provider_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"mn_ccap_quality_rating"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"mn_msa_has_guardian"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"mn_msa_housing_assistance_eligible"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"mn_msa_living_arrangement"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"mn_msa_uses_representative_payee"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"mo_ccs_provider_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"mo_kansas_city_earnings_tax_taxable_earnings"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"mo_snc_facility_base_charge"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"mo_ssp_living_arrangement"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"mo_st_louis_earnings_tax_credit"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"mo_st_louis_earnings_tax_taxable_earnings"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"months_receiving_social_security_disability"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ms_ccpp_provider_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"mt_ccap_care_time"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"mt_ccap_provider_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"nd_ccap_provider_qris_step"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"nd_ccap_provider_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ne_aabd_alternate_living_arrangement"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ne_child_care_subsidy_provider_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ne_child_care_subsidy_quality_tier"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ne_school_readiness_credit_child_care_worker_rating"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ne_school_readiness_credit_eligible_worker"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"never_eligible_for_social_security_benefits"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"nh_ccap_provider_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"nj_ccap_grow_nj_kids_rating"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"nj_ccap_provider_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"nj_unemployment_insurance_base_period_wages"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"nj_unemployment_insurance_base_period_weeks"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"nj_unemployment_insurance_qualifying_dependents"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"nj_unemployment_insurance_spouse_employed_when_claim_established"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"nj_unemployment_insurance_weekly_gross_wages"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"nj_unemployment_insurance_weeks_claimed"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"nj_unemployment_insurance_working_less_than_full_time"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"nm_ccap_focus_level"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"nm_ccap_non_traditional_hours"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"nm_ccap_provider_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"non_public_school_tuition"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"non_qualified_dividend_income"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"non_sch_d_capital_gains"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"nv_ccdp_provider_star_rating"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"nv_ccdp_provider_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ny_ui_base_period_wages"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ny_ui_gross_weekly_earnings"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ny_ui_high_quarter_wages"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ny_ui_quarters_with_wages"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ny_ui_second_high_quarter_wages"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ny_ui_weekly_hours_worked"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ny_yonkers_nonresident_earnings"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"offered_aca_disqualifying_esi"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"oh_bonus_depreciation_add_back"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"oh_ccap_has_special_accommodations"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"oh_ccap_is_accredited"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"oh_ccap_non_traditional_hours"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"oh_ccap_owf_transitional"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"oh_ccap_provider_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"oh_ccap_quality_tier"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"oh_educator_expense_deduction_person"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"oh_federal_conformity_deductions"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"oh_has_taken_oh_lump_sum_credits"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"oh_homestead_exemption_qualifying_surviving_spouse"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"oh_other_add_backs"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"oh_section_179_expense_add_back"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"oh_uniformed_services_retirement_income_deduction"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ok_ccs_provider_setting"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ok_ccs_star_level"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ok_ui_base_period_taxable_wages"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ok_ui_base_period_total_wages"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ok_ui_gross_weekly_earnings"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ok_ui_high_quarter_taxable_wages"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ok_ui_high_quarter_total_wages"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"or_erdc_provider_area"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"or_erdc_provider_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"other_credits"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"other_health_insurance_premiums"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"other_medical_expenses"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"outpatient_expense"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"over_the_counter_health_expenses"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"own_children_in_household"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"p08000"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"pa_ccw_provider_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"pa_philadelphia_wage_tax_reduced_rate_eligible"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"pa_philadelphia_wage_tax_resident"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"pa_philadelphia_wage_tax_taxable_wages"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"pa_uc_base_year_wages"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"pa_uc_credit_weeks"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"pa_uc_gross_weekly_earnings"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"pa_uc_highest_quarter_wages"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"partnership_income"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"partnership_s_corp_income_would_be_qualified"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"partnership_self_employment_net_earnings"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"passive_partnership_s_corp_income"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"pell_grant_countable_assets"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"pell_grant_dependent_available_income"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"pell_grant_dependent_other_allowances"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"pell_grant_head_allowances"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"pell_grant_months_in_school"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"pension_survivors"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"person_count"},{"available_by":"assembled","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"frame_structural_engine_input","stage":"simulate","variable":"person_family_id"},{"available_by":"assembled","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"frame_structural_engine_input","stage":"simulate","variable":"person_household_id"},{"available_by":"assembled","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"frame_structural_engine_input","stage":"simulate","variable":"person_marital_unit_id"},{"available_by":"assembled","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"frame_structural_engine_input","stage":"simulate","variable":"person_spm_unit_id"},{"available_by":"assembled","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"frame_structural_engine_input","stage":"simulate","variable":"person_tax_unit_id"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"personal_property"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"pfml_benefits"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"physician_services_expense"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"pre_subsidy_care_expenses"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"pre_subsidy_rent"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"pre_subsidy_transportation_expense"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"pre_tax_health_insurance_premiums"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"prescription_expense"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"previous_year_income_available"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"primary_residence_value"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"prior_year_minimum_tax_credit"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"qualified_adoption_assistance_expense"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"qualified_bdc_income"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"qualified_dividend_income"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"qualified_reit_and_ptp_income"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"qualified_tuition_expenses"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"railroad_benefits"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"real_estate_taxes"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"receives_medicaid"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"receives_or_needs_protective_services"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"receives_ssi"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"receives_wic"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"rental_income"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"rental_income_would_be_qualified"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"retired_from_federal_government"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"retired_from_ky_government"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"retired_on_total_disability"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"retirement_benefits_from_ss_exempt_employment"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ri_ccap_provider_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ri_ccap_star_rating"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ri_ccap_step_rating"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"roth_401k_contributions_desired"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"roth_403b_contributions_desired"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"roth_ira_contributions_desired"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"s_corp_income"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"salt_refund_income"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"sc_ccap_provider_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"sc_ccap_quality_level"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"sc_ccap_registered_quality_level"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"sc_ccap_second_child_discount_rate"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"sc_tuition_credit"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"sc_tuition_credit_eligible"},{"available_by":"derived","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"derived_schedule_d_input","stage":"simulate","variable":"schedule_d_capital_gain_distributions"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"sd_cca_provider_type"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"self_employed_pension_contributions_desired"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"self_employment_income_before_lsr"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"self_employment_income_last_year"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"self_employment_income_would_be_qualified"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"short_term_capital_gains"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"social_security_dependents"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"social_security_disability"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"social_security_retirement"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"social_security_survivors"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ss_aime_input"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ssi_lives_in_another_persons_household"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ssi_lives_in_medical_treatment_facility"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ssi_medicaid_pays_majority_of_care"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ssi_others_pay_all_meals"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ssi_qualifying_quarters_earnings"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ssi_receives_food_from_others"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ssi_receives_outside_shelter_support"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ssi_receives_shelter_from_others_in_household"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_for_null","provision":"preserved_stacked_engine_input","stage":"simulate","variable":"ssi_reported"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ssi_shelter_support_value"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"ssn_card_type"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"sstb_self_employment_income_before_lsr"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"sstb_self_employment_income_would_be_qualified"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"sstb_unadjusted_basis_qualified_property"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"sstb_w2_wages_from_qualified_business"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"state_or_federal_salary"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default","provision":"declared_deferred_null_input","stage":"simulate","variable":"stock_assets"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"strike_benefits"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"student_loan_interest"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"survivor_benefits"},{"available_by":"seeded","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"seed_stage_program_contract","stage":"simulate","variable":"takes_up_basic_health_program_if_eligible"},{"available_by":"seeded","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"seed_stage_program_contract","stage":"simulate","variable":"takes_up_chip_if_eligible"},{"available_by":"seeded","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"seed_stage_program_contract","stage":"simulate","variable":"takes_up_early_head_start_if_eligible"},{"available_by":"seeded","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"seed_stage_program_contract","stage":"simulate","variable":"takes_up_head_start_if_eligible"},{"available_by":"seeded","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"seed_stage_program_contract","stage":"simulate","variable":"takes_up_medicaid_if_eligible"},{"available_by":"seeded","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"seed_stage_program_contract","stage":"simulate","variable":"takes_up_medicare_if_eligible"},{"available_by":"seeded","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"seed_stage_program_contract","stage":"simulate","variable":"takes_up_ssi_if_eligible"},{"available_by":"seeded","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"seed_stage_program_contract","stage":"simulate","variable":"takes_up_wic_if_eligible"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"tax_exempt_401k_distributions"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"tax_exempt_403b_distributions"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"tax_exempt_interest_income"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"tax_exempt_ira_distributions"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"tax_exempt_private_pension_income"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"tax_exempt_public_pension_income"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"tax_exempt_sep_distributions"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"tax_preparation_fees"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"taxable_401k_distributions"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"taxable_403b_distributions"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"taxable_estate_value"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"taxable_federal_pension_income"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"taxable_interest_income"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"taxable_ira_distributions"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"taxable_private_pension_income"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"taxable_public_pension_income"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"taxable_roth_conversions"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"taxable_sep_distributions"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"technical_institution_student"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"tip_income"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"tn_ccap_provider_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"tn_ccap_qris_tier"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"total_disability_payments"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"traditional_401k_contributions_desired"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"traditional_403b_contributions_desired"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"traditional_ira_contributions_desired"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"treasury_tipped_occupation_code"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"tx_ccs_care_schedule"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"tx_ccs_provider_rating"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"tx_ccs_provider_type"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"unadjusted_basis_qualified_property"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"under_12_months_postpartum"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"under_60_days_postpartum"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"unemployment_compensation"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"unreimbursed_business_employee_expenses"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"urgent_care_expense"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"us_bonds_for_higher_ed"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"us_govt_interest_person"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"use_reported_ssi"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ut_ccap_provider_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ut_ui_base_period_wages"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ut_ui_gross_weekly_earnings"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ut_ui_high_quarter_wages"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ut_ui_quarters_with_wages"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ut_ui_weekly_hours_worked"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ut_ui_weeks_unemployed"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"va_ccsp_is_full_day"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"va_ccsp_provider_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"va_educator_expenses"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"veterans_benefits"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"vt_ccfap_provider_type"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"w2_wages_from_qualified_business"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"wa_eceap_slot_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"wa_pfml_average_weekly_wage_override"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"wa_pfml_leave_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"wa_pfml_qualifying_period_hours_worked"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"wa_wccc_day_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"wa_wccc_provider_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"was_in_foster_care"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"was_recently_incarcerated_for_medicaid_ce"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"weekly_hours_worked_before_lsr"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"weekly_snap_work_program_hours"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"weeks_unemployed"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"wi_shares_provider_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"wic_breastfeeding_infant_count"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"wic_infant_feeding_category"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"worked_last_year"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"workers_compensation"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"wv_ccap_non_traditional_hours"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"wv_ccap_provider_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"wv_ccap_quality_tier"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"wy_ccap_provider_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"year_deceased"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"year_of_retirement"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"years_in_military"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"years_since_us_entry"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"al_ccsp_enrolled"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ar_months_since_tea_exit"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ar_was_tea_recipient"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"az_ccap_enrolled"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"bottled_gas_expense"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"broadband_cost"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ca_riv_share_eligible_for_emergency_payment"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ca_scc_general_assistance_living_arrangement"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ca_sf_caap_clothing_provided_in_kind"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ca_sf_caap_food_provided_in_kind"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ca_sf_caap_housing_provided_in_kind"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ca_sf_caap_is_recipient"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ca_sf_caap_utilities_provided_in_kind"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ca_smc_general_assistance_living_arrangement"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"co_ccap_is_in_entry_process"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"co_ccap_is_in_re_determination_process"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"coal_expense"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"cooking_fuel_expense"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"dc_ccsp_enrolled"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"dc_liheap_housing_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"de_poc_enrolled"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"enrolled_in_ebb"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"experienced_covid_income_loss"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"fdpir"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"fl_sr_enrolled"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"fuel_oil_expense"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ga_caps_enrolled"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"gas_expense"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"has_cooling_expense"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"head_start_applies_housing_cost_adjustment"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"head_start_uses_discretionary_income_limit"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"heat_expense_included_in_rent"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"heating_cooling_expense"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"heating_expense_last_year"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"heating_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"homeowners_association_fees"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"homeowners_insurance"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"housing_designated_welfare"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ia_cca_enrolled"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"id_iccp_enrolled"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"il_aabd_institutional_status"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"il_aabd_vehicle_is_essential"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"il_ccap_enrolled"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"il_ccap_non_parent_relative_child_only_tanf"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"il_ccap_protective_care_override"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"il_liheap_eligible_for_crisis_assistance"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_in_ccdf_enrolled"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_nd_ccap_enrolled"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_sd_cca_enrolled"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_wi_shares_enrolled"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"la_general_relief_disability_eligible"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"la_general_relief_housing_subsidy_program_eligible"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"la_general_relief_recipient"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ma_ccfa_enrolled"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ma_eaedc_living_arrangement"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"md_ccs_enrolled"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"meets_ccdf_activity_test"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"metered_gas_expense"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"mi_ccap_enrolled"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"mn_ccap_enrolled"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"mn_ccap_registration_fee"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"mo_ccs_enrolled"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"months_since_calworks_exit"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"mortgage_payments"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"mt_ccap_enrolled"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ne_child_care_subsidy_at_redetermination"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ne_child_care_subsidy_enrolled"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"nj_ccap_enrolled"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"nm_ccap_enrolled"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"nv_ccdp_enrolled"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"oh_ccap_enrolled"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"oh_ccap_owf_basic_assistance"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"other_heating_fuel_expense"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"pa_ccw_enrolled"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"pa_ccw_has_stepparent"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"phone_cost"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"pre_subsidy_electricity_expense"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"receives_housing_assistance"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"receives_snap"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"receives_tanf"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ri_ccap_enrolled"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"sd_tanf_is_shared_living"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"sewage_expense"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"snap_self_employment_income_expense"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"spm_unit_assets"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"spm_unit_count"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"spm_unit_energy_subsidy"},{"available_by":"assembled","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"frame_structural_engine_input","stage":"simulate","variable":"spm_unit_id"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"spm_unit_net_income_reported"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"spm_unit_pre_subsidy_childcare_expenses"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"spm_unit_school_lunch_subsidy"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"spm_unit_snap"},{"available_by":"assembled","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"assembled_native_engine_input","stage":"simulate","variable":"spm_unit_tenure_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"spm_unit_total_income_reported"},{"available_by":"seeded","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"seed_stage_program_contract","stage":"simulate","variable":"takes_up_housing_assistance_if_eligible"},{"available_by":"seeded","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"seed_stage_program_contract","stage":"simulate","variable":"takes_up_snap_if_eligible"},{"available_by":"seeded","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"seed_stage_program_contract","stage":"simulate","variable":"takes_up_tanf_if_eligible"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"tn_ccap_enrolled"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"tn_ccap_protective_services_waiver"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"trash_expense"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"tx_ottanf_crisis_criteria"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"va_ccsp_enrolled"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"wa_show_all_cash_assistance_programs"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"was_calworks_recipient"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"water_expense"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"wood_expense"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"wy_ccap_enrolled"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"wy_power_shelter_qualified"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"advanced_main_air_circulating_fan_expenditures"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"air_sealing_ventilation_expenditures"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"al_non_refundable_credits"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"al_refundable_credits"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"amt_form_completed"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"amt_non_agi_income"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"az_additions"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"az_charitable_contributions_to_qualifying_charitable_organizations"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"az_charitable_contributions_to_qualifying_foster_care_organizations"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"biomass_stove_boiler_expenditures"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"co_non_refundable_credits"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"co_property_tax_exemption"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"cohabitating_spouses"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ct_amt"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ct_section_179_expense_add_back"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"domestic_production_ald"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"electric_heat_pump_clothes_dryer_expenditures"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"electric_load_service_center_upgrade_expenditures"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"electric_stove_cooktop_range_or_oven_expenditures"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"electric_wiring_expenditures"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"energy_efficient_central_air_conditioner_expenditures"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"energy_efficient_door_expenditures"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"energy_efficient_insulation_expenditures"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"energy_efficient_roof_expenditures"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"energy_efficient_window_expenditures"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"excess_payroll_tax_withheld"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"first_home_mortgage_balance"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"first_home_mortgage_interest"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"first_home_mortgage_origination_year"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"foreign_earned_income_exclusion"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"foreign_tax_credit_potential"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"form_4972_lumpsum_distributions"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"fuel_cell_property_capacity"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"fuel_cell_property_expenditures"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ga_investment_in_529_plan_deduction"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ga_itemized_deductions_adjustment"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"geothermal_heat_pump_property_expenditures"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"health_savings_account_ald"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"heat_pump_expenditures"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"heat_pump_water_heater_expenditures"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"home_energy_audit_expenditures"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"id_additions"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"il_pass_through_entity_tax_credit"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"il_pass_through_withholding"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"il_schedule_m_additions"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"il_schedule_m_subtractions"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"in_bonus_depreciation_add_back"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"in_healthcare_sharing_deduction"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"in_nol"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"in_nol_add_back"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"in_oos_municipal_obligation_interest_add_back"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"in_other_add_backs"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"in_other_deductions"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"in_section_179_expense_add_back"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"in_tax_add_back"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"in_use_tax"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"investment_income_form_4952"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_barred_from_american_opportunity_credit_due_to_improper_claims"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_nonresident_alien_for_american_opportunity_credit"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_nonresident_alien_for_lifetime_learning_credit"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"k12_tuition_and_fees"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ks_additions"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ky_refundable_credits"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"md_total_additions"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"me_additions"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"me_affordability_payment_subtraction_reported"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"me_property_tax_fairness_credit_utilities_in_rent_amount"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"me_step_4_share_of_child_care_expenses"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"mi_non_refundable_credits"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"mn_renters_credit_property_tax_exempt"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"mn_renters_credit_qualifying_crp"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ms_charitable_contributions_to_qualifying_foster_care_organizations"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ms_refundable_credits"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"nc_additions"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"nd_refundable_credits"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"nd_renters_refund_property_tax_exempt"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ne_additions"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"new_clean_vehicle_battery_capacity"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"new_clean_vehicle_battery_components_made_in_north_america"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"new_clean_vehicle_battery_critical_minerals_extracted_in_trading_partner_country"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"new_clean_vehicle_classification"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"new_clean_vehicle_msrp"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"nh_refundable_credits"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"nj_non_refundable_credits"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"nj_senior_freeze"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"nm_additions"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"nm_non_refundable_credits"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ny_additions"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ny_qualified_geothermal_energy_system_expenditures"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ny_qualified_solar_energy_systems_equipment_expenditures"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"nyc_unincorporated_business_credit"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"oh_refundable_credits"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ok_additions"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ok_adjustments"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"or_additions"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"or_federal_pension_subtraction"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"or_tax_before_credits_in_prior_year"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"other_net_gain"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"pell_grant_primary_income"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"prior_energy_efficient_home_improvement_credits"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"prior_energy_efficient_window_credits"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"property_sales_net_capital_gain"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"puerto_rico_income"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"purchased_qualifying_new_clean_vehicle"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"purchased_qualifying_used_clean_vehicle"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"qualified_battery_storage_technology_expenditures"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"qualified_furnace_or_hot_water_boiler_expenditures"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"qualified_retirement_penalty"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"recapture_of_investment_credit"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"refundable_payroll_tax_credit"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"rent_is_shared_with_another_tax_unit"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"residential_efficiency_electrification_retrofit_energy_savings"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"residential_efficiency_electrification_retrofit_expenditures"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ri_section_179_expense_add_back"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"salt_refund_last_year"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"second_home_mortgage_balance"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"second_home_mortgage_interest"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"second_home_mortgage_origination_year"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"selected_marketplace_plan_benchmark_ratio"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"selected_marketplace_plan_category"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"separate_filer_itemizes"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"small_wind_energy_property_expenditures"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"solar_electric_property_expenditures"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"solar_water_heating_property_expenditures"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"specified_possession_income"},{"available_by":"seeded","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"seed_stage_program_contract","stage":"simulate","variable":"takes_up_aca_if_eligible"},{"available_by":"seeded","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"seed_stage_program_contract","stage":"simulate","variable":"takes_up_ca_premium_subsidy_if_eligible"},{"available_by":"seeded","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"seed_stage_program_contract","stage":"simulate","variable":"takes_up_co_premium_assistance_if_eligible"},{"available_by":"seeded","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"seed_stage_program_contract","stage":"simulate","variable":"takes_up_dc_ptc"},{"available_by":"seeded","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"seed_stage_program_contract","stage":"simulate","variable":"takes_up_eitc"},{"available_by":"seeded","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"seed_stage_program_contract","stage":"simulate","variable":"takes_up_nm_premium_assistance_if_eligible"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"tax_unit_count"},{"available_by":"assembled","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"frame_structural_engine_input","stage":"simulate","variable":"tax_unit_id"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"tax_unit_income_ami_ratio"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"tax_unit_stillborn_children"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"taxsim_pprofinc"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"taxsim_sprofinc"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"tuition_and_fees"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"unrecaptured_section_1250_gain"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"unreported_payroll_tax"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"used_clean_vehicle_sale_price"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ut_additions"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"utilities_included_in_rent"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"va_additions"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"wa_pte_cotenant_disposable_income"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"would_file_if_eligible_for_refundable_credit"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"would_file_taxes_voluntarily"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"wv_additions"},{"available_by":"assembled","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"assembled_native_person_input","stage":"simulate","variable":"age"},{"available_by":"transferred","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"materialized_pool_input_surface","stage":"simulate","variable":"alimony_income"},{"available_by":"transferred","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":"ephemeral_simulation_projection_engine_default","provision":"declared_deferred_null_input","stage":"simulate","variable":"bank_account_assets"},{"available_by":"transferred","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":"ephemeral_simulation_projection_engine_default","provision":"declared_deferred_null_input","stage":"simulate","variable":"bond_assets"},{"available_by":"transferred","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"materialized_pool_input_surface","stage":"simulate","variable":"child_support_received"},{"available_by":"transferred","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"materialized_pool_input_surface","stage":"simulate","variable":"disability_benefits"},{"available_by":"transferred","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"materialized_pool_input_surface","stage":"simulate","variable":"employment_income_before_lsr"},{"available_by":"simulate","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":"policyengine_default_for_absent_input","provision":"declared_absent_engine_input","stage":"simulate","variable":"financial_assistance"},{"available_by":"simulate","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":"policyengine_default_for_absent_input","provision":"declared_absent_engine_input","stage":"simulate","variable":"gi_cash_assistance"},{"available_by":"transferred","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"materialized_pool_input_surface","stage":"simulate","variable":"immigration_status_str"},{"available_by":"transferred","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"materialized_pool_input_surface","stage":"simulate","variable":"is_blind"},{"available_by":"transferred","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"materialized_pool_input_surface","stage":"simulate","variable":"is_full_time_college_student"},{"available_by":"transferred","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"materialized_pool_input_surface","stage":"simulate","variable":"is_separated"},{"available_by":"transferred","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"materialized_pool_input_surface","stage":"simulate","variable":"keogh_distributions"},{"available_by":"simulate","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":"policyengine_default_for_absent_input","provision":"declared_absent_engine_input","stage":"simulate","variable":"meets_ssi_disability_criteria"},{"available_by":"transferred","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"materialized_pool_input_surface","stage":"simulate","variable":"non_qualified_dividend_income"},{"available_by":"transferred","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"materialized_pool_input_surface","stage":"simulate","variable":"own_children_in_household"},{"available_by":"transferred","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"materialized_pool_input_surface","stage":"simulate","variable":"qualified_dividend_income"},{"available_by":"transferred","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"materialized_pool_input_surface","stage":"simulate","variable":"rental_income"},{"available_by":"transferred","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"materialized_pool_input_surface","stage":"simulate","variable":"self_employment_income_before_lsr"},{"available_by":"transferred","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"materialized_pool_input_surface","stage":"simulate","variable":"social_security_dependents"},{"available_by":"transferred","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"materialized_pool_input_surface","stage":"simulate","variable":"social_security_disability"},{"available_by":"transferred","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"materialized_pool_input_surface","stage":"simulate","variable":"social_security_retirement"},{"available_by":"transferred","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"materialized_pool_input_surface","stage":"simulate","variable":"social_security_survivors"},{"available_by":"simulate","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":"policyengine_default_for_absent_input","provision":"declared_absent_engine_input","stage":"simulate","variable":"ssi_lives_in_another_persons_household"},{"available_by":"simulate","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":"policyengine_default_for_absent_input","provision":"declared_absent_engine_input","stage":"simulate","variable":"ssi_lives_in_medical_treatment_facility"},{"available_by":"simulate","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":"policyengine_default_for_absent_input","provision":"declared_absent_engine_input","stage":"simulate","variable":"ssi_medicaid_pays_majority_of_care"},{"available_by":"simulate","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":"policyengine_default_for_absent_input","provision":"declared_absent_engine_input","stage":"simulate","variable":"ssi_others_pay_all_meals"},{"available_by":"simulate","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":"policyengine_default_for_absent_input","provision":"declared_absent_engine_input","stage":"simulate","variable":"ssi_qualifying_quarters_earnings"},{"available_by":"simulate","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":"policyengine_default_for_absent_input","provision":"declared_absent_engine_input","stage":"simulate","variable":"ssi_receives_food_from_others"},{"available_by":"simulate","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":"policyengine_default_for_absent_input","provision":"declared_absent_engine_input","stage":"simulate","variable":"ssi_receives_outside_shelter_support"},{"available_by":"simulate","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":"policyengine_default_for_absent_input","provision":"declared_absent_engine_input","stage":"simulate","variable":"ssi_receives_shelter_from_others_in_household"},{"available_by":"simulate","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":"policyengine_default_for_absent_input","provision":"declared_absent_engine_input","stage":"simulate","variable":"ssi_shelter_support_value"},{"available_by":"transferred","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"materialized_pool_input_surface","stage":"simulate","variable":"sstb_self_employment_income_before_lsr"},{"available_by":"transferred","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":"ephemeral_simulation_projection_engine_default","provision":"declared_deferred_null_input","stage":"simulate","variable":"stock_assets"},{"available_by":"simulate","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":"policyengine_default_for_absent_input","provision":"declared_absent_engine_input","stage":"simulate","variable":"survivor_benefits"},{"available_by":"seeded","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":"seed_receipted_value_or_disclosed_engine_default","provision":"seed_stage_program_contract","stage":"simulate","variable":"takes_up_ssi_if_eligible"},{"available_by":"simulate","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":"policyengine_default_for_absent_input","provision":"declared_absent_engine_input","stage":"simulate","variable":"tax_exempt_401k_distributions"},{"available_by":"simulate","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":"policyengine_default_for_absent_input","provision":"declared_absent_engine_input","stage":"simulate","variable":"tax_exempt_403b_distributions"},{"available_by":"transferred","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"materialized_pool_input_surface","stage":"simulate","variable":"tax_exempt_interest_income"},{"available_by":"transferred","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"materialized_pool_input_surface","stage":"simulate","variable":"tax_exempt_ira_distributions"},{"available_by":"transferred","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"materialized_pool_input_surface","stage":"simulate","variable":"tax_exempt_private_pension_income"},{"available_by":"simulate","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":"policyengine_default_for_absent_input","provision":"declared_absent_engine_input","stage":"simulate","variable":"tax_exempt_public_pension_income"},{"available_by":"simulate","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":"policyengine_default_for_absent_input","provision":"declared_absent_engine_input","stage":"simulate","variable":"tax_exempt_sep_distributions"},{"available_by":"transferred","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"materialized_pool_input_surface","stage":"simulate","variable":"taxable_401k_distributions"},{"available_by":"transferred","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"materialized_pool_input_surface","stage":"simulate","variable":"taxable_403b_distributions"},{"available_by":"transferred","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"materialized_pool_input_surface","stage":"simulate","variable":"taxable_interest_income"},{"available_by":"transferred","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"materialized_pool_input_surface","stage":"simulate","variable":"taxable_ira_distributions"},{"available_by":"transferred","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"materialized_pool_input_surface","stage":"simulate","variable":"taxable_private_pension_income"},{"available_by":"simulate","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":"policyengine_default_for_absent_input","provision":"declared_absent_engine_input","stage":"simulate","variable":"taxable_public_pension_income"},{"available_by":"transferred","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"materialized_pool_input_surface","stage":"simulate","variable":"taxable_sep_distributions"},{"available_by":"transferred","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"materialized_pool_input_surface","stage":"simulate","variable":"unemployment_compensation"},{"available_by":"transferred","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"materialized_pool_input_surface","stage":"simulate","variable":"veterans_benefits"},{"available_by":"transferred","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"materialized_pool_input_surface","stage":"simulate","variable":"workers_compensation"}]}} +{"engine":{"package":"policyengine-us","version":"2.2.1"},"programs":{"aca":{"consumers":["assigned_aca_ptc","person_receives_aca","selected_marketplace_plan_actuarial_value","selected_marketplace_plan_premium_proxy"],"default":true,"engine_class":"data_seeded","entity":"tax_unit","value_type":"bool","variable":"takes_up_aca_if_eligible"},"basic_health_program":{"consumers":["basic_health_program_enrolled"],"default":true,"engine_class":"data_seeded","entity":"person","value_type":"bool","variable":"takes_up_basic_health_program_if_eligible"},"ca_premium_subsidy":{"consumers":["assigned_ca_premium_subsidy"],"default":true,"engine_class":"data_seeded","entity":"tax_unit","value_type":"bool","variable":"takes_up_ca_premium_subsidy_if_eligible"},"chip":{"consumers":["chip_enrolled"],"default":true,"engine_class":"data_seeded","entity":"person","value_type":"bool","variable":"takes_up_chip_if_eligible"},"co_premium_assistance":{"consumers":["assigned_co_premium_assistance"],"default":true,"engine_class":"data_seeded","entity":"tax_unit","value_type":"bool","variable":"takes_up_co_premium_assistance_if_eligible"},"dc_ptc":{"consumers":["dc_ptc"],"default":true,"engine_class":"data_seeded","entity":"tax_unit","value_type":"bool","variable":"takes_up_dc_ptc"},"early_head_start":{"consumers":["early_head_start"],"default":true,"engine_class":"data_seeded","entity":"person","value_type":"bool","variable":"takes_up_early_head_start_if_eligible"},"eitc":{"consumers":["dc_eitc_without_qualifying_child","eitc","nj_eitc","ok_federal_eitc","wa_working_families_tax_credit","wa_working_families_tax_credit_age_expansion_eligible"],"default":true,"engine_class":"data_seeded","entity":"tax_unit","value_type":"bool","variable":"takes_up_eitc"},"head_start":{"consumers":["head_start"],"default":true,"engine_class":"data_seeded","entity":"person","value_type":"bool","variable":"takes_up_head_start_if_eligible"},"housing_assistance":{"consumers":["housing_assistance"],"default":true,"engine_class":"data_seeded","entity":"spm_unit","value_type":"bool","variable":"takes_up_housing_assistance_if_eligible"},"medicaid":{"consumers":["medicaid_enrolled"],"default":true,"engine_class":"data_seeded","entity":"person","value_type":"bool","variable":"takes_up_medicaid_if_eligible"},"medicare":{"consumers":["medicare_enrolled"],"default":true,"engine_class":"data_seeded","entity":"person","value_type":"bool","variable":"takes_up_medicare_if_eligible"},"nm_premium_assistance":{"consumers":["assigned_nm_premium_assistance"],"default":true,"engine_class":"data_seeded","entity":"tax_unit","value_type":"bool","variable":"takes_up_nm_premium_assistance_if_eligible"},"snap":{"consumers":["snap"],"default":true,"engine_class":"data_seeded","entity":"spm_unit","value_type":"bool","variable":"takes_up_snap_if_eligible"},"ssi":{"consumers":["ca_sbd_general_relief_receives_other_cash_assistance","ssi"],"default":true,"engine_class":"data_seeded","entity":"person","value_type":"bool","variable":"takes_up_ssi_if_eligible"},"tanf":{"consumers":["ca_calworks_child_care_eligible","tanf"],"default":true,"engine_class":"data_seeded","entity":"spm_unit","value_type":"bool","variable":"takes_up_tanf_if_eligible"},"wic":{"consumers":["wic"],"default":true,"engine_class":"data_seeded","entity":"person","value_type":"bool","variable":"takes_up_wic_if_eligible"}},"remaining_stage_input_manifest":{"receipt":{"consumer_counts":{"PolicyEngineUSEngine.materialize":12,"_complete_schedule_d_input":5,"_simulation_projection":926,"prepare_stacked_tail_derivation":2,"seed_multispine_pool_inputs":17,"ssi_static_dependency_closure":54,"with_us_local_tax_inputs":5,"with_us_qbi_input_reconciliation":27,"with_us_take_up_inputs":16},"engine_input_projection_contract":{"default_count":925,"defaults_sha256":"f938af6506623f453ca55922cf4a8ba6443d5f780f85e4381b777083a90396a0","engine_version_ref":{"kind":"engine_abi_lock","pointer":"/engine/version"},"input_count":926,"sha256":"cefb137f164c6629589a887bbb56831ebc463cd46909a72ead4dbe0557961e61"},"entry_count":1064,"manifest_sha256":"92cad0dc6283e463b74cec5137196d4db4e29b34cb87c0718c6c2f669cf99915","schema_version":1,"sha256":"b887dbba92442fd6aa005daad0b9099eb4b8269871adf31a69169244e291dc0e","ssi_dependency_contract":{"edge_count":187,"engine_version_ref":{"kind":"engine_abi_lock","pointer":"/engine/version"},"formula_node_count":63,"input_leaf_count":54,"root":"ssi","sha256":"200ca39e784511e9ede685261f5e0840198ec2b9c4292a522c0fc504c535b31c"},"stage_counts":{"derive":39,"seed":33,"simulate":992}},"rows":[{"available_by":"transferred","consumer":"_complete_schedule_d_input","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"pool_input_surface:puf_tax_itemization","stage":"derive","variable":"long_term_capital_gains_before_response"},{"available_by":"transferred","consumer":"_complete_schedule_d_input","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"pool_input_surface:puf_tax_itemization","stage":"derive","variable":"non_sch_d_capital_gains"},{"available_by":"assembled","consumer":"_complete_schedule_d_input","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"frame_membership","stage":"derive","variable":"person_tax_unit_id"},{"available_by":"transferred","consumer":"_complete_schedule_d_input","entity":"person","execution_scope":"whole_pool","fallback":"derive_from_finite_transferred_parents","provision":"optional_transferred_or_schedule_d_derived","stage":"derive","variable":"schedule_d_capital_gain_distributions"},{"available_by":"assembled","consumer":"_complete_schedule_d_input","entity":"tax_unit","execution_scope":"whole_pool","fallback":null,"provision":"frame_entity_id","stage":"derive","variable":"tax_unit_id"},{"available_by":"assembled","consumer":"prepare_stacked_tail_derivation","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"assembly_support_provenance","stage":"derive","variable":"person_support_clone_index"},{"available_by":"transferred","consumer":"prepare_stacked_tail_derivation","entity":"person","execution_scope":"clone_2","fallback":"absent_or_cleared_then_schedule_d_derived","provision":"optional_existing_derived_leaf","stage":"derive","variable":"schedule_d_capital_gain_distributions"},{"available_by":"assembled","consumer":"with_us_local_tax_inputs","entity":"household","execution_scope":"whole_pool","fallback":null,"provision":"frame_household_weight","stage":"derive","variable":""},{"available_by":"assembled","consumer":"with_us_local_tax_inputs","entity":"household","execution_scope":"whole_pool","fallback":null,"provision":"frame_entity_id","stage":"derive","variable":"household_id"},{"available_by":"transferred","consumer":"with_us_local_tax_inputs","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"pool_input_surface:primary_puf_qrf_nontransfer","stage":"derive","variable":"employment_income_before_lsr"},{"available_by":"assembled","consumer":"with_us_local_tax_inputs","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"geography_derived_jurisdiction_input","stage":"derive","variable":"pa_philadelphia_wage_tax_resident"},{"available_by":"assembled","consumer":"with_us_local_tax_inputs","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"frame_membership","stage":"derive","variable":"person_household_id"},{"available_by":"assembled","consumer":"with_us_qbi_input_reconciliation","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"assembled_raw_acs_source_authority","stage":"derive","variable":"SEMP"},{"available_by":"assembled","consumer":"with_us_qbi_input_reconciliation","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"assembled_native_person_input","stage":"derive","variable":"age"},{"available_by":"transferred","consumer":"with_us_qbi_input_reconciliation","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"pool_input_surface:puf_tax_itemization","stage":"derive","variable":"business_is_sstb"},{"available_by":"transferred","consumer":"with_us_qbi_input_reconciliation","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"pool_input_surface:puf_tax_itemization","stage":"derive","variable":"estate_income"},{"available_by":"transferred","consumer":"with_us_qbi_input_reconciliation","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"pool_input_surface:puf_tax_itemization","stage":"derive","variable":"estate_income_would_be_qualified"},{"available_by":"transferred","consumer":"with_us_qbi_input_reconciliation","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"pool_input_surface:puf_tax_itemization","stage":"derive","variable":"farm_operations_income_would_be_qualified"},{"available_by":"transferred","consumer":"with_us_qbi_input_reconciliation","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"pool_input_surface:puf_tax_itemization","stage":"derive","variable":"farm_rent_income_would_be_qualified"},{"available_by":"transferred","consumer":"with_us_qbi_input_reconciliation","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"pool_input_surface:puf_tax_itemization","stage":"derive","variable":"non_qualified_dividend_income"},{"available_by":"transferred","consumer":"with_us_qbi_input_reconciliation","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"pool_input_surface:puf_tax_itemization","stage":"derive","variable":"partnership_income"},{"available_by":"transferred","consumer":"with_us_qbi_input_reconciliation","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"pool_input_surface:puf_tax_itemization","stage":"derive","variable":"partnership_s_corp_income_would_be_qualified"},{"available_by":"assembled","consumer":"with_us_qbi_input_reconciliation","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"frame_entity_id","stage":"derive","variable":"person_id"},{"available_by":"assembled","consumer":"with_us_qbi_input_reconciliation","entity":"person","execution_scope":"whole_pool","fallback":"person_id_for_unstacked_lineage_digest","provision":"assembly_support_source_identity","stage":"derive","variable":"person_source_id"},{"available_by":"assembled","consumer":"with_us_qbi_input_reconciliation","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"assembly_support_provenance","stage":"derive","variable":"person_support_channel"},{"available_by":"assembled","consumer":"with_us_qbi_input_reconciliation","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"assembly_support_provenance","stage":"derive","variable":"person_support_clone_index"},{"available_by":"assembled","consumer":"with_us_qbi_input_reconciliation","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"frame_membership","stage":"derive","variable":"person_tax_unit_id"},{"available_by":"transferred","consumer":"with_us_qbi_input_reconciliation","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"pool_input_surface:puf_tax_itemization","stage":"derive","variable":"qualified_bdc_income"},{"available_by":"transferred","consumer":"with_us_qbi_input_reconciliation","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"pool_input_surface:puf_tax_itemization","stage":"derive","variable":"qualified_reit_and_ptp_income"},{"available_by":"transferred","consumer":"with_us_qbi_input_reconciliation","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"pool_input_surface:puf_tax_itemization","stage":"derive","variable":"rental_income_would_be_qualified"},{"available_by":"transferred","consumer":"with_us_qbi_input_reconciliation","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"pool_input_surface:puf_tax_itemization","stage":"derive","variable":"s_corp_income"},{"available_by":"transferred","consumer":"with_us_qbi_input_reconciliation","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"pool_input_surface:primary_puf_qrf_nontransfer","stage":"derive","variable":"self_employment_income_before_lsr"},{"available_by":"transferred","consumer":"with_us_qbi_input_reconciliation","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"pool_input_surface:puf_tax_itemization","stage":"derive","variable":"self_employment_income_would_be_qualified"},{"available_by":"transferred","consumer":"with_us_qbi_input_reconciliation","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"pool_input_surface:puf_tax_itemization","stage":"derive","variable":"sstb_self_employment_income_before_lsr"},{"available_by":"transferred","consumer":"with_us_qbi_input_reconciliation","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"pool_input_surface:puf_tax_itemization","stage":"derive","variable":"sstb_self_employment_income_would_be_qualified"},{"available_by":"transferred","consumer":"with_us_qbi_input_reconciliation","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"pool_input_surface:puf_tax_itemization","stage":"derive","variable":"sstb_unadjusted_basis_qualified_property"},{"available_by":"transferred","consumer":"with_us_qbi_input_reconciliation","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"pool_input_surface:puf_tax_itemization","stage":"derive","variable":"sstb_w2_wages_from_qualified_business"},{"available_by":"transferred","consumer":"with_us_qbi_input_reconciliation","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"pool_input_surface:puf_tax_itemization","stage":"derive","variable":"unadjusted_basis_qualified_property"},{"available_by":"transferred","consumer":"with_us_qbi_input_reconciliation","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"pool_input_surface:puf_tax_itemization","stage":"derive","variable":"w2_wages_from_qualified_business"},{"available_by":"seeded","consumer":"seed_multispine_pool_inputs","entity":"person","execution_scope":"whole_pool","fallback":"checked_take_up_contract_engine_default","provision":"preserved_input_or_disclosed_engine_default","stage":"seed","variable":"takes_up_basic_health_program_if_eligible"},{"available_by":"seeded","consumer":"seed_multispine_pool_inputs","entity":"person","execution_scope":"whole_pool","fallback":"checked_take_up_contract_engine_default","provision":"preserved_input_or_disclosed_engine_default","stage":"seed","variable":"takes_up_chip_if_eligible"},{"available_by":"seeded","consumer":"seed_multispine_pool_inputs","entity":"person","execution_scope":"whole_pool","fallback":"checked_take_up_contract_engine_default","provision":"preserved_input_or_disclosed_engine_default","stage":"seed","variable":"takes_up_early_head_start_if_eligible"},{"available_by":"seeded","consumer":"seed_multispine_pool_inputs","entity":"person","execution_scope":"whole_pool","fallback":"checked_take_up_contract_engine_default","provision":"preserved_input_or_disclosed_engine_default","stage":"seed","variable":"takes_up_head_start_if_eligible"},{"available_by":"seeded","consumer":"seed_multispine_pool_inputs","entity":"person","execution_scope":"whole_pool","fallback":"checked_take_up_contract_engine_default","provision":"preserved_input_or_disclosed_engine_default","stage":"seed","variable":"takes_up_medicaid_if_eligible"},{"available_by":"transferred","consumer":"seed_multispine_pool_inputs","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"transferred_or_preserved_input","stage":"seed","variable":"takes_up_medicare_if_eligible"},{"available_by":"seeded","consumer":"seed_multispine_pool_inputs","entity":"person","execution_scope":"whole_pool","fallback":"checked_take_up_contract_engine_default","provision":"preserved_input_or_disclosed_engine_default","stage":"seed","variable":"takes_up_ssi_if_eligible"},{"available_by":"transferred","consumer":"seed_multispine_pool_inputs","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"transferred_or_preserved_input","stage":"seed","variable":"takes_up_wic_if_eligible"},{"available_by":"transferred","consumer":"seed_multispine_pool_inputs","entity":"spm_unit","execution_scope":"whole_pool","fallback":null,"provision":"transferred_or_preserved_input","stage":"seed","variable":"takes_up_housing_assistance_if_eligible"},{"available_by":"seeded","consumer":"seed_multispine_pool_inputs","entity":"spm_unit","execution_scope":"whole_pool","fallback":"checked_take_up_contract_engine_default","provision":"preserved_input_or_disclosed_engine_default","stage":"seed","variable":"takes_up_snap_if_eligible"},{"available_by":"seeded","consumer":"seed_multispine_pool_inputs","entity":"spm_unit","execution_scope":"whole_pool","fallback":"sourced_seed_when_input_is_missing","provision":"administrative_seed_or_preserved_input","stage":"seed","variable":"takes_up_tanf_if_eligible"},{"available_by":"seeded","consumer":"seed_multispine_pool_inputs","entity":"tax_unit","execution_scope":"whole_pool","fallback":"checked_take_up_contract_engine_default","provision":"preserved_input_or_disclosed_engine_default","stage":"seed","variable":"takes_up_aca_if_eligible"},{"available_by":"seeded","consumer":"seed_multispine_pool_inputs","entity":"tax_unit","execution_scope":"whole_pool","fallback":"checked_take_up_contract_engine_default","provision":"preserved_input_or_disclosed_engine_default","stage":"seed","variable":"takes_up_ca_premium_subsidy_if_eligible"},{"available_by":"seeded","consumer":"seed_multispine_pool_inputs","entity":"tax_unit","execution_scope":"whole_pool","fallback":"checked_take_up_contract_engine_default","provision":"preserved_input_or_disclosed_engine_default","stage":"seed","variable":"takes_up_co_premium_assistance_if_eligible"},{"available_by":"seeded","consumer":"seed_multispine_pool_inputs","entity":"tax_unit","execution_scope":"whole_pool","fallback":"checked_take_up_contract_engine_default","provision":"preserved_input_or_disclosed_engine_default","stage":"seed","variable":"takes_up_dc_ptc"},{"available_by":"seeded","consumer":"seed_multispine_pool_inputs","entity":"tax_unit","execution_scope":"whole_pool","fallback":"sourced_seed_when_input_is_missing","provision":"administrative_seed_or_preserved_input","stage":"seed","variable":"takes_up_eitc"},{"available_by":"seeded","consumer":"seed_multispine_pool_inputs","entity":"tax_unit","execution_scope":"whole_pool","fallback":"checked_take_up_contract_engine_default","provision":"preserved_input_or_disclosed_engine_default","stage":"seed","variable":"takes_up_nm_premium_assistance_if_eligible"},{"available_by":"assembled","consumer":"with_us_take_up_inputs","entity":"family","execution_scope":"whole_pool","fallback":null,"provision":"assembly_support_source_identity","stage":"seed","variable":"family_source_id"},{"available_by":"assembled","consumer":"with_us_take_up_inputs","entity":"household","execution_scope":"whole_pool","fallback":null,"provision":"assembly_support_source_identity","stage":"seed","variable":"household_source_id"},{"available_by":"assembled","consumer":"with_us_take_up_inputs","entity":"marital_unit","execution_scope":"whole_pool","fallback":null,"provision":"assembly_support_source_identity","stage":"seed","variable":"marital_unit_source_id"},{"available_by":"assembled","consumer":"with_us_take_up_inputs","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"assembled_native_person_input","stage":"seed","variable":"age"},{"available_by":"assembled","consumer":"with_us_take_up_inputs","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"assembly_support_source_identity","stage":"seed","variable":"person_source_id"},{"available_by":"assembled","consumer":"with_us_take_up_inputs","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"frame_membership","stage":"seed","variable":"person_spm_unit_id"},{"available_by":"assembled","consumer":"with_us_take_up_inputs","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"frame_membership","stage":"seed","variable":"person_tax_unit_id"},{"available_by":"assembled","consumer":"with_us_take_up_inputs","entity":"person","execution_scope":"whole_pool","fallback":"support_source_id_then_entity_id","provision":"optional_assembled_source_identity","stage":"seed","variable":"source_household_id"},{"available_by":"assembled","consumer":"with_us_take_up_inputs","entity":"person","execution_scope":"whole_pool","fallback":"support_source_id_then_entity_id","provision":"optional_assembled_source_identity","stage":"seed","variable":"source_person_id"},{"available_by":"assembled","consumer":"with_us_take_up_inputs","entity":"person","execution_scope":"whole_pool","fallback":"support_source_id_then_entity_id","provision":"optional_assembled_source_identity","stage":"seed","variable":"source_year"},{"available_by":"assembled","consumer":"with_us_take_up_inputs","entity":"spm_unit","execution_scope":"whole_pool","fallback":null,"provision":"frame_resolve_weights_from_household_weight","stage":"seed","variable":""},{"available_by":"assembled","consumer":"with_us_take_up_inputs","entity":"spm_unit","execution_scope":"whole_pool","fallback":null,"provision":"frame_entity_id","stage":"seed","variable":"spm_unit_id"},{"available_by":"assembled","consumer":"with_us_take_up_inputs","entity":"spm_unit","execution_scope":"whole_pool","fallback":null,"provision":"assembly_support_source_identity","stage":"seed","variable":"spm_unit_source_id"},{"available_by":"assembled","consumer":"with_us_take_up_inputs","entity":"tax_unit","execution_scope":"whole_pool","fallback":null,"provision":"frame_resolve_weights_from_household_weight","stage":"seed","variable":""},{"available_by":"assembled","consumer":"with_us_take_up_inputs","entity":"tax_unit","execution_scope":"whole_pool","fallback":null,"provision":"frame_entity_id","stage":"seed","variable":"tax_unit_id"},{"available_by":"assembled","consumer":"with_us_take_up_inputs","entity":"tax_unit","execution_scope":"whole_pool","fallback":null,"provision":"assembly_support_source_identity","stage":"seed","variable":"tax_unit_source_id"},{"available_by":"assembled","consumer":"PolicyEngineUSEngine.materialize","entity":"family","execution_scope":"whole_pool","fallback":null,"provision":"frame_entity_id","stage":"simulate","variable":"family_id"},{"available_by":"assembled","consumer":"PolicyEngineUSEngine.materialize","entity":"household","execution_scope":"whole_pool","fallback":null,"provision":"frame_household_weight","stage":"simulate","variable":""},{"available_by":"assembled","consumer":"PolicyEngineUSEngine.materialize","entity":"household","execution_scope":"whole_pool","fallback":null,"provision":"frame_entity_id","stage":"simulate","variable":"household_id"},{"available_by":"assembled","consumer":"PolicyEngineUSEngine.materialize","entity":"marital_unit","execution_scope":"whole_pool","fallback":null,"provision":"frame_entity_id","stage":"simulate","variable":"marital_unit_id"},{"available_by":"assembled","consumer":"PolicyEngineUSEngine.materialize","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"frame_membership","stage":"simulate","variable":"person_family_id"},{"available_by":"assembled","consumer":"PolicyEngineUSEngine.materialize","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"frame_membership","stage":"simulate","variable":"person_household_id"},{"available_by":"assembled","consumer":"PolicyEngineUSEngine.materialize","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"frame_entity_id","stage":"simulate","variable":"person_id"},{"available_by":"assembled","consumer":"PolicyEngineUSEngine.materialize","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"frame_membership","stage":"simulate","variable":"person_marital_unit_id"},{"available_by":"assembled","consumer":"PolicyEngineUSEngine.materialize","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"frame_membership","stage":"simulate","variable":"person_spm_unit_id"},{"available_by":"assembled","consumer":"PolicyEngineUSEngine.materialize","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"frame_membership","stage":"simulate","variable":"person_tax_unit_id"},{"available_by":"assembled","consumer":"PolicyEngineUSEngine.materialize","entity":"spm_unit","execution_scope":"whole_pool","fallback":null,"provision":"frame_entity_id","stage":"simulate","variable":"spm_unit_id"},{"available_by":"assembled","consumer":"PolicyEngineUSEngine.materialize","entity":"tax_unit","execution_scope":"whole_pool","fallback":null,"provision":"frame_entity_id","stage":"simulate","variable":"tax_unit_id"},{"available_by":"assembled","consumer":"_simulation_projection","entity":"family","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"frame_structural_engine_input","stage":"simulate","variable":"family_id"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"family","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"family_weight"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ak_ssp_excluded_institutional_setting"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"auto_loan_balance"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"auto_loan_interest"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"average_home_energy_use_in_state"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"bedrooms"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"block_geoid"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"cbo_corporate_income_tax"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"cbo_excise_tax"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"cbsa_code"},{"available_by":"assembled","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"preserved_stacked_engine_input","stage":"simulate","variable":"congressional_district_geoid"},{"available_by":"assembled","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"preserved_stacked_engine_input","stage":"simulate","variable":"county_fips"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ct_tfa_region"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"current_home_energy_use"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"de_ssp_living_arrangement"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"household_business_assets_debt"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"household_business_assets_equity"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"household_business_assets_value"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"household_count"},{"available_by":"assembled","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"frame_structural_engine_input","stage":"simulate","variable":"household_id"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"household_income_ami_ratio"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"household_other_real_estate_debt"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"household_other_real_estate_equity"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"household_other_real_estate_value"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"household_rental_property_debt"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"household_rental_property_equity"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"household_rental_property_value"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"household_vehicles_debt"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"household_vehicles_equity"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"household_vehicles_owned"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"household_vehicles_value"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"household_weight"},{"available_by":"assembled","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"geography_derived_jurisdiction_input","stage":"simulate","variable":"in_denver"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_no_place_rung","provision":"unavailable_place_jurisdiction_input","stage":"simulate","variable":"in_wilmington"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_no_place_rung","provision":"unavailable_place_jurisdiction_input","stage":"simulate","variable":"in_yonkers"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_homeless"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_in_public_housing"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_non_english_speaking_home"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_on_tribal_land"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_rural"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_shared_living"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_sro"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"living_arrangements_allow_for_food_preparation"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ma_state_living_arrangement"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"net_worth"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ny_drive_clean_purchased_qualifying_vehicle"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ny_drive_clean_vehicle_cost"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ny_drive_clean_vehicle_electric_range"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"parent_has_less_than_high_school_education"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"place_fips"},{"available_by":"assembled","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_for_null","provision":"preserved_stacked_engine_input","stage":"simulate","variable":"puma"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"qualified_passenger_vehicle_loan_interest"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"sldl"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"sldu"},{"available_by":"assembled","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"preserved_stacked_engine_input","stage":"simulate","variable":"state_fips"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"tenant_pays_utilities"},{"available_by":"assembled","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"assembled_native_engine_input","stage":"simulate","variable":"tenure_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"tract_geoid"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"vtd"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"zcta"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"household","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"zip_code"},{"available_by":"assembled","consumer":"_simulation_projection","entity":"marital_unit","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"frame_structural_engine_input","stage":"simulate","variable":"marital_unit_id"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"able_contributions_person"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"adopted_this_year"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"after_school_expenses"},{"available_by":"assembled","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"assembled_native_engine_input","stage":"simulate","variable":"age"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ak_ccap_care_schedule"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ak_ccap_charged_rate"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ak_ccap_provider_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ak_resides_in_assisted_living_home"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"al_ccsp_provider_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"al_ccsp_quality_tier"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"al_level_b_care"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"al_meets_snf_criteria"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"al_receives_elderly_disabled_medicaid_waiver"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"al_ssp_care_setting"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"al_ssp_grandfathered"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"al_ssp_living_arrangement"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"al_ui_base_period_wages"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"al_ui_high_quarter_wages"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"al_ui_quarters_with_wages"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"al_ui_second_high_quarter_wages"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"al_ui_weekly_earnings"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"alimony_expense"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"alimony_income"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ambulance_expense"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"american_opportunity_credit_claimed_prior_years"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"amt_foreign_tax_credit"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ar_sra_care_type"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"attends_eligible_educational_institution_for_american_opportunity_credit"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"attends_eligible_educational_institution_for_lifetime_learning_credit"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"az_530a_distribution"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"az_ccap_provider_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"az_ccap_quality_enhanced_provider"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default","provision":"declared_deferred_null_input","stage":"simulate","variable":"bank_account_assets"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default","provision":"declared_deferred_null_input","stage":"simulate","variable":"bond_assets"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"business_is_qualified"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"business_is_sstb"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ca_calworks_child_care_factor_category"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ca_calworks_child_care_provider_category"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ca_calworks_child_care_time_category"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ca_calworks_child_care_welfare_to_work"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ca_cvrp_vehicle_rebate_amount"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ca_in_home_supportive_services"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ca_in_medical_care_facility"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ca_state_disability_insurance"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"care_and_support_costs"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"care_and_support_payments_from_tax_filer"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"casualty_loss"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"charitable_cash_donations"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"charitable_non_cash_donations"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"charitable_non_cash_donations_non_50_pct_orgs"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"child_support_expense"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"child_support_received"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"childcare_attending_days_per_month"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"childcare_days_per_week"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"childcare_hours_per_day"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"childcare_provider_type_group"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"claimed_as_dependent_on_another_return"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"claimed_ma_covid_19_essential_employee_premium_pay_program_2020"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"co_care_worker_credit_eligible_care_worker"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_no_work_location_source","provision":"unavailable_work_location_input","stage":"simulate","variable":"co_denver_employee_occupational_privilege_tax_months"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"co_glendale_employee_occupational_privilege_tax_months"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"co_greenwood_village_employee_occupational_privilege_tax_months"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"co_quality_rating_of_child_care_facility"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"co_sheridan_employee_occupational_privilege_tax_months"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"cost_of_attending_college"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"count_529_contribution_beneficiaries"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"cps_race"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"csrs_retirement_pay"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ct_c4k_provider_accredited"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ct_c4k_provider_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ct_ssp_has_therapeutic_diet"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ct_ssp_lives_with_others"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ct_ssp_resides_in_boarding_home"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"current_pregnancy_month"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"dc_ccsp_childcare_provider_category"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"dc_ccsp_schedule_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"dc_ossp_facility_size"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"dc_ossp_in_adult_foster_care"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"de_additions"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"de_poc_provider_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_no_work_location_source","provision":"unavailable_work_location_input","stage":"simulate","variable":"de_wilmington_nonresident_earnings"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"debt_relief"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"dependent_care_employer_benefits"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"detailed_industry_recode"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"detailed_occupation_recode"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"disability_benefits"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"divorce_year"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"e00700"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"e01100"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"e01200"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"e02000"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"e03220"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"e03230"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"e03240"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"e03270"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"e03290"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"e03300"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"e03400"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"e03500"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"e07240"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"e07260"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"e07300"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"e09700"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"e09800"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"e09900"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"e11200"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"e18500"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"e19200"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"e19800"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"e20100"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"e20400"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"e24515"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"e24518"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"e26270"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"e27200"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"e32800"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"e58990"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"e62900"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"e87521"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"e87530"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"early_withdrawal_penalty"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"educational_assistance"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"educator_expense"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"employer_contribution_to_health_insurance_premiums_category"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"employer_headcount"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"employer_ny_mctmt_zone_1_quarterly_payroll_expense"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"employer_ny_mctmt_zone_2_quarterly_payroll_expense"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"employer_quarterly_payroll_expense_override"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"employer_sponsored_insurance_premiums"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"employer_state_unemployment_tax_rate_override"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"employer_total_co_denver_occupational_privilege_tax_employee_months"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"employer_total_co_denver_occupational_privilege_tax_owner_months"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"employer_total_co_glendale_occupational_privilege_tax_employee_months"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"employer_total_co_glendale_occupational_privilege_tax_owner_months"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"employer_total_co_greenwood_village_occupational_privilege_tax_employee_months"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"employer_total_co_greenwood_village_occupational_privilege_tax_owner_months"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"employer_total_co_sheridan_occupational_privilege_tax_employee_months"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"employer_total_mo_st_louis_payroll_expense"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"employer_total_or_lane_transit_district_taxable_wages"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"employer_total_or_trimet_taxable_wages"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"employer_total_payroll_tax_gross_wages"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"employer_total_taxable_earnings_for_federal_unemployment_tax"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"employer_total_taxable_earnings_for_social_security"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"employer_total_taxable_earnings_for_state_unemployment_tax"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"employer_total_wa_seattle_payroll_expense_current_year_total"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"employer_total_wa_seattle_payroll_expense_lower_band_taxable_payroll"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"employer_total_wa_seattle_payroll_expense_prior_year_total"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"employer_total_wa_seattle_payroll_expense_upper_band_taxable_payroll"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"employer_total_wa_seattle_social_housing_excess_compensation"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"employment_income_before_lsr"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"er_visit_expense"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"estate_income"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"estate_income_would_be_qualified"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"excess_withheld_payroll_tax"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"farm_income"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"farm_operations_income"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"farm_operations_income_would_be_qualified"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"farm_rent_income"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"farm_rent_income_would_be_qualified"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"financial_assistance"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"fl_oss_community_care_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"fl_oss_program_track"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"fl_sr_provider_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"four_year_college_student"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"fsla_overtime_premium"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ga_caps_care_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ga_caps_provider_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ga_caps_quality_rating"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ga_ssp_in_nursing_home_or_institutionalized_hospice"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"gambling_losses"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"gambling_winnings"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"general_assistance"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"general_business_credit"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"gi_cash_assistance"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"has_american_opportunity_credit_1098_t_or_exception"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"has_american_opportunity_credit_institution_ein"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"has_applied_for_unemployment_compensation"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"has_bcc_qualifying_coverage"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"has_champva_health_coverage_at_interview"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"has_chip_health_coverage_at_interview"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"has_completed_first_four_years_of_postsecondary_education"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"has_developmental_delay"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"has_emergency_medical_condition"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"has_esi"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"has_felony_drug_conviction"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"has_health_coverage_other_than_chip"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"has_indian_health_service_coverage_at_interview"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"has_individualized_education_program"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"has_lifetime_learning_credit_1098_t_or_exception"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"has_long_distance_medical_travel_for_medicaid_ce"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"has_marketplace_health_coverage_at_interview"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"has_medicaid_health_coverage_at_interview"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"has_never_worked"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"has_no_prior_formal_early_learning"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"has_non_marketplace_direct_purchase_health_coverage_at_interview"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"has_other_means_tested_health_coverage_at_interview"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"has_tricare_health_coverage_at_interview"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"has_va_health_coverage_at_interview"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"health_insurance_premiums"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"health_insurance_premiums_without_medicare_part_b"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"health_savings_account_payroll_contributions"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"heating_expense_person"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"hi_ccap_provider_category"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"hi_oss_care_facility_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"home_equity"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"home_is_on_agricultural_land"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"home_mortgage_interest"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"hourly_wage"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"hours_worked_last_week"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ia_cca_provider_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ia_cca_quality_rating"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"id_aabd_living_arrangement"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"id_iccp_provider_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"il_aabd_is_bedfast"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"il_ccap_base_day_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"illicit_income"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"imaging_expense"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"immigration_status_str"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"in_ccdf_provider_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"in_ccdf_ptq_level"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"in_out_of_home_care_facility"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"in_resides_in_licensed_residential_facility"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"in_resides_in_unlicensed_residential_facility"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"inpatient_expense"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"investment_expenses"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"investment_in_529_plan_indv"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"investment_income_elected_form_4952"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"investment_interest_expense"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_american_indian_or_alaska_native_for_medicaid_ce"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"is_blind"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_born_outside_us"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_breastfeeding"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_complying_with_tanf_work_requirements"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_computer_scientist"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_deaf"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_deceased"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"is_disabled"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_english_proficient"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"is_enrolled_at_least_half_time_for_american_opportunity_credit"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_enrolled_in_ccdf"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_enrolled_in_head_start"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_executive_administrative_professional"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_farmer_fisher"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_federal_work_study_participant"},{"available_by":"assembled","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"assembled_native_engine_input","stage":"simulate","variable":"is_female"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"is_full_time_college_student"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_fully_disabled_service_connected_veteran"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_grandparent_of_filer_or_spouse"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_hispanic"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_hospitalized_for_medicaid_ce"},{"available_by":"assembled","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"assembled_native_engine_input","stage":"simulate","variable":"is_household_head"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_household_spouse"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_in_adult_residential_care"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_in_foster_care"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_in_foster_care_group_home"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_in_k12_nonpublic_school"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_in_medicaid_community_engagement_treatment_program"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_in_medicaid_facility"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_in_residential_care_facility"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_in_secondary_school"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_in_substance_use_treatment_program"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_in_work_program"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"is_incapable_of_self_care"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_incarcerated"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_medicaid_1115_mec_adult"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_medicaid_community_engagement_seasonal_worker"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_medically_frail_or_has_special_medical_needs_for_medicaid_ce"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_migratory_child"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_military"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_paid_hourly"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_parent_of_filer_or_spouse"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_part_time_college_student"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_permanently_and_totally_disabled"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_permanently_disabled_veteran"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"is_pregnant"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"is_pursuing_credential_for_american_opportunity_credit"},{"available_by":"assembled","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"preserved_stacked_engine_input","stage":"simulate","variable":"is_related_to_head_or_spouse"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_runaway_child"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_self_employed"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"is_separated"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_severely_disabled"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_snap_abawd_discretionary_exempt"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_snap_abawd_indian_exempt"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_snap_employment_training_student"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_snap_work_incentive_student"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_snap_work_program_participant"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_snap_work_registration_noncompliant"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_snap_workfare_participant"},{"available_by":"release","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"refuse_null_if_present_no_default","provision":"unprovisioned_source_input","stage":"simulate","variable":"is_spm_independent_minor_role"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_surviving_child_of_disabled_veteran"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"is_surviving_spouse"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_surviving_spouse_of_disabled_veteran"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_tafdc_related_to_head_or_spouse"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_union_member_or_covered"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_unmarried_partner_of_household_head"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_wccc_enrolled"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_wic_at_nutritional_risk"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_wic_fully_breastfeeding"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"keogh_distributions"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ks_ccap_provider_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ky_additions"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ky_ccap_provider_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ky_service_credit_months_post_1997"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ky_service_credit_months_pre_1998"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ky_ssp_care_receivers"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ky_ssp_category"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"la_ccap_provider_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"la_quality_rating_of_child_care_facility"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"la_receives_blind_exemption"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"lab_expense"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"life_insurance_benefits"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"long_term_capital_gains_basis"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"long_term_capital_gains_before_response"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"long_term_capital_gains_on_assets_eligible_for_vt_exclusion"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"long_term_capital_gains_on_collectibles"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"long_term_capital_gains_on_small_business_stock"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"long_term_capital_gains_years_held"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"long_term_health_insurance_premiums"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ma_ccfa_care_provider_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ma_ccfa_is_in_relatives_home_care"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ma_ccfa_schedule_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"major_industry_recode"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"md_ccs_provider_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"md_paa_living_arrangement"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"md_paa_pending_federal_benefit"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"me_ccap_provider_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"me_ssp_living_arrangement"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"medicaid_claiming_tax_unit_id"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"medicaid_community_engagement_community_service_hours"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"medicaid_community_engagement_less_than_half_time_education_hours"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"medicaid_community_engagement_six_month_average_income"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"medicaid_community_engagement_work_program_hours"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"medicaid_tax_dependent_exception_non_custodial_parent"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"medicare_part_b_premiums_reported"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"medicare_quarters_of_coverage"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"meets_ssi_disability_criteria"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"mi_ccap_exempt_level"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"mi_ccap_provider_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"mi_ccap_star_rating"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"mi_ssp_living_arrangement"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"military_basic_pay"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"military_retirement_pay"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"military_retirement_pay_survivors"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"military_service_income"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"miscellaneous_income"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"mn_ccap_provider_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"mn_ccap_quality_rating"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"mn_msa_has_guardian"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"mn_msa_housing_assistance_eligible"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"mn_msa_living_arrangement"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"mn_msa_uses_representative_payee"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"mo_ccs_provider_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"mo_kansas_city_earnings_tax_taxable_earnings"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"mo_snc_facility_base_charge"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"mo_ssp_living_arrangement"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"mo_st_louis_earnings_tax_credit"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"mo_st_louis_earnings_tax_taxable_earnings"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"months_receiving_social_security_disability"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ms_ccpp_provider_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"mt_ccap_care_time"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"mt_ccap_provider_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"nd_ccap_provider_qris_step"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"nd_ccap_provider_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ne_aabd_alternate_living_arrangement"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ne_child_care_subsidy_provider_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ne_child_care_subsidy_quality_tier"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ne_school_readiness_credit_child_care_worker_rating"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ne_school_readiness_credit_eligible_worker"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"never_eligible_for_social_security_benefits"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"nh_ccap_provider_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"nj_ccap_grow_nj_kids_rating"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"nj_ccap_provider_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"nj_unemployment_insurance_base_period_wages"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"nj_unemployment_insurance_base_period_weeks"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"nj_unemployment_insurance_qualifying_dependents"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"nj_unemployment_insurance_spouse_employed_when_claim_established"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"nj_unemployment_insurance_weekly_gross_wages"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"nj_unemployment_insurance_weeks_claimed"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"nj_unemployment_insurance_working_less_than_full_time"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"nm_ccap_focus_level"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"nm_ccap_non_traditional_hours"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"nm_ccap_provider_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"non_public_school_tuition"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"non_qualified_dividend_income"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"non_sch_d_capital_gains"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"nv_ccdp_provider_star_rating"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"nv_ccdp_provider_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ny_ui_base_period_wages"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ny_ui_gross_weekly_earnings"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ny_ui_high_quarter_wages"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ny_ui_quarters_with_wages"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ny_ui_second_high_quarter_wages"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ny_ui_weekly_hours_worked"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_no_work_location_source","provision":"unavailable_work_location_input","stage":"simulate","variable":"ny_yonkers_nonresident_earnings"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"offered_aca_disqualifying_esi"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"oh_bonus_depreciation_add_back"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"oh_ccap_has_special_accommodations"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"oh_ccap_is_accredited"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"oh_ccap_non_traditional_hours"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"oh_ccap_owf_transitional"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"oh_ccap_provider_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"oh_ccap_quality_tier"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"oh_educator_expense_deduction_person"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"oh_federal_conformity_deductions"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"oh_has_taken_oh_lump_sum_credits"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"oh_homestead_exemption_qualifying_surviving_spouse"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"oh_other_add_backs"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"oh_section_179_expense_add_back"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"oh_uniformed_services_retirement_income_deduction"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ok_ccs_provider_setting"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ok_ccs_star_level"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ok_ui_base_period_taxable_wages"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ok_ui_base_period_total_wages"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ok_ui_gross_weekly_earnings"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ok_ui_high_quarter_taxable_wages"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ok_ui_high_quarter_total_wages"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"or_erdc_provider_area"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"or_erdc_provider_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"other_credits"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"other_health_insurance_premiums"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"other_medical_expenses"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"outpatient_expense"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"over_the_counter_health_expenses"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"own_children_in_household"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"p08000"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"pa_ccw_provider_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_no_refund_claim_source","provision":"unavailable_refund_claim_input","stage":"simulate","variable":"pa_philadelphia_wage_tax_reduced_rate_eligible"},{"available_by":"assembled","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"geography_derived_jurisdiction_input","stage":"simulate","variable":"pa_philadelphia_wage_tax_resident"},{"available_by":"derived","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"nonresident_work_location_unavailable_engine_default","provision":"derived_resident_wage_tax_input","stage":"simulate","variable":"pa_philadelphia_wage_tax_taxable_wages"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"pa_uc_base_year_wages"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"pa_uc_credit_weeks"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"pa_uc_gross_weekly_earnings"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"pa_uc_highest_quarter_wages"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"partnership_income"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"partnership_s_corp_income_would_be_qualified"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"partnership_self_employment_net_earnings"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"passive_partnership_s_corp_income"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"pell_grant_countable_assets"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"pell_grant_dependent_available_income"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"pell_grant_dependent_other_allowances"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"pell_grant_head_allowances"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"pell_grant_months_in_school"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"pension_survivors"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"person_count"},{"available_by":"assembled","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"frame_structural_engine_input","stage":"simulate","variable":"person_family_id"},{"available_by":"assembled","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"frame_structural_engine_input","stage":"simulate","variable":"person_household_id"},{"available_by":"assembled","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"frame_structural_engine_input","stage":"simulate","variable":"person_marital_unit_id"},{"available_by":"assembled","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"frame_structural_engine_input","stage":"simulate","variable":"person_spm_unit_id"},{"available_by":"assembled","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"frame_structural_engine_input","stage":"simulate","variable":"person_tax_unit_id"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"personal_property"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"pfml_benefits"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"physician_services_expense"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"pre_subsidy_care_expenses"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"pre_subsidy_rent"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"pre_subsidy_transportation_expense"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"pre_tax_health_insurance_premiums"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"prescription_expense"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"previous_year_income_available"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"primary_residence_value"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"prior_year_minimum_tax_credit"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"qualified_adoption_assistance_expense"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"qualified_bdc_income"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"qualified_dividend_income"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"qualified_reit_and_ptp_income"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"qualified_tuition_expenses"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"railroad_benefits"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"real_estate_taxes"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"receives_medicaid"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"receives_or_needs_protective_services"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"receives_ssi"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"receives_wic"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"rental_income"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"rental_income_would_be_qualified"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"retired_from_federal_government"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"retired_from_ky_government"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"retired_on_total_disability"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"retirement_benefits_from_ss_exempt_employment"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ri_ccap_provider_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ri_ccap_star_rating"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ri_ccap_step_rating"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"roth_401k_contributions_desired"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"roth_403b_contributions_desired"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"roth_ira_contributions_desired"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"s_corp_income"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"salt_refund_income"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"sc_ccap_provider_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"sc_ccap_quality_level"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"sc_ccap_registered_quality_level"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"sc_ccap_second_child_discount_rate"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"sc_tuition_credit"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"sc_tuition_credit_eligible"},{"available_by":"derived","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"derived_schedule_d_input","stage":"simulate","variable":"schedule_d_capital_gain_distributions"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"sd_cca_provider_type"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"self_employed_pension_contributions_desired"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"self_employment_income_before_lsr"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"self_employment_income_last_year"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"self_employment_income_would_be_qualified"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"short_term_capital_gains"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"social_security_dependents"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"social_security_disability"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"social_security_retirement"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"social_security_survivors"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ss_aime_input"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ssi_lives_in_another_persons_household"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ssi_lives_in_medical_treatment_facility"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ssi_medicaid_pays_majority_of_care"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ssi_others_pay_all_meals"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ssi_qualifying_quarters_earnings"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ssi_receives_food_from_others"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ssi_receives_outside_shelter_support"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ssi_receives_shelter_from_others_in_household"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_for_null","provision":"preserved_stacked_engine_input","stage":"simulate","variable":"ssi_reported"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ssi_shelter_support_value"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"ssn_card_type"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"sstb_self_employment_income_before_lsr"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"sstb_self_employment_income_would_be_qualified"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"sstb_unadjusted_basis_qualified_property"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"sstb_w2_wages_from_qualified_business"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"state_or_federal_salary"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default","provision":"declared_deferred_null_input","stage":"simulate","variable":"stock_assets"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"strike_benefits"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"student_loan_interest"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"survivor_benefits"},{"available_by":"seeded","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"seed_stage_program_contract","stage":"simulate","variable":"takes_up_basic_health_program_if_eligible"},{"available_by":"seeded","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"seed_stage_program_contract","stage":"simulate","variable":"takes_up_chip_if_eligible"},{"available_by":"seeded","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"seed_stage_program_contract","stage":"simulate","variable":"takes_up_early_head_start_if_eligible"},{"available_by":"seeded","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"seed_stage_program_contract","stage":"simulate","variable":"takes_up_head_start_if_eligible"},{"available_by":"seeded","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"seed_stage_program_contract","stage":"simulate","variable":"takes_up_medicaid_if_eligible"},{"available_by":"seeded","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"seed_stage_program_contract","stage":"simulate","variable":"takes_up_medicare_if_eligible"},{"available_by":"seeded","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"seed_stage_program_contract","stage":"simulate","variable":"takes_up_ssi_if_eligible"},{"available_by":"seeded","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"seed_stage_program_contract","stage":"simulate","variable":"takes_up_wic_if_eligible"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"tax_exempt_401k_distributions"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"tax_exempt_403b_distributions"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"tax_exempt_interest_income"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"tax_exempt_ira_distributions"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"tax_exempt_private_pension_income"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"tax_exempt_public_pension_income"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"tax_exempt_sep_distributions"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"tax_preparation_fees"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"taxable_401k_distributions"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"taxable_403b_distributions"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"taxable_estate_value"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"taxable_federal_pension_income"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"taxable_interest_income"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"taxable_ira_distributions"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"taxable_private_pension_income"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"taxable_public_pension_income"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"taxable_roth_conversions"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"taxable_sep_distributions"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"technical_institution_student"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"tip_income"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"tn_ccap_provider_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"tn_ccap_qris_tier"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"total_disability_payments"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"traditional_401k_contributions_desired"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"traditional_403b_contributions_desired"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"traditional_ira_contributions_desired"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"treasury_tipped_occupation_code"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"tx_ccs_care_schedule"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"tx_ccs_provider_rating"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"tx_ccs_provider_type"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"unadjusted_basis_qualified_property"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"under_12_months_postpartum"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"under_60_days_postpartum"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"unemployment_compensation"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"unreimbursed_business_employee_expenses"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"urgent_care_expense"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"us_bonds_for_higher_ed"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"us_govt_interest_person"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"use_reported_ssi"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ut_ccap_provider_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ut_ui_base_period_wages"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ut_ui_gross_weekly_earnings"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ut_ui_high_quarter_wages"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ut_ui_quarters_with_wages"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ut_ui_weekly_hours_worked"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ut_ui_weeks_unemployed"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"va_ccsp_is_full_day"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"va_ccsp_provider_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"va_educator_expenses"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"veterans_benefits"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"vt_ccfap_provider_type"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"w2_wages_from_qualified_business"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"wa_eceap_slot_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"wa_pfml_average_weekly_wage_override"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"wa_pfml_leave_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"wa_pfml_qualifying_period_hours_worked"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"wa_wccc_day_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"wa_wccc_provider_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"was_in_foster_care"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"was_recently_incarcerated_for_medicaid_ce"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"weekly_hours_worked_before_lsr"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"weekly_snap_work_program_hours"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"weeks_unemployed"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"wi_shares_provider_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"wic_breastfeeding_infant_count"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"wic_infant_feeding_category"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"worked_last_year"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"workers_compensation"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"wv_ccap_non_traditional_hours"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"wv_ccap_provider_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"wv_ccap_quality_tier"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"wy_ccap_provider_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"year_deceased"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"year_of_retirement"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"years_in_military"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"person","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"years_since_us_entry"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"al_ccsp_enrolled"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ar_months_since_tea_exit"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ar_was_tea_recipient"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"az_ccap_enrolled"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"bottled_gas_expense"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"broadband_cost"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ca_riv_share_eligible_for_emergency_payment"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ca_scc_general_assistance_living_arrangement"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ca_sf_caap_clothing_provided_in_kind"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ca_sf_caap_food_provided_in_kind"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ca_sf_caap_housing_provided_in_kind"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ca_sf_caap_is_recipient"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ca_sf_caap_utilities_provided_in_kind"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ca_smc_general_assistance_living_arrangement"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"co_ccap_is_in_entry_process"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"co_ccap_is_in_re_determination_process"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"coal_expense"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"cooking_fuel_expense"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"dc_ccsp_enrolled"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"dc_liheap_housing_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"de_poc_enrolled"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"enrolled_in_ebb"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"experienced_covid_income_loss"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"fdpir"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"fl_sr_enrolled"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"fuel_oil_expense"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ga_caps_enrolled"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"gas_expense"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"has_cooling_expense"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"head_start_applies_housing_cost_adjustment"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"head_start_uses_discretionary_income_limit"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"heat_expense_included_in_rent"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"heating_cooling_expense"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"heating_expense_last_year"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"heating_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"homeowners_association_fees"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"homeowners_insurance"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"housing_designated_welfare"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ia_cca_enrolled"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"id_iccp_enrolled"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"il_aabd_institutional_status"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"il_aabd_vehicle_is_essential"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"il_ccap_enrolled"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"il_ccap_non_parent_relative_child_only_tanf"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"il_ccap_protective_care_override"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"il_liheap_eligible_for_crisis_assistance"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_in_ccdf_enrolled"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_nd_ccap_enrolled"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_sd_cca_enrolled"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_wi_shares_enrolled"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"la_general_relief_disability_eligible"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"la_general_relief_housing_subsidy_program_eligible"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"la_general_relief_recipient"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ma_ccfa_enrolled"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ma_eaedc_living_arrangement"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"md_ccs_enrolled"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"meets_ccdf_activity_test"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"metered_gas_expense"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"mi_ccap_enrolled"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"mn_ccap_enrolled"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"mn_ccap_registration_fee"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"mo_ccs_enrolled"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"months_since_calworks_exit"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"mortgage_payments"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"mt_ccap_enrolled"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ne_child_care_subsidy_at_redetermination"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ne_child_care_subsidy_enrolled"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"nj_ccap_enrolled"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"nm_ccap_enrolled"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"nv_ccdp_enrolled"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"oh_ccap_enrolled"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"oh_ccap_owf_basic_assistance"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"other_heating_fuel_expense"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"pa_ccw_enrolled"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"pa_ccw_has_stepparent"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"phone_cost"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"pre_subsidy_electricity_expense"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"receives_housing_assistance"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"receives_snap"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"receives_tanf"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ri_ccap_enrolled"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"sd_tanf_is_shared_living"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"sewage_expense"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"snap_self_employment_income_expense"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"spm_unit_assets"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"spm_unit_count"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"spm_unit_energy_subsidy"},{"available_by":"assembled","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"frame_structural_engine_input","stage":"simulate","variable":"spm_unit_id"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"spm_unit_net_income_reported"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"spm_unit_pre_subsidy_childcare_expenses"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"spm_unit_school_lunch_subsidy"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"spm_unit_snap"},{"available_by":"assembled","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"assembled_native_engine_input","stage":"simulate","variable":"spm_unit_tenure_type"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"spm_unit_total_income_reported"},{"available_by":"seeded","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"seed_stage_program_contract","stage":"simulate","variable":"takes_up_housing_assistance_if_eligible"},{"available_by":"seeded","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"seed_stage_program_contract","stage":"simulate","variable":"takes_up_snap_if_eligible"},{"available_by":"seeded","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"seed_stage_program_contract","stage":"simulate","variable":"takes_up_tanf_if_eligible"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"tn_ccap_enrolled"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"tn_ccap_protective_services_waiver"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"trash_expense"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"tx_ottanf_crisis_criteria"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"va_ccsp_enrolled"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"wa_show_all_cash_assistance_programs"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"was_calworks_recipient"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"water_expense"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"wood_expense"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"wy_ccap_enrolled"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"spm_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"wy_power_shelter_qualified"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"advanced_main_air_circulating_fan_expenditures"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"air_sealing_ventilation_expenditures"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"al_non_refundable_credits"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"al_refundable_credits"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"amt_form_completed"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"amt_non_agi_income"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"az_additions"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"az_charitable_contributions_to_qualifying_charitable_organizations"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"az_charitable_contributions_to_qualifying_foster_care_organizations"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"biomass_stove_boiler_expenditures"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"co_non_refundable_credits"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"co_property_tax_exemption"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"cohabitating_spouses"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ct_amt"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ct_section_179_expense_add_back"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"domestic_production_ald"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"electric_heat_pump_clothes_dryer_expenditures"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"electric_load_service_center_upgrade_expenditures"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"electric_stove_cooktop_range_or_oven_expenditures"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"electric_wiring_expenditures"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"energy_efficient_central_air_conditioner_expenditures"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"energy_efficient_door_expenditures"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"energy_efficient_insulation_expenditures"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"energy_efficient_roof_expenditures"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"energy_efficient_window_expenditures"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"excess_payroll_tax_withheld"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"first_home_mortgage_balance"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"first_home_mortgage_interest"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"first_home_mortgage_origination_year"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"foreign_earned_income_exclusion"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"foreign_tax_credit_potential"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"form_4972_lumpsum_distributions"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"fuel_cell_property_capacity"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"fuel_cell_property_expenditures"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ga_investment_in_529_plan_deduction"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ga_itemized_deductions_adjustment"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"geothermal_heat_pump_property_expenditures"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"health_savings_account_ald"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"heat_pump_expenditures"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"heat_pump_water_heater_expenditures"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"home_energy_audit_expenditures"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"id_additions"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"il_pass_through_entity_tax_credit"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"il_pass_through_withholding"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"il_schedule_m_additions"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"il_schedule_m_subtractions"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"in_bonus_depreciation_add_back"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"in_healthcare_sharing_deduction"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"in_nol"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"in_nol_add_back"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"in_oos_municipal_obligation_interest_add_back"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"in_other_add_backs"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"in_other_deductions"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"in_section_179_expense_add_back"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"in_tax_add_back"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"in_use_tax"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"investment_income_form_4952"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_barred_from_american_opportunity_credit_due_to_improper_claims"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_nonresident_alien_for_american_opportunity_credit"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"is_nonresident_alien_for_lifetime_learning_credit"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"k12_tuition_and_fees"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ks_additions"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ky_refundable_credits"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"md_total_additions"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"me_additions"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"me_affordability_payment_subtraction_reported"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"me_property_tax_fairness_credit_utilities_in_rent_amount"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"me_step_4_share_of_child_care_expenses"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"mi_non_refundable_credits"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"mn_renters_credit_property_tax_exempt"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"mn_renters_credit_qualifying_crp"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ms_charitable_contributions_to_qualifying_foster_care_organizations"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ms_refundable_credits"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"nc_additions"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"nd_refundable_credits"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"nd_renters_refund_property_tax_exempt"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ne_additions"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"new_clean_vehicle_battery_capacity"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"new_clean_vehicle_battery_components_made_in_north_america"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"new_clean_vehicle_battery_critical_minerals_extracted_in_trading_partner_country"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"new_clean_vehicle_classification"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"new_clean_vehicle_msrp"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"nh_refundable_credits"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"nj_non_refundable_credits"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"nj_senior_freeze"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"nm_additions"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"nm_non_refundable_credits"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ny_additions"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ny_qualified_geothermal_energy_system_expenditures"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ny_qualified_solar_energy_systems_equipment_expenditures"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"nyc_unincorporated_business_credit"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"oh_refundable_credits"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ok_additions"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ok_adjustments"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"or_additions"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"or_federal_pension_subtraction"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"or_tax_before_credits_in_prior_year"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"other_net_gain"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"pell_grant_primary_income"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"prior_energy_efficient_home_improvement_credits"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"prior_energy_efficient_window_credits"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"property_sales_net_capital_gain"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"puerto_rico_income"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"purchased_qualifying_new_clean_vehicle"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"purchased_qualifying_used_clean_vehicle"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"qualified_battery_storage_technology_expenditures"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"qualified_furnace_or_hot_water_boiler_expenditures"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"qualified_retirement_penalty"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"recapture_of_investment_credit"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"refundable_payroll_tax_credit"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"rent_is_shared_with_another_tax_unit"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"residential_efficiency_electrification_retrofit_energy_savings"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"residential_efficiency_electrification_retrofit_expenditures"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ri_section_179_expense_add_back"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"salt_refund_last_year"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"second_home_mortgage_balance"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"second_home_mortgage_interest"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"second_home_mortgage_origination_year"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"selected_marketplace_plan_benchmark_ratio"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"selected_marketplace_plan_category"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"separate_filer_itemizes"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"small_wind_energy_property_expenditures"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"solar_electric_property_expenditures"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"solar_water_heating_property_expenditures"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"specified_possession_income"},{"available_by":"seeded","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"seed_stage_program_contract","stage":"simulate","variable":"takes_up_aca_if_eligible"},{"available_by":"seeded","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"seed_stage_program_contract","stage":"simulate","variable":"takes_up_ca_premium_subsidy_if_eligible"},{"available_by":"seeded","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"seed_stage_program_contract","stage":"simulate","variable":"takes_up_co_premium_assistance_if_eligible"},{"available_by":"seeded","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"seed_stage_program_contract","stage":"simulate","variable":"takes_up_dc_ptc"},{"available_by":"seeded","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"seed_stage_program_contract","stage":"simulate","variable":"takes_up_eitc"},{"available_by":"seeded","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"seed_stage_program_contract","stage":"simulate","variable":"takes_up_nm_premium_assistance_if_eligible"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"tax_unit_count"},{"available_by":"assembled","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"frame_structural_engine_input","stage":"simulate","variable":"tax_unit_id"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"tax_unit_income_ami_ratio"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"tax_unit_stillborn_children"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"taxsim_pprofinc"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"taxsim_sprofinc"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"tuition_and_fees"},{"available_by":"transferred","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"ephemeral_simulation_projection_engine_default_if_present_null","provision":"materialized_pool_input_surface","stage":"simulate","variable":"unrecaptured_section_1250_gain"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"unreported_payroll_tax"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"used_clean_vehicle_sale_price"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"ut_additions"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"utilities_included_in_rent"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"va_additions"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"wa_pte_cotenant_disposable_income"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"would_file_if_eligible_for_refundable_credit"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"would_file_taxes_voluntarily"},{"available_by":"simulate","consumer":"_simulation_projection","entity":"tax_unit","execution_scope":"disposable_simulation_copy","fallback":"policyengine_default_if_absent","provision":"declared_absent_engine_input","stage":"simulate","variable":"wv_additions"},{"available_by":"assembled","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"assembled_native_person_input","stage":"simulate","variable":"age"},{"available_by":"transferred","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"materialized_pool_input_surface","stage":"simulate","variable":"alimony_income"},{"available_by":"transferred","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":"ephemeral_simulation_projection_engine_default","provision":"declared_deferred_null_input","stage":"simulate","variable":"bank_account_assets"},{"available_by":"transferred","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":"ephemeral_simulation_projection_engine_default","provision":"declared_deferred_null_input","stage":"simulate","variable":"bond_assets"},{"available_by":"transferred","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"materialized_pool_input_surface","stage":"simulate","variable":"child_support_received"},{"available_by":"transferred","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"materialized_pool_input_surface","stage":"simulate","variable":"disability_benefits"},{"available_by":"transferred","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"materialized_pool_input_surface","stage":"simulate","variable":"employment_income_before_lsr"},{"available_by":"simulate","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":"policyengine_default_for_absent_input","provision":"declared_absent_engine_input","stage":"simulate","variable":"financial_assistance"},{"available_by":"simulate","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":"policyengine_default_for_absent_input","provision":"declared_absent_engine_input","stage":"simulate","variable":"gi_cash_assistance"},{"available_by":"transferred","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"materialized_pool_input_surface","stage":"simulate","variable":"immigration_status_str"},{"available_by":"transferred","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"materialized_pool_input_surface","stage":"simulate","variable":"is_blind"},{"available_by":"transferred","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"materialized_pool_input_surface","stage":"simulate","variable":"is_full_time_college_student"},{"available_by":"transferred","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"materialized_pool_input_surface","stage":"simulate","variable":"is_separated"},{"available_by":"transferred","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"materialized_pool_input_surface","stage":"simulate","variable":"keogh_distributions"},{"available_by":"simulate","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":"policyengine_default_for_absent_input","provision":"declared_absent_engine_input","stage":"simulate","variable":"meets_ssi_disability_criteria"},{"available_by":"transferred","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"materialized_pool_input_surface","stage":"simulate","variable":"non_qualified_dividend_income"},{"available_by":"transferred","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"materialized_pool_input_surface","stage":"simulate","variable":"own_children_in_household"},{"available_by":"transferred","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"materialized_pool_input_surface","stage":"simulate","variable":"qualified_dividend_income"},{"available_by":"transferred","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"materialized_pool_input_surface","stage":"simulate","variable":"rental_income"},{"available_by":"transferred","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"materialized_pool_input_surface","stage":"simulate","variable":"self_employment_income_before_lsr"},{"available_by":"transferred","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"materialized_pool_input_surface","stage":"simulate","variable":"social_security_dependents"},{"available_by":"transferred","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"materialized_pool_input_surface","stage":"simulate","variable":"social_security_disability"},{"available_by":"transferred","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"materialized_pool_input_surface","stage":"simulate","variable":"social_security_retirement"},{"available_by":"transferred","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"materialized_pool_input_surface","stage":"simulate","variable":"social_security_survivors"},{"available_by":"simulate","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":"policyengine_default_for_absent_input","provision":"declared_absent_engine_input","stage":"simulate","variable":"ssi_lives_in_another_persons_household"},{"available_by":"simulate","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":"policyengine_default_for_absent_input","provision":"declared_absent_engine_input","stage":"simulate","variable":"ssi_lives_in_medical_treatment_facility"},{"available_by":"simulate","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":"policyengine_default_for_absent_input","provision":"declared_absent_engine_input","stage":"simulate","variable":"ssi_medicaid_pays_majority_of_care"},{"available_by":"simulate","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":"policyengine_default_for_absent_input","provision":"declared_absent_engine_input","stage":"simulate","variable":"ssi_others_pay_all_meals"},{"available_by":"simulate","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":"policyengine_default_for_absent_input","provision":"declared_absent_engine_input","stage":"simulate","variable":"ssi_qualifying_quarters_earnings"},{"available_by":"simulate","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":"policyengine_default_for_absent_input","provision":"declared_absent_engine_input","stage":"simulate","variable":"ssi_receives_food_from_others"},{"available_by":"simulate","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":"policyengine_default_for_absent_input","provision":"declared_absent_engine_input","stage":"simulate","variable":"ssi_receives_outside_shelter_support"},{"available_by":"simulate","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":"policyengine_default_for_absent_input","provision":"declared_absent_engine_input","stage":"simulate","variable":"ssi_receives_shelter_from_others_in_household"},{"available_by":"simulate","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":"policyengine_default_for_absent_input","provision":"declared_absent_engine_input","stage":"simulate","variable":"ssi_shelter_support_value"},{"available_by":"transferred","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"materialized_pool_input_surface","stage":"simulate","variable":"sstb_self_employment_income_before_lsr"},{"available_by":"transferred","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":"ephemeral_simulation_projection_engine_default","provision":"declared_deferred_null_input","stage":"simulate","variable":"stock_assets"},{"available_by":"simulate","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":"policyengine_default_for_absent_input","provision":"declared_absent_engine_input","stage":"simulate","variable":"survivor_benefits"},{"available_by":"seeded","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":"seed_receipted_value_or_disclosed_engine_default","provision":"seed_stage_program_contract","stage":"simulate","variable":"takes_up_ssi_if_eligible"},{"available_by":"simulate","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":"policyengine_default_for_absent_input","provision":"declared_absent_engine_input","stage":"simulate","variable":"tax_exempt_401k_distributions"},{"available_by":"simulate","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":"policyengine_default_for_absent_input","provision":"declared_absent_engine_input","stage":"simulate","variable":"tax_exempt_403b_distributions"},{"available_by":"transferred","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"materialized_pool_input_surface","stage":"simulate","variable":"tax_exempt_interest_income"},{"available_by":"transferred","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"materialized_pool_input_surface","stage":"simulate","variable":"tax_exempt_ira_distributions"},{"available_by":"transferred","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"materialized_pool_input_surface","stage":"simulate","variable":"tax_exempt_private_pension_income"},{"available_by":"simulate","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":"policyengine_default_for_absent_input","provision":"declared_absent_engine_input","stage":"simulate","variable":"tax_exempt_public_pension_income"},{"available_by":"simulate","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":"policyengine_default_for_absent_input","provision":"declared_absent_engine_input","stage":"simulate","variable":"tax_exempt_sep_distributions"},{"available_by":"transferred","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"materialized_pool_input_surface","stage":"simulate","variable":"taxable_401k_distributions"},{"available_by":"transferred","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"materialized_pool_input_surface","stage":"simulate","variable":"taxable_403b_distributions"},{"available_by":"transferred","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"materialized_pool_input_surface","stage":"simulate","variable":"taxable_interest_income"},{"available_by":"transferred","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"materialized_pool_input_surface","stage":"simulate","variable":"taxable_ira_distributions"},{"available_by":"transferred","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"materialized_pool_input_surface","stage":"simulate","variable":"taxable_private_pension_income"},{"available_by":"simulate","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":"policyengine_default_for_absent_input","provision":"declared_absent_engine_input","stage":"simulate","variable":"taxable_public_pension_income"},{"available_by":"transferred","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"materialized_pool_input_surface","stage":"simulate","variable":"taxable_sep_distributions"},{"available_by":"transferred","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"materialized_pool_input_surface","stage":"simulate","variable":"unemployment_compensation"},{"available_by":"transferred","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"materialized_pool_input_surface","stage":"simulate","variable":"veterans_benefits"},{"available_by":"transferred","consumer":"ssi_static_dependency_closure","entity":"person","execution_scope":"whole_pool","fallback":null,"provision":"materialized_pool_input_surface","stage":"simulate","variable":"workers_compensation"}]}} diff --git a/packages/microcosm-build/src/microcosm/build/us/spec/spine.yaml b/packages/microcosm-build/src/microcosm/build/us/spec/spine.yaml index 1ffcd46431..fe988ef068 100644 --- a/packages/microcosm-build/src/microcosm/build/us/spec/spine.yaml +++ b/packages/microcosm-build/src/microcosm/build/us/spec/spine.yaml @@ -43,6 +43,7 @@ pipeline_contract: - with_us_education_inputs derive_operator_order: - _complete_schedule_d_input + - with_us_local_tax_inputs - with_us_qbi_input_reconciliation auxiliary_operations: - calibrate diff --git a/packages/microcosm-build/src/microcosm/build/us_annual_static_aging.py b/packages/microcosm-build/src/microcosm/build/us_annual_static_aging.py index 1022364ec5..69042753fd 100644 --- a/packages/microcosm-build/src/microcosm/build/us_annual_static_aging.py +++ b/packages/microcosm-build/src/microcosm/build/us_annual_static_aging.py @@ -21,6 +21,12 @@ import pandas as pd +from microcosm.build.us_runtime.local_jurisdictions import ( + LOCAL_TAX_INPUT_RESIDENT_WAGES, + packaged_us_local_tax_input_registry, + us_local_tax_input_failures, + us_resident_wage_tax_values, +) from microcosm.calibrate import ( SeriesProjection, ssa_population_projection, @@ -36,6 +42,32 @@ ) +def _rederive_local_tax_inputs( + tables: Mapping[str, pd.DataFrame], +) -> tuple[dict[str, pd.DataFrame], list[str]]: + """Re-derive each resident wage-tax base the tables carry from their wages. + + Static aging factors a column only by its own uprating series, and these + inputs have none: carried unchanged, a resident's taxable wages would stay + at base-year wages while the wages themselves grow. A base that does not + carry an input gains none. + """ + + out = dict(tables) + rederived: list[str] = [] + for item in packaged_us_local_tax_input_registry().with_provision( + LOCAL_TAX_INPUT_RESIDENT_WAGES + ): + table = out[item.entity] + if item.variable not in table: + continue + table = table.copy() + table[item.variable] = us_resident_wage_tax_values(table, item) + out[item.entity] = table + rederived.append(item.variable) + return out, rederived + + def _sha256(path: Path) -> str: with path.open("rb") as stream: return hashlib.file_digest(stream, "sha256").hexdigest() @@ -269,6 +301,12 @@ def build_annual_static_aging( } _verify(base, base_tables, base_year) del tables, base_tables + local_tax_input_failures = us_local_tax_input_failures(frame.table("person")) + if local_tax_input_failures: + raise ValueError( + "Base local-tax inputs disagree with its residence flags and wages: " + + "; ".join(local_tax_input_failures) + ) demographics = ssa_population_projection(ssa, age_top=85, age_bands={80: 84}) for year in range(base_year, end_year + 1): demographics.for_year(year) @@ -363,6 +401,9 @@ def build_annual_static_aging( entity: getattr(dataset, entity).loc[:, columns[entity]] for entity in frame.entities } + projected_tables, rederived_inputs = _rederive_local_tax_inputs( + projected_tables + ) round_trip = _write_year(path, projected_tables, year) receipt_path = output / f"projection_{year}.json" _json( @@ -388,6 +429,7 @@ def build_annual_static_aging( "fraction_within_10pct": float( projection.fraction_within_10pct ), + "rederived_local_tax_inputs": rederived_inputs, }, ) projection_receipt = { diff --git a/packages/microcosm-build/src/microcosm/build/us_runtime/US_LOCAL_JURISDICTIONS.md b/packages/microcosm-build/src/microcosm/build/us_runtime/US_LOCAL_JURISDICTIONS.md new file mode 100644 index 0000000000..c9048c0f6c --- /dev/null +++ b/packages/microcosm-build/src/microcosm/build/us_runtime/US_LOCAL_JURISDICTIONS.md @@ -0,0 +1,156 @@ +# US local-jurisdiction flags + +policyengine-us 2.2.1 (and 2.60.4) declares four local-tax jurisdictions as +plain inputs with no formula. A flag stays `False` unless the dataset writes +it: + +| Flag | Entity | Rule | 2020 geography | Population | Engine consumer | +| --- | --- | --- | --- | ---: | --- | +| `in_denver` | household | county | county 08031 (same blocks as Denver city, 08/20000) | 715,522 | Denver property-tax relief eligibility | +| `in_yonkers` | household | place | NY place 84000 (Yonkers city) | 211,569 | `ny_yonkers_income_tax` | +| `in_wilmington` | household | place | DE place 77580 (Wilmington city) | 70,898 | `de_wilmington_earned_income_tax` | +| `pa_philadelphia_wage_tax_resident` | person | county | county 42101 (same blocks as Philadelphia city, 42/60000) | 1,603,797 | `pa_philadelphia_wage_tax` | + +Local flags that have a formula on `county_fips` (`in_nyc`, `in_la` and the +rest) need nothing: the engine computes them from the county the geography +line writes. + +## Registry + +`us_local_jurisdictions.json` holds the table above, and +`local_jurisdictions.py` pins its SHA-256. A county rule holds when +`county_fips` equals the registry county. A place rule holds when the first two +digits of `county_fips` equal the registry state and `place_fips` equals the +registry place code; place codes repeat across states, so the state is part of +the match. A person flag takes its household's value. + +`tools/verify_us_local_jurisdiction_registry.py` checks the registry against +three Census sources: + +- the 2020 Gazetteer place and county files (GEOID, ANSI code, name, land and + water area; a county-rule jurisdiction's county and city have identical + areas); +- the 2020 P.L. 94-171 `P1_001N` count for each place and county; and +- any block ladder: the blocks whose household would get a flag sum to the + registry population, and a county-rule flag covers the same blocks as its + city. + +`block_ladder_checks` records the result for ladders `7ba39b95` and `6840b990`. +With `--record` the tool writes a ladder's counts into the registry and prints +the new SHA-256 to pin. + +## Geography lines + +- **Block ladder** (`with_household_us_geography_ladder`): one block fixes + county and place, so the line writes all four flags. +- **Block-location draw** (microcosm#1047): call + `with_us_local_jurisdiction_flags(frame, rungs=BLOCK_GEOGRAPHY_RUNGS)` once + `county_fips` and `place_fips` are final. +- **PUMA ladder** (`with_household_us_puma_ladder`, the stacked pool): the + ladder draws a county but no place. The line writes `in_denver` and the + Philadelphia flag and never writes `in_yonkers` or `in_wilmington`; it also + removes a stale column. The assignment summary records those two as + `unavailable`, and the engine ABI lock lists them as + `unavailable_place_jurisdiction_input`. +- **Pooled ACS line** (`with_optional_acs_spine`): donor rows arrive with + block-line flags and ACS rows without. The pool re-derives the county-rule + flags for every row from the final county and removes the place-rule flags. + Without a PUMA ladder it removes every flag, because ACS rows then have no + county. `build_optional_acs_multispine` records the pool's receipt as + `provenance["local_jurisdiction_flags"]` on both paths. + +Missing, null or malformed geography raises; no line writes `False` for a +household whose county or place it does not know. + +## Existing artifacts + +A base H5 built before this registry carries no flags. Two steps start from +an existing artifact rather than a geography line, and both call +`rederive_us_local_jurisdiction_flags` first: + +- the L0/refit export (`export_us_l0_refit_h5`), which records the receipt as + `local_jurisdiction_flags` in its summary; and +- the fiscal refresh release builder, on the loaded base or prepared pool, + which records the receipt under `support_value_repairs` in the calibration + diagnostics. + +The helper reads the rungs from the artifact's own geography +(`us_local_jurisdiction_rungs_present`): the county rung when `county_fips` is +on every row, and the place rung only when every row also has `place_fips` and +a 15-digit `block_geoid`. A pooled artifact whose ACS rows have no block +therefore gets the county-rule flags only. A flag the artifact already carries +must agree with its geography (household and person flags both), or the step +fails. + +## Gates + +Both ladder gates fail: + +- a flag column that disagrees with its rule; +- a null or non-boolean flag; +- a place-rule flag on a table with no complete `place_fips`; and +- a missing flag that the line's own rung decides. The block-ladder gate + requires `in_denver`, `in_yonkers` and `in_wilmington`; the PUMA-ladder gate + requires `in_denver`. + +The gates see only the household table, so they check the household flags. +`us_local_jurisdiction_flag_failures(household, person=...)` also checks that +each person carries its household's value. + +## Local-tax inputs + +A residence flag alone moves no tax. `pa_philadelphia_wage_tax` returns 0 +unless the person input `pa_philadelphia_wage_tax_taxable_wages` is nonzero, +and four more local-tax inputs depend on where a person works or what they +claim rather than where they live. `us_local_tax_inputs.json` records how +microcosm provisions each, and `local_jurisdictions.py` pins its SHA-256: + +| Input | Provision | Why | +| --- | --- | --- | +| `pa_philadelphia_wage_tax_taxable_wages` | `resident_wages`: a resident gets `max(employment_income_before_lsr, 0)`; everyone else gets 0 | Philadelphia taxes a resident's compensation wherever earned, including 401(k) deferrals and Section 125 reductions, which the engine's gross wages include. Self-employment income falls under the Net Profits Tax instead. | +| nonresident component of the same input | unavailable | ACS POWPUMA 42/03200 is exactly Philadelphia County, but microcosm reads no place-of-work field, and ACS codes elective home workers to their home, whom Philadelphia taxes as working in the city. | +| `pa_philadelphia_wage_tax_reduced_rate_eligible` | unavailable (`refund_claim`) | Workers get the 1.5% rate only by petition after the year ends; 1,421 filers claimed it for 2020 against as many as 60,000 eligible households. | +| `ny_yonkers_nonresident_earnings` | unavailable (`work_location`) | The smallest place-of-work unit, POWPUMA 36/03100, is all of Westchester County. | +| `de_wilmington_nonresident_earnings` | unavailable (`work_location`) | POWPUMA 10/00100 is all of New Castle County. | +| `co_denver_employee_occupational_privilege_tax_months` | unavailable (`work_location`) | No source counts months with $500 or more earned in Denver; POWPUMA 08/00490 spans nine counties. | + +The registry cites the Philadelphia regulations and Revenue Department +guidance, the ACS PUMS code lists (with their SHA-256) and the LODES technical +documentation for each row. + +`with_us_local_tax_inputs` writes the `resident_wages` inputs once a line has +both the residence flag and final wages, and never writes an unavailable +input (it removes a stale column). The receipt records each input's status, +the resident counts, and, with weights, the weighted resident wage base: + +- **Block ladder** (`tools/build_us_puf_support_base.py`): right after + `with_household_us_geography_ladder`, since the wages are final by then. + The assignment summary records the receipt as `local_tax_inputs`. +- **Stacked pool**: the derive operator `with_us_local_tax_inputs`, after + the Schedule D completion and before the QBI reconciliation, because the + PUMA ladder draws geography before the wage transfers. The derive receipt + holds the receipt, and the engine ABI lock lists the taxable wages as + `derived_resident_wage_tax_input` and the other four as + `unavailable_work_location_input` or `unavailable_refund_claim_input`. +- **Pooled ACS line** (`with_optional_acs_spine`): after the flags, on every + row. ACS people under 15 carry the PUMS blank wage, which the local release + fills with the engine default; with `null_wages="propagate"` a resident's + input stays null with it, joins the reviewed-null register, and gets the + same fill. +- **Existing artifacts**: `rederive_us_local_jurisdiction_flags` derives the + inputs after the flags and refuses a carried input that disagrees with the + artifact's own flags and wages. +- **Annual static aging** (`microcosm.build.us_annual_static_aging`): the + engine has no uprating for these inputs, so each projected year re-derives + the taxable wages from that year's projected wages. + +`us_local_tax_input_failures` fails an unavailable input that is present, a +taxable-wage column that disagrees with its rule, and, with +`require_derivable`, a missing taxable-wage column where the residence flag is +present. A missing residence flag or wage column, a null flag, or a resident's +missing or infinite wage raises instead of writing 0. + +The value stays fixed once written, so a labor-supply response moves the +engine's `employment_income` but not this input. Philadelphia also excludes +nonqualified stock-option income from the base, which microcosm cannot +separate from wages. diff --git a/packages/microcosm-build/src/microcosm/build/us_runtime/US_PUMA_LADDER.md b/packages/microcosm-build/src/microcosm/build/us_runtime/US_PUMA_LADDER.md index 8702bd870e..c15dd4fa96 100644 --- a/packages/microcosm-build/src/microcosm/build/us_runtime/US_PUMA_LADDER.md +++ b/packages/microcosm-build/src/microcosm/build/us_runtime/US_PUMA_LADDER.md @@ -26,6 +26,11 @@ from its `seed`. The dense ACS-spine artifact is filtered to state / congressional district / county for local analysis because every record carries all three. +The ladder also writes the county-rule local-jurisdiction flags (`in_denver`, +`pa_philadelphia_wage_tax_resident`) from the drawn county. It has no place +rung, so it never writes `in_yonkers` or `in_wilmington`, and its summary +records them as unavailable ([US_LOCAL_JURISDICTIONS.md](US_LOCAL_JURISDICTIONS.md)). + ## Why one block pass 2020 tabulation blocks nest in 2020 census tracts, and 2020 tracts nest in 2020 diff --git a/packages/microcosm-build/src/microcosm/build/us_runtime/acs_multispine.py b/packages/microcosm-build/src/microcosm/build/us_runtime/acs_multispine.py index e34c4b8060..d3832b1fac 100644 --- a/packages/microcosm-build/src/microcosm/build/us_runtime/acs_multispine.py +++ b/packages/microcosm-build/src/microcosm/build/us_runtime/acs_multispine.py @@ -45,12 +45,19 @@ transfer_acs_inputs, ) from microcosm.build.us_runtime.base_pool import ( + acs_pool_local_jurisdiction_rungs, preflight_pooled_ladder_geography, with_optional_acs_spine, ) from microcosm.build.us_runtime.congressional_district_vintage import ( CURRENT_CONGRESSIONAL_DISTRICT_VINTAGE, ) +from microcosm.build.us_runtime.local_jurisdictions import ( + NULL_WAGES_PROPAGATE, + apply_us_local_tax_inputs, + us_local_jurisdiction_flag_receipt, + us_local_jurisdiction_flag_values, +) from microcosm.build.us_runtime.puma_ladder import ( UsPumaLadder, us_puma_ladder_assignment_summary, @@ -74,6 +81,9 @@ class AcsMultispineResult: ``None`` when the base carries no role for the ACS spine to match. ``provenance["acs_group_quarters_children"]`` is the interim drop's receipt, or ``None`` when the caller kept those records. + ``provenance["local_jurisdiction_flags"]`` records which local-jurisdiction + flags the pool derived and which it left unavailable; without a PUMA + ladder that is every flag. """ frame: Frame @@ -251,6 +261,23 @@ def build_optional_acs_multispine( ) pooled = with_optional_acs_spine(base, transferred_frame, **pool_options) del transferred_frame + # The pool writes the flags its rungs decide and removes the rest; the + # receipt records both, with or without a PUMA ladder. + jurisdiction_rungs = acs_pool_local_jurisdiction_rungs(puma_ladder) + local_jurisdiction_flags = us_local_jurisdiction_flag_receipt( + us_local_jurisdiction_flag_values( + pooled.table("household"), rungs=jurisdiction_rungs + ), + rungs=jurisdiction_rungs, + household_weights=pooled.weights_for("household").values, + ) + # The pool also derived the local-tax inputs from those flags; this + # re-derivation only produces their receipt. + _, local_tax_inputs = apply_us_local_tax_inputs( + {entity: pooled.table(entity) for entity in ("household", "person")}, + household_weights=pooled.weights_for("household").values, + null_wages=NULL_WAGES_PROPAGATE, + ) provenance = { "enabled": True, @@ -273,6 +300,8 @@ def build_optional_acs_multispine( "n_estimators": n_estimators, "max_targets_per_fit": max_targets_per_fit, }, + "local_jurisdiction_flags": _json_ready_mapping(local_jurisdiction_flags), + "local_tax_inputs": _json_ready_mapping(local_tax_inputs), } if hours_donor is not None or hours_donor_factory is not None: provenance["fit_configuration"]["hours_donor_channel"] = hours_donor_channel diff --git a/packages/microcosm-build/src/microcosm/build/us_runtime/base_pool.py b/packages/microcosm-build/src/microcosm/build/us_runtime/base_pool.py index 7cacda4d22..9a630848eb 100644 --- a/packages/microcosm-build/src/microcosm/build/us_runtime/base_pool.py +++ b/packages/microcosm-build/src/microcosm/build/us_runtime/base_pool.py @@ -13,6 +13,12 @@ COUNTY_FIPS_2023_COLUMN, county_fips_2023_from_tracts, ) +from microcosm.build.us_runtime.local_jurisdictions import ( + NULL_WAGES_PROPAGATE, + PUMA_GEOGRAPHY_RUNGS, + apply_us_local_jurisdiction_flags, + apply_us_local_tax_inputs, +) from microcosm.build.us_runtime.puf_support import ( support_channel_column, support_clone_index_column, @@ -35,6 +41,7 @@ "ASEC_PUF_SPINE", "DEFAULT_ACS_POOL_PEAK_LIMIT_BYTES", "DONOR_ASSIGNED_GEOGRAPHY_COLUMNS", + "acs_pool_local_jurisdiction_rungs", "donor_assigned_geography_complete", "estimate_optional_acs_pool_peak_bytes", "preflight_pooled_ladder_geography", @@ -65,6 +72,19 @@ _PUMA_LADDER_ANCHOR_COLUMN = "__microcosm_puma_ladder_anchor" +def acs_pool_local_jurisdiction_rungs( + puma_ladder: UsPumaLadder | None, +) -> tuple[str, ...]: + """The local-jurisdiction rungs :func:`with_optional_acs_spine` supplies. + + With a PUMA ladder every row has a final county, so the county-rule + flags are derived; without one the ACS rows have no county and no flag + is. A caller records the pool's receipt with these rungs. + """ + + return PUMA_GEOGRAPHY_RUNGS if puma_ladder is not None else () + + def spine_column(entity: str) -> str: """Return the entity-prefixed base-spine metadata column.""" @@ -106,6 +126,17 @@ def with_optional_acs_spine( :class:`~microcosm.frame.Frame` construction, avoiding a second copy of every entity table. + A block-line base carries local-jurisdiction flags that the ACS rows lack. + With ``puma_ladder`` the county-rule flags are re-derived for every row + from the final county and the place-rule flags are removed (ACS rows have + no place); without it every flag is removed, since ACS rows then have no + county either. A flag column is never left half-null for the engine + default to fill. :func:`acs_pool_local_jurisdiction_rungs` names the rungs + used, so a caller can record which flags were derived and which were + left unavailable. The local-tax inputs (a Philadelphia resident's taxable + wages) are then re-derived on every row from those flags and the pooled + wages, or removed when no residence flag was written. + ``max_peak_bytes`` is a fail-fast bound on estimated frame-resident peak memory. Pass ``None`` to disable the preflight. The estimate includes both inputs and the defensive copies made by :class:`~microcosm.frame.Frame`; it @@ -189,6 +220,16 @@ def with_optional_acs_spine( expected_congressional_district_vintage ), ) + tables.update( + apply_us_local_jurisdiction_flags( + tables, rungs=acs_pool_local_jurisdiction_rungs(puma_ladder) + )[0] + ) + # Both spines arrive with final wages, so the local-tax inputs follow the + # re-derived residence flags on every row. ACS people under 15 carry the + # PUMS blank wage, which the release fills with the engine default; a + # resident's input stays null with it and is filled the same way. + tables.update(apply_us_local_tax_inputs(tables, null_wages=NULL_WAGES_PROPAGATE)[0]) if household_order is not None: reordered = household_weights.values[household_order] household_weights = Weights(reordered, household_weights.kind) diff --git a/packages/microcosm-build/src/microcosm/build/us_runtime/geography_ladder.py b/packages/microcosm-build/src/microcosm/build/us_runtime/geography_ladder.py index 3237643d07..1ed035bc50 100644 --- a/packages/microcosm-build/src/microcosm/build/us_runtime/geography_ladder.py +++ b/packages/microcosm-build/src/microcosm/build/us_runtime/geography_ladder.py @@ -25,7 +25,11 @@ (``block_geoid``, ``tract_geoid``, ``county_fips``, ``place_fips``, ``sldu``, ``sldl``, ``cbsa_code``): the exported artifact carries engine inputs, never formula outputs, so ``in_nyc``/``nyc_income_tax`` recompute from the county -rung instead of being persisted (the #34 regression). +rung instead of being persisted (the #34 regression). The few local flags the +engine declares as plain inputs (``in_denver``, ``in_yonkers``, +``in_wilmington``, ``pa_philadelphia_wage_tax_resident``) have no formula to +recompute them, so the frame wrapper derives them from the assigned county and +place through the pinned registry in :mod:`.local_jurisdictions`. """ from __future__ import annotations @@ -48,6 +52,13 @@ county_fips_2023_assignment_failures, county_fips_2023_from_blocks, ) +from microcosm.build.us_runtime.local_jurisdictions import ( + BLOCK_GEOGRAPHY_RUNGS, + apply_us_local_jurisdiction_flags, + us_local_jurisdiction_flag_failures, + us_local_jurisdiction_flag_receipt, + us_local_jurisdiction_flag_values, +) from microcosm.frame import Frame #: Derived (crosswalk-sourced) layers the ladder artifact must carry a @@ -384,7 +395,12 @@ def with_household_us_geography_ladder( seed: int = 0, expected_congressional_district_vintage: str | None = None, ) -> Frame: - """Return ``frame`` with the household geography ladder assigned.""" + """Return ``frame`` with the household geography ladder assigned. + + The block fixes county and place together, so every registry + local-jurisdiction flag is derived from them and written as an engine + input (person flags through ``person_household_id``). + """ tables = {entity: frame.table(entity).copy() for entity in frame.entities} tables["household"] = assign_us_geography_ladder( @@ -395,6 +411,7 @@ def with_household_us_geography_ladder( expected_congressional_district_vintage ), ) + tables, _ = apply_us_local_jurisdiction_flags(tables, rungs=BLOCK_GEOGRAPHY_RUNGS) for link_name in frame.links: tables[link_name] = frame.link(link_name).copy() weights = {entity: frame.weights_for(entity) for entity in frame.weighted_entities} @@ -456,6 +473,11 @@ def us_geography_ladder_assignment_summary( summary["nyc_weighted_household_share"] = ( float(weights[nyc].sum() / total) if total > 0 else 0.0 ) + summary["local_jurisdiction_flags"] = us_local_jurisdiction_flag_receipt( + us_local_jurisdiction_flag_values(household, rungs=BLOCK_GEOGRAPHY_RUNGS), + rungs=BLOCK_GEOGRAPHY_RUNGS, + household_weights=weights, + ) return summary @@ -562,6 +584,14 @@ def us_geography_ladder_gate( f"{cd_column}: {int(cd_mismatch.sum())}/{len(block)} row(s) " "have a state prefix disagreeing with block_geoid" ) + # The block decides every household flag, so each must be present and + # match its county or place rule. A base H5 built before the flags + # existed fails here; rederive_us_local_jurisdiction_flags repairs it. + failures.extend( + us_local_jurisdiction_flag_failures( + household, required_rungs=BLOCK_GEOGRAPHY_RUNGS + ) + ) total = float(weights.sum()) if total <= 0: diff --git a/packages/microcosm-build/src/microcosm/build/us_runtime/l0_refit_export.py b/packages/microcosm-build/src/microcosm/build/us_runtime/l0_refit_export.py index 10cd209e3d..c5e16b446d 100644 --- a/packages/microcosm-build/src/microcosm/build/us_runtime/l0_refit_export.py +++ b/packages/microcosm-build/src/microcosm/build/us_runtime/l0_refit_export.py @@ -77,6 +77,9 @@ US_IMMIGRATION_NONCONSTANT_PERSON_COLUMNS, ) from microcosm.build.us_runtime.input_mass import us_input_mass_totals +from microcosm.build.us_runtime.local_jurisdictions import ( + rederive_us_local_jurisdiction_flags, +) from microcosm.build.us_runtime.medicare_take_up import ( US_MEDICARE_TAKE_UP_NONCONSTANT_PERSON_COLUMNS, ) @@ -580,6 +583,11 @@ def export_us_l0_refit_h5( shipping. The geography-ladder gate runs on the selected support with its calibrated weights (microcosm #275/#34): a release whose spine is inconsistent or whose NYC mass collapsed fails by default. + + The local-jurisdiction flags are re-derived from the selected support's + own geography before the gate, so a base H5 built before the flags + existed exports them instead of leaving the engine default on every + resident; the summary records the receipt. """ root_attrs_source = ( @@ -592,7 +600,9 @@ def export_us_l0_refit_h5( weight_key=weight_key, zero_weight_tolerance=zero_weight_tolerance, ) - export_frame = attach_l0_refit_weights(base_frame, solution) + export_frame, local_jurisdiction_flags = rederive_us_local_jurisdiction_flags( + attach_l0_refit_weights(base_frame, solution) + ) if require_source_columns: assert_required_us_release_source_columns(export_frame) geography_ladder_gate = us_geography_ladder_gate( @@ -648,6 +658,7 @@ def export_us_l0_refit_h5( US_RELEASE_REQUIRED_HOUSEHOLD_NONCONSTANT_SOURCE_COLUMNS ), "required_source_columns_checked": bool(require_source_columns), + "local_jurisdiction_flags": local_jurisdiction_flags, "geography_ladder_gate_enforced": bool(require_geography_ladder), "geography_ladder_gate": { "passed": geography_ladder_gate.passed, diff --git a/packages/microcosm-build/src/microcosm/build/us_runtime/local_jurisdictions.py b/packages/microcosm-build/src/microcosm/build/us_runtime/local_jurisdictions.py new file mode 100644 index 0000000000..16842ee48f --- /dev/null +++ b/packages/microcosm-build/src/microcosm/build/us_runtime/local_jurisdictions.py @@ -0,0 +1,1427 @@ +"""US local-jurisdiction flags derived from household geography. + +policyengine-us 2.2.1 declares a few local-tax jurisdictions as plain inputs +with no formula, so they default to ``False`` unless the dataset writes them: + +- ``in_denver`` (household): read by the Denver property-tax-relief + eligibility variables; +- ``in_yonkers`` (household): read by ``ny_yonkers_income_tax`` (the resident + surcharge); +- ``in_wilmington`` (household): read by ``de_wilmington_earned_income_tax``; +- ``pa_philadelphia_wage_tax_resident`` (person): read by + ``pa_philadelphia_wage_tax`` to pick the resident rate. + +Local flags with a ``county_str`` formula (``in_nyc``, ``in_la`` and the +rest) need nothing: the engine computes them from ``county_fips``. + +The packaged registry ``us_local_jurisdictions.json`` maps each input-only +flag to one 2020 geography, and its SHA-256 is pinned here: + +- rule ``county``: the flag is true exactly when ``county_fips`` equals the + registry county (Denver ``08031``; Philadelphia ``42101``); +- rule ``place``: the flag is true exactly when the household's state (the + first two digits of ``county_fips``) and ``place_fips`` equal the registry + state and 2020 place code (Yonkers city ``36``/``84000``; Wilmington city + ``10``/``77580``). Place codes are unique only within a state, so the state + is part of the match. + +A geography line derives the flags from the rungs it actually writes. The +block ladder (and the block-location draw) writes county and place from one +block, so every flag is derived. The PUMA ladder writes a county but no +place, so the place-rule flags are *unavailable* there: the line never writes +them (any stale column is removed) and its receipt records them as +unavailable with the reason, rather than writing ``False``. + +An artifact built before the flags existed carries none, so a step that +exports or recalibrates an existing artifact instead of running a geography +line calls :func:`rederive_us_local_jurisdiction_flags`. It derives every +flag the artifact's own geography decides and refuses a carried flag that +disagrees with that geography. Both ladder gates fail a table that lacks a +flag its geography decides. + +A residence flag alone moves no tax: ``pa_philadelphia_wage_tax`` returns 0 +unless the person input ``pa_philadelphia_wage_tax_taxable_wages`` is +nonzero. The second packaged registry, ``us_local_tax_inputs.json`` (its +SHA-256 also pinned here), records how each local-tax input that depends on +work, wages or a claim is provisioned: + +- provision ``resident_wages``: a resident's input is + ``max(employment_income_before_lsr, 0)``, since a resident is taxed on all + compensation wherever earned; every other person holds 0, the engine + default, because the nonresident (work-location) component has no source; +- provision ``unavailable``: no source decides the input at microcosm's + geography (a nonresident's earnings in Yonkers or Wilmington, Denver + occupational-privilege-tax months, the petition-claimed Philadelphia + reduced rate). It is never written, and the receipt says why. + +A line writes these with :func:`with_us_local_tax_inputs` once both the +residence flag and the wages are final, which is after the wage transfers +rather than at the geography step on the stacked pool. +:func:`rederive_us_local_jurisdiction_flags` re-derives them with the flags. +""" + +from __future__ import annotations + +import hashlib +import json +from collections.abc import Collection, Mapping +from dataclasses import dataclass +from functools import cache +from importlib.resources import files +from pathlib import Path +from typing import Any + +import numpy as np +import pandas as pd + +from microcosm.frame import US_SCHEMA, Frame + +US_LOCAL_JURISDICTION_REGISTRY_RESOURCE = "us_local_jurisdictions.json" +#: SHA-256 of the packaged registry; :func:`packaged_us_local_jurisdiction_registry` +#: refuses any other bytes. +US_LOCAL_JURISDICTION_REGISTRY_SHA256 = ( + "45035eee30beddc0bccceadc7a00363635b0c9012662bf722435ee83243a053c" +) +US_LOCAL_JURISDICTION_REGISTRY_KIND = "us_local_jurisdiction_registry" +US_LOCAL_JURISDICTION_REGISTRY_SCHEMA_VERSION = 1 + +#: Geography rungs a line can supply. ``county`` needs ``county_fips``; +#: ``place`` needs ``place_fips`` (and the county's state prefix). +JURISDICTION_RUNG_COUNTY = "county" +JURISDICTION_RUNG_PLACE = "place" +JURISDICTION_RUNGS = (JURISDICTION_RUNG_COUNTY, JURISDICTION_RUNG_PLACE) +#: What the block ladder and the block-location draw write. +BLOCK_GEOGRAPHY_RUNGS = JURISDICTION_RUNGS +#: What the PUMA ladder writes. +PUMA_GEOGRAPHY_RUNGS = (JURISDICTION_RUNG_COUNTY,) + +#: Receipt statuses. +JURISDICTION_FLAG_DERIVED = "derived" +JURISDICTION_FLAG_UNAVAILABLE = "unavailable" + +US_LOCAL_TAX_INPUT_REGISTRY_RESOURCE = "us_local_tax_inputs.json" +#: SHA-256 of the packaged local-tax input registry; +#: :func:`packaged_us_local_tax_input_registry` refuses any other bytes. +US_LOCAL_TAX_INPUT_REGISTRY_SHA256 = ( + "e5592932856d9de3815d97890b7839e28a106a451c544c7f503b3a72da2871d6" +) +US_LOCAL_TAX_INPUT_REGISTRY_KIND = "us_local_tax_input_registry" +US_LOCAL_TAX_INPUT_REGISTRY_SCHEMA_VERSION = 1 + +#: Local-tax input provisions. +LOCAL_TAX_INPUT_RESIDENT_WAGES = "resident_wages" +LOCAL_TAX_INPUT_UNAVAILABLE = "unavailable" +LOCAL_TAX_INPUT_PROVISIONS = ( + LOCAL_TAX_INPUT_RESIDENT_WAGES, + LOCAL_TAX_INPUT_UNAVAILABLE, +) +#: Why an unavailable input has no source. +LOCAL_TAX_INPUT_UNAVAILABLE_BASES = ("refund_claim", "work_location") +#: What a resident's null wage yields: refuse it (every finished line), or +#: leave the input null so a nullable staging artifact's reviewed-null fill +#: gives it the engine default along with the wage itself. +NULL_WAGES_REFUSE = "refuse" +NULL_WAGES_PROPAGATE = "propagate" +NULL_WAGE_MODES = (NULL_WAGES_REFUSE, NULL_WAGES_PROPAGATE) + +_ENTITIES = ("household", "person") +_REQUIRED_JURISDICTION_KEYS = ( + "flag", + "entity", + "jurisdiction", + "rule", + "state_fips", + "population_2020", +) + + +@dataclass(frozen=True) +class UsLocalJurisdiction: + """One input-only engine flag and the 2020 geography that decides it. + + Attributes: + flag: The policyengine-us input variable. + entity: ``household`` or ``person`` (a person flag is the person's + household's value). + jurisdiction: Human-readable name. + rule: ``county`` or ``place``; the rung the flag needs. + state_fips: Two-digit state FIPS. + county_fips: Five-digit county FIPS (rule ``county``). + place_fips: Five-digit 2020 place code within ``state_fips`` + (rule ``place``). + coextensive_place_fips: For a county-rule jurisdiction whose city is + the same area as the county, that city's place code; the + block-ladder check requires the two block sets to be identical. + population_2020: 2020 P.L. 94-171 population (``P1_001N``) of the + jurisdiction; the block-ladder check requires the ladder's blocks + to sum to it. + """ + + flag: str + entity: str + jurisdiction: str + rule: str + state_fips: str + county_fips: str | None + place_fips: str | None + coextensive_place_fips: str | None + population_2020: int + + @property + def geoid(self) -> str: + """The deciding geography's 2020 GEOID (county 5 digits, place 7).""" + + if self.rule == JURISDICTION_RUNG_COUNTY: + assert self.county_fips is not None + return self.county_fips + assert self.place_fips is not None + return self.state_fips + self.place_fips + + +@dataclass(frozen=True) +class UsLocalJurisdictionRegistry: + """The parsed registry plus the SHA-256 of the bytes it came from.""" + + jurisdictions: tuple[UsLocalJurisdiction, ...] + sha256: str + metadata: Mapping[str, Any] + + @property + def flags(self) -> tuple[str, ...]: + return tuple(item.flag for item in self.jurisdictions) + + def for_entity(self, entity: str) -> tuple[UsLocalJurisdiction, ...]: + return tuple(item for item in self.jurisdictions if item.entity == entity) + + +def load_us_local_jurisdiction_registry( + path: str | Path, + *, + expected_sha256: str | None = None, +) -> UsLocalJurisdictionRegistry: + """Load and validate a registry file, optionally pinning its SHA-256.""" + + payload = Path(path).read_bytes() + return _registry_from_bytes(payload, expected_sha256=expected_sha256) + + +@cache +def packaged_us_local_jurisdiction_registry() -> UsLocalJurisdictionRegistry: + """The packaged registry, refused unless its bytes match the pinned SHA-256.""" + + payload = ( + files("microcosm.build.us_runtime") + .joinpath(US_LOCAL_JURISDICTION_REGISTRY_RESOURCE) + .read_bytes() + ) + return _registry_from_bytes( + payload, expected_sha256=US_LOCAL_JURISDICTION_REGISTRY_SHA256 + ) + + +def _registry_from_bytes( + payload: bytes, + *, + expected_sha256: str | None, +) -> UsLocalJurisdictionRegistry: + digest = hashlib.sha256(payload).hexdigest() + if expected_sha256 is not None and digest != expected_sha256: + raise ValueError( + "US local-jurisdiction registry bytes do not match the pinned " + f"SHA-256: expected {expected_sha256}, observed {digest}." + ) + document = json.loads(payload) + if not isinstance(document, Mapping): + raise ValueError("US local-jurisdiction registry must be a JSON object.") + if document.get("kind") != US_LOCAL_JURISDICTION_REGISTRY_KIND: + raise ValueError( + "US local-jurisdiction registry kind must be " + f"{US_LOCAL_JURISDICTION_REGISTRY_KIND!r}, got {document.get('kind')!r}." + ) + if document.get("schema_version") != US_LOCAL_JURISDICTION_REGISTRY_SCHEMA_VERSION: + raise ValueError( + "US local-jurisdiction registry schema_version must be " + f"{US_LOCAL_JURISDICTION_REGISTRY_SCHEMA_VERSION}, got " + f"{document.get('schema_version')!r}." + ) + raw = document.get("jurisdictions") + if not isinstance(raw, list) or not raw: + raise ValueError("US local-jurisdiction registry has no jurisdictions.") + jurisdictions = tuple(_jurisdiction(item, index) for index, item in enumerate(raw)) + flags = [item.flag for item in jurisdictions] + if len(set(flags)) != len(flags): + raise ValueError(f"US local-jurisdiction registry repeats a flag: {flags}.") + if flags != sorted(flags): + raise ValueError( + f"US local-jurisdiction registry flags must be sorted: {flags}." + ) + geoids = [item.geoid for item in jurisdictions] + if len(set(geoids)) != len(geoids): + raise ValueError( + f"US local-jurisdiction registry repeats a geography: {geoids}." + ) + metadata = {key: value for key, value in document.items() if key != "jurisdictions"} + return UsLocalJurisdictionRegistry( + jurisdictions=jurisdictions, sha256=digest, metadata=metadata + ) + + +def _jurisdiction(item: object, index: int) -> UsLocalJurisdiction: + label = f"jurisdictions[{index}]" + if not isinstance(item, Mapping): + raise ValueError(f"{label} must be an object.") + missing = [key for key in _REQUIRED_JURISDICTION_KEYS if key not in item] + if missing: + raise ValueError(f"{label} is missing {missing}.") + flag = item["flag"] + if not isinstance(flag, str) or not flag.isidentifier() or flag != flag.lower(): + raise ValueError(f"{label}.flag must be a lowercase identifier: {flag!r}.") + entity = item["entity"] + if entity not in _ENTITIES: + raise ValueError(f"{label}.entity must be one of {_ENTITIES}: {entity!r}.") + rule = item["rule"] + if rule not in JURISDICTION_RUNGS: + raise ValueError(f"{label}.rule must be one of {JURISDICTION_RUNGS}.") + state = _digits(item["state_fips"], 2, label=f"{label}.state_fips") + county = _optional_digits(item.get("county_fips"), 5, label=f"{label}.county_fips") + place = _optional_digits(item.get("place_fips"), 5, label=f"{label}.place_fips") + coextensive = _optional_digits( + item.get("coextensive_place_fips"), + 5, + label=f"{label}.coextensive_place_fips", + ) + if rule == JURISDICTION_RUNG_COUNTY: + if county is None or place is not None: + raise ValueError( + f"{label}: a county rule names county_fips and no place_fips." + ) + if county[:2] != state: + raise ValueError(f"{label}: county_fips {county} is not in state {state}.") + else: + if place is None or county is not None or coextensive is not None: + raise ValueError( + f"{label}: a place rule names place_fips and no county fields." + ) + population = item["population_2020"] + if isinstance(population, bool) or not isinstance(population, int): + raise ValueError(f"{label}.population_2020 must be an integer.") + if population <= 0: + raise ValueError(f"{label}.population_2020 must be positive.") + name = item["jurisdiction"] + if not isinstance(name, str) or not name: + raise ValueError(f"{label}.jurisdiction must be a non-empty string.") + return UsLocalJurisdiction( + flag=flag, + entity=entity, + jurisdiction=name, + rule=rule, + state_fips=state, + county_fips=county, + place_fips=place, + coextensive_place_fips=coextensive, + population_2020=population, + ) + + +def _digits(value: object, width: int, *, label: str) -> str: + if not isinstance(value, str) or len(value) != width or not value.isdigit(): + raise ValueError(f"{label} must be a {width}-digit string, got {value!r}.") + return value + + +def _optional_digits(value: object, width: int, *, label: str) -> str | None: + return None if value is None else _digits(value, width, label=label) + + +# --------------------------------------------------------------------------- +# Derivation +# --------------------------------------------------------------------------- + + +def _normalized_rungs(rungs: Collection[str]) -> tuple[str, ...]: + unknown = sorted(set(rungs) - set(JURISDICTION_RUNGS)) + if unknown: + raise ValueError( + f"Unknown local-jurisdiction rung(s) {unknown}; expected a subset of " + f"{JURISDICTION_RUNGS}." + ) + return tuple(rung for rung in JURISDICTION_RUNGS if rung in set(rungs)) + + +def _text_codes( + values: pd.Series, *, column: str, widths: tuple[int, ...] +) -> pd.Series: + """Return ``values`` as text codes, refusing nulls, non-text and bad widths. + + An integer code is refused rather than zero-filled: the geography lines + write text, and a numeric column here means something upstream changed. + """ + + series = pd.Series(values.to_numpy(dtype=object), dtype=object) + if series.empty: + return series + kind = pd.api.types.infer_dtype(series, skipna=False) + if kind == "bytes": + series = series.str.decode("ascii") + kind = pd.api.types.infer_dtype(series, skipna=False) + allowed = " or ".join( + "empty" if width == 0 else f"{width}-digit" for width in widths + ) + if kind != "string": + examples = ( + series[~series.map(lambda value: isinstance(value, str))].head(5).tolist() + ) + raise ValueError( + f"{column} must hold {allowed} text codes on every row to derive local " + f"jurisdiction flags; it holds {kind} values, e.g. {examples}." + ) + pattern = "|".join(rf"\d{{{width}}}" if width else "" for width in widths) + valid = series.str.fullmatch(f"(?:{pattern})").astype(bool) + if not valid.all(): + raise ValueError( + f"{column} must hold {allowed} text codes on every row to derive local " + f"jurisdiction flags; invalid value(s) {series[~valid].head(5).tolist()}." + ) + return series + + +def _holds_text_codes( + values: pd.Series, *, column: str, widths: tuple[int, ...] +) -> bool: + try: + _text_codes(values, column=column, widths=widths) + except ValueError: + return False + return True + + +def us_local_jurisdiction_rungs_present(household: pd.DataFrame) -> tuple[str, ...]: + """The rungs a finished household table's own geography supplies. + + For a step that starts from an artifact rather than a geography line. The + county rung needs ``county_fips`` on every row. The place rung also needs + every row to sit on a block: ``place_fips`` with no null row and a + 15-digit ``block_geoid`` on every row. A pooled table whose ACS rows have + no block therefore supplies only the county rung, even where a writer has + stored their missing place as an empty string. A malformed + ``county_fips`` is not judged here; deriving the flags raises on it. + """ + + if "county_fips" not in household or household["county_fips"].isna().any(): + return () + block_anchored = ( + "place_fips" in household + and not household["place_fips"].isna().any() + and "block_geoid" in household + and _holds_text_codes( + household["block_geoid"], column="block_geoid", widths=(15,) + ) + ) + return BLOCK_GEOGRAPHY_RUNGS if block_anchored else PUMA_GEOGRAPHY_RUNGS + + +def us_local_jurisdiction_flag_values( + household: pd.DataFrame, + *, + rungs: Collection[str], + registry: UsLocalJurisdictionRegistry | None = None, +) -> dict[str, np.ndarray]: + """Per-household flag arrays for every registry flag ``rungs`` can decide. + + Returns one boolean array per derivable flag, aligned to ``household``'s + rows, whatever the flag's entity (a person flag is its household's value). + A flag whose rule is not in ``rungs`` is left out. Missing, null or + malformed geography on a supplied rung raises: a household whose county or + place is unknown cannot be decided, and writing ``False`` for it would be + a silent guess. + """ + + resolved = registry or packaged_us_local_jurisdiction_registry() + supplied = _normalized_rungs(rungs) + needed = {item.rule for item in resolved.jurisdictions} & set(supplied) + if not needed: + return {} + for column in ( + "county_fips", + *(("place_fips",) if JURISDICTION_RUNG_PLACE in needed else ()), + ): + if column not in household: + raise ValueError( + f"household table has no {column!r}; it cannot supply the " + f"local-jurisdiction rung(s) {sorted(needed)}." + ) + county = _text_codes(household["county_fips"], column="county_fips", widths=(5,)) + place = ( + _text_codes(household["place_fips"], column="place_fips", widths=(0, 5)) + if JURISDICTION_RUNG_PLACE in needed + else None + ) + flags: dict[str, np.ndarray] = {} + for item in resolved.jurisdictions: + if item.rule not in needed: + continue + if item.rule == JURISDICTION_RUNG_COUNTY: + mask = county.eq(item.county_fips) + else: + assert place is not None + mask = county.str[:2].eq(item.state_fips) & place.eq(item.place_fips) + flags[item.flag] = mask.to_numpy(dtype=bool) + return flags + + +def apply_us_local_jurisdiction_flags( + tables: Mapping[str, pd.DataFrame], + *, + rungs: Collection[str], + registry: UsLocalJurisdictionRegistry | None = None, + household_weights: np.ndarray | None = None, +) -> tuple[dict[str, pd.DataFrame], dict[str, Any]]: + """Write every derivable flag and return the tables with a receipt. + + Household flags go on the household table; person flags on the person + table, each person taking its household's value through + ``person_household_id``. A flag ``rungs`` cannot decide is removed from + its table if a stale or partially populated column is present, and the + receipt records it as unavailable: the engine default then applies to + every row, and the receipt says so, instead of a written ``False``. + + The household and person tables are returned as new (shallow-copied) + frames; the input tables are never modified, and the other tables are + passed through as-is. + """ + + resolved = registry or packaged_us_local_jurisdiction_registry() + supplied = _normalized_rungs(rungs) + household = tables["household"] + values = us_local_jurisdiction_flag_values( + household, rungs=supplied, registry=resolved + ) + out = dict(tables) + for entity in {item.entity for item in resolved.jurisdictions}: + out[entity] = tables[entity].copy(deep=False) + person_rows: np.ndarray | None = None + if any( + item.entity == "person" and item.flag in values + for item in resolved.jurisdictions + ): + person_rows = _person_household_positions(out["household"], out["person"]) + for item in resolved.jurisdictions: + table = out[item.entity] + if item.flag not in values: + if item.flag in table: + out[item.entity] = table.drop(columns=[item.flag]) + continue + household_values = values[item.flag] + if item.entity == "household": + table[item.flag] = household_values + else: + assert person_rows is not None + table[item.flag] = household_values[person_rows] + receipt = us_local_jurisdiction_flag_receipt( + values, + rungs=supplied, + registry=resolved, + household_weights=household_weights, + ) + return out, receipt + + +def with_us_local_jurisdiction_flags( + frame: Frame, + *, + rungs: Collection[str], + registry: UsLocalJurisdictionRegistry | None = None, +) -> tuple[Frame, dict[str, Any]]: + """Return ``frame`` with its local-jurisdiction flags and the receipt. + + The one call every geography line makes once its county (and, where it + has one, place) is final: ``rungs`` is :data:`BLOCK_GEOGRAPHY_RUNGS` for + a block-anchored line and :data:`PUMA_GEOGRAPHY_RUNGS` for the PUMA + ladder. + """ + + tables = {entity: frame.table(entity) for entity in frame.entities} + written, receipt = apply_us_local_jurisdiction_flags( + tables, + rungs=rungs, + registry=registry, + household_weights=frame.weights_for("household").values, + ) + for link_name in frame.links: + written[link_name] = frame.link(link_name).copy() + weights = {entity: frame.weights_for(entity) for entity in frame.weighted_entities} + return ( + Frame( + written, + frame.schema, + weights, + frame.strata, + mass_log=frame.mass_log, + metadata=frame.metadata, + ), + receipt, + ) + + +def rederive_us_local_jurisdiction_flags( + frame: Frame, + *, + registry: UsLocalJurisdictionRegistry | None = None, +) -> tuple[Frame, dict[str, Any]]: + """Derive an existing artifact's flags from the geography it carries. + + For a step that exports or recalibrates an artifact rather than running a + geography line. A base H5 built before the flags existed carries none, + and exporting it as-is would leave the engine default (``False``) on + every resident. The rungs come from the artifact's own geography + (:func:`us_local_jurisdiction_rungs_present`). A flag the artifact + already carries must agree with that geography, or this raises: + re-deriving it would hide a corrupt artifact. + + The local-tax inputs are then derived from the re-derived flags and the + artifact's wages (:func:`with_us_local_tax_inputs`); a carried input that + disagrees with the artifact's own flags and wages is refused the same way. + + The receipt adds ``carried_flags``, the flags the artifact already held, + ``local_tax_inputs``, the local-tax input receipt, and + ``carried_local_tax_inputs``, the inputs the artifact already held. + """ + + resolved = registry or packaged_us_local_jurisdiction_registry() + household = frame.table("household") + failures = us_local_jurisdiction_flag_failures( + household, person=frame.table("person"), registry=resolved + ) + if failures: + raise ValueError( + "The artifact carries local-jurisdiction flags that disagree with " + "its own geography: " + "; ".join(failures) + ) + failures = us_local_tax_input_failures( + frame.table("person"), jurisdictions=resolved + ) + if failures: + raise ValueError( + "The artifact carries local-tax inputs that disagree with its own " + "residence flags and wages: " + "; ".join(failures) + ) + carried = sorted( + item.flag + for item in resolved.jurisdictions + if item.flag in frame.table(item.entity) + ) + derived, receipt = with_us_local_jurisdiction_flags( + frame, + rungs=us_local_jurisdiction_rungs_present(household), + registry=resolved, + ) + receipt["carried_flags"] = carried + carried_tax_inputs = sorted( + item.variable + for item in packaged_us_local_tax_input_registry().inputs + if item.variable in frame.table(item.entity) + ) + derived, tax_input_receipt = with_us_local_tax_inputs( + derived, jurisdictions=resolved + ) + receipt["local_tax_inputs"] = tax_input_receipt + receipt["carried_local_tax_inputs"] = carried_tax_inputs + return derived, receipt + + +def _person_household_positions( + household: pd.DataFrame, person: pd.DataFrame +) -> np.ndarray: + id_column = US_SCHEMA.entity_id_column("household") + membership = US_SCHEMA.membership_column("household") + for table, column in ((household, id_column), (person, membership)): + if column not in table: + raise ValueError( + f"Person local-jurisdiction flags need {column!r}; it is missing." + ) + ids = pd.Index(household[id_column].to_numpy()) + if not ids.is_unique: + raise ValueError("household_id must be unique to broadcast person flags.") + positions = ids.get_indexer(person[membership].to_numpy()) + if (positions < 0).any(): + raise ValueError( + "Every person must belong to a household in the table to receive " + "its local-jurisdiction flags." + ) + return positions + + +def us_local_jurisdiction_flag_receipt( + values: Mapping[str, np.ndarray], + *, + rungs: Collection[str], + registry: UsLocalJurisdictionRegistry | None = None, + household_weights: np.ndarray | None = None, +) -> dict[str, Any]: + """JSON-ready provenance: registry digest, rungs, and each flag's status.""" + + resolved = registry or packaged_us_local_jurisdiction_registry() + supplied = _normalized_rungs(rungs) + weights = ( + None + if household_weights is None + else np.asarray(household_weights, dtype=np.float64) + ) + flags: dict[str, Any] = {} + for item in resolved.jurisdictions: + entry: dict[str, Any] = { + "entity": item.entity, + "rule": item.rule, + "geoid": item.geoid, + } + if item.flag in values: + mask = np.asarray(values[item.flag], dtype=bool) + entry["status"] = JURISDICTION_FLAG_DERIVED + entry["households_in_jurisdiction"] = int(mask.sum()) + if weights is not None: + if len(weights) != len(mask): + raise ValueError( + "household_weights must align with the household table." + ) + entry["weighted_households_in_jurisdiction"] = float( + weights[mask].sum() + ) + else: + entry["status"] = JURISDICTION_FLAG_UNAVAILABLE + entry["reason"] = ( + f"the line supplies no {item.rule} rung; the flag is not written, " + "so the engine default (False) applies to every row" + ) + flags[item.flag] = entry + return { + "registry": US_LOCAL_JURISDICTION_REGISTRY_RESOURCE, + "registry_sha256": resolved.sha256, + "rungs": list(supplied), + "flags": flags, + } + + +def us_local_jurisdiction_flag_failures( + household: pd.DataFrame, + *, + person: pd.DataFrame | None = None, + required_rungs: Collection[str] = (), + registry: UsLocalJurisdictionRegistry | None = None, +) -> list[str]: + """Gate check: every flag column present agrees with the table's geography. + + A flag present must equal its rule applied to the table's own + ``county_fips``/``place_fips``. A place-rule flag on a table with no + complete ``place_fips`` fails: nothing could have decided it. A flag + whose rule is in ``required_rungs`` must also be present: a gate whose + line supplies that rung passes ``required_rungs``, so an artifact built + before the flags existed fails rather than leaving the engine default on + every resident. + + Person flags are checked only when ``person`` is given; each person must + carry its household's value. + """ + + resolved = registry or packaged_us_local_jurisdiction_registry() + required = set(_normalized_rungs(required_rungs)) + tables = {"household": household, "person": person} + failures: list[str] = [] + for item in resolved.jurisdictions: + table = tables[item.entity] + if table is None: + continue + if item.flag not in table: + if item.rule in required: + failures.append( + f"{item.flag}: absent, but this table's {item.rule} rung " + "decides it; the engine would default every row to False" + ) + continue + try: + expected = us_local_jurisdiction_flag_values( + household, rungs=(item.rule,), registry=resolved + )[item.flag] + if item.entity == "person": + expected = expected[_person_household_positions(household, table)] + except ValueError as error: + failures.append( + f"{item.flag}: present but its {item.rule} rung cannot decide it ({error})" + ) + continue + observed = table[item.flag] + if observed.isna().any(): + failures.append(f"{item.flag}: {int(observed.isna().sum())} null row(s)") + continue + if ( + not pd.api.types.is_bool_dtype(observed) + and not observed.isin([True, False]).all() + ): + failures.append(f"{item.flag}: holds non-boolean values") + continue + disagree = observed.astype(bool).to_numpy() != expected + if disagree.any(): + failures.append( + f"{item.flag}: {int(disagree.sum())}/{len(table)} {item.entity} " + f"row(s) disagree with the {item.rule} rule for {item.geoid}" + ) + return failures + + +# --------------------------------------------------------------------------- +# Local-tax inputs +# --------------------------------------------------------------------------- + +_REQUIRED_TAX_INPUT_KEYS = ( + "variable", + "entity", + "jurisdiction", + "provision", + "engine_consumers", + "requires", + "sources", +) +_RESIDENT_WAGES_KEYS = ( + "residence_flag", + "wage_input", + "resident_rule", + "nonresident_reason", +) +_UNAVAILABLE_KEYS = ("basis", "reason") + + +@dataclass(frozen=True) +class UsLocalTaxInput: + """One policyengine-us local-tax input and how microcosm provisions it. + + Attributes: + variable: The policyengine-us input variable. + entity: ``person`` or ``household``; a ``resident_wages`` input is a + person input. + jurisdiction: Human-readable name. + provision: ``resident_wages`` or ``unavailable``. + basis: For ``unavailable``, what no source supplies + (``work_location`` or ``refund_claim``). + residence_flag: For ``resident_wages``, the person flag in + ``us_local_jurisdictions.json`` that marks residents. + wage_input: For ``resident_wages``, the person wage input. + reason: For ``unavailable``, why no source decides the input; for + ``resident_wages``, why its nonresident component is unavailable. + """ + + variable: str + entity: str + jurisdiction: str + provision: str + basis: str | None + residence_flag: str | None + wage_input: str | None + reason: str + + +@dataclass(frozen=True) +class UsLocalTaxInputRegistry: + """The parsed local-tax input registry plus the SHA-256 of its bytes.""" + + inputs: tuple[UsLocalTaxInput, ...] + sha256: str + metadata: Mapping[str, Any] + + @property + def variables(self) -> tuple[str, ...]: + return tuple(item.variable for item in self.inputs) + + def with_provision(self, provision: str) -> tuple[UsLocalTaxInput, ...]: + return tuple(item for item in self.inputs if item.provision == provision) + + +def load_us_local_tax_input_registry( + path: str | Path, + *, + expected_sha256: str | None = None, +) -> UsLocalTaxInputRegistry: + """Load and validate a local-tax input registry, optionally pinning its SHA-256.""" + + payload = Path(path).read_bytes() + return _tax_input_registry_from_bytes(payload, expected_sha256=expected_sha256) + + +@cache +def packaged_us_local_tax_input_registry() -> UsLocalTaxInputRegistry: + """The packaged local-tax input registry, refused unless its bytes match the pin.""" + + payload = ( + files("microcosm.build.us_runtime") + .joinpath(US_LOCAL_TAX_INPUT_REGISTRY_RESOURCE) + .read_bytes() + ) + return _tax_input_registry_from_bytes( + payload, expected_sha256=US_LOCAL_TAX_INPUT_REGISTRY_SHA256 + ) + + +def us_local_tax_input_output_columns( + registry: UsLocalTaxInputRegistry | None = None, +) -> dict[str, frozenset[str]]: + """The columns a local-tax input step writes, by entity. + + Only ``resident_wages`` inputs are ever written; an unavailable input + never is. + """ + + resolved = registry or packaged_us_local_tax_input_registry() + columns: dict[str, set[str]] = {} + for item in resolved.with_provision(LOCAL_TAX_INPUT_RESIDENT_WAGES): + columns.setdefault(item.entity, set()).add(item.variable) + return {entity: frozenset(names) for entity, names in columns.items()} + + +def _tax_input_registry_from_bytes( + payload: bytes, + *, + expected_sha256: str | None, +) -> UsLocalTaxInputRegistry: + digest = hashlib.sha256(payload).hexdigest() + if expected_sha256 is not None and digest != expected_sha256: + raise ValueError( + "US local-tax input registry bytes do not match the pinned SHA-256: " + f"expected {expected_sha256}, observed {digest}." + ) + document = json.loads(payload) + if not isinstance(document, Mapping): + raise ValueError("US local-tax input registry must be a JSON object.") + if document.get("kind") != US_LOCAL_TAX_INPUT_REGISTRY_KIND: + raise ValueError( + "US local-tax input registry kind must be " + f"{US_LOCAL_TAX_INPUT_REGISTRY_KIND!r}, got {document.get('kind')!r}." + ) + if document.get("schema_version") != US_LOCAL_TAX_INPUT_REGISTRY_SCHEMA_VERSION: + raise ValueError( + "US local-tax input registry schema_version must be " + f"{US_LOCAL_TAX_INPUT_REGISTRY_SCHEMA_VERSION}, got " + f"{document.get('schema_version')!r}." + ) + sources = document.get("sources") + if not isinstance(sources, Mapping) or not sources: + raise ValueError("US local-tax input registry has no sources.") + raw = document.get("inputs") + if not isinstance(raw, list) or not raw: + raise ValueError("US local-tax input registry has no inputs.") + inputs = tuple( + _tax_input(item, index, sources=sources) for index, item in enumerate(raw) + ) + variables = [item.variable for item in inputs] + if len(set(variables)) != len(variables): + raise ValueError( + f"US local-tax input registry repeats a variable: {variables}." + ) + if variables != sorted(variables): + raise ValueError( + f"US local-tax input registry variables must be sorted: {variables}." + ) + metadata = {key: value for key, value in document.items() if key != "inputs"} + return UsLocalTaxInputRegistry(inputs=inputs, sha256=digest, metadata=metadata) + + +def _tax_input( + item: object, index: int, *, sources: Mapping[str, Any] +) -> UsLocalTaxInput: + label = f"inputs[{index}]" + if not isinstance(item, Mapping): + raise ValueError(f"{label} must be an object.") + missing = [key for key in _REQUIRED_TAX_INPUT_KEYS if key not in item] + if missing: + raise ValueError(f"{label} is missing {missing}.") + variable = _identifier(item["variable"], label=f"{label}.variable") + entity = item["entity"] + if entity not in _ENTITIES: + raise ValueError(f"{label}.entity must be one of {_ENTITIES}: {entity!r}.") + provision = item["provision"] + if provision not in LOCAL_TAX_INPUT_PROVISIONS: + raise ValueError( + f"{label}.provision must be one of {LOCAL_TAX_INPUT_PROVISIONS}: " + f"{provision!r}." + ) + for key in ("jurisdiction", "requires"): + if not isinstance(item[key], str) or not item[key]: + raise ValueError(f"{label}.{key} must be a non-empty string.") + consumers = item["engine_consumers"] + if ( + not isinstance(consumers, list) + or not consumers + or not all(isinstance(name, str) and name.isidentifier() for name in consumers) + ): + raise ValueError(f"{label}.engine_consumers must list engine variables.") + cited = item["sources"] + if not isinstance(cited, list) or not cited: + raise ValueError(f"{label}.sources must name at least one source.") + unknown = sorted(set(cited) - set(sources)) + if unknown: + raise ValueError(f"{label}.sources names unknown source(s) {unknown}.") + own, other = ( + (_RESIDENT_WAGES_KEYS, _UNAVAILABLE_KEYS) + if provision == LOCAL_TAX_INPUT_RESIDENT_WAGES + else (_UNAVAILABLE_KEYS, _RESIDENT_WAGES_KEYS) + ) + missing = [key for key in own if key not in item] + if missing: + raise ValueError(f"{label}: a {provision} input is missing {missing}.") + mixed = [key for key in other if key in item] + if mixed: + raise ValueError(f"{label}: a {provision} input may not name {mixed}.") + for key in own: + if not isinstance(item[key], str) or not item[key]: + raise ValueError(f"{label}.{key} must be a non-empty string.") + if provision == LOCAL_TAX_INPUT_RESIDENT_WAGES: + if entity != "person": + raise ValueError(f"{label}: a resident_wages input is a person input.") + return UsLocalTaxInput( + variable=variable, + entity=entity, + jurisdiction=item["jurisdiction"], + provision=provision, + basis=None, + residence_flag=_identifier( + item["residence_flag"], label=f"{label}.residence_flag" + ), + wage_input=_identifier(item["wage_input"], label=f"{label}.wage_input"), + reason=item["nonresident_reason"], + ) + basis = item["basis"] + if basis not in LOCAL_TAX_INPUT_UNAVAILABLE_BASES: + raise ValueError( + f"{label}.basis must be one of {LOCAL_TAX_INPUT_UNAVAILABLE_BASES}: " + f"{basis!r}." + ) + return UsLocalTaxInput( + variable=variable, + entity=entity, + jurisdiction=item["jurisdiction"], + provision=provision, + basis=basis, + residence_flag=None, + wage_input=None, + reason=item["reason"], + ) + + +def _identifier(value: object, *, label: str) -> str: + if not isinstance(value, str) or not value.isidentifier() or value != value.lower(): + raise ValueError(f"{label} must be a lowercase identifier: {value!r}.") + return value + + +def _resident_wage_inputs( + registry: UsLocalTaxInputRegistry, + jurisdictions: UsLocalJurisdictionRegistry, +) -> tuple[UsLocalTaxInput, ...]: + """The registry's resident_wages inputs, each tied to a person residence flag.""" + + person_flags = {item.flag for item in jurisdictions.for_entity("person")} + inputs = registry.with_provision(LOCAL_TAX_INPUT_RESIDENT_WAGES) + unknown = sorted( + item.residence_flag + for item in inputs + if item.residence_flag not in person_flags + ) + if unknown: + raise ValueError( + "Local-tax residence flag(s) " + f"{unknown} are not person flags in the local-jurisdiction registry." + ) + return inputs + + +def _boolean_values(values: pd.Series, *, column: str) -> np.ndarray: + if values.isna().any(): + raise ValueError(f"{column} has {int(values.isna().sum())} null row(s).") + if not pd.api.types.is_bool_dtype(values) and not values.isin([True, False]).all(): + raise ValueError(f"{column} holds non-boolean values.") + return values.astype(bool).to_numpy() + + +def us_resident_wage_tax_values( + person: pd.DataFrame, + item: UsLocalTaxInput, + *, + null_wages: str = NULL_WAGES_REFUSE, +) -> np.ndarray: + """A ``resident_wages`` input's values, aligned to ``person``'s rows. + + A resident (``item.residence_flag`` true) gets ``max(wages, 0)``: a + resident owes the tax on all compensation wherever earned, and a negative + wage is no compensation. Everyone else gets 0, the engine default, since + the nonresident component has no source. A missing column, a null or + non-boolean flag, or an infinite wage raises: writing 0 for a row nothing + could decide would be a silent guess. A resident's null wage raises too, + unless ``null_wages`` is ``propagate``: then the resident's value is null, + to be filled with the engine default exactly where the wage is. + """ + + if item.provision != LOCAL_TAX_INPUT_RESIDENT_WAGES: + raise ValueError(f"{item.variable} is not a resident_wages input.") + if null_wages not in NULL_WAGE_MODES: + raise ValueError(f"null_wages must be one of {NULL_WAGE_MODES}.") + assert item.residence_flag is not None and item.wage_input is not None + for column in (item.residence_flag, item.wage_input): + if column not in person: + raise ValueError( + f"person table has no {column!r}; it cannot decide {item.variable}." + ) + resident = _boolean_values(person[item.residence_flag], column=item.residence_flag) + wages = pd.to_numeric(person[item.wage_input], errors="coerce").to_numpy( + dtype=np.float64, na_value=np.nan + ) + infinite = np.isinf(wages) + if infinite.any(): + raise ValueError( + f"{item.wage_input} has {int(infinite.sum())} infinite row(s); " + f"{item.variable} cannot be derived for them." + ) + null_residents = resident & np.isnan(wages) + if null_residents.any() and null_wages == NULL_WAGES_REFUSE: + raise ValueError( + f"{item.wage_input} is null on {int(null_residents.sum())} resident " + f"row(s); {item.variable} cannot be derived for them." + ) + return np.where(resident, np.maximum(wages, 0.0), 0.0) + + +def apply_us_local_tax_inputs( + tables: Mapping[str, pd.DataFrame], + *, + registry: UsLocalTaxInputRegistry | None = None, + jurisdictions: UsLocalJurisdictionRegistry | None = None, + household_weights: np.ndarray | None = None, + null_wages: str = NULL_WAGES_REFUSE, +) -> tuple[dict[str, pd.DataFrame], dict[str, Any]]: + """Write every derivable local-tax input and return the tables with a receipt. + + A ``resident_wages`` input is written whenever its residence flag is on + the person table. Without the flag the line's geography could not decide + residence, so the input is not written (a stale column is removed) and + the receipt records it as unavailable. An ``unavailable`` input is never + written; a stale column is removed. The engine default then applies to + every row the receipt marks unavailable. ``null_wages`` is passed to + :func:`us_resident_wage_tax_values`. + + Tables an input lives on are returned as new (shallow-copied) frames; the + input tables are never modified, and the other tables pass through. + """ + + resolved = registry or packaged_us_local_tax_input_registry() + flags = jurisdictions or packaged_us_local_jurisdiction_registry() + _resident_wage_inputs(resolved, flags) + out = dict(tables) + for entity in {item.entity for item in resolved.inputs}: + out[entity] = tables[entity].copy(deep=False) + person_weights: np.ndarray | None = None + entries: dict[str, Any] = {} + for item in resolved.inputs: + table = out[item.entity] + entry: dict[str, Any] = {"entity": item.entity, "provision": item.provision} + if item.provision == LOCAL_TAX_INPUT_UNAVAILABLE: + if item.variable in table: + out[item.entity] = table.drop(columns=[item.variable]) + entry.update( + { + "status": JURISDICTION_FLAG_UNAVAILABLE, + "basis": item.basis, + "reason": item.reason, + } + ) + entries[item.variable] = entry + continue + assert item.residence_flag is not None + entry.update( + {"residence_flag": item.residence_flag, "wage_input": item.wage_input} + ) + if item.residence_flag not in table: + if item.variable in table: + out[item.entity] = table.drop(columns=[item.variable]) + entry.update( + { + "status": JURISDICTION_FLAG_UNAVAILABLE, + "reason": ( + f"the line wrote no {item.residence_flag}, so residence is " + "undecided; the input is not written and the engine " + "default (0) applies to every row" + ), + } + ) + entries[item.variable] = entry + continue + values = us_resident_wage_tax_values(table, item, null_wages=null_wages) + resident = table[item.residence_flag].astype(bool).to_numpy() + assert item.wage_input is not None + wages = pd.to_numeric(table[item.wage_input], errors="coerce").to_numpy( + dtype=np.float64, na_value=np.nan + ) + table[item.variable] = values + entry.update( + { + "status": JURISDICTION_FLAG_DERIVED, + "null_wages": null_wages, + "residents": int(resident.sum()), + "residents_with_taxable_wages": int((values > 0).sum()), + "residents_with_negative_wages_set_to_zero": int( + (resident & (wages < 0)).sum() + ), + "residents_with_null_wages_left_null": int(np.isnan(values).sum()), + "nonresident_component": { + "status": JURISDICTION_FLAG_UNAVAILABLE, + "reason": item.reason, + }, + } + ) + if household_weights is not None: + if person_weights is None: + weights = np.asarray(household_weights, dtype=np.float64) + if len(weights) != len(out["household"]): + raise ValueError( + "household_weights must align with the household table." + ) + person_weights = weights[ + _person_household_positions(out["household"], table) + ] + entry["weighted_residents"] = float(person_weights[resident].sum()) + entry["weighted_taxable_wages"] = float( + person_weights @ np.nan_to_num(values, nan=0.0) + ) + entries[item.variable] = entry + receipt = { + "registry": US_LOCAL_TAX_INPUT_REGISTRY_RESOURCE, + "registry_sha256": resolved.sha256, + "jurisdiction_registry_sha256": flags.sha256, + "inputs": entries, + } + return out, receipt + + +def with_us_local_tax_inputs( + frame: Frame, + *, + registry: UsLocalTaxInputRegistry | None = None, + jurisdictions: UsLocalJurisdictionRegistry | None = None, +) -> tuple[Frame, dict[str, Any]]: + """Return ``frame`` with its local-tax inputs and the receipt. + + A line calls this once both the residence flags and the wages are final: + after the geography step on a line whose wages are already in place, and + after the wage transfers on a line that draws geography first. + """ + + tables = {entity: frame.table(entity) for entity in frame.entities} + written, receipt = apply_us_local_tax_inputs( + tables, + registry=registry, + jurisdictions=jurisdictions, + household_weights=frame.weights_for("household").values, + ) + for link_name in frame.links: + written[link_name] = frame.link(link_name).copy() + weights = {entity: frame.weights_for(entity) for entity in frame.weighted_entities} + return ( + Frame( + written, + frame.schema, + weights, + frame.strata, + mass_log=frame.mass_log, + metadata=frame.metadata, + ), + receipt, + ) + + +def us_local_tax_input_failures( + person: pd.DataFrame, + *, + require_derivable: bool = False, + registry: UsLocalTaxInputRegistry | None = None, + jurisdictions: UsLocalJurisdictionRegistry | None = None, + null_wages: str = NULL_WAGES_REFUSE, +) -> list[str]: + """Gate check: every local-tax input present agrees with the table. + + An ``unavailable`` input must be absent: nothing could have decided it. + A ``resident_wages`` input present must equal its rule applied to the + table's own residence flag and wages, which must both be present. With + ``require_derivable``, a ``resident_wages`` input whose residence flag is + present must also be present, so an artifact built before the input + existed fails rather than leaving the engine default on every resident. + With ``null_wages`` ``propagate``, a resident's null wage must carry a + null input; otherwise any null fails. + """ + + resolved = registry or packaged_us_local_tax_input_registry() + flags = jurisdictions or packaged_us_local_jurisdiction_registry() + _resident_wage_inputs(resolved, flags) + failures: list[str] = [] + for item in resolved.inputs: + if item.entity != "person": + continue + present = item.variable in person + if item.provision == LOCAL_TAX_INPUT_UNAVAILABLE: + if present: + failures.append( + f"{item.variable}: present, but no source decides it ({item.basis})" + ) + continue + if not present: + if require_derivable and item.residence_flag in person: + failures.append( + f"{item.variable}: absent, but {item.residence_flag} is present " + "and decides it; the engine would default every resident to 0" + ) + continue + if item.residence_flag not in person: + failures.append( + f"{item.variable}: present, but {item.residence_flag} is absent, so " + "nothing decided residence" + ) + continue + try: + expected = us_resident_wage_tax_values(person, item, null_wages=null_wages) + except ValueError as error: + failures.append(f"{item.variable}: present but cannot be checked ({error})") + continue + observed = pd.to_numeric(person[item.variable], errors="coerce").to_numpy( + dtype=np.float64, na_value=np.nan + ) + unexpected = ~np.isfinite(observed) & ~np.isnan(expected) + if unexpected.any(): + failures.append( + f"{item.variable}: {int(unexpected.sum())} missing or non-finite " + "row(s) where the residence flag and wages decide a value" + ) + continue + disagree = (observed != expected) & ~(np.isnan(observed) & np.isnan(expected)) + if disagree.any(): + failures.append( + f"{item.variable}: {int(disagree.sum())}/{len(person)} person row(s) " + f"disagree with max({item.wage_input}, 0) for residents and 0 " + "otherwise" + ) + return failures + + +# --------------------------------------------------------------------------- +# Block-ladder verification +# --------------------------------------------------------------------------- + + +def check_us_local_jurisdictions_against_block_ladder( + block_geoid: np.ndarray, + population: np.ndarray, + place_fips: np.ndarray, + *, + registry: UsLocalJurisdictionRegistry | None = None, +) -> dict[str, dict[str, Any]]: + """Check every registry geography against a 2020 block ladder. + + Derives each flag for one row per block exactly as a household on that + block gets it (county = the block geoid's first five digits, place = the + ladder's place code), then requires, per jurisdiction: + + - at least one block; + - flag-weighted block population equal to ``population_2020``; and + - for a county rule with a coextensive city, the flagged blocks equal + that city's blocks. + + Returns the per-jurisdiction block count and population; raises on the + first disagreement. + """ + + resolved = registry or packaged_us_local_jurisdiction_registry() + blocks = np.asarray(block_geoid, dtype=np.int64) + pop = np.asarray(population, dtype=np.float64) + places = np.asarray(place_fips, dtype=np.int64) + if not (len(blocks) == len(pop) == len(places)): + raise ValueError("block_geoid, population and place_fips must align.") + block_table = pd.DataFrame( + { + "county_fips": [f"{value // 10**10:05d}" for value in blocks.tolist()], + "place_fips": [ + "" if value == 0 else f"{value:05d}" for value in places.tolist() + ], + } + ) + flags = us_local_jurisdiction_flag_values( + block_table, rungs=JURISDICTION_RUNGS, registry=resolved + ) + state = blocks // 10**13 + report: dict[str, dict[str, Any]] = {} + for item in resolved.jurisdictions: + mask = flags[item.flag] + blocks_in = int(mask.sum()) + population_in = float(pop[mask].sum()) + if blocks_in == 0: + raise ValueError( + f"{item.flag}: no block in the ladder matches {item.geoid}." + ) + if population_in != float(item.population_2020): + raise ValueError( + f"{item.flag}: ladder population {population_in:,.0f} differs from " + f"the registry's 2020 population {item.population_2020:,}." + ) + entry: dict[str, Any] = {"blocks": blocks_in, "population": int(population_in)} + if item.coextensive_place_fips is not None: + city = (state == int(item.state_fips)) & ( + places == int(item.coextensive_place_fips) + ) + if not np.array_equal(city, mask): + raise ValueError( + f"{item.flag}: county {item.county_fips} and place " + f"{item.state_fips}{item.coextensive_place_fips} are not the " + "same blocks in this ladder." + ) + entry["coextensive_place_blocks"] = int(city.sum()) + report[item.flag] = entry + return report + + +__all__ = [ + "BLOCK_GEOGRAPHY_RUNGS", + "JURISDICTION_FLAG_DERIVED", + "JURISDICTION_FLAG_UNAVAILABLE", + "JURISDICTION_RUNGS", + "JURISDICTION_RUNG_COUNTY", + "JURISDICTION_RUNG_PLACE", + "LOCAL_TAX_INPUT_PROVISIONS", + "LOCAL_TAX_INPUT_RESIDENT_WAGES", + "LOCAL_TAX_INPUT_UNAVAILABLE", + "LOCAL_TAX_INPUT_UNAVAILABLE_BASES", + "NULL_WAGES_PROPAGATE", + "NULL_WAGES_REFUSE", + "NULL_WAGE_MODES", + "PUMA_GEOGRAPHY_RUNGS", + "US_LOCAL_JURISDICTION_REGISTRY_KIND", + "US_LOCAL_JURISDICTION_REGISTRY_RESOURCE", + "US_LOCAL_JURISDICTION_REGISTRY_SCHEMA_VERSION", + "US_LOCAL_JURISDICTION_REGISTRY_SHA256", + "US_LOCAL_TAX_INPUT_REGISTRY_KIND", + "US_LOCAL_TAX_INPUT_REGISTRY_RESOURCE", + "US_LOCAL_TAX_INPUT_REGISTRY_SCHEMA_VERSION", + "US_LOCAL_TAX_INPUT_REGISTRY_SHA256", + "UsLocalJurisdiction", + "UsLocalJurisdictionRegistry", + "UsLocalTaxInput", + "UsLocalTaxInputRegistry", + "apply_us_local_jurisdiction_flags", + "apply_us_local_tax_inputs", + "check_us_local_jurisdictions_against_block_ladder", + "load_us_local_jurisdiction_registry", + "load_us_local_tax_input_registry", + "packaged_us_local_jurisdiction_registry", + "packaged_us_local_tax_input_registry", + "rederive_us_local_jurisdiction_flags", + "us_local_jurisdiction_flag_failures", + "us_local_jurisdiction_flag_receipt", + "us_local_jurisdiction_flag_values", + "us_local_jurisdiction_rungs_present", + "us_local_tax_input_failures", + "us_local_tax_input_output_columns", + "us_resident_wage_tax_values", + "with_us_local_jurisdiction_flags", + "with_us_local_tax_inputs", +] diff --git a/packages/microcosm-build/src/microcosm/build/us_runtime/multispine_pool.py b/packages/microcosm-build/src/microcosm/build/us_runtime/multispine_pool.py index 65006c5c40..b215b94291 100644 --- a/packages/microcosm-build/src/microcosm/build/us_runtime/multispine_pool.py +++ b/packages/microcosm-build/src/microcosm/build/us_runtime/multispine_pool.py @@ -62,6 +62,13 @@ with_us_housing_inputs, ) from microcosm.build.us_runtime.immigration import with_us_immigration_inputs +from microcosm.build.us_runtime.local_jurisdictions import ( + LOCAL_TAX_INPUT_RESIDENT_WAGES, + PUMA_GEOGRAPHY_RUNGS, + packaged_us_local_jurisdiction_registry, + packaged_us_local_tax_input_registry, + with_us_local_tax_inputs, +) from microcosm.build.us_runtime.medicare_take_up import ( with_us_medicare_take_up_input, ) @@ -237,9 +244,14 @@ POOL_DERIVE_OPERATOR_ORDER = ( "_complete_schedule_d_input", + "with_us_local_tax_inputs", "with_us_qbi_input_reconciliation", ) -"""Whole-pool deterministic operators owned by the derive stage.""" +"""Whole-pool deterministic operators owned by the derive stage. + +The local-tax inputs precede the QBI reconciliation, whose receipt binds the +live person-column inventory; they read wages, which it does not change. +""" POOL_RANDOM_SEED = 0 """Fixed seed shared by pool imputations and seeded input stages.""" @@ -367,13 +379,18 @@ class PoolEngineInputProjectionContract: POOL_PROJECTION_INPUT_PROVISION_COUNTS: tuple[tuple[str, int], ...] = ( ("assembled_native_engine_input", 5), - ("declared_absent_engine_input", 762), + ("declared_absent_engine_input", 751), ("declared_deferred_null_input", 3), + ("derived_resident_wage_tax_input", 1), ("derived_schedule_d_input", 1), ("frame_structural_engine_input", 10), + ("geography_derived_jurisdiction_input", 2), ("materialized_pool_input_surface", 123), - ("preserved_stacked_engine_input", 4), + ("preserved_stacked_engine_input", 6), ("seed_stage_program_contract", 17), + ("unavailable_place_jurisdiction_input", 2), + ("unavailable_refund_claim_input", 1), + ("unavailable_work_location_input", 3), ("unprovisioned_source_input", 1), ) """How every installed engine input is provisioned, by count. @@ -383,9 +400,9 @@ class PoolEngineInputProjectionContract: """ POOL_REMAINING_STAGE_INPUT_MANIFEST_SHA256 = ( - "d4fb9de9c0b8081474a24d0abde84ebf05eb346483fc20e3852e29abc769a501" + "92cad0dc6283e463b74cec5137196d4db4e29b34cb87c0718c6c2f669cf99915" ) -"""Pinned content digest of all 1,059 post-transfer consumer/input rows.""" +"""Pinned content digest of all 1,064 post-transfer consumer/input rows.""" @dataclass(frozen=True) @@ -638,6 +655,13 @@ class SourceOperatorContract: "transferred tax-unit parents exist only on the physically cloned pool", execution_scope=_WHOLE_POOL_EXECUTION_SCOPE, ), + "with_us_local_tax_inputs": SourceOperatorContract( + "local_tax_inputs", + (_POST_CLONE_PHASE,), + "resident wage-tax bases read the assembled residence flags and the " + "transferred wages", + execution_scope=_WHOLE_POOL_EXECUTION_SCOPE, + ), "with_us_qbi_input_reconciliation": SourceOperatorContract( "qbi_reconciliation", (_POST_CLONE_PHASE,), @@ -645,7 +669,7 @@ class SourceOperatorContract: execution_scope=_WHOLE_POOL_EXECUTION_SCOPE, ), } -"""Total clone-phase registry for all 23 pool-path operator kernels.""" +"""Total clone-phase registry for all 24 pool-path operator kernels.""" POOL_SOURCE_OPERATOR_CONTRACTS = POOL_OPERATOR_CONTRACTS """Backward-compatible name for the now-total pool operator registry.""" @@ -694,6 +718,10 @@ class SourceOperatorContract: tuple[str, str], tuple[str, str | None] ] = { ("person", "is_related_to_head_or_spouse"): ("assembled", None), + # The stacked post-assembly PUMA-ladder operator writes both on every + # household (``_assign_stacked_household_geography``). + ("household", "congressional_district_geoid"): ("assembled", None), + ("household", "county_fips"): ("assembled", None), ("household", "puma"): ( "assembled", "ephemeral_simulation_projection_engine_default_for_null", @@ -1168,7 +1196,7 @@ def pool_remaining_stage_input_manifest( """Enumerate and statically provision every remaining-stage data read. The manifest starts at a validated ``transferred`` checkpoint and covers - tail preparation, both derive kernels, all seventeen seed-program branches, + tail preparation, all three derive kernels, all seventeen seed-program branches, and the terminal SSI simulation. Simulation leaves come from the pinned source-index graph rather than a handwritten dependency list. """ @@ -1356,6 +1384,58 @@ def surface_provision(variable: str) -> str: available_by="assembled", ) + # The stacked pool's geography comes from the PUMA ladder, which draws a + # county but no place: county-rule jurisdiction flags are derived with + # it, place-rule flags are never written (local_jurisdictions). + local_jurisdiction_inputs = { + (item.entity, item.flag): item.rule in PUMA_GEOGRAPHY_RUNGS + for item in packaged_us_local_jurisdiction_registry().jurisdictions + } + local_tax_inputs = { + (item.entity, item.variable): item + for item in packaged_us_local_tax_input_registry().inputs + } + # A resident wage-tax base reads the residence flag assembled with the + # geography and the transferred wages; its receipt weighs residents by + # their household's weight. + for item in local_tax_inputs.values(): + if item.provision != LOCAL_TAX_INPUT_RESIDENT_WAGES: + continue + assert item.residence_flag is not None and item.wage_input is not None + if local_jurisdiction_inputs[("person", item.residence_flag)]: + register( + "derive", + "with_us_local_tax_inputs", + "person", + item.residence_flag, + execution_scope="whole_pool", + provision="geography_derived_jurisdiction_input", + available_by="assembled", + ) + register( + "derive", + "with_us_local_tax_inputs", + "person", + item.wage_input, + execution_scope="whole_pool", + provision=surface_provision(item.wage_input), + available_by="transferred", + ) + for entity, variable, provision in ( + ("person", "person_household_id", "frame_membership"), + ("household", "household_id", "frame_entity_id"), + ("household", "", "frame_household_weight"), + ): + register( + "derive", + "with_us_local_tax_inputs", + entity, + variable, + execution_scope="whole_pool", + provision=provision, + available_by="assembled", + ) + transfer_owned = { variable for families in pool_transfer_target_families().values() @@ -1584,6 +1664,33 @@ def surface_provision(variable: str) -> str: elif (entity, variable) in engine_structural_inputs: provision = "frame_structural_engine_input" available_by = "assembled" + elif (entity, variable) in local_jurisdiction_inputs: + if local_jurisdiction_inputs[(entity, variable)]: + provision = "geography_derived_jurisdiction_input" + available_by = "assembled" + else: + provision = "unavailable_place_jurisdiction_input" + available_by = "simulate" + fallback = "policyengine_default_no_place_rung" + elif (entity, variable) in local_tax_inputs: + # A resident wage-tax base is derived for residents; its + # nonresident rows hold the engine default because no source + # gives where a nonresident works. Every other local-tax input + # has no source and is never written (us_local_tax_inputs.json). + tax_input = local_tax_inputs[(entity, variable)] + if tax_input.provision == LOCAL_TAX_INPUT_RESIDENT_WAGES: + if local_jurisdiction_inputs[("person", tax_input.residence_flag)]: + provision = "derived_resident_wage_tax_input" + available_by = "derived" + fallback = "nonresident_work_location_unavailable_engine_default" + else: + provision = "unavailable_residence_wage_tax_input" + available_by = "simulate" + fallback = "policyengine_default_no_residence_rung" + else: + provision = f"unavailable_{tax_input.basis}_input" + available_by = "simulate" + fallback = f"policyengine_default_no_{tax_input.basis}_source" elif (entity, variable) in _POOL_SIMULATION_PRESERVED_ENGINE_INPUTS: provision = "preserved_stacked_engine_input" available_by, preserved_fallback = _POOL_SIMULATION_PRESERVED_ENGINE_INPUTS[ @@ -2886,12 +2993,19 @@ def derive_multispine_pool_inputs(frame: Frame) -> PoolStageOutput: Schedule D capital-gain distributions are derived once per tax unit from the transferred parent inputs, then carried by the first person only when the unit has no pre-existing values. Existing non-null values are never - rewritten. The shared QBI reconciliation then restores its documented - all-or-nothing identities on the imputed PUF-detail surface. + rewritten. The local-tax inputs are then derived from the residence + flags assembled with the geography and the now-final wages (a + Philadelphia resident's taxable wages); the inputs no source decides are + left unwritten and receipted. The shared QBI reconciliation last restores + its documented all-or-nothing identities on the imputed PUF-detail + surface. """ remaining_stage_manifest_receipt = pool_remaining_stage_input_manifest_receipt() + def local_tax_inputs_with_receipt(input_frame: Frame) -> PoolStageOutput: + return PoolStageOutput(*with_us_local_tax_inputs(input_frame)) + def reconcile_qbi_with_receipt(input_frame: Frame) -> PoolStageOutput: reconciled = with_us_qbi_input_reconciliation(input_frame) receipt = us_qbi_reconciliation_change_receipt(input_frame, reconciled) @@ -2912,11 +3026,13 @@ def reconcile_qbi_with_receipt(input_frame: Frame) -> PoolStageOutput: operator_names=POOL_DERIVE_OPERATOR_ORDER, operators={ "_complete_schedule_d_input": _complete_schedule_d_input, + "with_us_local_tax_inputs": local_tax_inputs_with_receipt, "with_us_qbi_input_reconciliation": reconcile_qbi_with_receipt, }, ) schedule_d_receipt = completed.receipt["suboperators"][0]["kernel_receipt"] - qbi_receipt = completed.receipt["suboperators"][1]["kernel_receipt"] + local_tax_input_receipt = completed.receipt["suboperators"][1]["kernel_receipt"] + qbi_receipt = completed.receipt["suboperators"][2]["kernel_receipt"] authorized = bind_us_qbi_reconciliation_transition_authority( completed.frame, qbi_receipt, @@ -2935,6 +3051,7 @@ def reconcile_qbi_with_receipt(input_frame: Frame) -> PoolStageOutput: "remaining_stage_input_manifest": remaining_stage_manifest_receipt, "schedule_d_capital_gain_distributions": schedule_d_receipt, "qbi_input_reconciliation": dict(qbi_receipt), + "local_tax_inputs": dict(local_tax_input_receipt), }, qbi_transition_authority_sha256=qbi_receipt["sha256"], ) diff --git a/packages/microcosm-build/src/microcosm/build/us_runtime/operator_boundary.py b/packages/microcosm-build/src/microcosm/build/us_runtime/operator_boundary.py index 470e8e016c..321301d628 100644 --- a/packages/microcosm-build/src/microcosm/build/us_runtime/operator_boundary.py +++ b/packages/microcosm-build/src/microcosm/build/us_runtime/operator_boundary.py @@ -57,6 +57,9 @@ US_HOUSING_SPM_UNIT_OUTPUT_COLUMNS, ) from microcosm.build.us_runtime.immigration import US_IMMIGRATION_OUTPUT_COLUMNS +from microcosm.build.us_runtime.local_jurisdictions import ( + us_local_tax_input_output_columns, +) from microcosm.build.us_runtime.medicare_take_up import ( US_MEDICARE_TAKE_UP_OUTPUT_COLUMNS, ) @@ -355,6 +358,7 @@ "qbi_reconciliation": { "person": frozenset(US_QBI_RECONCILED_PERSON_COLUMNS), }, + "local_tax_inputs": us_local_tax_input_output_columns(), "housing_assistance": { "spm_unit": frozenset( { diff --git a/packages/microcosm-build/src/microcosm/build/us_runtime/puma_ladder.py b/packages/microcosm-build/src/microcosm/build/us_runtime/puma_ladder.py index 40b2d46371..a98dfdfc88 100644 --- a/packages/microcosm-build/src/microcosm/build/us_runtime/puma_ladder.py +++ b/packages/microcosm-build/src/microcosm/build/us_runtime/puma_ladder.py @@ -41,7 +41,12 @@ input, exactly as the UK ladder carries ``*_code`` columns policyengine-uk has no input for). The exported artifact carries engine inputs, never formula outputs, so ``in_nyc``/``nyc_income_tax`` recompute from the county rung -instead of being persisted (the #34 regression). +instead of being persisted (the #34 regression). Of the local flags the engine +declares as plain inputs, the county-rule ones (``in_denver``, +``pa_philadelphia_wage_tax_resident``) are derived from the drawn county. The +ladder has no place rung, so the place-rule flags (``in_yonkers``, +``in_wilmington``) are unavailable: they are never written, and the summary +records why (:mod:`.local_jurisdictions`). """ from __future__ import annotations @@ -67,6 +72,13 @@ US_NYC_COUNTY_FIPS, non_text_county_fips_failure, ) +from microcosm.build.us_runtime.local_jurisdictions import ( + PUMA_GEOGRAPHY_RUNGS, + apply_us_local_jurisdiction_flags, + us_local_jurisdiction_flag_failures, + us_local_jurisdiction_flag_receipt, + us_local_jurisdiction_flag_values, +) from microcosm.build.us_runtime.puma_county_vintage import ( county_fips_2023_for_puma_assignment, ) @@ -413,7 +425,12 @@ def with_household_us_puma_ladder( assign_tract: bool = False, expected_congressional_district_vintage: str | None = None, ) -> Frame: - """Return ``frame`` with the household PUMA ladder assigned.""" + """Return ``frame`` with the household PUMA ladder assigned. + + The county-rule local-jurisdiction flags are derived from the drawn county + and written as engine inputs; the place-rule flags are left unwritten + (any stale column is removed) because the ladder assigns no place. + """ tables = {entity: frame.table(entity).copy() for entity in frame.entities} tables["household"] = assign_us_puma_ladder( @@ -425,6 +442,7 @@ def with_household_us_puma_ladder( expected_congressional_district_vintage ), ) + tables, _ = apply_us_local_jurisdiction_flags(tables, rungs=PUMA_GEOGRAPHY_RUNGS) for link_name in frame.links: tables[link_name] = frame.link(link_name).copy() weights = {entity: frame.weights_for(entity) for entity in frame.weighted_entities} @@ -485,6 +503,11 @@ def us_puma_ladder_assignment_summary( summary["nyc_weighted_household_share"] = ( float(weights[nyc].sum() / total) if total > 0 else 0.0 ) + summary["local_jurisdiction_flags"] = us_local_jurisdiction_flag_receipt( + us_local_jurisdiction_flag_values(household, rungs=PUMA_GEOGRAPHY_RUNGS), + rungs=PUMA_GEOGRAPHY_RUNGS, + household_weights=weights, + ) return summary @@ -594,6 +617,14 @@ def us_puma_ladder_gate( f"{label}: {int(mismatched.sum())}/{len(values)} row(s) " "disagree with the expected state/county prefix" ) + # The drawn county decides the county-rule flags, so each must be present + # and match. A place-rule flag fails here unless the table carries a + # complete place rung to decide it. + failures.extend( + us_local_jurisdiction_flag_failures( + household, required_rungs=PUMA_GEOGRAPHY_RUNGS + ) + ) total = float(weights.sum()) if total <= 0: diff --git a/packages/microcosm-build/src/microcosm/build/us_runtime/us_local_jurisdictions.json b/packages/microcosm-build/src/microcosm/build/us_runtime/us_local_jurisdictions.json new file mode 100644 index 0000000000..5b6e59b1d5 --- /dev/null +++ b/packages/microcosm-build/src/microcosm/build/us_runtime/us_local_jurisdictions.json @@ -0,0 +1,190 @@ +{ + "kind": "us_local_jurisdiction_registry", + "schema_version": 1, + "description": "policyengine-us input-only local-jurisdiction flags and the 2020 Census geography that decides each one. A county rule is true when county_fips equals county_fips; a place rule is true when the first two digits of county_fips equal state_fips and place_fips equals place_fips.", + "engine": { + "package": "policyengine-us", + "versions_checked": [ + "2.2.1", + "2.60.4" + ], + "note": "Each flag is an input variable with no formula in both versions, so it defaults to False unless the dataset writes it." + }, + "sources": { + "population": { + "table": "2020 Census P.L. 94-171 Redistricting Data, P1_001N (total population)", + "api": "https://api.census.gov/data/2020/dec/pl", + "national_total_2020": 331449281 + }, + "gazetteer_place": { + "url": "https://www2.census.gov/geo/docs/maps-data/data/gazetteer/2020_Gazetteer/2020_Gaz_place_national.zip", + "sha256": "6e5745b3e1adf7a1e024a988301d484697e2a0f25b3cf10114eef676f09d5c18" + }, + "gazetteer_county": { + "url": "https://www2.census.gov/geo/docs/maps-data/data/gazetteer/2020_Gazetteer/2020_Gaz_counties_national.zip", + "sha256": "02ef546e4c4f9c032c19616eabb9526caa016f778f41ede3b8c9755dacce20ef" + } + }, + "jurisdictions": [ + { + "flag": "in_denver", + "entity": "household", + "jurisdiction": "City and County of Denver, Colorado", + "rule": "county", + "state_fips": "08", + "county_fips": "08031", + "place_fips": null, + "coextensive_place_fips": "20000", + "population_2020": 715522, + "engine_consumers": [ + "co_denver_property_tax_relief_homeowner_eligible", + "co_denver_property_tax_relief_renter_eligible" + ], + "gazetteer": { + "county": { + "geoid": "08031", + "ansicode": "00198131", + "name": "Denver County", + "aland": 396463432, + "awater": 4275563 + }, + "place": { + "geoid": "0820000", + "ansicode": "02410324", + "name": "Denver city", + "aland": 396463432, + "awater": 4275563 + } + } + }, + { + "flag": "in_wilmington", + "entity": "household", + "jurisdiction": "City of Wilmington, Delaware", + "rule": "place", + "state_fips": "10", + "county_fips": null, + "place_fips": "77580", + "coextensive_place_fips": null, + "population_2020": 70898, + "engine_consumers": [ + "de_wilmington_earned_income_tax" + ], + "gazetteer": { + "place": { + "geoid": "1077580", + "ansicode": "02390676", + "name": "Wilmington city", + "aland": 28218288, + "awater": 16303525 + } + } + }, + { + "flag": "in_yonkers", + "entity": "household", + "jurisdiction": "City of Yonkers, New York", + "rule": "place", + "state_fips": "36", + "county_fips": null, + "place_fips": "84000", + "coextensive_place_fips": null, + "population_2020": 211569, + "engine_consumers": [ + "ny_yonkers_income_tax" + ], + "gazetteer": { + "place": { + "geoid": "3684000", + "ansicode": "00979660", + "name": "Yonkers city", + "aland": 46634438, + "awater": 5850607 + } + } + }, + { + "flag": "pa_philadelphia_wage_tax_resident", + "entity": "person", + "jurisdiction": "City and County of Philadelphia, Pennsylvania", + "rule": "county", + "state_fips": "42", + "county_fips": "42101", + "place_fips": null, + "coextensive_place_fips": "60000", + "population_2020": 1603797, + "engine_consumers": [ + "pa_philadelphia_wage_tax" + ], + "residence_rule": "A person is a Philadelphia wage-tax resident exactly when the person's household lies in Philadelphia County, which is the same area as Philadelphia city. The flag records residence only; the tax also needs pa_philadelphia_wage_tax_taxable_wages, which this registry does not supply.", + "gazetteer": { + "county": { + "geoid": "42101", + "ansicode": "01209187", + "name": "Philadelphia County", + "aland": 347981634, + "awater": 21606282 + }, + "place": { + "geoid": "4260000", + "ansicode": "01215531", + "name": "Philadelphia city", + "aland": 347981634, + "awater": 21606282 + } + } + } + ], + "block_ladder_checks": [ + { + "block_ladder_sha256": "6840b990acdfa2003d7723da5595e3cfff7205a4fa3d8d6206ed835c85c3f233", + "blocks": 5769942, + "population": 331449281, + "jurisdictions": { + "in_denver": { + "blocks": 8394, + "population": 715522, + "coextensive_place_blocks": 8394 + }, + "in_wilmington": { + "blocks": 1071, + "population": 70898 + }, + "in_yonkers": { + "blocks": 1336, + "population": 211569 + }, + "pa_philadelphia_wage_tax_resident": { + "blocks": 14549, + "population": 1603797, + "coextensive_place_blocks": 14549 + } + } + }, + { + "block_ladder_sha256": "7ba39b959068181b56a7ce1dc8f2477b31af33f28d0a1803ff6cba84cdfab06b", + "blocks": 5769942, + "population": 331449281, + "jurisdictions": { + "in_denver": { + "blocks": 8394, + "population": 715522, + "coextensive_place_blocks": 8394 + }, + "in_wilmington": { + "blocks": 1071, + "population": 70898 + }, + "in_yonkers": { + "blocks": 1336, + "population": 211569 + }, + "pa_philadelphia_wage_tax_resident": { + "blocks": 14549, + "population": 1603797, + "coextensive_place_blocks": 14549 + } + } + } + ] +} diff --git a/packages/microcosm-build/src/microcosm/build/us_runtime/us_local_tax_inputs.json b/packages/microcosm-build/src/microcosm/build/us_runtime/us_local_tax_inputs.json new file mode 100644 index 0000000000..4082fac6f1 --- /dev/null +++ b/packages/microcosm-build/src/microcosm/build/us_runtime/us_local_tax_inputs.json @@ -0,0 +1,167 @@ +{ + "kind": "us_local_tax_input_registry", + "schema_version": 1, + "description": "How microcosm provisions the policyengine-us local-tax inputs that depend on where a person works, what they earn or what they claim, rather than on residence alone. A resident_wages input is derived from a residence flag in us_local_jurisdictions.json and the person's wages. An unavailable input has no defensible source at microcosm's geography; it is never written, so the engine default applies to every row.", + "engine": { + "package": "policyengine-us", + "versions_checked": [ + "2.2.1", + "2.60.4" + ], + "note": "Each variable is an input with no formula in both versions. The float inputs default to 0, the boolean to False and the month count to 0, and none has an uprating parameter." + }, + "inputs": [ + { + "variable": "co_denver_employee_occupational_privilege_tax_months", + "entity": "person", + "jurisdiction": "City and County of Denver, Colorado", + "provision": "unavailable", + "basis": "work_location", + "engine_consumers": [ + "co_denver_employee_occupational_privilege_tax" + ], + "requires": "The number of calendar months in which the person earned at least $500 for work performed in Denver.", + "reason": "No source records months worked in Denver. ACS PUMS records one reference-week place of work, and its smallest Colorado unit, POWPUMA 08/00490, spans nine counties (Adams, Arapahoe, Boulder, Broomfield, Clear Creek, Denver, Douglas, Gilpin and Jefferson). LODES counts jobs held on April 1, and its lowest earnings band is $1,250 a month or less, so neither the month count nor the $500 test can be read from it.", + "sources": [ + "denver_opt", + "acs_pums_code_lists", + "acs_place_of_work", + "lodes" + ] + }, + { + "variable": "de_wilmington_nonresident_earnings", + "entity": "person", + "jurisdiction": "City of Wilmington, Delaware", + "provision": "unavailable", + "basis": "work_location", + "engine_consumers": [ + "de_wilmington_earned_income_tax" + ], + "requires": "A nonresident's earnings for work performed in Wilmington.", + "reason": "The smallest person-level place-of-work unit is ACS PUMS POWPUMA 10/00100, which is all of New Castle County, and Wilmington is one place inside it. Wilmington appears only in aggregate commuting flows (CTPP place tables, LODES origin-destination counts), which give no person's earnings.", + "sources": [ + "acs_pums_code_lists", + "acs_place_of_work", + "lodes" + ] + }, + { + "variable": "ny_yonkers_nonresident_earnings", + "entity": "person", + "jurisdiction": "City of Yonkers, New York", + "provision": "unavailable", + "basis": "work_location", + "engine_consumers": [ + "ny_yonkers_income_tax" + ], + "requires": "A nonresident's earnings for work performed in Yonkers.", + "reason": "The smallest person-level place-of-work unit is ACS PUMS POWPUMA 36/03100, which is all of Westchester County. Yonkers appears only in aggregate commuting flows (ACS county-subdivision flows, CTPP, LODES origin-destination counts), which give no person's earnings.", + "sources": [ + "acs_pums_code_lists", + "acs_place_of_work", + "lodes" + ] + }, + { + "variable": "pa_philadelphia_wage_tax_reduced_rate_eligible", + "entity": "person", + "jurisdiction": "City and County of Philadelphia, Pennsylvania", + "provision": "unavailable", + "basis": "refund_claim", + "engine_consumers": [ + "pa_philadelphia_wage_tax" + ], + "requires": "Whether the person receives the 1.5% income-based Wage Tax rate.", + "reason": "Employers withhold the full rate. A worker approved for Pennsylvania Schedule SP tax forgiveness gets the reduced rate only by filing a refund petition after the year ends, and few do: 1,421 filers received refunds for tax year 2020, against as many as 60,000 eligible households by the City Council's estimate. No survey records the petition. Eligibility alone would overstate the relief many times over, so the input is not written and the engine applies the standard rates.", + "sources": [ + "philadelphia_income_based_rate" + ] + }, + { + "variable": "pa_philadelphia_wage_tax_taxable_wages", + "entity": "person", + "jurisdiction": "City and County of Philadelphia, Pennsylvania", + "provision": "resident_wages", + "residence_flag": "pa_philadelphia_wage_tax_resident", + "wage_input": "employment_income_before_lsr", + "engine_consumers": [ + "pa_philadelphia_wage_tax" + ], + "requires": "The person's compensation subject to the Philadelphia Wage Tax.", + "resident_rule": "A Philadelphia resident is taxed on all compensation wherever earned, so the resident's taxable wages are max(employment_income_before_lsr, 0): the engine's gross wages, which include elective retirement deferrals and Section 125 salary reductions, both taxable in Philadelphia. Self-employment income falls under the Net Profits Tax, not the Wage Tax, and is excluded. Every other person holds 0.", + "nonresident_reason": "A nonresident is taxed on pay for days worked in Philadelphia. ACS PUMS POWPUMA 42/03200 is exactly Philadelphia County, but microcosm does not read the ACS place-of-work fields, it records one reference-week location for the main job only, and it codes people working from home to their home POWPUMA although Philadelphia taxes a nonresident's elective home-work days. Nonresident rows therefore hold 0, the engine default, and the nonresident component is recorded as unavailable.", + "limitations": [ + "Nonqualified stock-option income (W-2 code V) is excluded from the Philadelphia base; microcosm cannot separate it from wages.", + "The value is fixed when written. A labor-supply response changes employment_income in the engine but not this input." + ], + "sources": [ + "philadelphia_wage_tax_base", + "acs_pums_code_lists", + "acs_place_of_work" + ] + } + ], + "sources": { + "philadelphia_wage_tax_base": { + "summary": "Residents are taxed on all compensation regardless of where services are performed; nonresidents on work done in Philadelphia, apportioned by working days, with employer-required remote days exempt and elective home days taxable. Employee 401(k) deferrals, pension contributions, Section 125 premiums, HSA and FSA contributions are taxable; self-employment income is taxed under the Net Profits Tax.", + "documents": [ + "https://www.phila.gov/media/20200131115216/Philadelphia-Income-Tax-Regulations-compiled-2020-january.pdf", + "https://www.phila.gov/2020-06-15-what-types-of-income-are-not-subject-to-the-wage-tax/", + "https://www.phila.gov/media/20231024112123/UPDATED-Wage-Tax-policy-guidance-for-non-resident-employees.pdf", + "https://www.phila.gov/media/20260112135700/2025-Earnings-Tax-return-instructions-general-information.pdf" + ], + "sections": "Regulations sections 201, 203, 205, 207-209 and 102(b)" + }, + "philadelphia_income_based_rate": { + "summary": "A resident or nonresident approved for Pennsylvania Schedule SP tax forgiveness pays the Wage Tax at 1.5% by refund petition after the year ends; employers continue to withhold the full rate.", + "documents": [ + "https://www.phila.gov/services/payments-assistance-taxes/taxes/business-taxes/business-taxes-by-type/wage-tax-employers/", + "https://www.phila.gov/media/20260128153824/Philadelphia-Income-Based-Wage-Tax-Refund-Petition-form-fillable.pdf", + "https://phlcouncil.com/?p=69732" + ], + "sections": "Regulations section 601(l)" + }, + "denver_opt": { + "summary": "The employee occupational privilege tax is $5.75 for each calendar month in which the employee earns at least $500 for services performed in Denver.", + "documents": [ + "https://www.denvergov.org/files/assets/public/v/2/finance/documents/treasury/tax-guides/taxguidetopic61_occupationalprivilegetaxes.pdf" + ] + }, + "acs_pums_code_lists": { + "summary": "PUMA to POWPUMA relationship (sheet PUMA_POWPUMA_MIGPUMA) and county to POWPUMA lookup. Philadelphia County 42101 is POWPUMA 42/03200 and no other county; Westchester 36119 is POWPUMA 36/03100 alone; New Castle 10003 is POWPUMA 10/00100 alone; Denver 08031 shares POWPUMA 08/00490 with eight other counties. POWPUMAs aggregate whole counties.", + "documents": [ + { + "url": "https://www2.census.gov/programs-surveys/acs/tech_docs/pums/code_lists/ACSPUMS2023CodeLists.xls", + "sha256": "9da7cc5c8169e31111fbc0673a99aeb9c63459c84af7233f7c789ee382cf312f" + }, + { + "url": "https://www2.census.gov/programs-surveys/acs/tech_docs/pums/code_lists/ACSPUMS2022CodeLists.xls", + "sha256": "1db73c534d4025a89299902504a689d32f64320779320d1fa035c43ccd3e1dd4" + }, + { + "url": "https://www2.census.gov/geo/pdfs/reference/puma2020/2020PUMA_FinalCriteria.pdf", + "sha256": "f7eaa4345dc4527aad11e102464e7fdcd68dd148e91311818a221fbf9ea32daf" + } + ] + }, + "acs_place_of_work": { + "summary": "ACS records the place of work for people at work in the reference week, at the location where they worked most that week; people who worked from home are coded to their residence.", + "documents": [ + { + "url": "https://www2.census.gov/programs-surveys/acs/tech_docs/subject_definitions/2024_ACSSubjectDefinitions.pdf", + "sha256": "6e0c5b1a5d3ebf7e300e583ac6424cbd5f09de50d69e7ef03aa6d070d9c4a7a8" + } + ] + }, + "lodes": { + "summary": "LODES 8.4 origin-destination files count jobs, not people, with positive earnings in the first two quarters and held on April 1, in three monthly earnings bands ($1,250 or less, $1,251 to $3,333, more than $3,333), with noise infusion; self-employment is not covered.", + "documents": [ + { + "url": "https://lehd.ces.census.gov/data/lodes/LODES8/LODESTechDoc8.4.pdf", + "sha256": "1189b8aa4cefd6cdf53c3b85e27366054af0cd5418056b04ff70d210b87eddee" + } + ] + } + } +} diff --git a/packages/microcosm-build/tests/engine_contract/us/test_spec_engine_coverage_tool.py b/packages/microcosm-build/tests/engine_contract/us/test_spec_engine_coverage_tool.py index 5338099ad1..696cefdba2 100644 --- a/packages/microcosm-build/tests/engine_contract/us/test_spec_engine_coverage_tool.py +++ b/packages/microcosm-build/tests/engine_contract/us/test_spec_engine_coverage_tool.py @@ -82,21 +82,21 @@ def test_us_coverage_is_exact_complete_and_honest( assert_coverage_complete(coverage_report) assert coverage_report["status"] == "pass" fields = coverage_report["field_usage"] - assert fields["configuration_field_count"] == 42_305 - assert fields["authored_normative_field_count"] == 32_524 - assert fields["resolved_binding_field_count"] == 9_781 - assert fields["consumed_field_count"] == 42_305 + assert fields["configuration_field_count"] == 42347 + assert fields["authored_normative_field_count"] == 32525 + assert fields["resolved_binding_field_count"] == 9822 + assert fields["consumed_field_count"] == 42347 assert fields["unused_field_count"] == 0 assert fields["multiple_primary_use_field_count"] == 0 assert fields["claim_count"] == 49 assert fields["mode_counts"] == { - "legacy_behavior": 14_097, + "legacy_behavior": 14139, "compiler_semantic": 27_751, "front_end_validation": 354, "identity_only": 103, } assert fields["generation0_effect_counts"] == { - "legacy_behavior": 38_608, + "legacy_behavior": 38650, "no_generation0_effect": 3_697, } diff --git a/packages/microcosm-build/tests/engine_contract/us/test_spec_engine_engine_abi.py b/packages/microcosm-build/tests/engine_contract/us/test_spec_engine_engine_abi.py index 0e5b0343a8..7c09c9dec2 100644 --- a/packages/microcosm-build/tests/engine_contract/us/test_spec_engine_engine_abi.py +++ b/packages/microcosm-build/tests/engine_contract/us/test_spec_engine_engine_abi.py @@ -38,15 +38,15 @@ def test_checked_in_us_lock_is_fresh_schema_valid_and_not_authored() -> None: for row in payload["programs"].values() ) remaining = payload["remaining_stage_input_manifest"] - assert len(remaining["rows"]) == 1059 - assert remaining["receipt"]["entry_count"] == 1059 + assert len(remaining["rows"]) == 1064 + assert remaining["receipt"]["entry_count"] == 1064 assert remaining["receipt"]["stage_counts"] == { - "derive": 34, + "derive": 39, "seed": 33, "simulate": 992, } assert remaining["receipt"]["manifest_sha256"] == ( - "d4fb9de9c0b8081474a24d0abde84ebf05eb346483fc20e3852e29abc769a501" + "92cad0dc6283e463b74cec5137196d4db4e29b34cb87c0718c6c2f669cf99915" ) assert ( remaining["receipt"]["ssi_dependency_contract"]["engine_version_ref"] diff --git a/packages/microcosm-build/tests/engine_contract/us/test_us_local_jurisdiction_engine_contract.py b/packages/microcosm-build/tests/engine_contract/us/test_us_local_jurisdiction_engine_contract.py new file mode 100644 index 0000000000..cddc1e1590 --- /dev/null +++ b/packages/microcosm-build/tests/engine_contract/us/test_us_local_jurisdiction_engine_contract.py @@ -0,0 +1,64 @@ +"""The registry flags are policyengine-us inputs the engine cannot compute. + +Each registry flag must exist in the pinned engine as an input variable with +no formula, a boolean defaulting to ``False`` on the registry's entity, and +each listed consumer must read it. If a later engine gives a flag a formula, +this fails and the registry entry should be retired rather than kept writing +a column the engine would treat as formula-owned. +""" + +from __future__ import annotations + +import inspect +import json +from importlib.resources import files + +import pytest + +from microcosm.build.us_runtime.local_jurisdictions import ( + US_LOCAL_JURISDICTION_REGISTRY_RESOURCE, + packaged_us_local_jurisdiction_registry, +) + +REGISTRY = packaged_us_local_jurisdiction_registry() +DOCUMENT = json.loads( + files("microcosm.build.us_runtime") + .joinpath(US_LOCAL_JURISDICTION_REGISTRY_RESOURCE) + .read_text() +) +CONSUMERS = { + item["flag"]: item["engine_consumers"] for item in DOCUMENT["jurisdictions"] +} + + +@pytest.fixture(scope="module") +def system(): + from policyengine_us import CountryTaxBenefitSystem + + return CountryTaxBenefitSystem() + + +@pytest.mark.parametrize("item", REGISTRY.jurisdictions, ids=lambda item: item.flag) +def test_registry_flag_is_an_input_only_boolean_on_its_entity(system, item) -> None: + variable = system.variables[item.flag] + + assert variable.is_input_variable() + assert not getattr(variable, "formulas", None) + assert variable.entity.key == item.entity + assert variable.value_type is bool + assert variable.default_value is False + assert str(variable.definition_period).lower() == "year" + + +@pytest.mark.parametrize("item", REGISTRY.jurisdictions, ids=lambda item: item.flag) +def test_each_listed_consumer_reads_the_flag(system, item) -> None: + for consumer in CONSUMERS[item.flag]: + variable = system.variables[consumer] + defined_for = getattr(variable, "defined_for", None) + reads_in_formula = any( + f'"{item.flag}"' in inspect.getsource(formula) + for formula in variable.formulas.values() + ) + assert reads_in_formula or getattr(defined_for, "name", defined_for) == ( + item.flag + ), consumer diff --git a/packages/microcosm-build/tests/engine_contract/us/test_us_multispine_pool.py b/packages/microcosm-build/tests/engine_contract/us/test_us_multispine_pool.py index 1fd8fde606..5a21c671ea 100644 --- a/packages/microcosm-build/tests/engine_contract/us/test_us_multispine_pool.py +++ b/packages/microcosm-build/tests/engine_contract/us/test_us_multispine_pool.py @@ -49,6 +49,7 @@ def test_production_operator_invocations_are_total_and_guarded( "us_qbi_reconciliation_change_receipt", "validate_us_qbi_reconciliation_live_output", "validate_us_qbi_reconciliation_transition", + "with_us_local_tax_inputs", "with_us_qbi_input_reconciliation", }, ), @@ -147,8 +148,8 @@ def observe_guarded_chain( for phase in contract.phases } assert observed_placements == registered_placements - assert len({name for name, _phase in observed_placements}) == 23 - assert len(observed_placements) == 24 + assert len({name for name, _phase in observed_placements}) == 24 + assert len(observed_placements) == 25 def test_derive_stage_rejects_preclone_pool_before_kernels( @@ -170,6 +171,11 @@ def unexpected_kernel(frame: Frame) -> Frame: "_complete_schedule_d_input", unexpected_kernel, ) + monkeypatch.setattr( + multispine_pool_module, + "with_us_local_tax_inputs", + unexpected_kernel, + ) monkeypatch.setattr( multispine_pool_module, "with_us_qbi_input_reconciliation", @@ -196,15 +202,21 @@ def test_derive_stage_keeps_whole_pool_qbi_reconciliation() -> None: person["self_employment_income_before_lsr"] = 10.0 person["SEMP"] = 10.0 person["sstb_self_employment_income_before_lsr"] = 5.0 + # Residence assembled with the geography; wages final after transfers, + # a negative (loss-netted) wage on some residents and nonresidents. + person["pa_philadelphia_wage_tax_resident"] = person.index % 2 == 0 + person["employment_income_before_lsr"] = np.where( + np.arange(len(person)) % 3 == 0, -40.0, 1_000.0 + np.arange(len(person)) + ) frame = _replace_person(frame, person) result = multispine_pool_module.derive_multispine_pool_inputs(frame) derived = result.frame.table("person") assert result.receipt["operator_order"] == list(POOL_DERIVE_OPERATOR_ORDER) - assert result.receipt["remaining_stage_input_manifest"]["entry_count"] == 1059 + assert result.receipt["remaining_stage_input_manifest"]["entry_count"] == 1064 assert result.receipt["remaining_stage_input_manifest"]["stage_counts"] == { - "derive": 34, + "derive": 39, "seed": 33, "simulate": 992, } @@ -226,6 +238,21 @@ def test_derive_stage_keeps_whole_pool_qbi_reconciliation() -> None: assert derived["schedule_d_capital_gain_distributions"].notna().all() assert derived["self_employment_income_before_lsr"].eq(15.0).all() assert derived["sstb_self_employment_income_before_lsr"].eq(0.0).all() + resident = derived["pa_philadelphia_wage_tax_resident"].to_numpy() + wages = derived["employment_income_before_lsr"].to_numpy() + # No later derive operator rewrites the wages the taxable base read. + assert wages.tolist() == person["employment_income_before_lsr"].tolist() + assert resident.any() and not resident.all() + assert (resident & (wages < 0)).any() and (resident & (wages > 0)).any() + assert derived["pa_philadelphia_wage_tax_taxable_wages"].tolist() == ( + np.where(resident, np.maximum(wages, 0.0), 0.0).tolist() + ) + taxable = result.receipt["local_tax_inputs"]["inputs"][ + "pa_philadelphia_wage_tax_taxable_wages" + ] + assert taxable["status"] == "derived" + assert taxable["residents"] == int(resident.sum()) + assert "ny_yonkers_nonresident_earnings" not in derived def test_derive_stage_rejects_forged_qbi_kernel_receipt( diff --git a/packages/microcosm-build/tests/engine_free/shared/test_spec_engine_field_usage.py b/packages/microcosm-build/tests/engine_free/shared/test_spec_engine_field_usage.py index f4d0358afc..110dad3a63 100644 --- a/packages/microcosm-build/tests/engine_free/shared/test_spec_engine_field_usage.py +++ b/packages/microcosm-build/tests/engine_free/shared/test_spec_engine_field_usage.py @@ -95,22 +95,22 @@ def _mutated_bundle( def test_exact_complete_ledger_has_one_primary_mode_per_pointer(field_ledger) -> None: - assert len(field_ledger.fields) == EXPECTED_CONFIGURATION_FIELD_COUNT == 42_305 + assert len(field_ledger.fields) == EXPECTED_CONFIGURATION_FIELD_COUNT == 42347 assert field_ledger.source_counts == { - "authored": 32_524, - "resolved_bindings": 9_781, + "authored": 32525, + "resolved_bindings": 9822, } assert field_ledger.mode_counts == { - "legacy_behavior": 14_097, + "legacy_behavior": 14139, "compiler_semantic": 27_751, "front_end_validation": 354, "identity_only": 103, } assert field_ledger.generation0_effect_counts == { - "legacy_behavior": 38_608, + "legacy_behavior": 38650, "no_generation0_effect": 3_697, } - assert len({field.pointer for field in field_ledger.fields}) == 42_305 + assert len({field.pointer for field in field_ledger.fields}) == 42347 def test_eligibility_concepts_are_validation_not_generation0_behavior( diff --git a/packages/microcosm-build/tests/engine_free/shared/test_spec_engine_loader.py b/packages/microcosm-build/tests/engine_free/shared/test_spec_engine_loader.py index de2cf00847..c0793c0d9e 100644 --- a/packages/microcosm-build/tests/engine_free/shared/test_spec_engine_loader.py +++ b/packages/microcosm-build/tests/engine_free/shared/test_spec_engine_loader.py @@ -18,7 +18,7 @@ def test_semantic_hash_has_golden_vector_and_surface_separation(tmp_path) -> Non # self-employment feature in the imputation schema moves the schema-set # receipt, and its post-transfer step moves acs_transfer's attested bytes. assert first.spec_sha256 == ( - "8654884dc7dde724af39b78d07cffb151c61680d388c05576cd34dee83fb79fb" + '8525012b22f0edc6515d8e5261574015f8f277a7288ac601a55871c1487f9d19' ) second_root = _rich_minimal(tmp_path / "xy", note="second", store="local:b") diff --git a/packages/microcosm-build/tests/engine_free/us/test_us_acs_multispine.py b/packages/microcosm-build/tests/engine_free/us/test_us_acs_multispine.py index f421dce480..b1118d4267 100644 --- a/packages/microcosm-build/tests/engine_free/us/test_us_acs_multispine.py +++ b/packages/microcosm-build/tests/engine_free/us/test_us_acs_multispine.py @@ -100,7 +100,12 @@ def test__given_source__then_stages_run_in_order_and_provenance_is_json_ready( # The post-transfer adult-care gate probes the transferred frame's person # table; an empty table means "columns absent", so the gate scopes out. transferred_acs = SimpleNamespace(table=lambda entity: pd.DataFrame()) - pooled = object() + # Without a PUMA ladder the pool decides no local-jurisdiction flag, so + # its receipt reads no geography. + pooled = SimpleNamespace( + table=lambda entity: pd.DataFrame(), + weights_for=lambda entity: SimpleNamespace(values=np.ones(0)), + ) source = AcsPumsSource( tmp_path / "csv_hus.zip", tmp_path / "csv_pus.zip", @@ -189,7 +194,41 @@ def fake_pool(actual_base, actual_acs, *, acs_share): ] assert result.frame is pooled assert result.fit_records == (fit_record,) - assert result.provenance == { + provenance = dict(result.provenance) + local_jurisdiction_flags = provenance.pop("local_jurisdiction_flags") + assert local_jurisdiction_flags["rungs"] == [] + assert { + flag: (entry["status"], entry["reason"].split(";")[0]) + for flag, entry in local_jurisdiction_flags["flags"].items() + } == { + "in_denver": ("unavailable", "the line supplies no county rung"), + "in_wilmington": ("unavailable", "the line supplies no place rung"), + "in_yonkers": ("unavailable", "the line supplies no place rung"), + "pa_philadelphia_wage_tax_resident": ( + "unavailable", + "the line supplies no county rung", + ), + } + # Without the residence flag nothing decides the Philadelphia taxable + # wages, and the four work-location or refund inputs have no source. + local_tax_inputs = provenance.pop("local_tax_inputs") + assert { + variable: (entry["provision"], entry["status"]) + for variable, entry in local_tax_inputs["inputs"].items() + } == { + "co_denver_employee_occupational_privilege_tax_months": ( + "unavailable", + "unavailable", + ), + "de_wilmington_nonresident_earnings": ("unavailable", "unavailable"), + "ny_yonkers_nonresident_earnings": ("unavailable", "unavailable"), + "pa_philadelphia_wage_tax_reduced_rate_eligible": ( + "unavailable", + "unavailable", + ), + "pa_philadelphia_wage_tax_taxable_wages": ("resident_wages", "unavailable"), + } + assert provenance == { "enabled": True, "acs_share": 0.4, "loader": { @@ -627,6 +666,28 @@ def test__given_ladder__then_multispine_records_geography_assignment( "block_geoid", "tract_geoid", ] + # With the ladder every row has a county: the county-rule flags are + # derived, the place-rule flags recorded unavailable. + statuses = { + flag: entry["status"] + for flag, entry in result.provenance["local_jurisdiction_flags"][ + "flags" + ].items() + } + assert statuses == { + "in_denver": "derived", + "in_wilmington": "unavailable", + "in_yonkers": "unavailable", + "pa_philadelphia_wage_tax_resident": "derived", + } + assert result.provenance["local_jurisdiction_flags"]["rungs"] == ["county"] + # The county rung decides Philadelphia residence, so the taxable wages + # are derived for the pooled rows. + taxable = result.provenance["local_tax_inputs"]["inputs"][ + "pa_philadelphia_wage_tax_taxable_wages" + ] + assert taxable["status"] == "derived" + assert taxable["null_wages"] == "propagate" def _test_puma_ladder() -> UsPumaLadder: diff --git a/packages/microcosm-build/tests/engine_free/us/test_us_base_pool.py b/packages/microcosm-build/tests/engine_free/us/test_us_base_pool.py index 9b0700128e..da58b60fb4 100644 --- a/packages/microcosm-build/tests/engine_free/us/test_us_base_pool.py +++ b/packages/microcosm-build/tests/engine_free/us/test_us_base_pool.py @@ -55,6 +55,7 @@ def _base_frame( "person_family_id": [1_000, 1_000, 2_000], "person_marital_unit_id": [10_000, 10_000, 20_000], "base_only_income": [10.0, 20.0, 30.0], + "employment_income_before_lsr": [0.0, 0.0, 0.0], } ), "household": pd.DataFrame({"household_id": [1, 2], "state_fips": [1, 1]}), @@ -96,6 +97,7 @@ def _acs_frame( "person_family_id": [1_000, 1_000], "person_marital_unit_id": [10_000, 10_000], "acs_only_income": [40.0, 50.0], + "employment_income_before_lsr": [0.0, 0.0], } ), "household": pd.DataFrame( @@ -938,3 +940,135 @@ def test__preflight_validates_geography_before_transfer() -> None: unknown_puma["puma"] = ["0999901"] with pytest.raises(ValueError, match="absent from the ladder"): preflight_pooled_ladder_geography(good_base, unknown_puma, ladder) + + +def _block_line_donor_base() -> Frame: + """Donors placed by the block line: Denver and Arapahoe, with flags.""" + + base = _assigned_geography_base_frame( + state_fips=8, + tracts=["08031000100", "08005000100"], + congressional_districts=[801, 801], + counties=["08031", "08005"], + ) + tables = {entity: base.table(entity).copy() for entity in base.entities} + household = tables["household"] + household["place_fips"] = ["20000", "04000"] + household["in_denver"] = [True, False] + household["in_yonkers"] = [False, False] + household["in_wilmington"] = [False, False] + tables["person"]["pa_philadelphia_wage_tax_resident"] = False + return Frame( + tables, + US_SCHEMA, + {entity: base.weights_for(entity) for entity in base.weighted_entities}, + base.strata, + ) + + +def test__given_block_line_flags__then_pool_rederives_county_flags_for_every_row() -> ( + None +): + # Given: the ACS row draws its county from a PUMA spanning Denver and + # Arapahoe, and has no place; the donors carry block-line flags. + tracts = ["08031000100", "08005000100"] + ladder = _single_puma_ladder("0800101", tracts, ["08031", "08005"], 801) + acs = _acs_frame(state_fips=8, puma="0800101") + + # When + result = with_optional_acs_spine( + _block_line_donor_base(), + acs, + puma_ladder=ladder, + geography_seed=4, + expected_congressional_district_vintage="119th_congress", + ) + + # Then: county flags cover every row from the final county, place flags + # are gone rather than half-null, and persons follow their household. + household = result.table("household") + person = result.table("person") + assert "in_yonkers" not in household + assert "in_wilmington" not in household + assert household["in_denver"].dtype == bool + assert ( + household["in_denver"].tolist() == household["county_fips"].eq("08031").tolist() + ) + assert person["pa_philadelphia_wage_tax_resident"].dtype == bool + assert not person["pa_philadelphia_wage_tax_resident"].any() + assert len(person) == 5 + + +def test__given_block_line_flags_and_no_ladder__then_pool_drops_every_flag() -> None: + result = with_optional_acs_spine(_block_line_donor_base(), _acs_frame(state_fips=8)) + + for flag in ("in_denver", "in_yonkers", "in_wilmington"): + assert flag not in result.table("household") + assert "pa_philadelphia_wage_tax_resident" not in result.table("person") + + +def _philadelphia_pool_inputs() -> tuple[Frame, Frame]: + """Donors in Philadelphia and Delaware County, and an ACS household whose + PUMA spans both, one of its people under 15 with the PUMS blank wage.""" + + base = _assigned_geography_base_frame( + state_fips=42, + tracts=["42101000100", "42045000100"], + congressional_districts=[4203, 4203], + counties=["42101", "42045"], + ) + base_tables = {entity: base.table(entity).copy() for entity in base.entities} + base_tables["person"]["employment_income_before_lsr"] = [50_000.0, -1_000.0, 0.0] + base_tables["person"]["pa_philadelphia_wage_tax_resident"] = [True, True, False] + # A stale value the pool must re-derive, not carry. + base_tables["person"]["pa_philadelphia_wage_tax_taxable_wages"] = 1.0 + acs = _acs_frame(state_fips=42, puma="4203201") + acs_tables = {entity: acs.table(entity).copy() for entity in acs.entities} + acs_tables["person"]["employment_income_before_lsr"] = [np.nan, 30_000.0] + return ( + Frame( + base_tables, + US_SCHEMA, + {entity: base.weights_for(entity) for entity in base.weighted_entities}, + base.strata, + ), + Frame( + acs_tables, + US_SCHEMA, + {entity: acs.weights_for(entity) for entity in acs.weighted_entities}, + ), + ) + + +@pytest.mark.parametrize("geography_seed", range(6)) +def test__given_philadelphia_rows__then_pool_rederives_taxable_wages( + geography_seed: int, +) -> None: + # Given + base, acs = _philadelphia_pool_inputs() + tracts = ["42101000100", "42045000100"] + ladder = _single_puma_ladder("4203201", tracts, ["42101", "42045"], 4203) + + # When + result = with_optional_acs_spine( + base, + acs, + puma_ladder=ladder, + geography_seed=geography_seed, + expected_congressional_district_vintage="119th_congress", + ) + + # Then: every row holds max(wages, 0) when resident and 0 otherwise; a + # resident's blank wage leaves a null input for the release to fill. + # Seeds 0 and 2 draw Philadelphia for the ACS household, the rest + # Delaware County, so both cases run. + person = result.table("person") + resident = person["pa_philadelphia_wage_tax_resident"].to_numpy() + wages = person["employment_income_before_lsr"].to_numpy(dtype=float) + taxable = person["pa_philadelphia_wage_tax_taxable_wages"].to_numpy(dtype=float) + np.testing.assert_array_equal( + taxable, np.where(resident, np.maximum(wages, 0.0), 0.0) + ) + assert sorted(taxable[~np.isnan(taxable)])[-1] == 50_000.0 + assert np.isnan(taxable).sum() == (resident & np.isnan(wages)).sum() + assert 1.0 not in taxable diff --git a/packages/microcosm-build/tests/engine_free/us/test_us_county_vintage_ladders.py b/packages/microcosm-build/tests/engine_free/us/test_us_county_vintage_ladders.py index 08266ad6c3..dc6b9eb4ec 100644 --- a/packages/microcosm-build/tests/engine_free/us/test_us_county_vintage_ladders.py +++ b/packages/microcosm-build/tests/engine_free/us/test_us_county_vintage_ladders.py @@ -150,6 +150,7 @@ def test_puma_gate_checks_retained_donor_tracts_with_tractless_acs_rows( "county_fips": ["09013", "36061", "09013", "36001"], COUNTY_FIPS_2023_COLUMN: [donor_region, "36061", "09110", "36001"], "tract_geoid": [donor_tract, "36061000100", empty_tract, empty_tract], + "in_denver": [False] * 4, }, index=[1000, 2000, 3000, 4000], ) diff --git a/packages/microcosm-build/tests/engine_free/us/test_us_fiscal_refresh_builder.py b/packages/microcosm-build/tests/engine_free/us/test_us_fiscal_refresh_builder.py index d1cf32d7ce..9545c935d6 100644 --- a/packages/microcosm-build/tests/engine_free/us/test_us_fiscal_refresh_builder.py +++ b/packages/microcosm-build/tests/engine_free/us/test_us_fiscal_refresh_builder.py @@ -2559,6 +2559,22 @@ def test_legacy_cli_result_is_origin_main_three_key_fixture( assert builder.main.__annotations__["return"] in {None, "None"} +def test_builder_derives_local_jurisdiction_flags_before_selection_and_export() -> None: + import inspect + + builder = _load_builder_module() + source = inspect.getsource(builder._main) + base_load = source.index("base_frame = pool_frame") + derive = source.index( + "base_frame, local_jurisdiction_flags = rederive_us_local_jurisdiction_flags(" + ) + selection = source.index("base_frame, selection_report = select_frozen_support(") + export = source.index("release_engine.write_dataset(") + + assert base_load < derive < selection < export + assert source.count("rederive_us_local_jurisdiction_flags(") == 1 + + def test_frozen_support_selection_is_followed_by_weeks_unemployed_regate() -> None: builder = _load_builder_module() source = Path(builder.__file__).read_text(encoding="utf-8") @@ -7363,6 +7379,26 @@ def fake_load_frame(path, *, expected_sha256=None): return FakeFrame() monkeypatch.setattr(builder, "_load_frame", fake_load_frame) + # The household-only FakeFrame has no person table or geography; the + # flag derivation itself is covered in test_us_local_jurisdictions. + local_jurisdiction_receipt = { + "rungs": ["county", "place"], + "carried_flags": [], + "flags": {"in_yonkers": {"status": "derived"}}, + } + + def fake_rederive_local_jurisdiction_flags(frame): + captured["local_jurisdiction_frames"] = [ + *captured.get("local_jurisdiction_frames", []), + frame, + ] + return frame, local_jurisdiction_receipt + + monkeypatch.setattr( + builder, + "rederive_us_local_jurisdiction_flags", + fake_rederive_local_jurisdiction_flags, + ) if prepared_pool: def fake_load_pool(path, *, expected_manifest_sha256): @@ -9252,7 +9288,10 @@ def fake_release_gate_failures(*args, **kwargs): assert captured["diagnostics"]["support_value_repairs"] == { "social_security_components": ss_repair_payload, "non_sch_d_capital_gains": cgd_repair_payload, + "local_jurisdiction_flags": local_jurisdiction_receipt, } + # The flags are derived once, on the loaded base (or prepared pool). + assert len(captured["local_jurisdiction_frames"]) == 1 # The diagnostics carry a complete post-export scoring plan, never an # error record, so no plan line joins the terminal batch (#956). post_export_scoring = captured["diagnostics"]["post_export_scoring"] diff --git a/packages/microcosm-build/tests/engine_free/us/test_us_geography_ladder.py b/packages/microcosm-build/tests/engine_free/us/test_us_geography_ladder.py index f60e8d02e0..9f6eec6f58 100644 --- a/packages/microcosm-build/tests/engine_free/us/test_us_geography_ladder.py +++ b/packages/microcosm-build/tests/engine_free/us/test_us_geography_ladder.py @@ -397,12 +397,27 @@ def _gated_household() -> tuple[pd.DataFrame, np.ndarray]: "sldu": ["027", "046", "024", "001"], "sldl": ["075", "109", "051", "001"], "cbsa_code": ["35620", "10580", "31080", ""], + # The block decides every household local-jurisdiction flag; none + # of these blocks is in Denver, Yonkers or Wilmington. + "in_denver": [False] * 4, + "in_wilmington": [False] * 4, + "in_yonkers": [False] * 4, } ) weights = np.asarray([2.6, 3.6, 73.8, 20.0]) return household, weights +@pytest.mark.parametrize("flag", ["in_denver", "in_wilmington", "in_yonkers"]) +def test_gate_fails_when_a_block_decided_flag_is_absent(flag: str) -> None: + household, weights = _gated_household() + + result = us_geography_ladder_gate(household.drop(columns=[flag]), weights) + + assert not result.passed + assert any(failure.startswith(f"{flag}: absent") for failure in result.failures) + + def _minimal_us_frame() -> Frame: tables = { "person": pd.DataFrame( diff --git a/packages/microcosm-build/tests/engine_free/us/test_us_l0_refit_export.py b/packages/microcosm-build/tests/engine_free/us/test_us_l0_refit_export.py index 5aa49ccc9b..5b0cf5d8ca 100644 --- a/packages/microcosm-build/tests/engine_free/us/test_us_l0_refit_export.py +++ b/packages/microcosm-build/tests/engine_free/us/test_us_l0_refit_export.py @@ -30,6 +30,7 @@ def _us_frame(**person_extra: object) -> Frame: ), "ssn_card_type": ["CITIZEN", "CITIZEN", "NONE"], "immigration_status_str": ["CITIZEN", "CITIZEN", "UNDOCUMENTED"], + "employment_income_before_lsr": [52_000.0, 18_000.0, 0.0], "weekly_hours_worked_before_lsr": [40.0, 20.0, 0.0], "hours_worked_last_week": [40.0, 18.0, 0.0], "weeks_worked": [52.0, 26.0, 0.0], @@ -1157,3 +1158,183 @@ def write_dataset(self, bundle, path, period): "household_vehicles_value", "tenure_type", ] + + +_YONKERS_BLOCK = { + "state_fips": 36, + "congressional_district_geoid": 3616, + "block_geoid": "361190001001000", + "tract_geoid": "36119000100", + "county_fips": "36119", + "county_fips_2023": "36119", + "place_fips": "84000", +} +_PHILADELPHIA_BLOCK = { + "state_fips": 42, + "congressional_district_geoid": 4203, + "block_geoid": "421010001001000", + "tract_geoid": "42101000100", + "county_fips": "42101", + "county_fips_2023": "42101", + "place_fips": "60000", +} + + +def _frame_with_yonkers_household(**household_extra: object) -> Frame: + """The fixture frame with household 20 moved onto a Yonkers block.""" + + return _frame_with_household_on(_YONKERS_BLOCK, **household_extra) + + +def _frame_with_household_on( + block: dict[str, object], **household_extra: object +) -> Frame: + """The fixture frame with household 20 moved onto ``block``.""" + + frame = _us_frame() + household = frame.table("household").copy() + for column, value in block.items(): + household.loc[1, column] = value + for column, values in household_extra.items(): + household[column] = values + tables = {entity: frame.table(entity) for entity in frame.entities} + tables["household"] = household + return Frame(tables, frame.schema, {"household": frame.weights_for("household")}) + + +def test_export_derives_local_jurisdiction_flags_a_pre_flag_base_lacks( + monkeypatch: pytest.MonkeyPatch, + tmp_path: Path, +) -> None: + base_h5 = tmp_path / "base.h5" + base_h5.write_text("base") + output = tmp_path / "populace_us_2024.h5" + written: dict[str, Frame] = {} + + monkeypatch.setattr( + l0_refit_export, "load_us_frame", lambda path: _frame_with_yonkers_household() + ) + monkeypatch.setattr( + l0_refit_export, "copy_microcosm_root_attrs", lambda source, destination: () + ) + + class FakeEngine: + def write_dataset(self, bundle, path, period): + written["bundle"] = bundle + Path(path).write_text("sentinel") + + monkeypatch.setattr(l0_refit_export, "PolicyEngineUSEngine", FakeEngine) + + summary = export_us_l0_refit_h5( + base_h5=base_h5, + weights_npz=_l0_refit_npz(tmp_path), + output_h5=output, + input_mass_relative_tolerance=1.0, + # A single kept household cannot satisfy national NYC-share bounds. + require_geography_ladder=False, + ) + + household = written["bundle"].table("household") + person = written["bundle"].table("person") + assert household["household_id"].tolist() == [20] + assert household["in_yonkers"].tolist() == [True] + assert household["in_wilmington"].tolist() == [False] + assert household["in_denver"].tolist() == [False] + assert person["pa_philadelphia_wage_tax_resident"].tolist() == [False, False] + receipt = summary["local_jurisdiction_flags"] + assert receipt["carried_flags"] == [] + assert receipt["rungs"] == ["county", "place"] + assert receipt["flags"]["in_yonkers"]["status"] == "derived" + assert receipt["flags"]["in_yonkers"]["weighted_households_in_jurisdiction"] == ( + pytest.approx(333.0) + ) + # The gate ran on the derived flags: no flag failure is recorded. + assert not any( + failure.startswith(("in_", "pa_")) + for failure in summary["geography_ladder_gate"]["failures"] + ) + manifest = json.loads( + output.with_suffix(".l0_refit_export_summary.json").read_text() + ) + assert manifest["local_jurisdiction_flags"] == receipt + + +def test_export_derives_philadelphia_taxable_wages_a_pre_change_base_lacks( + monkeypatch: pytest.MonkeyPatch, + tmp_path: Path, +) -> None: + base_h5 = tmp_path / "base.h5" + base_h5.write_text("base") + output = tmp_path / "populace_us_2024.h5" + written: dict[str, Frame] = {} + + monkeypatch.setattr( + l0_refit_export, + "load_us_frame", + lambda path: _frame_with_household_on(_PHILADELPHIA_BLOCK), + ) + monkeypatch.setattr( + l0_refit_export, "copy_microcosm_root_attrs", lambda source, destination: () + ) + + class FakeEngine: + def write_dataset(self, bundle, path, period): + written["bundle"] = bundle + Path(path).write_text("sentinel") + + monkeypatch.setattr(l0_refit_export, "PolicyEngineUSEngine", FakeEngine) + + summary = export_us_l0_refit_h5( + base_h5=base_h5, + weights_npz=_l0_refit_npz(tmp_path), + output_h5=output, + input_mass_relative_tolerance=1.0, + require_geography_ladder=False, + ) + + # Household 20's two people live in Philadelphia; their wages become the + # taxable wages, and no work-location input is written. + person = written["bundle"].table("person") + assert person["pa_philadelphia_wage_tax_resident"].tolist() == [True, True] + assert person["pa_philadelphia_wage_tax_taxable_wages"].tolist() == [ + 18_000.0, + 0.0, + ] + assert "ny_yonkers_nonresident_earnings" not in person + receipt = summary["local_jurisdiction_flags"] + assert receipt["carried_local_tax_inputs"] == [] + taxable = receipt["local_tax_inputs"]["inputs"][ + "pa_philadelphia_wage_tax_taxable_wages" + ] + assert taxable["status"] == "derived" + assert taxable["weighted_taxable_wages"] == pytest.approx(333.0 * 18_000.0) + + +def test_export_refuses_a_base_whose_carried_flag_disagrees_with_its_geography( + monkeypatch: pytest.MonkeyPatch, + tmp_path: Path, +) -> None: + base_h5 = tmp_path / "base.h5" + base_h5.write_text("base") + output = tmp_path / "populace_us_2024.h5" + + monkeypatch.setattr( + l0_refit_export, + "load_us_frame", + lambda path: _frame_with_yonkers_household(in_yonkers=[False, False]), + ) + monkeypatch.setattr( + l0_refit_export, + "PolicyEngineUSEngine", + lambda: pytest.fail("a corrupt base must not reach the writer"), + ) + + with pytest.raises(ValueError, match="disagree with its own geography: in_yonkers"): + export_us_l0_refit_h5( + base_h5=base_h5, + weights_npz=_l0_refit_npz(tmp_path), + output_h5=output, + input_mass_relative_tolerance=1.0, + require_geography_ladder=False, + ) + assert not output.exists() diff --git a/packages/microcosm-build/tests/engine_free/us/test_us_local_jurisdictions.py b/packages/microcosm-build/tests/engine_free/us/test_us_local_jurisdictions.py new file mode 100644 index 0000000000..cd13ae400b --- /dev/null +++ b/packages/microcosm-build/tests/engine_free/us/test_us_local_jurisdictions.py @@ -0,0 +1,1008 @@ +"""US local-jurisdiction flags: registry pin, derivation properties and gates. + +Invariants exercised here (stated for every input, then checked by +Hypothesis): + +- a flag is true exactly when the household's county (county rule) or its + state and place (place rule) equal the registry geography; +- over a block ladder, the population of the blocks whose household gets a + flag equals the population of the jurisdiction's blocks; +- derivation is deterministic and commutes with any reordering of household + or person rows, and each person carries its household's value; +- a line without a place rung never writes a place-rule flag, and missing or + malformed geography raises instead of yielding ``False``. +""" + +from __future__ import annotations + +import hashlib +import json +from pathlib import Path + +import numpy as np +import pandas as pd +import pytest +from hypothesis import given, settings +from hypothesis import strategies as st + +from microcosm.build.us_runtime.geography_ladder import ( + assign_us_geography_ladder, + us_geography_ladder_assignment_summary, + us_geography_ladder_gate, + with_household_us_geography_ladder, +) +from microcosm.build.us_runtime.local_jurisdictions import ( + BLOCK_GEOGRAPHY_RUNGS, + JURISDICTION_FLAG_DERIVED, + JURISDICTION_FLAG_UNAVAILABLE, + PUMA_GEOGRAPHY_RUNGS, + US_LOCAL_JURISDICTION_REGISTRY_RESOURCE, + US_LOCAL_JURISDICTION_REGISTRY_SHA256, + apply_us_local_jurisdiction_flags, + check_us_local_jurisdictions_against_block_ladder, + load_us_local_jurisdiction_registry, + packaged_us_local_jurisdiction_registry, + rederive_us_local_jurisdiction_flags, + us_local_jurisdiction_flag_failures, + us_local_jurisdiction_flag_values, + us_local_jurisdiction_rungs_present, + with_us_local_jurisdiction_flags, + with_us_local_tax_inputs, +) +from microcosm.build.us_runtime.puma_ladder import ( + UsPumaLadder, + us_puma_ladder_assignment_summary, + us_puma_ladder_gate, + with_household_us_puma_ladder, +) +from microcosm.frame import US_SCHEMA +from test_support.microcosm_build.us_local_jurisdictions import ( + FIXTURE_BLOCK_BY_NAME, + FIXTURE_BLOCKS, + FixtureBlock, + block_ladder, + households_on_blocks, + us_frame, +) +from test_support.paths import paths_for + +REGISTRY_PATH = ( + paths_for("microcosm-build").package + / "src/microcosm/build/us_runtime" + / US_LOCAL_JURISDICTION_REGISTRY_RESOURCE +) +REGISTRY = packaged_us_local_jurisdiction_registry() +HOUSEHOLD_FLAGS = ("in_denver", "in_wilmington", "in_yonkers") +PERSON_FLAGS = ("pa_philadelphia_wage_tax_resident",) +PLACE_FLAGS = ("in_wilmington", "in_yonkers") + +# The registry geographies, written out independently of the registry file: +# a code mistyped there fails these oracles. +EXPECTED_RULES = { + "in_denver": ("county", "08031"), + "pa_philadelphia_wage_tax_resident": ("county", "42101"), + "in_yonkers": ("place", "36", "84000"), + "in_wilmington": ("place", "10", "77580"), +} + + +def _oracle(flag: str, county: str, place: str) -> bool: + rule = EXPECTED_RULES[flag] + if rule[0] == "county": + return county == rule[1] + return county[:2] == rule[1] and place == rule[2] + + +# --------------------------------------------------------------------------- # +# Registry +# --------------------------------------------------------------------------- # + + +def test_packaged_registry_bytes_match_the_pinned_sha256() -> None: + payload = REGISTRY_PATH.read_bytes() + + assert hashlib.sha256(payload).hexdigest() == US_LOCAL_JURISDICTION_REGISTRY_SHA256 + assert REGISTRY.sha256 == US_LOCAL_JURISDICTION_REGISTRY_SHA256 + + +def test_registry_maps_each_input_only_flag_to_its_2020_geography() -> None: + by_flag = {item.flag: item for item in REGISTRY.jurisdictions} + + assert set(by_flag) == set(EXPECTED_RULES) + assert {flag: by_flag[flag].entity for flag in by_flag} == { + "in_denver": "household", + "in_wilmington": "household", + "in_yonkers": "household", + "pa_philadelphia_wage_tax_resident": "person", + } + for flag, rule in EXPECTED_RULES.items(): + item = by_flag[flag] + assert item.rule == rule[0] + if rule[0] == "county": + assert item.county_fips == rule[1] + else: + assert (item.state_fips, item.place_fips) == rule[1:] + assert by_flag["in_denver"].coextensive_place_fips == "20000" + assert by_flag["pa_philadelphia_wage_tax_resident"].coextensive_place_fips == ( + "60000" + ) + + +def test_registry_records_block_ladder_checks_that_match_its_populations() -> None: + document = json.loads(REGISTRY_PATH.read_text()) + populations = {item.flag: item.population_2020 for item in REGISTRY.jurisdictions} + national = document["sources"]["population"]["national_total_2020"] + + checks = document["block_ladder_checks"] + assert {check["block_ladder_sha256"][:8] for check in checks} == { + "6840b990", + "7ba39b95", + } + for check in checks: + assert check["population"] == national + assert { + flag: entry["population"] for flag, entry in check["jurisdictions"].items() + } == populations + for flag in ("in_denver", "pa_philadelphia_wage_tax_resident"): + entry = check["jurisdictions"][flag] + assert entry["coextensive_place_blocks"] == entry["blocks"] + + +def test_packaged_registry_refuses_bytes_that_differ_from_the_pin(tmp_path) -> None: + edited = tmp_path / "registry.json" + edited.write_bytes(REGISTRY_PATH.read_bytes() + b" ") + + with pytest.raises(ValueError, match="do not match the pinned SHA-256"): + load_us_local_jurisdiction_registry( + edited, expected_sha256=US_LOCAL_JURISDICTION_REGISTRY_SHA256 + ) + + +def _write_registry(path: Path, jurisdictions: list[dict]) -> Path: + path.write_text( + json.dumps( + { + "kind": "us_local_jurisdiction_registry", + "schema_version": 1, + "jurisdictions": jurisdictions, + } + ) + ) + return path + + +def _county_entry(**overrides: object) -> dict: + entry: dict[str, object] = { + "flag": "in_denver", + "entity": "household", + "jurisdiction": "Denver", + "rule": "county", + "state_fips": "08", + "county_fips": "08031", + "place_fips": None, + "coextensive_place_fips": "20000", + "population_2020": 700, + } + entry.update(overrides) + return entry + + +@pytest.mark.parametrize( + ("overrides", "message"), + [ + ({"county_fips": "8031"}, "5-digit string"), + ({"county_fips": 8031}, "5-digit string"), + ({"state_fips": "09"}, "is not in state"), + ({"rule": "tract"}, "rule must be one of"), + ({"entity": "tax_unit"}, "entity must be one of"), + ({"place_fips": "20000"}, "county rule names county_fips and no place_fips"), + ({"population_2020": 0}, "must be positive"), + ({"population_2020": True}, "must be an integer"), + ({"flag": "In_Denver"}, "lowercase identifier"), + ], +) +def test_registry_loader_refuses_malformed_entries( + tmp_path, overrides: dict, message: str +) -> None: + path = _write_registry(tmp_path / "registry.json", [_county_entry(**overrides)]) + + with pytest.raises(ValueError, match=message): + load_us_local_jurisdiction_registry(path) + + +def test_registry_loader_refuses_repeated_flags_and_geographies(tmp_path) -> None: + repeated_flag = _write_registry( + tmp_path / "flag.json", [_county_entry(), _county_entry(county_fips="08005")] + ) + repeated_geography = _write_registry( + tmp_path / "geography.json", + [_county_entry(), _county_entry(flag="in_denver_too")], + ) + + with pytest.raises(ValueError, match="repeats a flag"): + load_us_local_jurisdiction_registry(repeated_flag) + with pytest.raises(ValueError, match="repeats a geography"): + load_us_local_jurisdiction_registry(repeated_geography) + + +# --------------------------------------------------------------------------- # +# Derivation properties +# --------------------------------------------------------------------------- # + +# Registry codes, their neighbours and near misses, plus arbitrary codes. +_COUNTIES = st.one_of( + st.sampled_from( + [ + "08031", + "42101", + "36119", + "10003", + "08005", + "08032", + "18031", + "42103", + "42045", + "06037", + "37129", + "36005", + ] + ), + st.from_regex(r"\A[0-9]{5}\Z"), +) +_PLACES = st.one_of( + st.sampled_from( + ["", "84000", "77580", "20000", "60000", "84001", "77581", "04000"] + ), + st.from_regex(r"\A[0-9]{5}\Z"), +) +_GEOGRAPHY_ROWS = st.lists(st.tuples(_COUNTIES, _PLACES), min_size=1, max_size=40) + + +def _household_table(rows: list[tuple[str, str]]) -> pd.DataFrame: + return pd.DataFrame( + { + "household_id": np.arange(1, len(rows) + 1), + "county_fips": [county for county, _ in rows], + "place_fips": [place for _, place in rows], + } + ) + + +@settings(max_examples=200, deadline=None) +@given(_GEOGRAPHY_ROWS) +def test_flag_is_true_iff_county_or_state_and_place_match(rows) -> None: + household = _household_table(rows) + + values = us_local_jurisdiction_flag_values(household, rungs=BLOCK_GEOGRAPHY_RUNGS) + + assert set(values) == set(EXPECTED_RULES) + for flag, observed in values.items(): + assert observed.dtype == bool + expected = [_oracle(flag, county, place) for county, place in rows] + assert observed.tolist() == expected + + +@settings(max_examples=100, deadline=None) +@given(_GEOGRAPHY_ROWS, st.randoms(use_true_random=False)) +def test_derivation_commutes_with_household_row_order(rows, random) -> None: + household = _household_table(rows) + order = list(range(len(rows))) + random.shuffle(order) + shuffled = household.iloc[order].reset_index(drop=True) + + original = us_local_jurisdiction_flag_values(household, rungs=BLOCK_GEOGRAPHY_RUNGS) + reordered = us_local_jurisdiction_flag_values(shuffled, rungs=BLOCK_GEOGRAPHY_RUNGS) + repeated = us_local_jurisdiction_flag_values(household, rungs=BLOCK_GEOGRAPHY_RUNGS) + + for flag in original: + np.testing.assert_array_equal(reordered[flag], original[flag][order]) + np.testing.assert_array_equal(repeated[flag], original[flag]) + + +@settings(max_examples=100, deadline=None) +@given( + _GEOGRAPHY_ROWS.flatmap( + lambda rows: st.tuples( + st.just(rows), + st.lists( + st.integers(min_value=1, max_value=len(rows)), min_size=1, max_size=60 + ), + ) + ), + st.randoms(use_true_random=False), +) +def test_person_flags_carry_their_household_value_in_any_person_order( + case, random +) -> None: + rows, memberships = case + random.shuffle(memberships) + household = _household_table(rows) + person = pd.DataFrame( + { + "person_id": np.arange(1, len(memberships) + 1), + "person_household_id": memberships, + } + ) + + tables, _ = apply_us_local_jurisdiction_flags( + {"household": household, "person": person}, rungs=BLOCK_GEOGRAPHY_RUNGS + ) + + county = dict(zip(household["household_id"], household["county_fips"], strict=True)) + place = dict(zip(household["household_id"], household["place_fips"], strict=True)) + for flag in PERSON_FLAGS: + expected = [ + _oracle(flag, county[member], place[member]) for member in memberships + ] + assert tables["person"][flag].tolist() == expected + assert flag not in tables["household"] + for flag in HOUSEHOLD_FLAGS: + assert flag not in tables["person"] + assert "pa_philadelphia_wage_tax_resident" not in person # input untouched + + +@settings(max_examples=100, deadline=None) +@given(_GEOGRAPHY_ROWS) +def test_a_line_without_a_place_rung_never_writes_a_place_flag(rows) -> None: + household = _household_table(rows).drop(columns=["place_fips"]) + household["in_yonkers"] = False # a stale column from an earlier line + household["in_wilmington"] = np.nan + person = pd.DataFrame( + { + "person_id": household["household_id"], + "person_household_id": household["household_id"], + } + ) + + tables, receipt = apply_us_local_jurisdiction_flags( + {"household": household, "person": person}, rungs=PUMA_GEOGRAPHY_RUNGS + ) + + for flag in PLACE_FLAGS: + assert flag not in tables["household"] + assert receipt["flags"][flag]["status"] == JURISDICTION_FLAG_UNAVAILABLE + assert "no place rung" in receipt["flags"][flag]["reason"] + assert tables["household"]["in_denver"].tolist() == [ + county == "08031" for county, _ in rows + ] + assert receipt["flags"]["in_denver"]["status"] == JURISDICTION_FLAG_DERIVED + assert receipt["rungs"] == ["county"] + assert receipt["registry_sha256"] == US_LOCAL_JURISDICTION_REGISTRY_SHA256 + + +@pytest.mark.parametrize( + ("column", "value", "message"), + [ + ("county_fips", None, "county_fips must hold 5-digit"), + ("county_fips", np.nan, "county_fips must hold 5-digit"), + ("county_fips", 8031, "county_fips must hold 5-digit"), + ("county_fips", "8031", "county_fips must hold 5-digit"), + ("place_fips", None, "place_fips must hold empty or 5-digit"), + ("place_fips", "8400", "place_fips must hold empty or 5-digit"), + ("place_fips", 84000, "place_fips must hold empty or 5-digit"), + ], +) +def test_unknown_or_malformed_geography_raises_instead_of_writing_false( + column: str, value: object, message: str +) -> None: + household = _household_table([("36119", "84000"), ("08031", "")]) + household[column] = household[column].astype(object) + household.loc[1, column] = value + + with pytest.raises(ValueError, match=message): + us_local_jurisdiction_flag_values(household, rungs=BLOCK_GEOGRAPHY_RUNGS) + + +def test_missing_rung_column_raises() -> None: + household = _household_table([("36119", "84000")]).drop(columns=["place_fips"]) + + with pytest.raises(ValueError, match="no 'place_fips'"): + us_local_jurisdiction_flag_values(household, rungs=BLOCK_GEOGRAPHY_RUNGS) + + +def test_bytes_codes_from_an_h5_round_trip_are_decoded() -> None: + household = pd.DataFrame( + {"county_fips": [b"36119", b"10003"], "place_fips": [b"84000", b""]} + ) + + values = us_local_jurisdiction_flag_values(household, rungs=BLOCK_GEOGRAPHY_RUNGS) + + assert values["in_yonkers"].tolist() == [True, False] + assert values["in_wilmington"].tolist() == [False, False] + + +# --------------------------------------------------------------------------- # +# Population conservation over a block ladder +# --------------------------------------------------------------------------- # + +_LADDER_BLOCK = st.tuples( + st.sampled_from( + ["08031", "08005", "36119", "36005", "10003", "42101", "42045", "06037"] + ), + st.sampled_from([0, 84000, 77580, 20000, 60000, 4000]), + st.integers(min_value=1, max_value=5_000), +) + + +@settings(max_examples=60, deadline=None) +@given(st.lists(_LADDER_BLOCK, min_size=1, max_size=30)) +def test_flag_weighted_block_population_equals_the_jurisdictions_blocks(rows) -> None: + blocks = [ + FixtureBlock( + name=f"block_{index}", + block_geoid=int(f"{county}{index:06d}1000"), + place_fips=place, + congressional_district_geoid=int(county[:2]) * 100 + index % 100, + population=float(population), + ) + for index, (county, place, population) in enumerate(rows) + ] + # One household per block: the ladder's district-then-block draw is + # deterministic when every block owns its district. + blocks = list( + {block.congressional_district_geoid: block for block in blocks}.values() + ) + ladder = block_ladder(blocks) + household = pd.DataFrame(households_on_blocks_for(blocks)) + + assigned = assign_us_geography_ladder(household, ladder, seed=3) + values = us_local_jurisdiction_flag_values(assigned, rungs=BLOCK_GEOGRAPHY_RUNGS) + population = np.asarray([block.population for block in blocks]) + assert assigned["block_geoid"].tolist() == [ + f"{block.block_geoid:015d}" for block in blocks + ] + + for flag in EXPECTED_RULES: + expected = sum( + block.population + for block in blocks + if _oracle( + flag, + block.county_fips, + "" if block.place_fips == 0 else f"{block.place_fips:05d}", + ) + ) + assert float(population[values[flag]].sum()) == expected + + +def households_on_blocks_for(blocks: list[FixtureBlock]) -> list[dict[str, int]]: + return [ + { + "household_id": index + 1, + "state_fips": block.state_fips, + "congressional_district_geoid": block.congressional_district_geoid, + } + for index, block in enumerate(blocks) + ] + + +def _fixture_registry(tmp_path: Path, **population: int) -> object: + jurisdictions = [] + for item in REGISTRY.jurisdictions: + entry = { + "flag": item.flag, + "entity": item.entity, + "jurisdiction": item.jurisdiction, + "rule": item.rule, + "state_fips": item.state_fips, + "county_fips": item.county_fips, + "place_fips": item.place_fips, + "coextensive_place_fips": item.coextensive_place_fips, + "population_2020": population[item.flag], + } + jurisdictions.append(entry) + return load_us_local_jurisdiction_registry( + _write_registry(tmp_path / "registry.json", jurisdictions) + ) + + +def test_block_ladder_check_passes_on_exact_populations_and_coextensive_blocks( + tmp_path, +) -> None: + ladder = block_ladder() + registry = _fixture_registry( + tmp_path, + in_denver=700, + in_wilmington=70, + in_yonkers=210, + pa_philadelphia_wage_tax_resident=1600, + ) + + report = check_us_local_jurisdictions_against_block_ladder( + ladder.block_geoid, ladder.population, ladder.place_fips, registry=registry + ) + + assert report == { + "in_denver": {"blocks": 1, "population": 700, "coextensive_place_blocks": 1}, + "in_wilmington": {"blocks": 1, "population": 70}, + "in_yonkers": {"blocks": 1, "population": 210}, + "pa_philadelphia_wage_tax_resident": { + "blocks": 1, + "population": 1600, + "coextensive_place_blocks": 1, + }, + } + + +def test_block_ladder_check_refuses_a_population_off_by_one(tmp_path) -> None: + ladder = block_ladder() + registry = _fixture_registry( + tmp_path, + in_denver=700, + in_wilmington=70, + in_yonkers=211, + pa_philadelphia_wage_tax_resident=1600, + ) + + with pytest.raises(ValueError, match="in_yonkers: ladder population 210"): + check_us_local_jurisdictions_against_block_ladder( + ladder.block_geoid, ladder.population, ladder.place_fips, registry=registry + ) + + +def test_block_ladder_check_refuses_a_county_that_is_not_its_city(tmp_path) -> None: + denver = FIXTURE_BLOCK_BY_NAME["denver"] + outside_city = FixtureBlock("denver_outside_city", 80310002001000, 0, 802, 5.0) + ladder = block_ladder([*FIXTURE_BLOCKS, outside_city]) + registry = _fixture_registry( + tmp_path, + in_denver=int(denver.population + outside_city.population), + in_wilmington=70, + in_yonkers=210, + pa_philadelphia_wage_tax_resident=1600, + ) + + with pytest.raises(ValueError, match="are not the same blocks"): + check_us_local_jurisdictions_against_block_ladder( + ladder.block_geoid, ladder.population, ladder.place_fips, registry=registry + ) + + +# --------------------------------------------------------------------------- # +# Lines: block ladder, PUMA ladder, helper for the block-location draw +# --------------------------------------------------------------------------- # + +_NAMES = [block.name for block in FIXTURE_BLOCKS] + + +def _expected_block_flags(name: str) -> dict[str, bool]: + block = FIXTURE_BLOCK_BY_NAME[name] + place = "" if block.place_fips == 0 else f"{block.place_fips:05d}" + return {flag: _oracle(flag, block.county_fips, place) for flag in EXPECTED_RULES} + + +def test_block_line_writes_every_flag_as_an_engine_input() -> None: + people = [[{"age": 40}, {"age": 9}] for _ in _NAMES] + frame = us_frame(households_on_blocks(_NAMES), person_inputs=people) + + assigned = with_household_us_geography_ladder(frame, block_ladder(), seed=11) + + household = assigned.table("household") + person = assigned.table("person") + for position, name in enumerate(_NAMES): + expected = _expected_block_flags(name) + for flag in HOUSEHOLD_FLAGS: + assert bool(household[flag].iloc[position]) is expected[flag], (name, flag) + members = person["person_household_id"].eq( + household["household_id"].iloc[position] + ) + assert ( + person.loc[members, PERSON_FLAGS[0]].tolist() + == [expected[PERSON_FLAGS[0]]] * 2 + ) + assert sorted( + name for name in _NAMES if _expected_block_flags(name)["in_yonkers"] + ) == ["yonkers"] + assert sorted( + name for name in _NAMES if _expected_block_flags(name)["in_wilmington"] + ) == ["wilmington"] + assert household[list(HOUSEHOLD_FLAGS)].dtypes.eq(bool).all() + assert us_local_jurisdiction_flag_failures(household) == [] + + +def test_block_line_is_deterministic_and_receipts_every_flag_as_derived() -> None: + frame = us_frame(households_on_blocks(_NAMES), weights=np.arange(1, 11)) + + first = with_household_us_geography_ladder(frame, block_ladder(), seed=5) + second = with_household_us_geography_ladder(frame, block_ladder(), seed=5) + summary = us_geography_ladder_assignment_summary( + first.table("household"), + block_ladder(), + weight_values=first.weights_for("household").values, + ) + + for entity in ("household", "person"): + pd.testing.assert_frame_equal(first.table(entity), second.table(entity)) + receipt = summary["local_jurisdiction_flags"] + assert receipt["registry_sha256"] == US_LOCAL_JURISDICTION_REGISTRY_SHA256 + assert receipt["rungs"] == ["county", "place"] + assert {flag: entry["status"] for flag, entry in receipt["flags"].items()} == { + flag: JURISDICTION_FLAG_DERIVED for flag in EXPECTED_RULES + } + # Household weights are 1..10 in fixture order: yonkers is the third. + assert receipt["flags"]["in_yonkers"]["weighted_households_in_jurisdiction"] == 3.0 + assert receipt["flags"]["in_denver"]["households_in_jurisdiction"] == 1 + + +def test_frame_helper_matches_the_block_line_for_the_block_location_draw() -> None: + frame = us_frame(households_on_blocks(_NAMES)) + assigned = with_household_us_geography_ladder(frame, block_ladder(), seed=2) + stripped = assigned.table("household").drop(columns=list(HOUSEHOLD_FLAGS)) + tables = {entity: assigned.table(entity) for entity in assigned.entities} + tables["household"] = stripped + tables["person"] = tables["person"].drop(columns=list(PERSON_FLAGS)) + bare = type(assigned)( + tables, + assigned.schema, + {"household": assigned.weights_for("household")}, + ) + + rederived, receipt = with_us_local_jurisdiction_flags( + bare, rungs=BLOCK_GEOGRAPHY_RUNGS + ) + + for entity in ("household", "person"): + pd.testing.assert_frame_equal( + rederived.table(entity), assigned.table(entity), check_like=True + ) + assert receipt["flags"]["in_wilmington"]["status"] == JURISDICTION_FLAG_DERIVED + + +def _co_ny_pa_puma_ladder() -> UsPumaLadder: + # PUMA 0800101 spans Denver (600) and Arapahoe (400); PUMA 3600101 is in + # Westchester; PUMA 4200101 is Philadelphia. + puma = np.asarray([800101, 3600101, 4200101], dtype=np.int64) + return UsPumaLadder( + puma=puma, + puma_population=np.asarray([1000.0, 500.0, 800.0]), + cd_overlap_puma=puma.copy(), + cd_overlap_cd=np.asarray([801, 3616, 4203], dtype=np.int64), + cd_overlap_population=np.asarray([1000.0, 500.0, 800.0]), + county_overlap_puma=np.asarray( + [800101, 800101, 3600101, 4200101], dtype=np.int64 + ), + county_overlap_county=np.asarray([8031, 8005, 36119, 42101], dtype=np.int32), + county_overlap_population=np.asarray([600.0, 400.0, 500.0, 800.0]), + tract_overlap_puma=np.asarray( + [800101, 800101, 3600101, 4200101], dtype=np.int64 + ), + tract_overlap_tract=np.asarray( + [8031000100, 8005000100, 36119000100, 42101000100], dtype=np.int64 + ), + tract_overlap_population=np.asarray([600.0, 400.0, 500.0, 800.0]), + metadata={ + "schema_version": 1, + "kind": "us_puma_ladder", + "puma_vintage": "2020_puma", + "sampling_basis": "population", + "layers": { + "congressional_district": {"vintage": "119th_congress"}, + "county": {"vintage": "2020_census"}, + "tract": {"vintage": "2020_census"}, + }, + }, + ) + + +def test_puma_line_derives_county_flags_and_records_place_flags_unavailable() -> None: + households = [ + {"state_fips": 8, "puma": 800101, "in_yonkers": True, "in_wilmington": False} + for _ in range(40) + ] + [ + {"state_fips": 36, "puma": 3600101, "in_yonkers": True, "in_wilmington": False}, + { + "state_fips": 42, + "puma": 4200101, + "in_yonkers": False, + "in_wilmington": False, + }, + ] + frame = us_frame(households, person_inputs=[[{}, {}] for _ in households]) + + assigned = with_household_us_puma_ladder(frame, _co_ny_pa_puma_ladder(), seed=7) + household = assigned.table("household") + person = assigned.table("person") + summary = us_puma_ladder_assignment_summary(household, _co_ny_pa_puma_ladder()) + + for flag in PLACE_FLAGS: + assert flag not in household + county = household["county_fips"] + assert household["in_denver"].tolist() == county.eq("08031").tolist() + assert 0 < int(household["in_denver"].sum()) < 40 # both counties drawn + philly = household.set_index("household_id")["county_fips"].eq("42101") + assert person["pa_philadelphia_wage_tax_resident"].tolist() == ( + philly.loc[person["person_household_id"]].tolist() + ) + statuses = { + flag: entry["status"] + for flag, entry in summary["local_jurisdiction_flags"]["flags"].items() + } + assert statuses == { + "in_denver": JURISDICTION_FLAG_DERIVED, + "in_wilmington": JURISDICTION_FLAG_UNAVAILABLE, + "in_yonkers": JURISDICTION_FLAG_UNAVAILABLE, + "pa_philadelphia_wage_tax_resident": JURISDICTION_FLAG_DERIVED, + } + assert us_local_jurisdiction_flag_failures(household) == [] + + +# --------------------------------------------------------------------------- # +# Gates +# --------------------------------------------------------------------------- # + + +def _assigned_block_household() -> pd.DataFrame: + frame = us_frame(households_on_blocks(_NAMES)) + return with_household_us_geography_ladder(frame, block_ladder()).table("household") + + +def test_gate_accepts_consistent_or_absent_flags() -> None: + household = _assigned_block_household() + + assert us_local_jurisdiction_flag_failures(household) == [] + assert ( + us_local_jurisdiction_flag_failures( + household.drop(columns=list(HOUSEHOLD_FLAGS)) + ) + == [] + ) + + +@pytest.mark.parametrize("flag", HOUSEHOLD_FLAGS) +def test_gate_fails_a_flag_that_disagrees_with_its_rule(flag: str) -> None: + household = _assigned_block_household() + household[flag] = ~household[flag] + + failures = us_local_jurisdiction_flag_failures(household) + block_gate = us_geography_ladder_gate(household, np.ones(len(household))) + + assert failures == [ + f"{flag}: {len(household)}/{len(household)} household row(s) disagree " + f"with the {REGISTRY_RULES[flag]} rule for {REGISTRY_GEOIDS[flag]}" + ] + assert failures[0] in block_gate.failures + + +REGISTRY_RULES = {item.flag: item.rule for item in REGISTRY.jurisdictions} +REGISTRY_GEOIDS = {item.flag: item.geoid for item in REGISTRY.jurisdictions} + + +def test_gate_fails_null_or_non_boolean_flags() -> None: + household = _assigned_block_household() + household["in_denver"] = household["in_denver"].astype(object) + household.loc[0, "in_denver"] = None + household["in_yonkers"] = household["in_yonkers"].map({True: "yes", False: "no"}) + + failures = us_local_jurisdiction_flag_failures(household) + + assert "in_denver: 1 null row(s)" in failures + assert "in_yonkers: holds non-boolean values" in failures + + +def test_puma_gate_fails_a_place_flag_with_no_place_rung() -> None: + household = pd.DataFrame( + { + "household_id": [1, 2], + "state_fips": [36, 36], + "puma": ["3600101", "3600101"], + "congressional_district_geoid": [3616, 3616], + "county_fips": ["36119", "36119"], + "county_fips_2023": ["36119", "36119"], + "in_yonkers": [False, False], + } + ) + + gate = us_puma_ladder_gate(household, np.ones(2), nyc_share_bounds=(0, 1)) + + assert any( + failure.startswith("in_yonkers: present but its place rung cannot decide it") + for failure in gate.failures + ) + + +def test_person_flag_column_requires_resolvable_households() -> None: + household = _household_table([("42101", "60000")]) + person = pd.DataFrame({"person_id": [1], "person_household_id": [99]}) + + with pytest.raises(ValueError, match="Every person must belong"): + apply_us_local_jurisdiction_flags( + {"household": household, "person": person}, rungs=BLOCK_GEOGRAPHY_RUNGS + ) + assert US_SCHEMA.membership_column("household") == "person_household_id" + + +def _assigned_block_frame(): + frame = us_frame( + households_on_blocks(_NAMES), person_inputs=[[{}, {}] for _ in _NAMES] + ) + return with_household_us_geography_ladder(frame, block_ladder(), seed=3) + + +def test_gate_requires_every_flag_its_rungs_decide() -> None: + assigned = _assigned_block_frame() + household = assigned.table("household").drop(columns=list(HOUSEHOLD_FLAGS)) + person = assigned.table("person").drop(columns=list(PERSON_FLAGS)) + + block = us_local_jurisdiction_flag_failures( + household, person=person, required_rungs=BLOCK_GEOGRAPHY_RUNGS + ) + puma = us_local_jurisdiction_flag_failures( + household, person=person, required_rungs=PUMA_GEOGRAPHY_RUNGS + ) + + assert sorted(failure.split(":")[0] for failure in block) == sorted(EXPECTED_RULES) + assert all("absent" in failure for failure in block) + assert sorted(failure.split(":")[0] for failure in puma) == [ + "in_denver", + "pa_philadelphia_wage_tax_resident", + ] + # Without required rungs an absent flag passes (pre-flag artifacts). + assert us_local_jurisdiction_flag_failures(household, person=person) == [] + + +def test_gate_checks_each_person_flag_against_its_household() -> None: + assigned = _assigned_block_frame() + household = assigned.table("household") + person = assigned.table("person").copy() + flag = PERSON_FLAGS[0] + + assert us_local_jurisdiction_flag_failures(household, person=person) == [] + person.loc[person.index[0], flag] = not person.loc[person.index[0], flag] + + assert us_local_jurisdiction_flag_failures(household, person=person) == [ + f"{flag}: 1/{len(person)} person row(s) disagree with the county rule for 42101" + ] + # The household-only gate cannot see person flags. + assert us_local_jurisdiction_flag_failures(household) == [] + + +# --------------------------------------------------------------------------- # +# Re-deriving an existing artifact (exports, release builder) +# --------------------------------------------------------------------------- # + + +def _block_table(**columns: list[object]) -> pd.DataFrame: + table = { + "household_id": [1, 2], + "county_fips": ["36119", "08031"], + "place_fips": ["84000", "20000"], + "block_geoid": ["361190001001000", "080310001001000"], + } + table.update(columns) + return pd.DataFrame(table) + + +@pytest.mark.parametrize( + ("columns", "expected"), + [ + ({}, BLOCK_GEOGRAPHY_RUNGS), + # A pooled table: ACS rows carry no place and no block. + ({"place_fips": ["84000", None]}, PUMA_GEOGRAPHY_RUNGS), + ( + {"place_fips": ["84000", ""], "block_geoid": ["361190001001000", ""]}, + PUMA_GEOGRAPHY_RUNGS, + ), + ( + {"block_geoid": ["361190001001000", None]}, + PUMA_GEOGRAPHY_RUNGS, + ), + ({"county_fips": ["36119", None]}, ()), + ], +) +def test_rungs_present_reads_the_artifacts_own_geography(columns, expected) -> None: + assert us_local_jurisdiction_rungs_present(_block_table(**columns)) == expected + + +def test_rungs_present_needs_the_columns_themselves() -> None: + table = _block_table() + + assert us_local_jurisdiction_rungs_present(table.drop(columns=["block_geoid"])) == ( + PUMA_GEOGRAPHY_RUNGS + ) + assert us_local_jurisdiction_rungs_present(table.drop(columns=["place_fips"])) == ( + PUMA_GEOGRAPHY_RUNGS + ) + assert ( + us_local_jurisdiction_rungs_present(table.drop(columns=["county_fips"])) == () + ) + + +def _without_flags(frame): + tables = {entity: frame.table(entity) for entity in frame.entities} + tables["household"] = tables["household"].drop(columns=list(HOUSEHOLD_FLAGS)) + tables["person"] = tables["person"].drop( + columns=[*PERSON_FLAGS, "pa_philadelphia_wage_tax_taxable_wages"], + errors="ignore", + ) + return type(frame)( + tables, frame.schema, {"household": frame.weights_for("household")} + ) + + +@settings(max_examples=40, deadline=None) +@given(st.lists(st.sampled_from(_NAMES), min_size=1, max_size=12)) +def test_rederiving_a_pre_flag_artifact_restores_the_block_line_flags(names) -> None: + frame = us_frame(households_on_blocks(names), person_inputs=[[{}] for _ in names]) + # What the block line writes: the ladder's flags, then the local-tax inputs. + assigned, _ = with_us_local_tax_inputs( + with_household_us_geography_ladder(frame, block_ladder(), seed=1) + ) + + rederived, receipt = rederive_us_local_jurisdiction_flags(_without_flags(assigned)) + again, again_receipt = rederive_us_local_jurisdiction_flags(rederived) + + for entity in ("household", "person"): + pd.testing.assert_frame_equal( + rederived.table(entity), assigned.table(entity), check_like=True + ) + pd.testing.assert_frame_equal(again.table(entity), rederived.table(entity)) + assert receipt["rungs"] == ["county", "place"] + assert receipt["carried_flags"] == [] + assert again_receipt["carried_flags"] == sorted(EXPECTED_RULES) + assert {entry["status"] for entry in receipt["flags"].values()} == { + JURISDICTION_FLAG_DERIVED + } + assert receipt["carried_local_tax_inputs"] == [] + assert again_receipt["carried_local_tax_inputs"] == [ + "pa_philadelphia_wage_tax_taxable_wages" + ] + + +@pytest.mark.parametrize("flag", sorted(EXPECTED_RULES)) +def test_rederiving_refuses_a_carried_flag_that_disagrees(flag: str) -> None: + assigned = _assigned_block_frame() + tables = {entity: assigned.table(entity) for entity in assigned.entities} + entity = "person" if flag in PERSON_FLAGS else "household" + tables[entity] = tables[entity].assign(**{flag: ~tables[entity][flag]}) + corrupt = type(assigned)( + tables, assigned.schema, {"household": assigned.weights_for("household")} + ) + + with pytest.raises(ValueError, match=f"disagree with its own geography: {flag}"): + rederive_us_local_jurisdiction_flags(corrupt) + + +def test_rederiving_a_pooled_artifact_leaves_place_flags_unavailable() -> None: + # A donor row on the Yonkers block and an ACS row in Denver with no block + # or place: the place rule cannot be decided for the ACS row. + households = [ + { + "state_fips": 36, + "county_fips": "36119", + "place_fips": "84000", + "block_geoid": "361190001001000", + }, + { + "state_fips": 8, + "county_fips": "08031", + "place_fips": None, + "block_geoid": None, + }, + ] + frame = us_frame(households, person_inputs=[[{}], [{}]]) + + rederived, receipt = rederive_us_local_jurisdiction_flags(frame) + + household = rederived.table("household") + assert "in_yonkers" not in household and "in_wilmington" not in household + assert household["in_denver"].tolist() == [False, True] + assert receipt["rungs"] == ["county"] + assert receipt["flags"]["in_yonkers"]["status"] == JURISDICTION_FLAG_UNAVAILABLE + assert receipt["carried_flags"] == [] + + +def test_rederiving_without_a_county_writes_no_flag() -> None: + rederived, receipt = rederive_us_local_jurisdiction_flags( + us_frame([{"state_fips": 36}]) + ) + + assert receipt["rungs"] == [] + assert not set(EXPECTED_RULES) & set(rederived.table("household")) + assert {entry["status"] for entry in receipt["flags"].values()} == { + JURISDICTION_FLAG_UNAVAILABLE + } + # A carried flag that no county could have decided is refused. + with pytest.raises(ValueError, match="in_denver: present but its county rung"): + rederive_us_local_jurisdiction_flags( + us_frame([{"state_fips": 36, "in_denver": False}]) + ) diff --git a/packages/microcosm-build/tests/engine_free/us/test_us_local_tax_inputs.py b/packages/microcosm-build/tests/engine_free/us/test_us_local_tax_inputs.py new file mode 100644 index 0000000000..b8011b3439 --- /dev/null +++ b/packages/microcosm-build/tests/engine_free/us/test_us_local_tax_inputs.py @@ -0,0 +1,680 @@ +"""US local-tax inputs: registry pin, derivation properties and gates. + +Invariants exercised here (stated for every input, then checked by +Hypothesis): + +- a Philadelphia resident's taxable wages are ``max(wages, 0)`` and every + other person's are 0, so ``0 <= taxable <= max(wages, 0)``, taxable wages + never fall when wages rise, and a nonresident's are 0 whatever they earn; +- derivation is deterministic, commutes with any reordering of person rows, + and applying it twice changes nothing; the input tables are never + modified; +- an input the registry marks unavailable is never written, and a stale + column is removed; without the residence flag the taxable wages are not + written either; +- the receipt's weighted taxable wages equal the person-weighted sum of the + written column, and its counts match the rows; +- a null residence flag, an infinite wage, a missing column or (unless the + line propagates nulls) a resident's null wage raises instead of writing 0; +- the gate accepts exactly the column the rule writes and fails any other. +""" + +from __future__ import annotations + +import hashlib +import json +from pathlib import Path + +import numpy as np +import pandas as pd +import pytest +from hypothesis import given, settings +from hypothesis import strategies as st + +from microcosm.build.us_annual_static_aging import _rederive_local_tax_inputs +from microcosm.build.us_runtime.local_jurisdictions import ( + JURISDICTION_FLAG_DERIVED, + JURISDICTION_FLAG_UNAVAILABLE, + LOCAL_TAX_INPUT_RESIDENT_WAGES, + LOCAL_TAX_INPUT_UNAVAILABLE, + NULL_WAGES_PROPAGATE, + NULL_WAGES_REFUSE, + US_LOCAL_TAX_INPUT_REGISTRY_RESOURCE, + US_LOCAL_TAX_INPUT_REGISTRY_SHA256, + apply_us_local_tax_inputs, + load_us_local_tax_input_registry, + packaged_us_local_jurisdiction_registry, + packaged_us_local_tax_input_registry, + rederive_us_local_jurisdiction_flags, + us_local_tax_input_failures, + us_local_tax_input_output_columns, + us_resident_wage_tax_values, + with_us_local_jurisdiction_flags, + with_us_local_tax_inputs, +) +from microcosm.build.us_runtime.operator_boundary import ( + PRE_ASSEMBLY_OPERATOR_OUTPUT_FAMILIES, +) +from microcosm.frame import US_SCHEMA +from test_support.microcosm_build.us_local_jurisdictions import us_frame +from test_support.paths import paths_for + +REGISTRY_PATH = ( + paths_for("microcosm-build").package + / "src/microcosm/build/us_runtime" + / US_LOCAL_TAX_INPUT_REGISTRY_RESOURCE +) +REGISTRY = packaged_us_local_tax_input_registry() +TAXABLE = "pa_philadelphia_wage_tax_taxable_wages" +RESIDENT = "pa_philadelphia_wage_tax_resident" +WAGES = "employment_income_before_lsr" +TAXABLE_ITEM = next(item for item in REGISTRY.inputs if item.variable == TAXABLE) + +# The decisions, written out independently of the registry file: a provision +# or basis mistyped there fails this oracle. +EXPECTED_PROVISIONS = { + "co_denver_employee_occupational_privilege_tax_months": ( + LOCAL_TAX_INPUT_UNAVAILABLE, + "work_location", + ), + "de_wilmington_nonresident_earnings": ( + LOCAL_TAX_INPUT_UNAVAILABLE, + "work_location", + ), + "ny_yonkers_nonresident_earnings": (LOCAL_TAX_INPUT_UNAVAILABLE, "work_location"), + "pa_philadelphia_wage_tax_reduced_rate_eligible": ( + LOCAL_TAX_INPUT_UNAVAILABLE, + "refund_claim", + ), + TAXABLE: (LOCAL_TAX_INPUT_RESIDENT_WAGES, RESIDENT), +} +UNAVAILABLE = sorted( + variable + for variable, (provision, _) in EXPECTED_PROVISIONS.items() + if provision == LOCAL_TAX_INPUT_UNAVAILABLE +) + + +# --------------------------------------------------------------------------- # +# Registry +# --------------------------------------------------------------------------- # + + +def test_packaged_registry_bytes_match_the_pinned_sha256() -> None: + payload = REGISTRY_PATH.read_bytes() + + assert hashlib.sha256(payload).hexdigest() == US_LOCAL_TAX_INPUT_REGISTRY_SHA256 + assert REGISTRY.sha256 == US_LOCAL_TAX_INPUT_REGISTRY_SHA256 + + +def test_registry_provisions_each_input_as_decided() -> None: + observed = { + item.variable: ( + item.provision, + item.residence_flag + if item.provision == LOCAL_TAX_INPUT_RESIDENT_WAGES + else item.basis, + ) + for item in REGISTRY.inputs + } + + assert observed == EXPECTED_PROVISIONS + assert {item.entity for item in REGISTRY.inputs} == {"person"} + assert TAXABLE_ITEM.wage_input == WAGES + person_flags = { + item.flag + for item in packaged_us_local_jurisdiction_registry().for_entity("person") + } + assert TAXABLE_ITEM.residence_flag in person_flags + + +def test_only_the_resident_wage_input_is_ever_an_output_column() -> None: + assert us_local_tax_input_output_columns() == {"person": frozenset({TAXABLE})} + assert PRE_ASSEMBLY_OPERATOR_OUTPUT_FAMILIES["local_tax_inputs"] == { + "person": frozenset({TAXABLE}) + } + + +def test_registry_pins_every_downloaded_source_document() -> None: + document = json.loads(REGISTRY_PATH.read_text()) + cited = {name for item in document["inputs"] for name in item["sources"]} + + assert cited == set(document["sources"]) + pinned = [ + entry + for source in document["sources"].values() + for entry in source["documents"] + if isinstance(entry, dict) + ] + assert pinned + for entry in pinned: + assert entry["url"].startswith("https://") + assert len(entry["sha256"]) == 64 + int(entry["sha256"], 16) + + +def test_packaged_registry_refuses_bytes_that_differ_from_the_pin(tmp_path) -> None: + edited = tmp_path / "registry.json" + edited.write_bytes(REGISTRY_PATH.read_bytes() + b" ") + + with pytest.raises(ValueError, match="do not match the pinned SHA-256"): + load_us_local_tax_input_registry( + edited, expected_sha256=US_LOCAL_TAX_INPUT_REGISTRY_SHA256 + ) + + +def _document() -> dict: + return json.loads(REGISTRY_PATH.read_text()) + + +def _write(path: Path, document: dict) -> Path: + path.write_text(json.dumps(document)) + return path + + +def _edit_input(variable: str, **changes: object) -> dict: + document = _document() + for item in document["inputs"]: + if item["variable"] == variable: + for key, value in changes.items(): + if value is None: + item.pop(key) + else: + item[key] = value + return document + + +@pytest.mark.parametrize( + ("document", "message"), + [ + ({**_document(), "kind": "other"}, "kind must be"), + ({**_document(), "schema_version": 2}, "schema_version must be"), + ({**_document(), "sources": {}}, "has no sources"), + ({**_document(), "inputs": []}, "has no inputs"), + ( + {**_document(), "inputs": list(reversed(_document()["inputs"]))}, + "must be sorted", + ), + ( + {**_document(), "inputs": _document()["inputs"][:1] * 2}, + "repeats a variable", + ), + (_edit_input(TAXABLE, provision="imputed"), "provision must be one of"), + (_edit_input(TAXABLE, entity="household"), "is a person input"), + (_edit_input(TAXABLE, entity="tax_unit"), "entity must be one of"), + ( + _edit_input(TAXABLE, residence_flag=None), + "is missing \\['residence_flag'\\]", + ), + (_edit_input(TAXABLE, basis="work_location"), "may not name \\['basis'\\]"), + (_edit_input(TAXABLE, wage_input="Wages"), "lowercase identifier"), + (_edit_input(TAXABLE, sources=["census_blog"]), "unknown source"), + (_edit_input(TAXABLE, engine_consumers=[]), "must list engine variables"), + ( + _edit_input("ny_yonkers_nonresident_earnings", basis="survey_gap"), + "basis must be one of", + ), + ( + _edit_input("ny_yonkers_nonresident_earnings", residence_flag="in_yonkers"), + "may not name \\['residence_flag'\\]", + ), + ( + _edit_input("ny_yonkers_nonresident_earnings", reason=""), + "reason must be a non-empty string", + ), + ], +) +def test_registry_loader_refuses_malformed_registries( + tmp_path, document: dict, message: str +) -> None: + path = _write(tmp_path / "registry.json", document) + + with pytest.raises(ValueError, match=message): + load_us_local_tax_input_registry(path) + + +def test_a_resident_wage_input_must_name_a_person_residence_flag(tmp_path) -> None: + # in_denver is a household flag; the rule needs a person's own residence. + registry = load_us_local_tax_input_registry( + _write( + tmp_path / "registry.json", + _edit_input(TAXABLE, residence_flag="in_denver"), + ) + ) + person = pd.DataFrame({"in_denver": [True], WAGES: [1.0]}) + + with pytest.raises(ValueError, match="are not person flags"): + apply_us_local_tax_inputs( + {"person": person, "household": pd.DataFrame()}, registry=registry + ) + + +# --------------------------------------------------------------------------- # +# Derivation properties +# --------------------------------------------------------------------------- # + +_WAGE = st.one_of( + st.floats(min_value=-1e7, max_value=1e9, allow_nan=False, allow_infinity=False), + st.sampled_from([0.0, -0.0, 1.0, -1.0, 50_000.0]), +) +_PEOPLE = st.lists(st.tuples(st.booleans(), _WAGE), min_size=1, max_size=40) + + +def _person(rows: list[tuple[bool, float]]) -> pd.DataFrame: + return pd.DataFrame( + { + "person_id": np.arange(1, len(rows) + 1), + "person_household_id": np.arange(1, len(rows) + 1), + RESIDENT: [resident for resident, _ in rows], + WAGES: [wages for _, wages in rows], + } + ) + + +def _tables(person: pd.DataFrame) -> dict[str, pd.DataFrame]: + household = pd.DataFrame({"household_id": person["person_household_id"].unique()}) + return {"person": person, "household": household} + + +@settings(max_examples=200, deadline=None) +@given(_PEOPLE) +def test_taxable_wages_are_a_residents_nonnegative_wages(rows) -> None: + person = _person(rows) + + values = us_resident_wage_tax_values(person, TAXABLE_ITEM) + + for (resident, wages), value in zip(rows, values, strict=True): + assert value == (max(wages, 0.0) if resident else 0.0) + assert 0.0 <= value <= max(wages, 0.0) + + +@settings(max_examples=200, deadline=None) +@given( + _PEOPLE, + st.lists( + st.floats(min_value=0, max_value=1e8, allow_nan=False), min_size=40, max_size=40 + ), +) +def test_taxable_wages_never_fall_when_wages_rise(rows, raises) -> None: + person = _person(rows) + higher = person.assign(**{WAGES: person[WAGES] + np.asarray(raises[: len(rows)])}) + + low = us_resident_wage_tax_values(person, TAXABLE_ITEM) + high = us_resident_wage_tax_values(higher, TAXABLE_ITEM) + + assert (high >= low).all() + # Nonresidents owe nothing whatever they earn. + assert (high[~person[RESIDENT].to_numpy()] == 0).all() + + +@settings(max_examples=100, deadline=None) +@given(_PEOPLE, st.randoms(use_true_random=False)) +def test_derivation_commutes_with_person_row_order(rows, random) -> None: + person = _person(rows) + order = list(range(len(person))) + random.shuffle(order) + shuffled = person.iloc[order].reset_index(drop=True) + + written, _ = apply_us_local_tax_inputs(_tables(person)) + shuffled_written, _ = apply_us_local_tax_inputs(_tables(shuffled)) + + np.testing.assert_array_equal( + shuffled_written["person"][TAXABLE].to_numpy(), + written["person"][TAXABLE].to_numpy()[order], + ) + + +@settings(max_examples=100, deadline=None) +@given(_PEOPLE) +def test_applying_twice_changes_nothing_and_leaves_the_inputs_untouched(rows) -> None: + person = _person(rows) + before = person.copy() + + once, receipt = apply_us_local_tax_inputs(_tables(person)) + twice, again = apply_us_local_tax_inputs(once) + + pd.testing.assert_frame_equal(person, before) + pd.testing.assert_frame_equal(twice["person"], once["person"]) + assert again == receipt + assert us_local_tax_input_failures(once["person"], require_derivable=True) == [] + + +@settings(max_examples=100, deadline=None) +@given(_PEOPLE, st.lists(st.floats(min_value=0, max_value=1e6), min_size=40)) +def test_receipt_counts_and_weighted_sums_match_the_written_rows(rows, weights) -> None: + person = _person(rows) + household_weights = np.asarray(weights[: len(rows)]) + + written, receipt = apply_us_local_tax_inputs( + _tables(person), household_weights=household_weights + ) + + entry = receipt["inputs"][TAXABLE] + values = written["person"][TAXABLE].to_numpy() + resident = person[RESIDENT].to_numpy() + wages = person[WAGES].to_numpy() + assert entry["status"] == JURISDICTION_FLAG_DERIVED + assert entry["residents"] == int(resident.sum()) + assert entry["residents_with_taxable_wages"] == int((values > 0).sum()) + assert entry["residents_with_negative_wages_set_to_zero"] == int( + (resident & (wages < 0)).sum() + ) + assert entry["residents_with_null_wages_left_null"] == 0 + assert entry["weighted_residents"] == pytest.approx( + household_weights[resident].sum() + ) + assert entry["weighted_taxable_wages"] == pytest.approx(household_weights @ values) + assert entry["nonresident_component"]["status"] == JURISDICTION_FLAG_UNAVAILABLE + assert receipt["registry_sha256"] == US_LOCAL_TAX_INPUT_REGISTRY_SHA256 + + +def test_person_weights_follow_each_persons_household() -> None: + # Two residents share household 7 and one lives alone in household 3; + # the household table lists them in another order. + person = pd.DataFrame( + { + "person_id": [1, 2, 3], + "person_household_id": [7, 7, 3], + RESIDENT: [True, True, True], + WAGES: [10.0, 20.0, 40.0], + } + ) + household = pd.DataFrame({"household_id": [3, 7]}) + + _, receipt = apply_us_local_tax_inputs( + {"person": person, "household": household}, + household_weights=np.asarray([2.0, 5.0]), + ) + + entry = receipt["inputs"][TAXABLE] + assert entry["weighted_residents"] == 5.0 + 5.0 + 2.0 + assert entry["weighted_taxable_wages"] == 5.0 * 30.0 + 2.0 * 40.0 + + +def test_household_weights_must_align_with_the_household_table() -> None: + person = _person([(True, 1.0), (False, 2.0)]) + + with pytest.raises(ValueError, match="must align with the household table"): + apply_us_local_tax_inputs(_tables(person), household_weights=np.ones(3)) + + +def test_unavailable_inputs_are_never_written_and_stale_columns_are_removed() -> None: + person = _person([(True, 100.0), (False, 200.0)]).assign( + **{variable: 1.0 for variable in UNAVAILABLE} + ) + + written, receipt = apply_us_local_tax_inputs(_tables(person)) + + assert not set(UNAVAILABLE) & set(written["person"]) + assert written["person"][TAXABLE].tolist() == [100.0, 0.0] + for variable in UNAVAILABLE: + entry = receipt["inputs"][variable] + assert entry["status"] == JURISDICTION_FLAG_UNAVAILABLE + assert entry["basis"] == EXPECTED_PROVISIONS[variable][1] + assert entry["reason"] + # The caller's table still holds what it held. + assert set(UNAVAILABLE) <= set(person) + + +def test_without_the_residence_flag_the_taxable_wages_are_not_written() -> None: + person = _person([(True, 100.0)]).drop(columns=[RESIDENT]).assign(**{TAXABLE: 5.0}) + + written, receipt = apply_us_local_tax_inputs(_tables(person)) + + assert TAXABLE not in written["person"] + entry = receipt["inputs"][TAXABLE] + assert entry["status"] == JURISDICTION_FLAG_UNAVAILABLE + assert f"wrote no {RESIDENT}" in entry["reason"] + + +def test_other_tables_pass_through_unchanged() -> None: + tables = {**_tables(_person([(True, 1.0)])), "tax_unit": pd.DataFrame({"a": [1]})} + + written, _ = apply_us_local_tax_inputs(tables) + + assert written["tax_unit"] is tables["tax_unit"] + assert written["household"] is tables["household"] + + +# --------------------------------------------------------------------------- # +# Refusals and null handling +# --------------------------------------------------------------------------- # + + +def test_a_residents_null_wage_raises_unless_the_line_propagates_it() -> None: + person = _person([(True, 1.0), (True, 2.0), (False, 3.0)]) + person.loc[[1, 2], WAGES] = np.nan + + with pytest.raises(ValueError, match="null on 1 resident row"): + apply_us_local_tax_inputs(_tables(person)) + written, receipt = apply_us_local_tax_inputs( + _tables(person), null_wages=NULL_WAGES_PROPAGATE + ) + + values = written["person"][TAXABLE].to_numpy() + # The resident's null stays null; a nonresident's null wage still gives 0. + assert values[0] == 1.0 + assert np.isnan(values[1]) + assert values[2] == 0.0 + entry = receipt["inputs"][TAXABLE] + assert entry["null_wages"] == NULL_WAGES_PROPAGATE + assert entry["residents_with_null_wages_left_null"] == 1 + + +def test_a_nonresidents_null_wage_is_decided_in_either_mode() -> None: + person = _person([(False, 1.0)]) + person[WAGES] = np.nan + + for mode in (NULL_WAGES_REFUSE, NULL_WAGES_PROPAGATE): + assert us_resident_wage_tax_values(person, TAXABLE_ITEM, null_wages=mode) == [ + 0.0 + ] + + +@pytest.mark.parametrize( + ("change", "message"), + [ + ({WAGES: [np.inf]}, "1 infinite row"), + ({WAGES: [-np.inf]}, "1 infinite row"), + ({RESIDENT: [None]}, "1 null row"), + ({RESIDENT: ["yes"]}, "non-boolean"), + ], +) +def test_undecidable_rows_raise_instead_of_writing_zero(change, message) -> None: + person = _person([(True, 1.0)]).astype({RESIDENT: object}).assign(**change) + + for mode in (NULL_WAGES_REFUSE, NULL_WAGES_PROPAGATE): + with pytest.raises(ValueError, match=message): + us_resident_wage_tax_values(person, TAXABLE_ITEM, null_wages=mode) + + +def test_a_missing_wage_column_raises() -> None: + person = _person([(True, 1.0)]).drop(columns=[WAGES]) + + with pytest.raises(ValueError, match=f"no '{WAGES}'"): + apply_us_local_tax_inputs(_tables(person)) + + +def test_an_unknown_null_mode_or_an_unavailable_item_raises() -> None: + person = _person([(True, 1.0)]) + unavailable = next( + item for item in REGISTRY.inputs if item.provision == "unavailable" + ) + + with pytest.raises(ValueError, match="null_wages must be one of"): + us_resident_wage_tax_values(person, TAXABLE_ITEM, null_wages="fill") + with pytest.raises(ValueError, match="is not a resident_wages input"): + us_resident_wage_tax_values(person, unavailable) + + +# --------------------------------------------------------------------------- # +# Gate +# --------------------------------------------------------------------------- # + + +def _derived(rows: list[tuple[bool, float]]) -> pd.DataFrame: + return apply_us_local_tax_inputs(_tables(_person(rows)))[0]["person"] + + +def test_gate_accepts_the_derived_column_or_its_absence() -> None: + derived = _derived([(True, 10.0), (False, 20.0)]) + + assert us_local_tax_input_failures(derived, require_derivable=True) == [] + assert us_local_tax_input_failures(derived.drop(columns=[TAXABLE])) == [] + # Neither flag nor input: nothing could decide it, and nothing claims to. + assert ( + us_local_tax_input_failures( + derived.drop(columns=[TAXABLE, RESIDENT]), require_derivable=True + ) + == [] + ) + + +def test_gate_requires_the_input_its_residence_flag_decides() -> None: + derived = _derived([(True, 10.0)]).drop(columns=[TAXABLE]) + + (failure,) = us_local_tax_input_failures(derived, require_derivable=True) + + assert failure.startswith(f"{TAXABLE}: absent, but {RESIDENT} is present") + + +@pytest.mark.parametrize( + ("edit", "message"), + [ + (lambda p: p.assign(**{TAXABLE: [10.0, 1.0]}), "1/2 person row"), + (lambda p: p.assign(**{TAXABLE: [9.0, 0.0]}), "1/2 person row"), + (lambda p: p.assign(**{TAXABLE: [np.nan, 0.0]}), "missing or non-finite"), + (lambda p: p.assign(**{TAXABLE: [np.inf, 0.0]}), "missing or non-finite"), + (lambda p: p.drop(columns=[RESIDENT]), f"{RESIDENT} is absent"), + (lambda p: p.drop(columns=[WAGES]), "cannot be checked"), + ( + lambda p: p.assign(ny_yonkers_nonresident_earnings=0.0), + "ny_yonkers_nonresident_earnings: present, but no source decides it " + "\\(work_location\\)", + ), + ( + lambda p: p.assign(pa_philadelphia_wage_tax_reduced_rate_eligible=False), + "\\(refund_claim\\)", + ), + ], +) +def test_gate_fails_any_column_the_rule_did_not_write(edit, message) -> None: + derived = _derived([(True, 10.0), (False, 20.0)]) + + failures = us_local_tax_input_failures(edit(derived)) + + assert len(failures) == 1 + assert pd.Series(failures).str.contains(message).all() + + +def test_gate_accepts_a_propagated_null_only_in_propagate_mode() -> None: + person = _person([(True, np.nan), (False, 1.0)]) + written, _ = apply_us_local_tax_inputs( + _tables(person), null_wages=NULL_WAGES_PROPAGATE + ) + + assert ( + us_local_tax_input_failures(written["person"], null_wages=NULL_WAGES_PROPAGATE) + == [] + ) + (failure,) = us_local_tax_input_failures(written["person"]) + assert "cannot be checked" in failure + # A filled value where the wage is null is not what propagation writes. + filled = written["person"].assign(**{TAXABLE: [0.0, 0.0]}) + (failure,) = us_local_tax_input_failures(filled, null_wages=NULL_WAGES_PROPAGATE) + assert "1/2 person row" in failure + + +# --------------------------------------------------------------------------- # +# Frames, existing artifacts and annual aging +# --------------------------------------------------------------------------- # + + +def _philadelphia_frame(): + frame = us_frame( + [ + {"state_fips": 42, "county_fips": "42101"}, + {"state_fips": 42, "county_fips": "42045"}, + ], + person_inputs=[ + [{WAGES: 60_000.0}, {WAGES: -500.0}], + [{WAGES: 70_000.0}], + ], + weights=[3.0, 4.0], + ) + return with_us_local_jurisdiction_flags(frame, rungs=("county",))[0] + + +def test_frame_helper_writes_the_input_and_keeps_weights_and_links() -> None: + frame = _philadelphia_frame() + + built, receipt = with_us_local_tax_inputs(frame) + + assert built.table("person")[TAXABLE].tolist() == [60_000.0, 0.0, 0.0] + np.testing.assert_array_equal( + built.weights_for("household").values, frame.weights_for("household").values + ) + assert built.entities == frame.entities + entry = receipt["inputs"][TAXABLE] + assert entry["weighted_residents"] == 6.0 + assert entry["weighted_taxable_wages"] == 180_000.0 + assert TAXABLE not in frame.table("person") + + +def test_rederiving_refuses_a_carried_taxable_wage_that_disagrees() -> None: + built, _ = with_us_local_tax_inputs(_philadelphia_frame()) + tables = {entity: built.table(entity) for entity in built.entities} + tables["person"] = tables["person"].assign(**{TAXABLE: [1.0, 0.0, 0.0]}) + corrupt = type(built)( + tables, built.schema, {"household": built.weights_for("household")} + ) + + with pytest.raises(ValueError, match=f"residence flags and wages: {TAXABLE}"): + rederive_us_local_jurisdiction_flags(corrupt) + + +def test_rederiving_refuses_a_carried_unavailable_input() -> None: + frame = _philadelphia_frame() + tables = {entity: frame.table(entity) for entity in frame.entities} + tables["person"] = tables["person"].assign(de_wilmington_nonresident_earnings=1.0) + carried = type(frame)( + tables, frame.schema, {"household": frame.weights_for("household")} + ) + + with pytest.raises(ValueError, match="de_wilmington_nonresident_earnings"): + rederive_us_local_jurisdiction_flags(carried) + + +@settings(max_examples=60, deadline=None) +@given( + st.lists( + st.floats(min_value=0.5, max_value=3.0, allow_nan=False), min_size=3, max_size=3 + ) +) +def test_annual_aging_rederives_taxable_wages_from_the_aged_wages(factors) -> None: + built, _ = with_us_local_tax_inputs(_philadelphia_frame()) + tables = {entity: built.table(entity) for entity in built.entities} + aged_person = tables["person"].assign( + **{WAGES: tables["person"][WAGES] * np.asarray(factors)} + ) + aged = {**tables, "person": aged_person} + + rederived, names = _rederive_local_tax_inputs(aged) + + assert names == [TAXABLE] + expected = np.where(aged_person[RESIDENT], np.maximum(aged_person[WAGES], 0.0), 0.0) + np.testing.assert_array_equal(rederived["person"][TAXABLE].to_numpy(), expected) + assert us_local_tax_input_failures(rederived["person"]) == [] + # The caller's table keeps its base-year values. + assert aged_person[TAXABLE].tolist() == [60_000.0, 0.0, 0.0] + + +def test_annual_aging_adds_no_input_a_base_did_not_carry() -> None: + frame = _philadelphia_frame() + tables = {entity: frame.table(entity) for entity in frame.entities} + + rederived, names = _rederive_local_tax_inputs(tables) + + assert names == [] + assert TAXABLE not in rederived["person"] + assert US_SCHEMA.person_id_column in rederived["person"] diff --git a/packages/microcosm-build/tests/engine_free/us/test_us_multispine_pool.py b/packages/microcosm-build/tests/engine_free/us/test_us_multispine_pool.py index e53afbc40a..f68f3059b7 100644 --- a/packages/microcosm-build/tests/engine_free/us/test_us_multispine_pool.py +++ b/packages/microcosm-build/tests/engine_free/us/test_us_multispine_pool.py @@ -1,6 +1,9 @@ """Tests split from packages/microcosm-build/tests/test_us_multispine_pool.py.""" # ruff: noqa: F403, F405 +from microcosm.build.us_runtime.local_jurisdictions import ( + packaged_us_local_tax_input_registry, +) from test_support.microcosm_build.us_multispine_pool import * @@ -864,6 +867,14 @@ def test_remaining_stage_manifest_covers_every_derive_read() -> None: ("person", "schedule_d_capital_gain_distributions"), ("tax_unit", "tax_unit_id"), }, + # Runs before QBI, whose live-output check binds the person columns. + "with_us_local_tax_inputs": { + ("person", "pa_philadelphia_wage_tax_resident"), + ("person", "employment_income_before_lsr"), + ("person", "person_household_id"), + ("household", "household_id"), + ("household", ""), + }, "with_us_qbi_input_reconciliation": { *{("person", variable) for variable in US_QBI_OUTPUT_COLUMNS}, ("person", "self_employment_income_before_lsr"), @@ -1036,9 +1047,14 @@ def test_remaining_stage_manifest_enumerates_every_simulation_projection_input() "declared_deferred_null_input": 3, "assembled_native_engine_input": 5, "frame_structural_engine_input": 10, - "preserved_stacked_engine_input": 4, + "preserved_stacked_engine_input": 6, + "geography_derived_jurisdiction_input": 2, + "unavailable_place_jurisdiction_input": 2, "derived_schedule_d_input": 1, - "declared_absent_engine_input": 762, + "derived_resident_wage_tax_input": 1, + "unavailable_work_location_input": 3, + "unavailable_refund_claim_input": 1, + "declared_absent_engine_input": 751, "unprovisioned_source_input": 1, } ) @@ -1048,6 +1064,16 @@ def test_remaining_stage_manifest_enumerates_every_simulation_projection_input() if entry.provision == "preserved_stacked_engine_input" } assert preserved == { + ( + "household", + "congressional_district_geoid", + "ephemeral_simulation_projection_engine_default_if_present_null", + ), + ( + "household", + "county_fips", + "ephemeral_simulation_projection_engine_default_if_present_null", + ), ( "person", "is_related_to_head_or_spouse", @@ -1069,15 +1095,81 @@ def test_remaining_stage_manifest_enumerates_every_simulation_projection_input() "ephemeral_simulation_projection_engine_default_if_present_null", ), } + # The stacked pool draws county from the PUMA ladder but no place: the + # county-rule jurisdiction flags are derived with it at assembly, the + # place-rule ones are never written (local_jurisdictions). + jurisdiction = { + (entry.entity, entry.variable): ( + entry.provision, + entry.available_by, + entry.fallback, + ) + for entry in projection + if entry.provision + in { + "geography_derived_jurisdiction_input", + "unavailable_place_jurisdiction_input", + } + } + assert jurisdiction == { + ("household", "in_denver"): ( + "geography_derived_jurisdiction_input", + "assembled", + "ephemeral_simulation_projection_engine_default_if_present_null", + ), + ("person", "pa_philadelphia_wage_tax_resident"): ( + "geography_derived_jurisdiction_input", + "assembled", + "ephemeral_simulation_projection_engine_default_if_present_null", + ), + ("household", "in_wilmington"): ( + "unavailable_place_jurisdiction_input", + "simulate", + "policyengine_default_no_place_rung", + ), + ("household", "in_yonkers"): ( + "unavailable_place_jurisdiction_input", + "simulate", + "policyengine_default_no_place_rung", + ), + } + # Residents' taxable wages are derived from the assembled flag and the + # transferred wages; the work-location and refund-claim inputs have no + # source, so the engine default applies (us_local_tax_inputs.json). + local_tax = { + entry.variable: (entry.provision, entry.available_by, entry.fallback) + for entry in projection + if entry.variable in packaged_us_local_tax_input_registry().variables + } + work_location = ( + "unavailable_work_location_input", + "simulate", + "policyengine_default_no_work_location_source", + ) + assert local_tax == { + "pa_philadelphia_wage_tax_taxable_wages": ( + "derived_resident_wage_tax_input", + "derived", + "nonresident_work_location_unavailable_engine_default", + ), + "pa_philadelphia_wage_tax_reduced_rate_eligible": ( + "unavailable_refund_claim_input", + "simulate", + "policyengine_default_no_refund_claim_source", + ), + "co_denver_employee_occupational_privilege_tax_months": work_location, + "de_wilmington_nonresident_earnings": work_location, + "ny_yonkers_nonresident_earnings": work_location, + } assert all(entry.fallback is not None for entry in projection) def test_remaining_stage_manifest_is_unique_complete_and_stable() -> None: manifest = pool_remaining_stage_input_manifest(_installed_variable_metadata_index()) - assert len(manifest) == 1059 + assert len(manifest) == 1064 assert Counter(entry.stage for entry in manifest) == Counter( - {"derive": 34, "seed": 33, "simulate": 992} + {"derive": 39, "seed": 33, "simulate": 992} ) assert len( { @@ -1090,9 +1182,9 @@ def test_remaining_stage_manifest_is_unique_complete_and_stable() -> None: receipt = pool_remaining_stage_input_manifest_receipt( _installed_variable_metadata_index() ) - assert receipt["entry_count"] == 1059 + assert receipt["entry_count"] == 1064 assert receipt["stage_counts"] == { - "derive": 34, + "derive": 39, "seed": 33, "simulate": 992, } diff --git a/packages/microcosm-build/tests/engine_free/us/test_us_multispine_pool_tool.py b/packages/microcosm-build/tests/engine_free/us/test_us_multispine_pool_tool.py index 5403902555..3004da0f85 100644 --- a/packages/microcosm-build/tests/engine_free/us/test_us_multispine_pool_tool.py +++ b/packages/microcosm-build/tests/engine_free/us/test_us_multispine_pool_tool.py @@ -1047,7 +1047,10 @@ def deterministic_fixture_h5( # microcosm#1258 moves the identity again (the late schedule and the # remaining-stage manifest gain the S-corp transfer target); pool_h5 # and agreement stay unchanged. - "manifest": "bfaa7ffc709b68dbb7d05ee8f4c7e0600612f22ef21f3329784b782a9f59e812", + # The local-tax derive operator moves it once more (the derive order + # and the remaining-stage manifest gain with_us_local_tax_inputs); + # pool_h5 and agreement stay unchanged. + "manifest": "0d9e05705a511dd28ca78913af2a311c3bc902c8e88d71e90efccd0dc7d8844d", } diff --git a/packages/microcosm-build/tests/engine_free/us/test_us_puma_ladder.py b/packages/microcosm-build/tests/engine_free/us/test_us_puma_ladder.py index dab67ef235..1546a6c5c2 100644 --- a/packages/microcosm-build/tests/engine_free/us/test_us_puma_ladder.py +++ b/packages/microcosm-build/tests/engine_free/us/test_us_puma_ladder.py @@ -428,12 +428,33 @@ def _gated_household() -> tuple[pd.DataFrame, np.ndarray]: "congressional_district_geoid": [3612, 3620, 653, 4802], "county_fips": ["36061", "36001", "06037", "48001"], "county_fips_2023": ["36061", "36001", "06037", "48001"], + # The drawn county decides the county-rule flag; no county here is + # Denver. + "in_denver": [False] * 4, } ) weights = np.asarray([2.6, 3.6, 73.8, 20.0]) return household, weights +def test_gate_fails_when_the_county_decided_flag_is_absent() -> None: + household, weights = _gated_household() + + result = us_puma_ladder_gate(household.drop(columns=["in_denver"]), weights) + + assert not result.passed + assert any(failure.startswith("in_denver: absent") for failure in result.failures) + + +def test_gate_does_not_require_a_place_flag() -> None: + household, weights = _gated_household() + + result = us_puma_ladder_gate(household, weights) + + assert "in_yonkers" not in household and "in_wilmington" not in household + assert result.passed, result.failures + + def _minimal_us_frame() -> Frame: tables = { "person": pd.DataFrame( diff --git a/packages/microcosm-build/tests/engine_free/us/test_us_spine_blindness.py b/packages/microcosm-build/tests/engine_free/us/test_us_spine_blindness.py index 1cb0f4c622..4da9d81ac1 100644 --- a/packages/microcosm-build/tests/engine_free/us/test_us_spine_blindness.py +++ b/packages/microcosm-build/tests/engine_free/us/test_us_spine_blindness.py @@ -283,6 +283,9 @@ "input_mass.py", "l0_refit_export.py", "late_producer_dag.py", # Pure contract/schedule derivation; no treatment. + # Local-jurisdiction flags as a pure function of county/place codes; + # no population treatment. + "local_jurisdictions.py", "medicaid_take_up.py", # Reviewed held-out Medicare IRMAA diagnostic; no population treatment. "medicare_irmaa_holdout.py", @@ -3522,9 +3525,11 @@ def test_pool_build_tool_import_graph_is_source_spine_blind() -> None: # block_ladder_sources.py, whose CT_STATE_FIPS they import (#1376). All # are classified by the runtime registries and scanned below like every # reached module. 81 adds puf_source_schedule_e.py, the PUF donor's - # Schedule E line-32 and passive supplement (#1239). - assert len(runtime_graph) == 81, ( - f"{tool.name} must reach the pinned 81-module runtime graph; " + # Schedule E line-32 and passive supplement (#1239). 82 adds + # local_jurisdictions.py, which the PUMA ladder calls to write the + # county-rule local-jurisdiction flags. + assert len(runtime_graph) == 82, ( + f"{tool.name} must reach the pinned 82-module runtime graph; " f"reached {len(runtime_graph)}" ) assert not missing_modules, ( diff --git a/packages/microcosm-build/tests/engine_scenario/us/test_us_local_jurisdiction_flags_engine.py b/packages/microcosm-build/tests/engine_scenario/us/test_us_local_jurisdiction_flags_engine.py new file mode 100644 index 0000000000..2b22b63ded --- /dev/null +++ b/packages/microcosm-build/tests/engine_scenario/us/test_us_local_jurisdiction_flags_engine.py @@ -0,0 +1,174 @@ +"""Local taxes reach households placed through the block-ladder line. + +Synthetic households are pinned to fixture blocks in Yonkers, Wilmington, +Denver and Philadelphia (and a neighbour of each), placed by +``with_household_us_geography_ladder``, and run through +``PolicyEngineUSEngine.materialize``. Each local tax or benefit is nonzero +for the resident and zero (or at the nonresident rate) for the neighbour, +and stripping the derived flags returns the resident to the neighbour's +result, so the flags, not other geography, drive the difference. +""" + +from __future__ import annotations + +import numpy as np +import pytest + +from microcosm.build.us_runtime.geography_ladder import ( + with_household_us_geography_ladder, +) +from microcosm.frame import Frame +from microcosm.frame.adapters.policyengine_us import PolicyEngineUSEngine +from test_support.microcosm_build.us_local_jurisdictions import ( + block_ladder, + households_on_blocks, + us_frame, +) + +PERIOD = 2026 +FLAGS = { + "household": ("in_denver", "in_wilmington", "in_yonkers"), + "person": ("pa_philadelphia_wage_tax_resident",), +} +# Every person carries every input column, so no table holds a null the +# engine would refuse. +NO_INPUTS = { + "age": 40, + "employment_income": 0.0, + "rent": 0.0, + "social_security_retirement": 0.0, + "pa_philadelphia_wage_tax_taxable_wages": 0.0, +} +WORKER = {**NO_INPUTS, "employment_income": 100_000.0} +PHILADELPHIA_WORKER = { + **NO_INPUTS, + "employment_income": 50_000.0, + "pa_philadelphia_wage_tax_taxable_wages": 50_000.0, +} +# Elderly low-income renter: Denver's renter relief needs rent, an elderly or +# disabled member, and income under the AMI-based limit. +DENVER_RENTER = { + **NO_INPUTS, + "age": 72, + "rent": 14_400.0, + "social_security_retirement": 9_000.0, +} +CASES = ( + ("yonkers", WORKER), + ("new_rochelle_westchester", WORKER), + ("wilmington", WORKER), + ("new_castle_unincorporated", WORKER), + ("denver", DENVER_RENTER), + ("aurora_arapahoe", DENVER_RENTER), + ("philadelphia", PHILADELPHIA_WORKER), + ("delaware_county_pa", PHILADELPHIA_WORKER), +) +ROW = {name: position for position, (name, _) in enumerate(CASES)} +OUTPUTS = ( + "ny_yonkers_income_tax", + "de_wilmington_earned_income_tax", + "co_denver_property_tax_relief_renter_eligible", + "co_denver_property_tax_relief", + "pa_philadelphia_wage_tax", + "in_denver", + "in_wilmington", + "in_yonkers", + "pa_philadelphia_wage_tax_resident", +) + + +@pytest.fixture(scope="module") +def placed() -> Frame: + frame = us_frame( + households_on_blocks([name for name, _ in CASES]), + person_inputs=[[dict(person)] for _, person in CASES], + ) + return with_household_us_geography_ladder(frame, block_ladder(), seed=0) + + +def _without_flags(frame: Frame) -> Frame: + tables = {entity: frame.table(entity) for entity in frame.entities} + for entity, flags in FLAGS.items(): + tables[entity] = tables[entity].drop(columns=list(flags)) + return Frame( + tables, + frame.schema, + {"household": frame.weights_for("household")}, + ) + + +@pytest.fixture(scope="module") +def engine() -> PolicyEngineUSEngine: + return PolicyEngineUSEngine() + + +@pytest.fixture(scope="module") +def with_flags(engine, placed) -> dict[str, np.ndarray]: + return dict(engine.materialize(placed, OUTPUTS, PERIOD)) + + +@pytest.fixture(scope="module") +def without_flags(engine, placed) -> dict[str, np.ndarray]: + return dict(engine.materialize(_without_flags(placed), OUTPUTS, PERIOD)) + + +def test_the_engine_loads_the_derived_flags(with_flags) -> None: + for flag, resident in ( + ("in_yonkers", "yonkers"), + ("in_wilmington", "wilmington"), + ("in_denver", "denver"), + ("pa_philadelphia_wage_tax_resident", "philadelphia"), + ): + assert np.flatnonzero(with_flags[flag]).tolist() == [ROW[resident]], flag + + +def test_yonkers_resident_surcharge_is_nonzero_only_in_yonkers( + with_flags, without_flags +) -> None: + tax = with_flags["ny_yonkers_income_tax"] + + assert tax[ROW["yonkers"]] > 0 + assert tax[ROW["new_rochelle_westchester"]] == 0 + assert without_flags["ny_yonkers_income_tax"][ROW["yonkers"]] == 0 + + +def test_wilmington_earned_income_tax_is_nonzero_only_in_wilmington( + with_flags, without_flags +) -> None: + tax = with_flags["de_wilmington_earned_income_tax"] + + assert tax[ROW["wilmington"]] > 0 + assert tax[ROW["new_castle_unincorporated"]] == 0 + assert without_flags["de_wilmington_earned_income_tax"][ROW["wilmington"]] == 0 + + +def test_denver_renter_relief_reaches_only_the_denver_renter( + with_flags, without_flags +) -> None: + eligible = with_flags["co_denver_property_tax_relief_renter_eligible"] + relief = with_flags["co_denver_property_tax_relief"] + + assert eligible[ROW["denver"]] > 0 + assert relief[ROW["denver"]] > 0 + assert eligible[ROW["aurora_arapahoe"]] == 0 + assert relief[ROW["aurora_arapahoe"]] == 0 + assert without_flags["co_denver_property_tax_relief"][ROW["denver"]] == 0 + + +def test_philadelphia_wage_tax_uses_the_resident_rate_for_residents( + with_flags, without_flags +) -> None: + from policyengine_us import CountryTaxBenefitSystem + + rates = CountryTaxBenefitSystem().parameters(PERIOD).gov.local.pa.philadelphia + resident_rate = rates.tax.income.resident_rate + nonresident_rate = rates.tax.income.nonresident_rate + wages = PHILADELPHIA_WORKER["pa_philadelphia_wage_tax_taxable_wages"] + tax = with_flags["pa_philadelphia_wage_tax"] + + assert resident_rate != nonresident_rate + assert tax[ROW["philadelphia"]] == pytest.approx(wages * resident_rate) + assert tax[ROW["delaware_county_pa"]] == pytest.approx(wages * nonresident_rate) + assert without_flags["pa_philadelphia_wage_tax"][ + ROW["philadelphia"] + ] == pytest.approx(wages * nonresident_rate) diff --git a/packages/microcosm-build/tests/engine_scenario/us/test_us_local_tax_inputs_engine.py b/packages/microcosm-build/tests/engine_scenario/us/test_us_local_tax_inputs_engine.py new file mode 100644 index 0000000000..9c50a4a04c --- /dev/null +++ b/packages/microcosm-build/tests/engine_scenario/us/test_us_local_tax_inputs_engine.py @@ -0,0 +1,128 @@ +"""The Philadelphia wage tax reaches residents built through microcosm. + +Each person carries only ``employment_income_before_lsr``, the wage input +every microcosm line writes; nothing supplies the taxable wages by hand. +Households are pinned to fixture blocks in Philadelphia and its neighbour +Delaware County, then built the way the block line builds them +(``with_household_us_geography_ladder``, then ``with_us_local_tax_inputs``) +and the way an existing artifact is repaired +(``rederive_us_local_jurisdiction_flags``), and run through +``PolicyEngineUSEngine.materialize``. + +The resident owes wages times the resident rate. The neighbour owes nothing, +because the nonresident (work-location) component has no source. Stripping +the derived taxable wages returns the resident's tax to zero, so the derived +input, not the residence flag alone, moves the tax. +""" + +from __future__ import annotations + +import numpy as np +import pytest + +from microcosm.build.us_runtime.geography_ladder import ( + with_household_us_geography_ladder, +) +from microcosm.build.us_runtime.local_jurisdictions import ( + rederive_us_local_jurisdiction_flags, + with_us_local_tax_inputs, +) +from microcosm.frame import Frame +from microcosm.frame.adapters.policyengine_us import PolicyEngineUSEngine +from test_support.microcosm_build.us_local_jurisdictions import ( + block_ladder, + households_on_blocks, + us_frame, +) + +PERIOD = 2026 +TAXABLE_WAGES = "pa_philadelphia_wage_tax_taxable_wages" +DERIVED = ("pa_philadelphia_wage_tax_resident", TAXABLE_WAGES) +WAGES = 50_000.0 +# One worker per household; the negative-wage resident owes nothing. +CASES = ( + ("philadelphia", WAGES), + ("philadelphia", -2_000.0), + ("delaware_county_pa", WAGES), +) +OUTPUTS = ( + "pa_philadelphia_wage_tax", + "pa_philadelphia_wage_tax_resident", + TAXABLE_WAGES, +) + + +def _frame() -> Frame: + return us_frame( + households_on_blocks([name for name, _ in CASES]), + person_inputs=[ + [{"age": 40, "employment_income_before_lsr": wages}] for _, wages in CASES + ], + ) + + +def _without(frame: Frame, columns: tuple[str, ...]) -> Frame: + tables = {entity: frame.table(entity) for entity in frame.entities} + tables["person"] = tables["person"].drop(columns=list(columns)) + return Frame(tables, frame.schema, {"household": frame.weights_for("household")}) + + +@pytest.fixture(scope="module") +def block_line() -> Frame: + placed = with_household_us_geography_ladder(_frame(), block_ladder(), seed=0) + built, receipt = with_us_local_tax_inputs(placed) + assert receipt["inputs"][TAXABLE_WAGES]["residents"] == 2 + return built + + +@pytest.fixture(scope="module") +def engine() -> PolicyEngineUSEngine: + return PolicyEngineUSEngine() + + +@pytest.fixture(scope="module") +def resident_rate() -> float: + from policyengine_us import CountryTaxBenefitSystem + + parameters = CountryTaxBenefitSystem().parameters(PERIOD) + return float(parameters.gov.local.pa.philadelphia.tax.income.resident_rate) + + +def test_block_line_resident_owes_the_resident_rate_on_derived_wages( + engine, block_line, resident_rate +) -> None: + result = dict(engine.materialize(block_line, OUTPUTS, PERIOD)) + + assert result[TAXABLE_WAGES].tolist() == [WAGES, 0.0, 0.0] + tax = result["pa_philadelphia_wage_tax"] + assert resident_rate > 0 + assert tax[0] == pytest.approx(WAGES * resident_rate) + assert tax[0] > 0 + assert tax[1] == 0 + # No source gives where the neighbour works, so no nonresident tax. + assert tax[2] == 0 + + +def test_the_derived_wages_not_the_flag_alone_move_the_tax(engine, block_line) -> None: + flag_only = _without(block_line, (TAXABLE_WAGES,)) + result = dict(engine.materialize(flag_only, OUTPUTS, PERIOD)) + + assert np.asarray(result["pa_philadelphia_wage_tax_resident"]).tolist() == [ + True, + True, + False, + ] + assert np.all(np.asarray(result["pa_philadelphia_wage_tax"]) == 0) + + +def test_rederiving_an_existing_artifact_restores_the_tax( + engine, block_line, resident_rate +) -> None: + repaired, receipt = rederive_us_local_jurisdiction_flags( + _without(block_line, DERIVED) + ) + result = dict(engine.materialize(repaired, OUTPUTS, PERIOD)) + + assert receipt["carried_local_tax_inputs"] == [] + assert result["pa_philadelphia_wage_tax"][0] == pytest.approx(WAGES * resident_rate) + assert np.asarray(result["pa_philadelphia_wage_tax"])[1:].tolist() == [0.0, 0.0] diff --git a/packages/microcosm-build/tests/engine_workflow/us/test_us_multispine_pool_tool.py b/packages/microcosm-build/tests/engine_workflow/us/test_us_multispine_pool_tool.py index 58ea9b4bbc..8fa792d13b 100644 --- a/packages/microcosm-build/tests/engine_workflow/us/test_us_multispine_pool_tool.py +++ b/packages/microcosm-build/tests/engine_workflow/us/test_us_multispine_pool_tool.py @@ -350,7 +350,8 @@ def capture_equality(expected: object, actual: object) -> None: # microcosm#1251's passive partnership/S-corp leaf in puf_support moves it. # microcosm#1259's recipient-share bound in puf_support moves it again. # microcosm#1261's entity split of line 32 moves it too. - "spec_sha256": "9b4b3260c20c30ba71a0947f8d78e322c8d2a3e6cb94e87a3729be950a9e90f2", + # The local-tax derive operator (with_us_local_tax_inputs) moves it. + "spec_sha256": "c69a4313618e0099e9d4dbeb18af80e7a3aac797c0263bd0e4f16d87b442af0e", }, } diff --git a/packages/microcosm-graph/tests/fixtures/parity/us_post_transfer/us_post_transfer.json b/packages/microcosm-graph/tests/fixtures/parity/us_post_transfer/us_post_transfer.json index 3a063d64dc..dc22075a69 100644 --- a/packages/microcosm-graph/tests/fixtures/parity/us_post_transfer/us_post_transfer.json +++ b/packages/microcosm-graph/tests/fixtures/parity/us_post_transfer/us_post_transfer.json @@ -1 +1 @@ -{"country":"us","nodes":[{"base":null,"citation":"","description":"Load the synthetic stacked pool after ACS transfer.","id":"create_stacked_pool","inputs":[],"kernel":"us.post_transfer.create@1","mass":"conserve","outputs":[{"column":"A_AGE","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"A_SEX","dtype":"int64","entity":"person","ownership":"produced","rows":"all"},{"column":"source_year","dtype":"int64","entity":"person","ownership":"produced","rows":"all"},{"column":"measured","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"person_spine_source_id","dtype":"int64","entity":"person","ownership":"produced","rows":"all"},{"column":"person_source_id","dtype":"int64","entity":"person","ownership":"produced","rows":"all"},{"column":"person_support_channel","dtype":"string","entity":"person","ownership":"produced","rows":"all"},{"column":"person_support_clone_index","dtype":"int64","entity":"person","ownership":"produced","rows":"all"},{"column":"age","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"SEMP","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"long_term_capital_gains_before_response","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"non_sch_d_capital_gains","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"schedule_d_capital_gain_distributions","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"self_employment_income_before_lsr","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"non_qualified_dividend_income","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"estate_income_would_be_qualified","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"farm_operations_income_would_be_qualified","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"farm_rent_income_would_be_qualified","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"partnership_s_corp_income_would_be_qualified","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"rental_income_would_be_qualified","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"self_employment_income_would_be_qualified","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"sstb_self_employment_income_would_be_qualified","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"business_is_sstb","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"qualified_bdc_income","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"qualified_reit_and_ptp_income","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"sstb_self_employment_income_before_lsr","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"sstb_unadjusted_basis_qualified_property","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"sstb_w2_wages_from_qualified_business","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"unadjusted_basis_qualified_property","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"w2_wages_from_qualified_business","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"takes_up_medicaid_if_eligible","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"takes_up_chip_if_eligible","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"takes_up_basic_health_program_if_eligible","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"takes_up_medicare_if_eligible","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"takes_up_ssi_if_eligible","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"takes_up_head_start_if_eligible","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"takes_up_early_head_start_if_eligible","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"takes_up_wic_if_eligible","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"short_term_capital_gains","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"long_term_capital_gains_on_collectibles","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"TYPEHUGQ","dtype":"int64","entity":"household","ownership":"produced","rows":"all"},{"column":"household_spine_source_id","dtype":"int64","entity":"household","ownership":"produced","rows":"all"},{"column":"household_source_id","dtype":"int64","entity":"household","ownership":"produced","rows":"all"},{"column":"household_support_channel","dtype":"string","entity":"household","ownership":"produced","rows":"all"},{"column":"household_support_clone_index","dtype":"int64","entity":"household","ownership":"produced","rows":"all"},{"column":"tax_unit_spine_source_id","dtype":"int64","entity":"tax_unit","ownership":"produced","rows":"all"},{"column":"tax_unit_source_id","dtype":"int64","entity":"tax_unit","ownership":"produced","rows":"all"},{"column":"tax_unit_support_channel","dtype":"string","entity":"tax_unit","ownership":"produced","rows":"all"},{"column":"tax_unit_support_clone_index","dtype":"int64","entity":"tax_unit","ownership":"produced","rows":"all"},{"column":"takes_up_dc_ptc","dtype":"bool","entity":"tax_unit","ownership":"produced","rows":"all"},{"column":"takes_up_aca_if_eligible","dtype":"bool","entity":"tax_unit","ownership":"produced","rows":"all"},{"column":"takes_up_ca_premium_subsidy_if_eligible","dtype":"bool","entity":"tax_unit","ownership":"produced","rows":"all"},{"column":"takes_up_co_premium_assistance_if_eligible","dtype":"bool","entity":"tax_unit","ownership":"produced","rows":"all"},{"column":"takes_up_nm_premium_assistance_if_eligible","dtype":"bool","entity":"tax_unit","ownership":"produced","rows":"all"},{"column":"puf_capital_gains_tail_transfer_applied","dtype":"bool","entity":"tax_unit","ownership":"produced","rows":"all"},{"column":"puf_capital_gains_tail_donor_is_synthetic","dtype":"bool","entity":"tax_unit","ownership":"produced","rows":"all"},{"column":"puf_capital_gains_tail_donor_source_id","dtype":"int64","entity":"tax_unit","ownership":"produced","rows":"all"},{"column":"puf_capital_gains_tail_donor_filing_status_code","dtype":"int64","entity":"tax_unit","ownership":"produced","rows":"all"},{"column":"puf_capital_gains_tail_donor_agi_band_index","dtype":"int64","entity":"tax_unit","ownership":"produced","rows":"all"},{"column":"puf_capital_gains_tail_transfer_weight","dtype":"float64","entity":"tax_unit","ownership":"produced","rows":"all"},{"column":"unrecaptured_section_1250_gain","dtype":"float64","entity":"tax_unit","ownership":"produced","rows":"all"},{"column":"spm_unit_spine_source_id","dtype":"int64","entity":"spm_unit","ownership":"produced","rows":"all"},{"column":"spm_unit_source_id","dtype":"int64","entity":"spm_unit","ownership":"produced","rows":"all"},{"column":"spm_unit_support_channel","dtype":"string","entity":"spm_unit","ownership":"produced","rows":"all"},{"column":"spm_unit_support_clone_index","dtype":"int64","entity":"spm_unit","ownership":"produced","rows":"all"},{"column":"takes_up_snap_if_eligible","dtype":"bool","entity":"spm_unit","ownership":"produced","rows":"all"},{"column":"takes_up_tanf_if_eligible","dtype":"bool","entity":"spm_unit","ownership":"produced","rows":"all"},{"column":"takes_up_housing_assistance_if_eligible","dtype":"bool","entity":"spm_unit","ownership":"produced","rows":"all"},{"column":"family_spine_source_id","dtype":"int64","entity":"family","ownership":"produced","rows":"all"},{"column":"family_source_id","dtype":"int64","entity":"family","ownership":"produced","rows":"all"},{"column":"family_support_channel","dtype":"string","entity":"family","ownership":"produced","rows":"all"},{"column":"family_support_clone_index","dtype":"int64","entity":"family","ownership":"produced","rows":"all"},{"column":"marital_unit_spine_source_id","dtype":"int64","entity":"marital_unit","ownership":"produced","rows":"all"},{"column":"marital_unit_source_id","dtype":"int64","entity":"marital_unit","ownership":"produced","rows":"all"},{"column":"marital_unit_support_channel","dtype":"string","entity":"marital_unit","ownership":"produced","rows":"all"},{"column":"marital_unit_support_clone_index","dtype":"int64","entity":"marital_unit","ownership":"produced","rows":"all"}],"params":{"context_schema_version":1},"population":null,"sources":["stacked"],"structural":"create","weights":null},{"base":"create_stacked_pool","citation":"","description":"Open a population version for prepare_stacked_tail_derivation rewrites.","id":"prepare_stacked_tail_derivation.boundary","inputs":[{"columns":["A_AGE","A_SEX","source_year","measured","person_spine_source_id","person_source_id","person_support_channel","person_support_clone_index","age","SEMP","long_term_capital_gains_before_response","non_sch_d_capital_gains","schedule_d_capital_gain_distributions","self_employment_income_before_lsr","non_qualified_dividend_income","estate_income_would_be_qualified","farm_operations_income_would_be_qualified","farm_rent_income_would_be_qualified","partnership_s_corp_income_would_be_qualified","rental_income_would_be_qualified","self_employment_income_would_be_qualified","sstb_self_employment_income_would_be_qualified","business_is_sstb","qualified_bdc_income","qualified_reit_and_ptp_income","sstb_self_employment_income_before_lsr","sstb_unadjusted_basis_qualified_property","sstb_w2_wages_from_qualified_business","unadjusted_basis_qualified_property","w2_wages_from_qualified_business","takes_up_medicaid_if_eligible","takes_up_chip_if_eligible","takes_up_basic_health_program_if_eligible","takes_up_medicare_if_eligible","takes_up_ssi_if_eligible","takes_up_head_start_if_eligible","takes_up_early_head_start_if_eligible","takes_up_wic_if_eligible","short_term_capital_gains","long_term_capital_gains_on_collectibles"],"entity":"person","rows":"all"},{"columns":["TYPEHUGQ","household_spine_source_id","household_source_id","household_support_channel","household_support_clone_index"],"entity":"household","rows":"all"},{"columns":["tax_unit_spine_source_id","tax_unit_source_id","tax_unit_support_channel","tax_unit_support_clone_index","takes_up_dc_ptc","takes_up_aca_if_eligible","takes_up_ca_premium_subsidy_if_eligible","takes_up_co_premium_assistance_if_eligible","takes_up_nm_premium_assistance_if_eligible","puf_capital_gains_tail_transfer_applied","puf_capital_gains_tail_donor_is_synthetic","puf_capital_gains_tail_donor_source_id","puf_capital_gains_tail_donor_filing_status_code","puf_capital_gains_tail_donor_agi_band_index","puf_capital_gains_tail_transfer_weight","unrecaptured_section_1250_gain"],"entity":"tax_unit","rows":"all"},{"columns":["spm_unit_spine_source_id","spm_unit_source_id","spm_unit_support_channel","spm_unit_support_clone_index","takes_up_snap_if_eligible","takes_up_tanf_if_eligible","takes_up_housing_assistance_if_eligible"],"entity":"spm_unit","rows":"all"},{"columns":["family_spine_source_id","family_source_id","family_support_channel","family_support_clone_index"],"entity":"family","rows":"all"},{"columns":["marital_unit_spine_source_id","marital_unit_source_id","marital_unit_support_channel","marital_unit_support_clone_index"],"entity":"marital_unit","rows":"all"}],"kernel":"us.post_transfer.identity@1","mass":"conserve","outputs":[],"params":{},"population":null,"sources":[],"structural":"filter","weights":null},{"base":null,"citation":"","description":"Clear clone-2 Schedule-D incumbents before derivation.","id":"prepare_stacked_tail_derivation","inputs":[{"columns":["A_AGE","A_SEX","source_year","measured","person_spine_source_id","person_source_id","person_support_channel","person_support_clone_index","age","SEMP","long_term_capital_gains_before_response","non_sch_d_capital_gains","self_employment_income_before_lsr","non_qualified_dividend_income","estate_income_would_be_qualified","farm_operations_income_would_be_qualified","farm_rent_income_would_be_qualified","partnership_s_corp_income_would_be_qualified","rental_income_would_be_qualified","self_employment_income_would_be_qualified","sstb_self_employment_income_would_be_qualified","business_is_sstb","qualified_bdc_income","qualified_reit_and_ptp_income","sstb_self_employment_income_before_lsr","sstb_unadjusted_basis_qualified_property","sstb_w2_wages_from_qualified_business","unadjusted_basis_qualified_property","w2_wages_from_qualified_business","takes_up_medicaid_if_eligible","takes_up_chip_if_eligible","takes_up_basic_health_program_if_eligible","takes_up_medicare_if_eligible","takes_up_ssi_if_eligible","takes_up_head_start_if_eligible","takes_up_early_head_start_if_eligible","takes_up_wic_if_eligible","short_term_capital_gains","long_term_capital_gains_on_collectibles"],"entity":"person","rows":"all"},{"columns":["TYPEHUGQ","household_spine_source_id","household_source_id","household_support_channel","household_support_clone_index"],"entity":"household","rows":"all"},{"columns":["tax_unit_spine_source_id","tax_unit_source_id","tax_unit_support_channel","tax_unit_support_clone_index","takes_up_dc_ptc","takes_up_aca_if_eligible","takes_up_ca_premium_subsidy_if_eligible","takes_up_co_premium_assistance_if_eligible","takes_up_nm_premium_assistance_if_eligible","puf_capital_gains_tail_transfer_applied","puf_capital_gains_tail_donor_is_synthetic","puf_capital_gains_tail_donor_source_id","puf_capital_gains_tail_donor_filing_status_code","puf_capital_gains_tail_donor_agi_band_index","puf_capital_gains_tail_transfer_weight","unrecaptured_section_1250_gain"],"entity":"tax_unit","rows":"all"},{"columns":["spm_unit_spine_source_id","spm_unit_source_id","spm_unit_support_channel","spm_unit_support_clone_index","takes_up_snap_if_eligible","takes_up_tanf_if_eligible","takes_up_housing_assistance_if_eligible"],"entity":"spm_unit","rows":"all"},{"columns":["family_spine_source_id","family_source_id","family_support_channel","family_support_clone_index"],"entity":"family","rows":"all"},{"columns":["marital_unit_spine_source_id","marital_unit_source_id","marital_unit_support_channel","marital_unit_support_clone_index"],"entity":"marital_unit","rows":"all"}],"kernel":"us.post_transfer.prepare@1","mass":"conserve","outputs":[{"column":"schedule_d_capital_gain_distributions","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"}],"params":{"stage":"prepare_stacked_tail_derivation"},"population":"prepare_stacked_tail_derivation.boundary","sources":["stacked"],"structural":"none","weights":null},{"base":"prepare_stacked_tail_derivation.boundary","citation":"","description":"Open a population version for derive_multispine_pool_inputs rewrites.","id":"derive_multispine_pool_inputs.boundary","inputs":[{"columns":["A_AGE","A_SEX","source_year","measured","person_spine_source_id","person_source_id","person_support_channel","person_support_clone_index","age","SEMP","long_term_capital_gains_before_response","non_sch_d_capital_gains","schedule_d_capital_gain_distributions","self_employment_income_before_lsr","non_qualified_dividend_income","estate_income_would_be_qualified","farm_operations_income_would_be_qualified","farm_rent_income_would_be_qualified","partnership_s_corp_income_would_be_qualified","rental_income_would_be_qualified","self_employment_income_would_be_qualified","sstb_self_employment_income_would_be_qualified","business_is_sstb","qualified_bdc_income","qualified_reit_and_ptp_income","sstb_self_employment_income_before_lsr","sstb_unadjusted_basis_qualified_property","sstb_w2_wages_from_qualified_business","unadjusted_basis_qualified_property","w2_wages_from_qualified_business","takes_up_medicaid_if_eligible","takes_up_chip_if_eligible","takes_up_basic_health_program_if_eligible","takes_up_medicare_if_eligible","takes_up_ssi_if_eligible","takes_up_head_start_if_eligible","takes_up_early_head_start_if_eligible","takes_up_wic_if_eligible","short_term_capital_gains","long_term_capital_gains_on_collectibles"],"entity":"person","rows":"all"},{"columns":["TYPEHUGQ","household_spine_source_id","household_source_id","household_support_channel","household_support_clone_index"],"entity":"household","rows":"all"},{"columns":["tax_unit_spine_source_id","tax_unit_source_id","tax_unit_support_channel","tax_unit_support_clone_index","takes_up_dc_ptc","takes_up_aca_if_eligible","takes_up_ca_premium_subsidy_if_eligible","takes_up_co_premium_assistance_if_eligible","takes_up_nm_premium_assistance_if_eligible","puf_capital_gains_tail_transfer_applied","puf_capital_gains_tail_donor_is_synthetic","puf_capital_gains_tail_donor_source_id","puf_capital_gains_tail_donor_filing_status_code","puf_capital_gains_tail_donor_agi_band_index","puf_capital_gains_tail_transfer_weight","unrecaptured_section_1250_gain"],"entity":"tax_unit","rows":"all"},{"columns":["spm_unit_spine_source_id","spm_unit_source_id","spm_unit_support_channel","spm_unit_support_clone_index","takes_up_snap_if_eligible","takes_up_tanf_if_eligible","takes_up_housing_assistance_if_eligible"],"entity":"spm_unit","rows":"all"},{"columns":["family_spine_source_id","family_source_id","family_support_channel","family_support_clone_index"],"entity":"family","rows":"all"},{"columns":["marital_unit_spine_source_id","marital_unit_source_id","marital_unit_support_channel","marital_unit_support_clone_index"],"entity":"marital_unit","rows":"all"}],"kernel":"us.post_transfer.identity@1","mass":"conserve","outputs":[],"params":{},"population":null,"sources":[],"structural":"filter","weights":null},{"base":null,"citation":"","description":"Derive Schedule-D and reconcile the QBI input family.","id":"derive_multispine_pool_inputs","inputs":[{"columns":["A_AGE","A_SEX","source_year","measured","person_spine_source_id","person_source_id","person_support_channel","person_support_clone_index","age","SEMP","long_term_capital_gains_before_response","non_sch_d_capital_gains","non_qualified_dividend_income","takes_up_medicaid_if_eligible","takes_up_chip_if_eligible","takes_up_basic_health_program_if_eligible","takes_up_medicare_if_eligible","takes_up_ssi_if_eligible","takes_up_head_start_if_eligible","takes_up_early_head_start_if_eligible","takes_up_wic_if_eligible","short_term_capital_gains","long_term_capital_gains_on_collectibles"],"entity":"person","rows":"all"},{"columns":["TYPEHUGQ","household_spine_source_id","household_source_id","household_support_channel","household_support_clone_index"],"entity":"household","rows":"all"},{"columns":["tax_unit_spine_source_id","tax_unit_source_id","tax_unit_support_channel","tax_unit_support_clone_index","takes_up_dc_ptc","takes_up_aca_if_eligible","takes_up_ca_premium_subsidy_if_eligible","takes_up_co_premium_assistance_if_eligible","takes_up_nm_premium_assistance_if_eligible","puf_capital_gains_tail_transfer_applied","puf_capital_gains_tail_donor_is_synthetic","puf_capital_gains_tail_donor_source_id","puf_capital_gains_tail_donor_filing_status_code","puf_capital_gains_tail_donor_agi_band_index","puf_capital_gains_tail_transfer_weight","unrecaptured_section_1250_gain"],"entity":"tax_unit","rows":"all"},{"columns":["spm_unit_spine_source_id","spm_unit_source_id","spm_unit_support_channel","spm_unit_support_clone_index","takes_up_snap_if_eligible","takes_up_tanf_if_eligible","takes_up_housing_assistance_if_eligible"],"entity":"spm_unit","rows":"all"},{"columns":["family_spine_source_id","family_source_id","family_support_channel","family_support_clone_index"],"entity":"family","rows":"all"},{"columns":["marital_unit_spine_source_id","marital_unit_source_id","marital_unit_support_channel","marital_unit_support_clone_index"],"entity":"marital_unit","rows":"all"}],"kernel":"us.post_transfer.derive@1","mass":"conserve","outputs":[{"column":"schedule_d_capital_gain_distributions","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"estate_income_would_be_qualified","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"farm_operations_income_would_be_qualified","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"farm_rent_income_would_be_qualified","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"partnership_s_corp_income_would_be_qualified","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"rental_income_would_be_qualified","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"self_employment_income_would_be_qualified","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"sstb_self_employment_income_would_be_qualified","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"business_is_sstb","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"qualified_bdc_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"qualified_reit_and_ptp_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"sstb_self_employment_income_before_lsr","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"sstb_unadjusted_basis_qualified_property","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"sstb_w2_wages_from_qualified_business","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"unadjusted_basis_qualified_property","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"w2_wages_from_qualified_business","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"self_employment_income_before_lsr","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"}],"params":{"qbi_contract_version":2,"remaining_stage_manifest_sha256":"d4fb9de9c0b8081474a24d0abde84ebf05eb346483fc20e3852e29abc769a501","schedule_d_asset_sha256":"e7d31a5956dc420940002b5c5120b4fa7f6af6fa8bf071d488affe35b616611d","stage":"derive_multispine_pool_inputs"},"population":"derive_multispine_pool_inputs.boundary","sources":["stacked"],"structural":"none","weights":null},{"base":"derive_multispine_pool_inputs.boundary","citation":"","description":"Open a population version for seed_multispine_pool_inputs rewrites.","id":"seed_multispine_pool_inputs.boundary","inputs":[{"columns":["A_AGE","A_SEX","source_year","measured","person_spine_source_id","person_source_id","person_support_channel","person_support_clone_index","age","SEMP","long_term_capital_gains_before_response","non_sch_d_capital_gains","schedule_d_capital_gain_distributions","self_employment_income_before_lsr","non_qualified_dividend_income","estate_income_would_be_qualified","farm_operations_income_would_be_qualified","farm_rent_income_would_be_qualified","partnership_s_corp_income_would_be_qualified","rental_income_would_be_qualified","self_employment_income_would_be_qualified","sstb_self_employment_income_would_be_qualified","business_is_sstb","qualified_bdc_income","qualified_reit_and_ptp_income","sstb_self_employment_income_before_lsr","sstb_unadjusted_basis_qualified_property","sstb_w2_wages_from_qualified_business","unadjusted_basis_qualified_property","w2_wages_from_qualified_business","takes_up_medicaid_if_eligible","takes_up_chip_if_eligible","takes_up_basic_health_program_if_eligible","takes_up_medicare_if_eligible","takes_up_ssi_if_eligible","takes_up_head_start_if_eligible","takes_up_early_head_start_if_eligible","takes_up_wic_if_eligible","short_term_capital_gains","long_term_capital_gains_on_collectibles"],"entity":"person","rows":"all"},{"columns":["TYPEHUGQ","household_spine_source_id","household_source_id","household_support_channel","household_support_clone_index"],"entity":"household","rows":"all"},{"columns":["tax_unit_spine_source_id","tax_unit_source_id","tax_unit_support_channel","tax_unit_support_clone_index","takes_up_dc_ptc","takes_up_aca_if_eligible","takes_up_ca_premium_subsidy_if_eligible","takes_up_co_premium_assistance_if_eligible","takes_up_nm_premium_assistance_if_eligible","puf_capital_gains_tail_transfer_applied","puf_capital_gains_tail_donor_is_synthetic","puf_capital_gains_tail_donor_source_id","puf_capital_gains_tail_donor_filing_status_code","puf_capital_gains_tail_donor_agi_band_index","puf_capital_gains_tail_transfer_weight","unrecaptured_section_1250_gain"],"entity":"tax_unit","rows":"all"},{"columns":["spm_unit_spine_source_id","spm_unit_source_id","spm_unit_support_channel","spm_unit_support_clone_index","takes_up_snap_if_eligible","takes_up_tanf_if_eligible","takes_up_housing_assistance_if_eligible"],"entity":"spm_unit","rows":"all"},{"columns":["family_spine_source_id","family_source_id","family_support_channel","family_support_clone_index"],"entity":"family","rows":"all"},{"columns":["marital_unit_spine_source_id","marital_unit_source_id","marital_unit_support_channel","marital_unit_support_clone_index"],"entity":"marital_unit","rows":"all"}],"kernel":"us.post_transfer.identity@1","mass":"conserve","outputs":[],"params":{},"population":null,"sources":[],"structural":"filter","weights":null},{"base":null,"citation":"","description":"Seed take-up inputs and disclose remaining defaults.","id":"seed_multispine_pool_inputs","inputs":[{"columns":["A_AGE","A_SEX","source_year","measured","person_spine_source_id","person_source_id","person_support_channel","person_support_clone_index","age","SEMP","long_term_capital_gains_before_response","non_sch_d_capital_gains","schedule_d_capital_gain_distributions","self_employment_income_before_lsr","non_qualified_dividend_income","estate_income_would_be_qualified","farm_operations_income_would_be_qualified","farm_rent_income_would_be_qualified","partnership_s_corp_income_would_be_qualified","rental_income_would_be_qualified","self_employment_income_would_be_qualified","sstb_self_employment_income_would_be_qualified","business_is_sstb","qualified_bdc_income","qualified_reit_and_ptp_income","sstb_self_employment_income_before_lsr","sstb_unadjusted_basis_qualified_property","sstb_w2_wages_from_qualified_business","unadjusted_basis_qualified_property","w2_wages_from_qualified_business","short_term_capital_gains","long_term_capital_gains_on_collectibles"],"entity":"person","rows":"all"},{"columns":["TYPEHUGQ","household_spine_source_id","household_source_id","household_support_channel","household_support_clone_index"],"entity":"household","rows":"all"},{"columns":["tax_unit_spine_source_id","tax_unit_source_id","tax_unit_support_channel","tax_unit_support_clone_index","puf_capital_gains_tail_transfer_applied","puf_capital_gains_tail_donor_is_synthetic","puf_capital_gains_tail_donor_source_id","puf_capital_gains_tail_donor_filing_status_code","puf_capital_gains_tail_donor_agi_band_index","puf_capital_gains_tail_transfer_weight","unrecaptured_section_1250_gain"],"entity":"tax_unit","rows":"all"},{"columns":["spm_unit_spine_source_id","spm_unit_source_id","spm_unit_support_channel","spm_unit_support_clone_index"],"entity":"spm_unit","rows":"all"},{"columns":["family_spine_source_id","family_source_id","family_support_channel","family_support_clone_index"],"entity":"family","rows":"all"},{"columns":["marital_unit_spine_source_id","marital_unit_source_id","marital_unit_support_channel","marital_unit_support_clone_index"],"entity":"marital_unit","rows":"all"}],"kernel":"us.post_transfer.seed@1","mass":"conserve","outputs":[{"column":"takes_up_snap_if_eligible","dtype":"bool","entity":"spm_unit","ownership":"produced","rewrite":true,"rows":"all"},{"column":"takes_up_tanf_if_eligible","dtype":"bool","entity":"spm_unit","ownership":"produced","rewrite":true,"rows":"all"},{"column":"takes_up_eitc","dtype":"bool","entity":"tax_unit","ownership":"produced","rows":"all"},{"column":"takes_up_medicaid_if_eligible","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"takes_up_chip_if_eligible","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"takes_up_basic_health_program_if_eligible","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"takes_up_medicare_if_eligible","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"takes_up_ssi_if_eligible","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"takes_up_dc_ptc","dtype":"bool","entity":"tax_unit","ownership":"produced","rewrite":true,"rows":"all"},{"column":"takes_up_head_start_if_eligible","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"takes_up_early_head_start_if_eligible","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"takes_up_housing_assistance_if_eligible","dtype":"bool","entity":"spm_unit","ownership":"produced","rewrite":true,"rows":"all"},{"column":"takes_up_wic_if_eligible","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"takes_up_aca_if_eligible","dtype":"bool","entity":"tax_unit","ownership":"produced","rewrite":true,"rows":"all"},{"column":"takes_up_ca_premium_subsidy_if_eligible","dtype":"bool","entity":"tax_unit","ownership":"produced","rewrite":true,"rows":"all"},{"column":"takes_up_co_premium_assistance_if_eligible","dtype":"bool","entity":"tax_unit","ownership":"produced","rewrite":true,"rows":"all"},{"column":"takes_up_nm_premium_assistance_if_eligible","dtype":"bool","entity":"tax_unit","ownership":"produced","rewrite":true,"rows":"all"}],"params":{"engine_ref":"policyengine-us","seed":0,"stage":"seed_multispine_pool_inputs","take_up_contract_version":1,"take_up_resource_sha256":"9522ce40f7dea569312dd7a7beb474e5a5afadd2f1e10cb5876534c3ef623d35","time_period":2024},"population":"seed_multispine_pool_inputs.boundary","sources":["stacked"],"structural":"none","weights":null},{"base":null,"citation":"","description":"Materialize SSI on the disposable agreement view.","id":"materialize_multispine_agreement_outputs","inputs":[{"columns":["A_AGE","A_SEX","source_year","measured","person_spine_source_id","person_source_id","person_support_channel","person_support_clone_index","age","SEMP","long_term_capital_gains_before_response","non_sch_d_capital_gains","schedule_d_capital_gain_distributions","self_employment_income_before_lsr","non_qualified_dividend_income","estate_income_would_be_qualified","farm_operations_income_would_be_qualified","farm_rent_income_would_be_qualified","partnership_s_corp_income_would_be_qualified","rental_income_would_be_qualified","self_employment_income_would_be_qualified","sstb_self_employment_income_would_be_qualified","business_is_sstb","qualified_bdc_income","qualified_reit_and_ptp_income","sstb_self_employment_income_before_lsr","sstb_unadjusted_basis_qualified_property","sstb_w2_wages_from_qualified_business","unadjusted_basis_qualified_property","w2_wages_from_qualified_business","takes_up_medicaid_if_eligible","takes_up_chip_if_eligible","takes_up_basic_health_program_if_eligible","takes_up_medicare_if_eligible","takes_up_ssi_if_eligible","takes_up_head_start_if_eligible","takes_up_early_head_start_if_eligible","takes_up_wic_if_eligible","short_term_capital_gains","long_term_capital_gains_on_collectibles"],"entity":"person","rows":"all"},{"columns":["TYPEHUGQ","household_spine_source_id","household_source_id","household_support_channel","household_support_clone_index"],"entity":"household","rows":"all"},{"columns":["tax_unit_spine_source_id","tax_unit_source_id","tax_unit_support_channel","tax_unit_support_clone_index","takes_up_dc_ptc","takes_up_aca_if_eligible","takes_up_ca_premium_subsidy_if_eligible","takes_up_co_premium_assistance_if_eligible","takes_up_nm_premium_assistance_if_eligible","puf_capital_gains_tail_transfer_applied","puf_capital_gains_tail_donor_is_synthetic","puf_capital_gains_tail_donor_source_id","puf_capital_gains_tail_donor_filing_status_code","puf_capital_gains_tail_donor_agi_band_index","puf_capital_gains_tail_transfer_weight","unrecaptured_section_1250_gain","takes_up_eitc"],"entity":"tax_unit","rows":"all"},{"columns":["spm_unit_spine_source_id","spm_unit_source_id","spm_unit_support_channel","spm_unit_support_clone_index","takes_up_snap_if_eligible","takes_up_tanf_if_eligible","takes_up_housing_assistance_if_eligible"],"entity":"spm_unit","rows":"all"},{"columns":["family_spine_source_id","family_source_id","family_support_channel","family_support_clone_index"],"entity":"family","rows":"all"},{"columns":["marital_unit_spine_source_id","marital_unit_source_id","marital_unit_support_channel","marital_unit_support_clone_index"],"entity":"marital_unit","rows":"all"}],"kernel":"us.post_transfer.materialize@1","mass":"conserve","outputs":[{"column":"ssi","dtype":"float64","entity":"person","ownership":"produced","rows":"all"}],"params":{"engine_input_defaults_sha256":"f938af6506623f453ca55922cf4a8ba6443d5f780f85e4381b777083a90396a0","engine_input_projection_sha256":"cefb137f164c6629589a887bbb56831ebc463cd46909a72ead4dbe0557961e61","engine_ref":"policyengine-us","household_batch_size":5000,"ssi_dependency_sha256":"200ca39e784511e9ede685261f5e0840198ec2b9c4292a522c0fc504c535b31c","stage":"materialize_multispine_agreement_outputs","time_period":2024},"population":"seed_multispine_pool_inputs.boundary","sources":["stacked"],"structural":"none","weights":null}],"sources":[{"codec":"csv-tables","description":"Synthetic stacked US pool at the completed ACS-transfer boundary.","name":"stacked"}]} +{"country":"us","nodes":[{"base":null,"citation":"","description":"Load the synthetic stacked pool after ACS transfer.","id":"create_stacked_pool","inputs":[],"kernel":"us.post_transfer.create@1","mass":"conserve","outputs":[{"column":"A_AGE","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"A_SEX","dtype":"int64","entity":"person","ownership":"produced","rows":"all"},{"column":"source_year","dtype":"int64","entity":"person","ownership":"produced","rows":"all"},{"column":"measured","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"person_spine_source_id","dtype":"int64","entity":"person","ownership":"produced","rows":"all"},{"column":"person_source_id","dtype":"int64","entity":"person","ownership":"produced","rows":"all"},{"column":"person_support_channel","dtype":"string","entity":"person","ownership":"produced","rows":"all"},{"column":"person_support_clone_index","dtype":"int64","entity":"person","ownership":"produced","rows":"all"},{"column":"age","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"SEMP","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"long_term_capital_gains_before_response","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"non_sch_d_capital_gains","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"schedule_d_capital_gain_distributions","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"self_employment_income_before_lsr","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"non_qualified_dividend_income","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"estate_income_would_be_qualified","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"farm_operations_income_would_be_qualified","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"farm_rent_income_would_be_qualified","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"partnership_s_corp_income_would_be_qualified","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"rental_income_would_be_qualified","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"self_employment_income_would_be_qualified","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"sstb_self_employment_income_would_be_qualified","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"business_is_sstb","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"qualified_bdc_income","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"qualified_reit_and_ptp_income","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"sstb_self_employment_income_before_lsr","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"sstb_unadjusted_basis_qualified_property","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"sstb_w2_wages_from_qualified_business","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"unadjusted_basis_qualified_property","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"w2_wages_from_qualified_business","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"takes_up_medicaid_if_eligible","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"takes_up_chip_if_eligible","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"takes_up_basic_health_program_if_eligible","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"takes_up_medicare_if_eligible","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"takes_up_ssi_if_eligible","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"takes_up_head_start_if_eligible","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"takes_up_early_head_start_if_eligible","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"takes_up_wic_if_eligible","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"short_term_capital_gains","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"long_term_capital_gains_on_collectibles","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"TYPEHUGQ","dtype":"int64","entity":"household","ownership":"produced","rows":"all"},{"column":"household_spine_source_id","dtype":"int64","entity":"household","ownership":"produced","rows":"all"},{"column":"household_source_id","dtype":"int64","entity":"household","ownership":"produced","rows":"all"},{"column":"household_support_channel","dtype":"string","entity":"household","ownership":"produced","rows":"all"},{"column":"household_support_clone_index","dtype":"int64","entity":"household","ownership":"produced","rows":"all"},{"column":"tax_unit_spine_source_id","dtype":"int64","entity":"tax_unit","ownership":"produced","rows":"all"},{"column":"tax_unit_source_id","dtype":"int64","entity":"tax_unit","ownership":"produced","rows":"all"},{"column":"tax_unit_support_channel","dtype":"string","entity":"tax_unit","ownership":"produced","rows":"all"},{"column":"tax_unit_support_clone_index","dtype":"int64","entity":"tax_unit","ownership":"produced","rows":"all"},{"column":"takes_up_dc_ptc","dtype":"bool","entity":"tax_unit","ownership":"produced","rows":"all"},{"column":"takes_up_aca_if_eligible","dtype":"bool","entity":"tax_unit","ownership":"produced","rows":"all"},{"column":"takes_up_ca_premium_subsidy_if_eligible","dtype":"bool","entity":"tax_unit","ownership":"produced","rows":"all"},{"column":"takes_up_co_premium_assistance_if_eligible","dtype":"bool","entity":"tax_unit","ownership":"produced","rows":"all"},{"column":"takes_up_nm_premium_assistance_if_eligible","dtype":"bool","entity":"tax_unit","ownership":"produced","rows":"all"},{"column":"puf_capital_gains_tail_transfer_applied","dtype":"bool","entity":"tax_unit","ownership":"produced","rows":"all"},{"column":"puf_capital_gains_tail_donor_is_synthetic","dtype":"bool","entity":"tax_unit","ownership":"produced","rows":"all"},{"column":"puf_capital_gains_tail_donor_source_id","dtype":"int64","entity":"tax_unit","ownership":"produced","rows":"all"},{"column":"puf_capital_gains_tail_donor_filing_status_code","dtype":"int64","entity":"tax_unit","ownership":"produced","rows":"all"},{"column":"puf_capital_gains_tail_donor_agi_band_index","dtype":"int64","entity":"tax_unit","ownership":"produced","rows":"all"},{"column":"puf_capital_gains_tail_transfer_weight","dtype":"float64","entity":"tax_unit","ownership":"produced","rows":"all"},{"column":"unrecaptured_section_1250_gain","dtype":"float64","entity":"tax_unit","ownership":"produced","rows":"all"},{"column":"spm_unit_spine_source_id","dtype":"int64","entity":"spm_unit","ownership":"produced","rows":"all"},{"column":"spm_unit_source_id","dtype":"int64","entity":"spm_unit","ownership":"produced","rows":"all"},{"column":"spm_unit_support_channel","dtype":"string","entity":"spm_unit","ownership":"produced","rows":"all"},{"column":"spm_unit_support_clone_index","dtype":"int64","entity":"spm_unit","ownership":"produced","rows":"all"},{"column":"takes_up_snap_if_eligible","dtype":"bool","entity":"spm_unit","ownership":"produced","rows":"all"},{"column":"takes_up_tanf_if_eligible","dtype":"bool","entity":"spm_unit","ownership":"produced","rows":"all"},{"column":"takes_up_housing_assistance_if_eligible","dtype":"bool","entity":"spm_unit","ownership":"produced","rows":"all"},{"column":"family_spine_source_id","dtype":"int64","entity":"family","ownership":"produced","rows":"all"},{"column":"family_source_id","dtype":"int64","entity":"family","ownership":"produced","rows":"all"},{"column":"family_support_channel","dtype":"string","entity":"family","ownership":"produced","rows":"all"},{"column":"family_support_clone_index","dtype":"int64","entity":"family","ownership":"produced","rows":"all"},{"column":"marital_unit_spine_source_id","dtype":"int64","entity":"marital_unit","ownership":"produced","rows":"all"},{"column":"marital_unit_source_id","dtype":"int64","entity":"marital_unit","ownership":"produced","rows":"all"},{"column":"marital_unit_support_channel","dtype":"string","entity":"marital_unit","ownership":"produced","rows":"all"},{"column":"marital_unit_support_clone_index","dtype":"int64","entity":"marital_unit","ownership":"produced","rows":"all"}],"params":{"context_schema_version":1},"population":null,"sources":["stacked"],"structural":"create","weights":null},{"base":"create_stacked_pool","citation":"","description":"Open a population version for prepare_stacked_tail_derivation rewrites.","id":"prepare_stacked_tail_derivation.boundary","inputs":[{"columns":["A_AGE","A_SEX","source_year","measured","person_spine_source_id","person_source_id","person_support_channel","person_support_clone_index","age","SEMP","long_term_capital_gains_before_response","non_sch_d_capital_gains","schedule_d_capital_gain_distributions","self_employment_income_before_lsr","non_qualified_dividend_income","estate_income_would_be_qualified","farm_operations_income_would_be_qualified","farm_rent_income_would_be_qualified","partnership_s_corp_income_would_be_qualified","rental_income_would_be_qualified","self_employment_income_would_be_qualified","sstb_self_employment_income_would_be_qualified","business_is_sstb","qualified_bdc_income","qualified_reit_and_ptp_income","sstb_self_employment_income_before_lsr","sstb_unadjusted_basis_qualified_property","sstb_w2_wages_from_qualified_business","unadjusted_basis_qualified_property","w2_wages_from_qualified_business","takes_up_medicaid_if_eligible","takes_up_chip_if_eligible","takes_up_basic_health_program_if_eligible","takes_up_medicare_if_eligible","takes_up_ssi_if_eligible","takes_up_head_start_if_eligible","takes_up_early_head_start_if_eligible","takes_up_wic_if_eligible","short_term_capital_gains","long_term_capital_gains_on_collectibles"],"entity":"person","rows":"all"},{"columns":["TYPEHUGQ","household_spine_source_id","household_source_id","household_support_channel","household_support_clone_index"],"entity":"household","rows":"all"},{"columns":["tax_unit_spine_source_id","tax_unit_source_id","tax_unit_support_channel","tax_unit_support_clone_index","takes_up_dc_ptc","takes_up_aca_if_eligible","takes_up_ca_premium_subsidy_if_eligible","takes_up_co_premium_assistance_if_eligible","takes_up_nm_premium_assistance_if_eligible","puf_capital_gains_tail_transfer_applied","puf_capital_gains_tail_donor_is_synthetic","puf_capital_gains_tail_donor_source_id","puf_capital_gains_tail_donor_filing_status_code","puf_capital_gains_tail_donor_agi_band_index","puf_capital_gains_tail_transfer_weight","unrecaptured_section_1250_gain"],"entity":"tax_unit","rows":"all"},{"columns":["spm_unit_spine_source_id","spm_unit_source_id","spm_unit_support_channel","spm_unit_support_clone_index","takes_up_snap_if_eligible","takes_up_tanf_if_eligible","takes_up_housing_assistance_if_eligible"],"entity":"spm_unit","rows":"all"},{"columns":["family_spine_source_id","family_source_id","family_support_channel","family_support_clone_index"],"entity":"family","rows":"all"},{"columns":["marital_unit_spine_source_id","marital_unit_source_id","marital_unit_support_channel","marital_unit_support_clone_index"],"entity":"marital_unit","rows":"all"}],"kernel":"us.post_transfer.identity@1","mass":"conserve","outputs":[],"params":{},"population":null,"sources":[],"structural":"filter","weights":null},{"base":null,"citation":"","description":"Clear clone-2 Schedule-D incumbents before derivation.","id":"prepare_stacked_tail_derivation","inputs":[{"columns":["A_AGE","A_SEX","source_year","measured","person_spine_source_id","person_source_id","person_support_channel","person_support_clone_index","age","SEMP","long_term_capital_gains_before_response","non_sch_d_capital_gains","self_employment_income_before_lsr","non_qualified_dividend_income","estate_income_would_be_qualified","farm_operations_income_would_be_qualified","farm_rent_income_would_be_qualified","partnership_s_corp_income_would_be_qualified","rental_income_would_be_qualified","self_employment_income_would_be_qualified","sstb_self_employment_income_would_be_qualified","business_is_sstb","qualified_bdc_income","qualified_reit_and_ptp_income","sstb_self_employment_income_before_lsr","sstb_unadjusted_basis_qualified_property","sstb_w2_wages_from_qualified_business","unadjusted_basis_qualified_property","w2_wages_from_qualified_business","takes_up_medicaid_if_eligible","takes_up_chip_if_eligible","takes_up_basic_health_program_if_eligible","takes_up_medicare_if_eligible","takes_up_ssi_if_eligible","takes_up_head_start_if_eligible","takes_up_early_head_start_if_eligible","takes_up_wic_if_eligible","short_term_capital_gains","long_term_capital_gains_on_collectibles"],"entity":"person","rows":"all"},{"columns":["TYPEHUGQ","household_spine_source_id","household_source_id","household_support_channel","household_support_clone_index"],"entity":"household","rows":"all"},{"columns":["tax_unit_spine_source_id","tax_unit_source_id","tax_unit_support_channel","tax_unit_support_clone_index","takes_up_dc_ptc","takes_up_aca_if_eligible","takes_up_ca_premium_subsidy_if_eligible","takes_up_co_premium_assistance_if_eligible","takes_up_nm_premium_assistance_if_eligible","puf_capital_gains_tail_transfer_applied","puf_capital_gains_tail_donor_is_synthetic","puf_capital_gains_tail_donor_source_id","puf_capital_gains_tail_donor_filing_status_code","puf_capital_gains_tail_donor_agi_band_index","puf_capital_gains_tail_transfer_weight","unrecaptured_section_1250_gain"],"entity":"tax_unit","rows":"all"},{"columns":["spm_unit_spine_source_id","spm_unit_source_id","spm_unit_support_channel","spm_unit_support_clone_index","takes_up_snap_if_eligible","takes_up_tanf_if_eligible","takes_up_housing_assistance_if_eligible"],"entity":"spm_unit","rows":"all"},{"columns":["family_spine_source_id","family_source_id","family_support_channel","family_support_clone_index"],"entity":"family","rows":"all"},{"columns":["marital_unit_spine_source_id","marital_unit_source_id","marital_unit_support_channel","marital_unit_support_clone_index"],"entity":"marital_unit","rows":"all"}],"kernel":"us.post_transfer.prepare@1","mass":"conserve","outputs":[{"column":"schedule_d_capital_gain_distributions","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"}],"params":{"stage":"prepare_stacked_tail_derivation"},"population":"prepare_stacked_tail_derivation.boundary","sources":["stacked"],"structural":"none","weights":null},{"base":"prepare_stacked_tail_derivation.boundary","citation":"","description":"Open a population version for derive_multispine_pool_inputs rewrites.","id":"derive_multispine_pool_inputs.boundary","inputs":[{"columns":["A_AGE","A_SEX","source_year","measured","person_spine_source_id","person_source_id","person_support_channel","person_support_clone_index","age","SEMP","long_term_capital_gains_before_response","non_sch_d_capital_gains","schedule_d_capital_gain_distributions","self_employment_income_before_lsr","non_qualified_dividend_income","estate_income_would_be_qualified","farm_operations_income_would_be_qualified","farm_rent_income_would_be_qualified","partnership_s_corp_income_would_be_qualified","rental_income_would_be_qualified","self_employment_income_would_be_qualified","sstb_self_employment_income_would_be_qualified","business_is_sstb","qualified_bdc_income","qualified_reit_and_ptp_income","sstb_self_employment_income_before_lsr","sstb_unadjusted_basis_qualified_property","sstb_w2_wages_from_qualified_business","unadjusted_basis_qualified_property","w2_wages_from_qualified_business","takes_up_medicaid_if_eligible","takes_up_chip_if_eligible","takes_up_basic_health_program_if_eligible","takes_up_medicare_if_eligible","takes_up_ssi_if_eligible","takes_up_head_start_if_eligible","takes_up_early_head_start_if_eligible","takes_up_wic_if_eligible","short_term_capital_gains","long_term_capital_gains_on_collectibles"],"entity":"person","rows":"all"},{"columns":["TYPEHUGQ","household_spine_source_id","household_source_id","household_support_channel","household_support_clone_index"],"entity":"household","rows":"all"},{"columns":["tax_unit_spine_source_id","tax_unit_source_id","tax_unit_support_channel","tax_unit_support_clone_index","takes_up_dc_ptc","takes_up_aca_if_eligible","takes_up_ca_premium_subsidy_if_eligible","takes_up_co_premium_assistance_if_eligible","takes_up_nm_premium_assistance_if_eligible","puf_capital_gains_tail_transfer_applied","puf_capital_gains_tail_donor_is_synthetic","puf_capital_gains_tail_donor_source_id","puf_capital_gains_tail_donor_filing_status_code","puf_capital_gains_tail_donor_agi_band_index","puf_capital_gains_tail_transfer_weight","unrecaptured_section_1250_gain"],"entity":"tax_unit","rows":"all"},{"columns":["spm_unit_spine_source_id","spm_unit_source_id","spm_unit_support_channel","spm_unit_support_clone_index","takes_up_snap_if_eligible","takes_up_tanf_if_eligible","takes_up_housing_assistance_if_eligible"],"entity":"spm_unit","rows":"all"},{"columns":["family_spine_source_id","family_source_id","family_support_channel","family_support_clone_index"],"entity":"family","rows":"all"},{"columns":["marital_unit_spine_source_id","marital_unit_source_id","marital_unit_support_channel","marital_unit_support_clone_index"],"entity":"marital_unit","rows":"all"}],"kernel":"us.post_transfer.identity@1","mass":"conserve","outputs":[],"params":{},"population":null,"sources":[],"structural":"filter","weights":null},{"base":null,"citation":"","description":"Derive Schedule-D and reconcile the QBI input family.","id":"derive_multispine_pool_inputs","inputs":[{"columns":["A_AGE","A_SEX","source_year","measured","person_spine_source_id","person_source_id","person_support_channel","person_support_clone_index","age","SEMP","long_term_capital_gains_before_response","non_sch_d_capital_gains","non_qualified_dividend_income","takes_up_medicaid_if_eligible","takes_up_chip_if_eligible","takes_up_basic_health_program_if_eligible","takes_up_medicare_if_eligible","takes_up_ssi_if_eligible","takes_up_head_start_if_eligible","takes_up_early_head_start_if_eligible","takes_up_wic_if_eligible","short_term_capital_gains","long_term_capital_gains_on_collectibles"],"entity":"person","rows":"all"},{"columns":["TYPEHUGQ","household_spine_source_id","household_source_id","household_support_channel","household_support_clone_index"],"entity":"household","rows":"all"},{"columns":["tax_unit_spine_source_id","tax_unit_source_id","tax_unit_support_channel","tax_unit_support_clone_index","takes_up_dc_ptc","takes_up_aca_if_eligible","takes_up_ca_premium_subsidy_if_eligible","takes_up_co_premium_assistance_if_eligible","takes_up_nm_premium_assistance_if_eligible","puf_capital_gains_tail_transfer_applied","puf_capital_gains_tail_donor_is_synthetic","puf_capital_gains_tail_donor_source_id","puf_capital_gains_tail_donor_filing_status_code","puf_capital_gains_tail_donor_agi_band_index","puf_capital_gains_tail_transfer_weight","unrecaptured_section_1250_gain"],"entity":"tax_unit","rows":"all"},{"columns":["spm_unit_spine_source_id","spm_unit_source_id","spm_unit_support_channel","spm_unit_support_clone_index","takes_up_snap_if_eligible","takes_up_tanf_if_eligible","takes_up_housing_assistance_if_eligible"],"entity":"spm_unit","rows":"all"},{"columns":["family_spine_source_id","family_source_id","family_support_channel","family_support_clone_index"],"entity":"family","rows":"all"},{"columns":["marital_unit_spine_source_id","marital_unit_source_id","marital_unit_support_channel","marital_unit_support_clone_index"],"entity":"marital_unit","rows":"all"}],"kernel":"us.post_transfer.derive@1","mass":"conserve","outputs":[{"column":"schedule_d_capital_gain_distributions","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"estate_income_would_be_qualified","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"farm_operations_income_would_be_qualified","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"farm_rent_income_would_be_qualified","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"partnership_s_corp_income_would_be_qualified","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"rental_income_would_be_qualified","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"self_employment_income_would_be_qualified","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"sstb_self_employment_income_would_be_qualified","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"business_is_sstb","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"qualified_bdc_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"qualified_reit_and_ptp_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"sstb_self_employment_income_before_lsr","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"sstb_unadjusted_basis_qualified_property","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"sstb_w2_wages_from_qualified_business","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"unadjusted_basis_qualified_property","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"w2_wages_from_qualified_business","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"self_employment_income_before_lsr","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"}],"params":{"qbi_contract_version":2,"remaining_stage_manifest_sha256":"92cad0dc6283e463b74cec5137196d4db4e29b34cb87c0718c6c2f669cf99915","schedule_d_asset_sha256":"e7d31a5956dc420940002b5c5120b4fa7f6af6fa8bf071d488affe35b616611d","stage":"derive_multispine_pool_inputs"},"population":"derive_multispine_pool_inputs.boundary","sources":["stacked"],"structural":"none","weights":null},{"base":"derive_multispine_pool_inputs.boundary","citation":"","description":"Open a population version for seed_multispine_pool_inputs rewrites.","id":"seed_multispine_pool_inputs.boundary","inputs":[{"columns":["A_AGE","A_SEX","source_year","measured","person_spine_source_id","person_source_id","person_support_channel","person_support_clone_index","age","SEMP","long_term_capital_gains_before_response","non_sch_d_capital_gains","schedule_d_capital_gain_distributions","self_employment_income_before_lsr","non_qualified_dividend_income","estate_income_would_be_qualified","farm_operations_income_would_be_qualified","farm_rent_income_would_be_qualified","partnership_s_corp_income_would_be_qualified","rental_income_would_be_qualified","self_employment_income_would_be_qualified","sstb_self_employment_income_would_be_qualified","business_is_sstb","qualified_bdc_income","qualified_reit_and_ptp_income","sstb_self_employment_income_before_lsr","sstb_unadjusted_basis_qualified_property","sstb_w2_wages_from_qualified_business","unadjusted_basis_qualified_property","w2_wages_from_qualified_business","takes_up_medicaid_if_eligible","takes_up_chip_if_eligible","takes_up_basic_health_program_if_eligible","takes_up_medicare_if_eligible","takes_up_ssi_if_eligible","takes_up_head_start_if_eligible","takes_up_early_head_start_if_eligible","takes_up_wic_if_eligible","short_term_capital_gains","long_term_capital_gains_on_collectibles"],"entity":"person","rows":"all"},{"columns":["TYPEHUGQ","household_spine_source_id","household_source_id","household_support_channel","household_support_clone_index"],"entity":"household","rows":"all"},{"columns":["tax_unit_spine_source_id","tax_unit_source_id","tax_unit_support_channel","tax_unit_support_clone_index","takes_up_dc_ptc","takes_up_aca_if_eligible","takes_up_ca_premium_subsidy_if_eligible","takes_up_co_premium_assistance_if_eligible","takes_up_nm_premium_assistance_if_eligible","puf_capital_gains_tail_transfer_applied","puf_capital_gains_tail_donor_is_synthetic","puf_capital_gains_tail_donor_source_id","puf_capital_gains_tail_donor_filing_status_code","puf_capital_gains_tail_donor_agi_band_index","puf_capital_gains_tail_transfer_weight","unrecaptured_section_1250_gain"],"entity":"tax_unit","rows":"all"},{"columns":["spm_unit_spine_source_id","spm_unit_source_id","spm_unit_support_channel","spm_unit_support_clone_index","takes_up_snap_if_eligible","takes_up_tanf_if_eligible","takes_up_housing_assistance_if_eligible"],"entity":"spm_unit","rows":"all"},{"columns":["family_spine_source_id","family_source_id","family_support_channel","family_support_clone_index"],"entity":"family","rows":"all"},{"columns":["marital_unit_spine_source_id","marital_unit_source_id","marital_unit_support_channel","marital_unit_support_clone_index"],"entity":"marital_unit","rows":"all"}],"kernel":"us.post_transfer.identity@1","mass":"conserve","outputs":[],"params":{},"population":null,"sources":[],"structural":"filter","weights":null},{"base":null,"citation":"","description":"Seed take-up inputs and disclose remaining defaults.","id":"seed_multispine_pool_inputs","inputs":[{"columns":["A_AGE","A_SEX","source_year","measured","person_spine_source_id","person_source_id","person_support_channel","person_support_clone_index","age","SEMP","long_term_capital_gains_before_response","non_sch_d_capital_gains","schedule_d_capital_gain_distributions","self_employment_income_before_lsr","non_qualified_dividend_income","estate_income_would_be_qualified","farm_operations_income_would_be_qualified","farm_rent_income_would_be_qualified","partnership_s_corp_income_would_be_qualified","rental_income_would_be_qualified","self_employment_income_would_be_qualified","sstb_self_employment_income_would_be_qualified","business_is_sstb","qualified_bdc_income","qualified_reit_and_ptp_income","sstb_self_employment_income_before_lsr","sstb_unadjusted_basis_qualified_property","sstb_w2_wages_from_qualified_business","unadjusted_basis_qualified_property","w2_wages_from_qualified_business","short_term_capital_gains","long_term_capital_gains_on_collectibles"],"entity":"person","rows":"all"},{"columns":["TYPEHUGQ","household_spine_source_id","household_source_id","household_support_channel","household_support_clone_index"],"entity":"household","rows":"all"},{"columns":["tax_unit_spine_source_id","tax_unit_source_id","tax_unit_support_channel","tax_unit_support_clone_index","puf_capital_gains_tail_transfer_applied","puf_capital_gains_tail_donor_is_synthetic","puf_capital_gains_tail_donor_source_id","puf_capital_gains_tail_donor_filing_status_code","puf_capital_gains_tail_donor_agi_band_index","puf_capital_gains_tail_transfer_weight","unrecaptured_section_1250_gain"],"entity":"tax_unit","rows":"all"},{"columns":["spm_unit_spine_source_id","spm_unit_source_id","spm_unit_support_channel","spm_unit_support_clone_index"],"entity":"spm_unit","rows":"all"},{"columns":["family_spine_source_id","family_source_id","family_support_channel","family_support_clone_index"],"entity":"family","rows":"all"},{"columns":["marital_unit_spine_source_id","marital_unit_source_id","marital_unit_support_channel","marital_unit_support_clone_index"],"entity":"marital_unit","rows":"all"}],"kernel":"us.post_transfer.seed@1","mass":"conserve","outputs":[{"column":"takes_up_snap_if_eligible","dtype":"bool","entity":"spm_unit","ownership":"produced","rewrite":true,"rows":"all"},{"column":"takes_up_tanf_if_eligible","dtype":"bool","entity":"spm_unit","ownership":"produced","rewrite":true,"rows":"all"},{"column":"takes_up_eitc","dtype":"bool","entity":"tax_unit","ownership":"produced","rows":"all"},{"column":"takes_up_medicaid_if_eligible","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"takes_up_chip_if_eligible","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"takes_up_basic_health_program_if_eligible","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"takes_up_medicare_if_eligible","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"takes_up_ssi_if_eligible","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"takes_up_dc_ptc","dtype":"bool","entity":"tax_unit","ownership":"produced","rewrite":true,"rows":"all"},{"column":"takes_up_head_start_if_eligible","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"takes_up_early_head_start_if_eligible","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"takes_up_housing_assistance_if_eligible","dtype":"bool","entity":"spm_unit","ownership":"produced","rewrite":true,"rows":"all"},{"column":"takes_up_wic_if_eligible","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"takes_up_aca_if_eligible","dtype":"bool","entity":"tax_unit","ownership":"produced","rewrite":true,"rows":"all"},{"column":"takes_up_ca_premium_subsidy_if_eligible","dtype":"bool","entity":"tax_unit","ownership":"produced","rewrite":true,"rows":"all"},{"column":"takes_up_co_premium_assistance_if_eligible","dtype":"bool","entity":"tax_unit","ownership":"produced","rewrite":true,"rows":"all"},{"column":"takes_up_nm_premium_assistance_if_eligible","dtype":"bool","entity":"tax_unit","ownership":"produced","rewrite":true,"rows":"all"}],"params":{"engine_ref":"policyengine-us","seed":0,"stage":"seed_multispine_pool_inputs","take_up_contract_version":1,"take_up_resource_sha256":"9522ce40f7dea569312dd7a7beb474e5a5afadd2f1e10cb5876534c3ef623d35","time_period":2024},"population":"seed_multispine_pool_inputs.boundary","sources":["stacked"],"structural":"none","weights":null},{"base":null,"citation":"","description":"Materialize SSI on the disposable agreement view.","id":"materialize_multispine_agreement_outputs","inputs":[{"columns":["A_AGE","A_SEX","source_year","measured","person_spine_source_id","person_source_id","person_support_channel","person_support_clone_index","age","SEMP","long_term_capital_gains_before_response","non_sch_d_capital_gains","schedule_d_capital_gain_distributions","self_employment_income_before_lsr","non_qualified_dividend_income","estate_income_would_be_qualified","farm_operations_income_would_be_qualified","farm_rent_income_would_be_qualified","partnership_s_corp_income_would_be_qualified","rental_income_would_be_qualified","self_employment_income_would_be_qualified","sstb_self_employment_income_would_be_qualified","business_is_sstb","qualified_bdc_income","qualified_reit_and_ptp_income","sstb_self_employment_income_before_lsr","sstb_unadjusted_basis_qualified_property","sstb_w2_wages_from_qualified_business","unadjusted_basis_qualified_property","w2_wages_from_qualified_business","takes_up_medicaid_if_eligible","takes_up_chip_if_eligible","takes_up_basic_health_program_if_eligible","takes_up_medicare_if_eligible","takes_up_ssi_if_eligible","takes_up_head_start_if_eligible","takes_up_early_head_start_if_eligible","takes_up_wic_if_eligible","short_term_capital_gains","long_term_capital_gains_on_collectibles"],"entity":"person","rows":"all"},{"columns":["TYPEHUGQ","household_spine_source_id","household_source_id","household_support_channel","household_support_clone_index"],"entity":"household","rows":"all"},{"columns":["tax_unit_spine_source_id","tax_unit_source_id","tax_unit_support_channel","tax_unit_support_clone_index","takes_up_dc_ptc","takes_up_aca_if_eligible","takes_up_ca_premium_subsidy_if_eligible","takes_up_co_premium_assistance_if_eligible","takes_up_nm_premium_assistance_if_eligible","puf_capital_gains_tail_transfer_applied","puf_capital_gains_tail_donor_is_synthetic","puf_capital_gains_tail_donor_source_id","puf_capital_gains_tail_donor_filing_status_code","puf_capital_gains_tail_donor_agi_band_index","puf_capital_gains_tail_transfer_weight","unrecaptured_section_1250_gain","takes_up_eitc"],"entity":"tax_unit","rows":"all"},{"columns":["spm_unit_spine_source_id","spm_unit_source_id","spm_unit_support_channel","spm_unit_support_clone_index","takes_up_snap_if_eligible","takes_up_tanf_if_eligible","takes_up_housing_assistance_if_eligible"],"entity":"spm_unit","rows":"all"},{"columns":["family_spine_source_id","family_source_id","family_support_channel","family_support_clone_index"],"entity":"family","rows":"all"},{"columns":["marital_unit_spine_source_id","marital_unit_source_id","marital_unit_support_channel","marital_unit_support_clone_index"],"entity":"marital_unit","rows":"all"}],"kernel":"us.post_transfer.materialize@1","mass":"conserve","outputs":[{"column":"ssi","dtype":"float64","entity":"person","ownership":"produced","rows":"all"}],"params":{"engine_input_defaults_sha256":"f938af6506623f453ca55922cf4a8ba6443d5f780f85e4381b777083a90396a0","engine_input_projection_sha256":"cefb137f164c6629589a887bbb56831ebc463cd46909a72ead4dbe0557961e61","engine_ref":"policyengine-us","household_batch_size":5000,"ssi_dependency_sha256":"200ca39e784511e9ede685261f5e0840198ec2b9c4292a522c0fc504c535b31c","stage":"materialize_multispine_agreement_outputs","time_period":2024},"population":"seed_multispine_pool_inputs.boundary","sources":["stacked"],"structural":"none","weights":null}],"sources":[{"codec":"csv-tables","description":"Synthetic stacked US pool at the completed ACS-transfer boundary.","name":"stacked"}]} diff --git a/test_support/microcosm_build/us_local_jurisdictions.py b/test_support/microcosm_build/us_local_jurisdictions.py new file mode 100644 index 0000000000..74abe89e32 --- /dev/null +++ b/test_support/microcosm_build/us_local_jurisdictions.py @@ -0,0 +1,155 @@ +"""Shared fixtures for the US local-jurisdiction flag tests. + +A synthetic block ladder whose blocks sit in the registry jurisdictions, in a +neighbour of each, and in near misses (a registry place code in another +state), plus a small US frame builder. Each block has its own congressional +district, so assigning a household to that district pins it to that block and +the ladder assignment is deterministic. +""" + +from __future__ import annotations + +from collections.abc import Mapping, Sequence +from dataclasses import dataclass + +import numpy as np +import pandas as pd + +from microcosm.build.us_runtime.geography_ladder import UsBlockLadder +from microcosm.frame import US_SCHEMA, Frame, WeightKind, Weights + + +@dataclass(frozen=True) +class FixtureBlock: + name: str + block_geoid: int + place_fips: int + congressional_district_geoid: int + population: float + + @property + def state_fips(self) -> int: + return self.block_geoid // 10**13 + + @property + def county_fips(self) -> str: + return f"{self.block_geoid:015d}"[:5] + + +FIXTURE_BLOCKS: tuple[FixtureBlock, ...] = ( + FixtureBlock("denver", 80310001001000, 20000, 801, 700.0), + FixtureBlock("aurora_arapahoe", 80050001001000, 4000, 806, 300.0), + FixtureBlock("yonkers", 361190001001000, 84000, 3616, 210.0), + FixtureBlock("new_rochelle_westchester", 361190002001000, 50617, 3617, 80.0), + FixtureBlock("wilmington", 100030001001000, 77580, 1000, 70.0), + FixtureBlock("new_castle_unincorporated", 100030002001000, 0, 1001, 50.0), + FixtureBlock("philadelphia", 421010001001000, 60000, 4203, 1600.0), + FixtureBlock("delaware_county_pa", 420450001001000, 0, 4205, 500.0), + # Near misses: a registry place code in another state. + FixtureBlock("place_84000_in_california", 60370001001000, 84000, 630, 40.0), + FixtureBlock("place_77580_in_north_carolina", 371290001001000, 77580, 3707, 30.0), +) +FIXTURE_BLOCK_BY_NAME = {block.name: block for block in FIXTURE_BLOCKS} +WAGE_INPUT = "employment_income_before_lsr" + + +def block_ladder_metadata() -> dict[str, object]: + layers = { + "congressional_district": {"vintage": "119th_congress"}, + "sldu": {"vintage": "2020_baf"}, + "sldl": {"vintage": "2020_baf"}, + "place": {"vintage": "2020_census"}, + "cbsa": {"vintage": "omb_2023_delineations"}, + } + return { + "schema_version": 1, + "kind": "us_block_ladder", + "block_vintage": "2020_tabulation_blocks", + "sampling_basis": "population", + "layers": layers, + } + + +def block_ladder(blocks: Sequence[FixtureBlock] = FIXTURE_BLOCKS) -> UsBlockLadder: + """A ladder holding ``blocks``, one congressional district per block.""" + + count = len(blocks) + return UsBlockLadder( + block_geoid=np.asarray([block.block_geoid for block in blocks], dtype=np.int64), + population=np.asarray([block.population for block in blocks], dtype=np.float64), + congressional_district_geoid=np.asarray( + [block.congressional_district_geoid for block in blocks], dtype=np.int64 + ), + sldu=np.asarray(["001"] * count, dtype="U3"), + sldl=np.asarray(["001"] * count, dtype="U3"), + place_fips=np.asarray([block.place_fips for block in blocks], dtype=np.int32), + cbsa_code=np.asarray([0] * count, dtype=np.int32), + metadata=block_ladder_metadata(), + ) + + +def us_frame( + households: Sequence[Mapping[str, object]], + *, + person_inputs: Sequence[Sequence[Mapping[str, object]]] | None = None, + weights: Sequence[float] | None = None, +) -> Frame: + """A US frame with one group unit of each kind per household. + + ``households`` gives each household's columns (``household_id`` is + assigned 1..n when absent); ``person_inputs`` gives each household's + people, one mapping of person columns each (one empty person by default). + Every person has ``employment_income_before_lsr`` (0 unless given), as + every built frame does, so the local-tax inputs can be derived. + """ + + household = pd.DataFrame(list(households)) + if "household_id" not in household: + household.insert(0, "household_id", np.arange(1, len(household) + 1)) + people = person_inputs or [[{}] for _ in range(len(household))] + if len(people) != len(household): + raise ValueError("person_inputs must give one list per household.") + rows: list[dict[str, object]] = [] + for household_id, members in zip(household["household_id"], people, strict=True): + for member in members: + row: dict[str, object] = {} + for group in US_SCHEMA.group_entities: + row[US_SCHEMA.membership_column(group)] = int(household_id) + row[WAGE_INPUT] = 0.0 + row.update(member) + rows.append(row) + person = pd.DataFrame(rows) + person.insert(0, US_SCHEMA.person_id_column, np.arange(1, len(person) + 1)) + tables: dict[str, pd.DataFrame] = {"person": person, "household": household} + for group in US_SCHEMA.group_entities: + if group == "household": + continue + tables[group] = pd.DataFrame( + {US_SCHEMA.id_column(group): household["household_id"].to_numpy()} + ) + values = np.ones(len(household)) if weights is None else np.asarray(weights) + return Frame( + tables, + US_SCHEMA, + { + "household": Weights( + values=values.astype(np.float64), kind=WeightKind.DESIGN + ) + }, + ) + + +def households_on_blocks( + names: Sequence[str], +) -> list[dict[str, object]]: + """Household rows whose district pins each to the named fixture block.""" + + return [ + { + "state_fips": FIXTURE_BLOCK_BY_NAME[name].state_fips, + "congressional_district_geoid": ( + FIXTURE_BLOCK_BY_NAME[name].congressional_district_geoid + ), + } + for name in names + ] diff --git a/test_support/microcosm_build/us_multispine_pool.py b/test_support/microcosm_build/us_multispine_pool.py index fae6114fb9..2d12ef2635 100644 --- a/test_support/microcosm_build/us_multispine_pool.py +++ b/test_support/microcosm_build/us_multispine_pool.py @@ -187,6 +187,7 @@ def _overlap_person_table() -> pd.DataFrame: _EXPECTED_SOURCE_OPERATOR_WRAPPERS = { "with_us_hours_worked_inputs": "_with_gated_us_hours_worked_inputs", + "with_us_local_tax_inputs": "local_tax_inputs_with_receipt", "with_us_qbi_input_reconciliation": "reconcile_qbi_with_receipt", } diff --git a/tools/build_us_fiscal_refresh_release.py b/tools/build_us_fiscal_refresh_release.py index 415b2e8bd1..f4a3205e58 100644 --- a/tools/build_us_fiscal_refresh_release.py +++ b/tools/build_us_fiscal_refresh_release.py @@ -271,6 +271,9 @@ attach_l0_refit_entity_weights, load_us_frame, ) +from microcosm.build.us_runtime.local_jurisdictions import ( + rederive_us_local_jurisdiction_flags, +) from microcosm.build.us_runtime.medicare_irmaa_holdout import ( medicare_irmaa_holdout_from_sim, medicare_irmaa_holdout_unavailable, @@ -12933,6 +12936,24 @@ def _main(argv: Sequence[str] | None = None) -> int | None: base_frame = _load_frame(base_h5, expected_sha256=base_dataset_sha256) else: base_frame = pool_frame + # A base built before the local-jurisdiction flags existed carries none, + # and the engine would then default every Yonkers, Wilmington, Denver + # and Philadelphia resident to False. Derive them from the base's own + # geography; a carried flag that disagrees with it is refused. + base_frame, local_jurisdiction_flags = rederive_us_local_jurisdiction_flags( + base_frame + ) + if telemetry is not None: + telemetry.stage( + "local_jurisdiction_flags", + message="Derived local-jurisdiction flags from the base geography.", + rungs=local_jurisdiction_flags["rungs"], + carried_flags=local_jurisdiction_flags["carried_flags"], + flag_status={ + flag: entry["status"] + for flag, entry in local_jurisdiction_flags["flags"].items() + }, + ) capital_gains_tail_presence = assert_puf_capital_gains_tail_survives_selection( base_frame, base_frame, @@ -15448,6 +15469,7 @@ def _main(argv: Sequence[str] | None = None) -> int | None: support_value_repairs={ "social_security_components": social_security_component_repair, "non_sch_d_capital_gains": non_sch_d_cgd_repair, + "local_jurisdiction_flags": local_jurisdiction_flags, }, warm_start_calibration=warm_start_calibration, selection_source=selection_source_payload, diff --git a/tools/build_us_puf_support_base.py b/tools/build_us_puf_support_base.py index 4d656104f3..92403eb8c7 100644 --- a/tools/build_us_puf_support_base.py +++ b/tools/build_us_puf_support_base.py @@ -161,6 +161,7 @@ refuse_denied_frame, refuse_denied_pool_h5, ) +from microcosm.build.us_runtime.local_jurisdictions import with_us_local_tax_inputs from microcosm.build.us_runtime.puf_qrf_chain import ( finalize_primary_puf_qrf_chain, initialize_primary_puf_qrf_chain, @@ -280,7 +281,10 @@ "congressional_district_assignment", ("with_household_congressional_districts",), ), - ("block_ladder_assignment", ("with_household_us_geography_ladder",)), + ( + "block_ladder_assignment", + ("with_household_us_geography_ladder", "with_us_local_tax_inputs"), + ), ("final_export", ("PolicyEngineUSEngine.write_dataset",)), ) OUTER_STAGE_PIPELINE = StagePipeline( @@ -1596,6 +1600,8 @@ def _run_all( CURRENT_CONGRESSIONAL_DISTRICT_VINTAGE ), ) + # Wages are final here, and the block has just fixed residence. + imputed, local_tax_inputs = with_us_local_tax_inputs(imputed) household = imputed.table("household") household_weights = imputed.weights_for("household").values gate = us_geography_ladder_gate(household, household_weights) @@ -1613,6 +1619,7 @@ def _run_all( "artifact": str(args.block_ladder_artifact.resolve()), "artifact_sha256": _sha256(args.block_ladder_artifact), "seed": args.geography_ladder_seed, + "local_tax_inputs": local_tax_inputs, "gate": { "passed": gate.passed, "failures": list(gate.failures), @@ -2978,6 +2985,8 @@ def _post_qrf_frame_stage( CURRENT_CONGRESSIONAL_DISTRICT_VINTAGE ), ) + # Wages are final here, and the block has just fixed residence. + frame, local_tax_inputs = with_us_local_tax_inputs(frame) household = frame.table("household") household_weights = frame.weights_for("household").values gate = us_geography_ladder_gate(household, household_weights) @@ -2995,6 +3004,7 @@ def _post_qrf_frame_stage( "artifact": str(args.block_ladder_artifact.resolve()), "artifact_sha256": _sha256(args.block_ladder_artifact), "seed": args.geography_ladder_seed, + "local_tax_inputs": local_tax_inputs, "gate": { "passed": gate.passed, "failures": list(gate.failures), diff --git a/tools/spec_engine_coverage.py b/tools/spec_engine_coverage.py index 3bf0e12cef..bcdbc15ae9 100644 --- a/tools/spec_engine_coverage.py +++ b/tools/spec_engine_coverage.py @@ -41,7 +41,7 @@ REPORT_SCHEMA_VERSION = 3 EXPECTED_POINTER_INVENTORY_SHA256 = ( - "d51087fd950f99fb7fcf126c31419374172d946f5846d2bf9d0eb0e7a6dfca46" + "29f7f23ad778c4a3f56f5cc269bd8868739fd39470e5f9fbb0089c205ad56238" ) DEFAULT_REPORT_PATH = ( Path(__file__).resolve().parents[1] diff --git a/tools/verify_us_local_jurisdiction_registry.py b/tools/verify_us_local_jurisdiction_registry.py new file mode 100644 index 0000000000..c6279f50c0 --- /dev/null +++ b/tools/verify_us_local_jurisdiction_registry.py @@ -0,0 +1,284 @@ +#!/usr/bin/env python3 +"""Verify the US local-jurisdiction registry against Census sources. + +Checks the registry (``us_local_jurisdictions.json``) three ways: + +- ``--gazetteer-place`` / ``--gazetteer-county``: each registry place and + county appears in the 2020 Gazetteer with the recorded GEOID, ANSI code, + name and land/water area, the zip matches the SHA-256 the registry records, + and a county-rule jurisdiction's county and coextensive city have the same + land and water area; +- ``--pl-populations``: the registry's ``population_2020`` equals the 2020 + P.L. 94-171 ``P1_001N`` the Census API returns for the place (and, for a + county rule, the county). The file holds one API response per line; +- ``--block-ladder`` (repeatable): every flag derived from the ladder's blocks + covers exactly the registry population, and a county-rule flag covers the + same blocks as its coextensive city + (:func:`check_us_local_jurisdictions_against_block_ladder`). A ladder the + registry already records must reproduce the recorded counts. + +``--record`` writes each ladder's counts into ``block_ladder_checks`` and +prints the new registry SHA-256, which must then be pinned as +``US_LOCAL_JURISDICTION_REGISTRY_SHA256``. +""" + +from __future__ import annotations + +import argparse +import csv +import hashlib +import io +import json +import sys +import zipfile +from collections.abc import Mapping, Sequence +from pathlib import Path +from typing import Any + +from microcosm.build.us_runtime.geography_ladder import load_us_block_ladder +from microcosm.build.us_runtime.local_jurisdictions import ( + JURISDICTION_RUNG_COUNTY, + US_LOCAL_JURISDICTION_REGISTRY_RESOURCE, + UsLocalJurisdictionRegistry, + check_us_local_jurisdictions_against_block_ladder, + load_us_local_jurisdiction_registry, +) + +DEFAULT_REGISTRY = ( + Path(__file__).resolve().parents[1] + / "packages/microcosm-build/src/microcosm/build/us_runtime" + / US_LOCAL_JURISDICTION_REGISTRY_RESOURCE +) + + +def _sha256(path: Path) -> str: + return hashlib.sha256(path.read_bytes()).hexdigest() + + +def _gazetteer_rows(path: Path) -> dict[str, dict[str, str]]: + with zipfile.ZipFile(path) as archive: + (member,) = archive.namelist() + text = archive.read(member).decode("utf-8") + reader = csv.DictReader(io.StringIO(text), delimiter="\t") + rows: dict[str, dict[str, str]] = {} + for row in reader: + clean = {key.strip(): (value or "").strip() for key, value in row.items()} + rows[clean["GEOID"]] = clean + return rows + + +def check_gazetteer( + document: Mapping[str, Any], + *, + place_zip: Path, + county_zip: Path, +) -> list[str]: + """Return failures comparing registry gazetteer records to the zips.""" + + failures: list[str] = [] + sources = document["sources"] + for label, path in ( + ("gazetteer_place", place_zip), + ("gazetteer_county", county_zip), + ): + observed = _sha256(path) + if observed != sources[label]["sha256"]: + failures.append( + f"{label}: zip SHA-256 {observed} differs from the registry's " + f"{sources[label]['sha256']}" + ) + tables = { + "place": _gazetteer_rows(place_zip), + "county": _gazetteer_rows(county_zip), + } + for item in document["jurisdictions"]: + records = item["gazetteer"] + for level, record in records.items(): + row = tables[level].get(record["geoid"]) + if row is None: + failures.append( + f"{item['flag']}: {level} {record['geoid']} not in gazetteer" + ) + continue + for key, column in ( + ("ansicode", "ANSICODE"), + ("name", "NAME"), + ("aland", "ALAND"), + ("awater", "AWATER"), + ): + if str(record[key]) != row[column]: + failures.append( + f"{item['flag']}: {level} {record['geoid']} {column} is " + f"{row[column]!r}, registry records {record[key]!r}" + ) + if item["rule"] == JURISDICTION_RUNG_COUNTY: + county = records.get("county", {}) + place = records.get("place", {}) + if county.get("geoid") != item["county_fips"]: + failures.append(f"{item['flag']}: gazetteer county is not county_fips") + if place.get("geoid") != item["state_fips"] + str( + item["coextensive_place_fips"] + ): + failures.append( + f"{item['flag']}: gazetteer place is not the coextensive city" + ) + if (county.get("aland"), county.get("awater")) != ( + place.get("aland"), + place.get("awater"), + ): + failures.append( + f"{item['flag']}: county and city land/water areas differ, so " + "they are not the same area" + ) + elif ( + records.get("place", {}).get("geoid") + != item["state_fips"] + item["place_fips"] + ): + failures.append( + f"{item['flag']}: gazetteer place is not state_fips+place_fips" + ) + return failures + + +def check_pl_populations(document: Mapping[str, Any], *, path: Path) -> list[str]: + """Return failures comparing ``population_2020`` to P.L. 94-171 counts.""" + + counts: dict[tuple[str, str], int] = {} + for line in path.read_text().splitlines(): + if not line.strip(): + continue + header, *rows = json.loads(line) + for row in rows: + record = dict(zip(header, row, strict=True)) + if "place" in record: + counts[("place", record["state"] + record["place"])] = int( + record["P1_001N"] + ) + elif "county" in record: + counts[("county", record["state"] + record["county"])] = int( + record["P1_001N"] + ) + elif "us" in record: + counts[("us", "1")] = int(record["P1_001N"]) + failures: list[str] = [] + national = document["sources"]["population"]["national_total_2020"] + if counts.get(("us", "1")) not in (None, national): + failures.append( + f"US total {counts[('us', '1')]} differs from the registry's {national}" + ) + for item in document["jurisdictions"]: + if item["rule"] == JURISDICTION_RUNG_COUNTY: + keys = [ + ("county", item["county_fips"]), + ("place", item["state_fips"] + item["coextensive_place_fips"]), + ] + else: + keys = [("place", item["state_fips"] + item["place_fips"])] + for key in keys: + if key not in counts: + failures.append(f"{item['flag']}: no P1_001N row for {key[0]} {key[1]}") + elif counts[key] != item["population_2020"]: + failures.append( + f"{item['flag']}: P1_001N for {key[0]} {key[1]} is {counts[key]:,}, " + f"registry records {item['population_2020']:,}" + ) + return failures + + +def check_block_ladder( + registry: UsLocalJurisdictionRegistry, + document: Mapping[str, Any], + *, + path: Path, +) -> tuple[dict[str, Any], list[str]]: + """Run the block-ladder check and compare to any recorded entry.""" + + ladder_sha256 = _sha256(path) + ladder = load_us_block_ladder(path) + report = check_us_local_jurisdictions_against_block_ladder( + ladder.block_geoid, + ladder.population, + ladder.place_fips, + registry=registry, + ) + entry = { + "block_ladder_sha256": ladder_sha256, + "blocks": int(len(ladder)), + "population": int(ladder.population.sum()), + "jurisdictions": report, + } + failures: list[str] = [] + national = document["sources"]["population"]["national_total_2020"] + if entry["population"] != national: + failures.append( + f"ladder {ladder_sha256}: total population {entry['population']:,} " + f"differs from the 2020 national total {national:,}" + ) + for recorded in document.get("block_ladder_checks", []): + if recorded["block_ladder_sha256"] == ladder_sha256 and recorded != entry: + failures.append( + f"ladder {ladder_sha256}: counts differ from the recorded check" + ) + return entry, failures + + +def main(argv: Sequence[str] | None = None) -> int: + parser = argparse.ArgumentParser(description=__doc__.splitlines()[0]) + parser.add_argument("--registry", type=Path, default=DEFAULT_REGISTRY) + parser.add_argument("--gazetteer-place", type=Path) + parser.add_argument("--gazetteer-county", type=Path) + parser.add_argument("--pl-populations", type=Path) + parser.add_argument("--block-ladder", type=Path, action="append", default=[]) + parser.add_argument( + "--record", + action="store_true", + help="write each ladder's counts into block_ladder_checks", + ) + args = parser.parse_args(argv) + if (args.gazetteer_place is None) != (args.gazetteer_county is None): + parser.error("--gazetteer-place and --gazetteer-county go together") + + document = json.loads(args.registry.read_text()) + registry = load_us_local_jurisdiction_registry(args.registry) + failures: list[str] = [] + if args.gazetteer_place is not None: + failures += check_gazetteer( + document, + place_zip=args.gazetteer_place, + county_zip=args.gazetteer_county, + ) + print("gazetteer: checked", file=sys.stderr) + if args.pl_populations is not None: + failures += check_pl_populations(document, path=args.pl_populations) + print("P.L. 94-171 populations: checked", file=sys.stderr) + entries = [] + for path in args.block_ladder: + entry, ladder_failures = check_block_ladder(registry, document, path=path) + failures += ladder_failures + entries.append(entry) + print(json.dumps(entry, indent=2, sort_keys=True)) + if failures: + for failure in failures: + print(f"FAIL: {failure}", file=sys.stderr) + return 1 + if args.record and entries: + recorded = { + item["block_ladder_sha256"]: item + for item in document.get("block_ladder_checks", []) + } + recorded.update({item["block_ladder_sha256"]: item for item in entries}) + document["block_ladder_checks"] = sorted( + recorded.values(), key=lambda item: item["block_ladder_sha256"] + ) + args.registry.write_text(json.dumps(document, indent=2, sort_keys=False) + "\n") + print( + f"recorded; pin US_LOCAL_JURISDICTION_REGISTRY_SHA256 = " + f"{_sha256(args.registry)}", + file=sys.stderr, + ) + print("OK", file=sys.stderr) + return 0 + + +if __name__ == "__main__": + raise SystemExit(main())