Make tax-unit role construction household-coherent#79
Merged
Conversation
This was referenced May 29, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Evidence
platform darwin -- Python 3.13.9, pytest-8.4.2, pluggy-1.6.0 -- /Users/maxghenis/.codex-worktrees/microplex-us-tax-unit-coherence-20260529/.venv/bin/python3
cachedir: .pytest_cache
rootdir: /Users/maxghenis/.codex-worktrees/microplex-us-tax-unit-coherence-20260529
configfile: pyproject.toml
plugins: anyio-4.13.0
collecting ... collected 143 items / 136 deselected / 7 selected
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_build_policyengine_entity_tables_prefers_tax_unit_role_flags_over_bad_ids PASSED [ 14%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_build_policyengine_entity_tables_resolves_spouse_head_role_conflicts PASSED [ 28%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_build_policyengine_entity_tables_resolves_dependent_head_role_conflicts PASSED [ 42%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_build_policyengine_entity_tables_resolves_spouse_dependent_role_conflicts PASSED [ 57%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_build_policyengine_entity_tables_repairs_missing_role_flag_heads PASSED [ 71%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_build_policyengine_entity_tables_folds_young_head_hint_dependents PASSED [ 85%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_build_policyengine_entity_tables_keeps_positive_income_adult_heads PASSED [100%]
====================== 7 passed, 136 deselected in 2.66s =======================
platform darwin -- Python 3.13.9, pytest-8.4.2, pluggy-1.6.0 -- /Users/maxghenis/.codex-worktrees/microplex-us-tax-unit-coherence-20260529/.venv/bin/python3
cachedir: .pytest_cache
rootdir: /Users/maxghenis/.codex-worktrees/microplex-us-tax-unit-coherence-20260529
configfile: pyproject.toml
plugins: anyio-4.13.0
collecting ... collected 143 items
tests/pipelines/test_us.py::TestUSMicroplexBuildConfig::test_defaults PASSED [ 0%]
tests/pipelines/test_us.py::TestUSMicroplexBuildConfig::test_custom_values PASSED [ 1%]
tests/pipelines/test_us.py::TestUSMicroplexBuildConfig::test_can_opt_into_authoritative_donor_overrides PASSED [ 2%]
tests/pipelines/test_us.py::TestUSMicroplexBuildConfig::test_rejects_conflicting_policyengine_weight_rescale_modes PASSED [ 2%]
tests/pipelines/test_us.py::TestUSMicroplexBuildConfig::test_rejects_target_rescale_without_target_total_weight PASSED [ 3%]
tests/pipelines/test_us.py::TestUSMicroplexBuildConfig::test_rejects_nonpositive_oracle_relative_error_cap PASSED [ 4%]
tests/pipelines/test_us.py::TestUSMicroplexBuildConfig::test_rejects_nonpositive_deferred_stage_support_floor PASSED [ 4%]
tests/pipelines/test_us.py::TestUSMicroplexBuildConfig::test_rejects_negative_deferred_stage_family_focus_limit PASSED [ 5%]
tests/pipelines/test_us.py::TestUSMicroplexBuildConfig::test_rejects_negative_deferred_stage_geography_focus_limit PASSED [ 6%]
tests/pipelines/test_us.py::TestUSMicroplexBuildConfig::test_rejects_nonpositive_deferred_stage_constraint_cap PASSED [ 6%]
tests/pipelines/test_us.py::TestUSMicroplexBuildConfig::test_rejects_nonpositive_deferred_stage_trigger_threshold PASSED [ 7%]
tests/pipelines/test_us.py::TestUSMicroplexBuildConfig::test_rejects_negative_dependent_tax_leaf_soft_cap_multiplier PASSED [ 8%]
tests/pipelines/test_us.py::test_apply_dependent_tax_leaf_soft_caps_only_for_dependents PASSED [ 9%]
tests/pipelines/test_us.py::test_summarize_policyengine_target_fit_report_caps_relative_error PASSED [ 9%]
tests/pipelines/test_us.py::test_summarize_policyengine_target_fit_report_penalizes_unsupported_targets PASSED [ 10%]
tests/pipelines/test_us.py::test_select_policyengine_deferred_stage_constraints_prioritizes_target_level_loss PASSED [ 11%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_policyengine_target_loss_geography_key_normalizes_state_fips PASSED [ 11%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_prepare_seed_data PASSED [ 12%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_prepare_seed_data_normalizes_social_security_components PASSED [ 13%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_build_targets PASSED [ 13%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_build_with_bootstrap_backend PASSED [ 14%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_bootstrap_infers_state_strata_from_target_scope PASSED [ 15%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_bootstrap_preserves_state_support_when_state_targets_are_requested PASSED [ 16%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_bootstrap_explicit_missing_strata_column_raises PASSED [ 16%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_build_with_synthesizer_backend PASSED [ 17%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_build_policyengine_entity_tables PASSED [ 18%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_build_policyengine_entity_tables_derives_tax_input_columns PASSED [ 18%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_build_policyengine_entity_tables_adds_deterministic_aca_takeup PASSED [ 19%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_build_policyengine_entity_tables_fallback_employment_excludes_transfer_income PASSED [ 20%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_build_policyengine_entity_tables_allocates_social_security_residual_to_retirement PASSED [ 20%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_build_policyengine_entity_tables_derives_dividend_totals_from_atomic_components PASSED [ 21%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_build_policyengine_entity_tables_derives_relationships_from_family_relationship PASSED [ 22%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_build_policyengine_entity_tables_derives_relationships_from_one_based_family_relationship PASSED [ 23%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_build_policyengine_entity_tables_uses_spouse_and_dependent_flags_when_relationship_missing PASSED [ 23%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_build_policyengine_entity_tables_prefers_richer_family_relationship_over_collapsed_relationship_to_head PASSED [ 24%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_build_policyengine_entity_tables_repairs_households_without_a_head PASSED [ 25%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_build_policyengine_entity_tables_marks_separated_head_as_separate PASSED [ 25%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_build_policyengine_entity_tables_splits_separated_spouses_into_two_units PASSED [ 26%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_build_policyengine_entity_tables_splits_separated_spouses_and_keeps_dependents_with_head PASSED [ 27%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_build_policyengine_entity_tables_splits_spouse_coded_pair_without_marriage_evidence PASSED [ 27%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_build_policyengine_entity_tables_marks_widowed_head_with_child_as_surviving_spouse PASSED [ 28%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_build_policyengine_entity_tables_prefers_explicit_head_of_household_code PASSED [ 29%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_build_policyengine_entity_tables_does_not_infer_head_of_household_from_marital_status_alone PASSED [ 30%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_build_policyengine_entity_tables_can_preserve_existing_tax_unit_ids PASSED [ 30%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_build_policyengine_entity_tables_prefers_tax_unit_role_flags_over_bad_ids PASSED [ 31%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_build_policyengine_entity_tables_resolves_spouse_head_role_conflicts PASSED [ 32%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_build_policyengine_entity_tables_resolves_dependent_head_role_conflicts PASSED [ 32%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_build_policyengine_entity_tables_resolves_spouse_dependent_role_conflicts PASSED [ 33%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_build_policyengine_entity_tables_repairs_missing_role_flag_heads PASSED [ 34%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_build_policyengine_entity_tables_folds_young_head_hint_dependents PASSED [ 34%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_build_policyengine_entity_tables_keeps_positive_income_adult_heads PASSED [ 35%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_build_policyengine_entity_tables_preserves_tax_unit_agi_inputs PASSED [ 36%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_build_policyengine_entity_tables_deduplicates_repeated_tax_unit_ald_values PASSED [ 37%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_build_policyengine_entity_tables_preserved_tax_units_require_reciprocal_spouse_pointer_for_joint PASSED [ 37%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_build_policyengine_entity_tables_preserved_tax_units_keep_joint_for_reciprocal_spouse_pointer PASSED [ 38%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_build_policyengine_entity_tables_falls_back_when_existing_tax_unit_ids_cross_households PASSED [ 39%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_build_policyengine_entity_tables_partially_preserves_existing_tax_unit_ids PASSED [ 39%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_build_from_source_providers_accepts_year_specific_query_keys PASSED [ 40%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_integrate_donor_sources_models_dividends_compositionally PASSED [ 41%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_integrate_donor_sources_models_unrelated_tax_variables_in_separate_blocks PASSED [ 41%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_integrate_donor_sources_can_use_zi_qrf_backend PASSED [ 42%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_integrate_donor_sources_preserves_informative_scaffold_values PASSED [ 43%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_integrate_donor_sources_allows_authoritative_override_for_shared_irs_variables PASSED [ 44%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_integrate_donor_sources_zeroes_minor_employment_income_after_authoritative_override PASSED [ 44%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_integrate_donor_sources_zeroes_retired_senior_employment_income_without_esi PASSED [ 45%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_integrate_donor_sources_normalizes_social_security_before_senior_wage_guard PASSED [ 46%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_export_policyengine_dataset PASSED [ 46%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_export_policyengine_dataset_passes_direct_overrides PASSED [ 47%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_augment_policyengine_person_inputs_materializes_non_sch_d_capital_gains PASSED [ 48%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_augment_policyengine_person_inputs_materializes_agi_parity_inputs PASSED [ 48%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_augment_policyengine_person_inputs_derives_marital_status_flags_from_cps_codes PASSED [ 49%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_augment_policyengine_person_inputs_derives_marital_status_flags_from_filing_status_code PASSED [ 50%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_calibrate_policyengine_tables_from_db PASSED [ 51%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_calibrate_policyengine_tables_residualizes_and_appends_forbes_spine PASSED [ 51%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_calibrate_policyengine_tables_none_backend_preserves_original_weights PASSED [ 52%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_calibrate_policyengine_tables_from_db_with_sparse_backend PASSED [ 53%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_synthesize_seed_backend_preserves_seed_support PASSED [ 53%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_calibrate_policyengine_tables_can_prune_to_household_budget PASSED [ 54%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_calibrate_policyengine_tables_from_db_can_use_pe_native_selection_backend PASSED [ 55%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_calibrate_policyengine_tables_pe_native_selection_can_preallocate_state_floor PASSED [ 55%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_selection_optimizer_kwargs_passes_target_total_weight PASSED [ 56%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_selection_optimizer_kwargs_omits_target_total_weight_when_none PASSED [ 57%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_calibrate_policyengine_tables_from_db_with_hardconcrete_backend PASSED [ 58%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_calibrate_policyengine_tables_from_db_with_pe_l0_backend PASSED [ 58%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_calibrate_policyengine_tables_flags_weight_collapse PASSED [ 59%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_calibrate_policyengine_tables_can_rescale_back_to_input_weight_sum PASSED [ 60%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_calibrate_policyengine_tables_can_rescale_to_target_weight_sum PASSED [ 60%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_summarize_weight_diagnostics_flags_low_effective_sample_ratio PASSED [ 61%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_select_feasible_policyengine_calibration_constraints_caps_budget PASSED [ 62%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_select_feasible_policyengine_calibration_constraints_drops_low_support_rows PASSED [ 62%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_calibrate_policyengine_tables_applies_feasibility_constraint_budget PASSED [ 63%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_calibrate_policyengine_tables_warns_when_many_constraints_are_dropped PASSED [ 64%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_calibrate_policyengine_tables_runs_deferred_low_support_stage PASSED [ 65%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_calibrate_policyengine_tables_skips_deferred_stage_below_trigger_threshold PASSED [ 65%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_calibrate_policyengine_tables_marks_materialization_failures_audit_only PASSED [ 66%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_policyengine_target_provider_returns_canonical_specs PASSED [ 67%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_calibrate_policyengine_tables_from_db_with_simulated_variable PASSED [ 67%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_calibrate_policyengine_tables_skips_failed_materialized_variables PASSED [ 68%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_calibrate_policyengine_tables_uses_calibration_target_filters PASSED [ 69%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_build_policyengine_target_query_includes_named_target_profile PASSED [ 69%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_build_policyengine_target_query_prefers_calibration_profile_override PASSED [ 70%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_load_inputs_from_directory PASSED [ 71%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_build_weight_calibrator_respects_iteration_and_tolerance_config PASSED [ 72%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_build_from_data_dir_can_prefer_cached_cps_asec_source PASSED [ 72%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_build_from_source_provider PASSED [ 73%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_build_from_source_provider_requires_household_person_relationship PASSED [ 74%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_build_from_frames_prefers_scaffold_with_valid_geography PASSED [ 74%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_build_from_frames_prefers_scaffold_with_state_program_proxies PASSED [ 75%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_build_from_source_provider_promotes_state_program_proxies_to_conditions PASSED [ 76%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_build_from_frames_skips_non_numeric_donor_imputation_targets PASSED [ 76%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_integrate_donor_sources_restricts_puf_to_authoritative_variables PASSED [ 77%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_integrate_donor_sources_respects_excluded_variables PASSED [ 78%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_default_build_config_excludes_filing_status_code_from_donor_imputation PASSED [ 79%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_build_config_can_opt_back_into_filing_status_code_donor_imputation PASSED [ 79%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_integrate_donor_sources_drops_constant_donor_conditions PASSED [ 80%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_integrate_donor_sources_selects_top_correlated_condition_vars PASSED [ 81%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_augment_donor_condition_frame_for_targets_derives_pe_style_puf_predictors PASSED [ 81%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_resolve_preferred_donor_condition_vars_uses_available_block_predictors PASSED [ 82%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_resolve_challenger_shared_condition_vars_uses_source_native_puf_overlap PASSED [ 83%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_select_donor_condition_vars_keeps_all_shared_distinct_from_pe_presets PASSED [ 83%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_integrate_donor_sources_uses_pe_style_puf_predictors_for_generic_irs_vars PASSED [ 84%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_integrate_donor_sources_pe_plus_puf_native_challenger_widens_pe_surface PASSED [ 85%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_integrate_donor_sources_uses_pe_prespecified_acs_predictors PASSED [ 86%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_integrate_donor_sources_pe_prespecified_falls_back_for_unmapped_sources PASSED [ 86%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_integrate_donor_sources_keeps_person_native_irs_blocks_on_person_rows_when_ids_present PASSED [ 87%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_integrate_donor_sources_allows_person_conditions_for_labor_tax_unit_blocks PASSED [ 88%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_project_frame_to_entity_uses_variable_projection_aggregation PASSED [ 88%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_integrate_donor_sources_projects_spm_unit_native_blocks_when_ids_missing PASSED [ 89%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_strip_generated_entity_ids_drops_helper_ids_missing_from_scaffold PASSED [ 90%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_strip_generated_entity_ids_preserves_observed_scaffold_ids PASSED [ 90%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_build_from_frames_drops_generated_entity_ids_before_stage5 PASSED [ 91%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_build_from_frames_rank_matches_generated_donor_values PASSED [ 92%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_rank_match_donor_values_preserves_zero_inflated_positive_support PASSED [ 93%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_rank_match_donor_values_respects_weighted_positive_rate PASSED [ 93%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_build_from_source_provider_defaults_missing_optional_variables PASSED [ 94%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_build_from_source_provider_prefers_household_scoped_merge_columns PASSED [ 95%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_synthesizer_uses_observed_source_coverage PASSED [ 95%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_synthesizer_handles_state_program_proxy_condition_vars PASSED [ 96%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_constant_has_medicaid_is_not_auto_promoted_to_condition_var PASSED [ 97%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_ensure_target_support_handles_bool_destination_columns PASSED [ 97%]
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_build_from_missing_directory_raises PASSED [ 98%]
tests/pipelines/test_us.py::TestUSMicroplexBuildResult::test_nonzero_weight_count PASSED [ 99%]
tests/pipelines/test_us.py::TestUSMicroplexBuildResult::test_total_weighted_population PASSED [100%]
=============================== warnings summary ===============================
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_calibrate_policyengine_tables_pe_native_selection_can_preallocate_state_floor
/Users/maxghenis/.codex-worktrees/microplex-us-tax-unit-coherence-20260529/tests/pipelines/test_us.py:3869: UserWarning: Calibration did not converge on one or more selected constraint sets.
pipeline.calibrate_policyengine_tables(tables)
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_calibrate_policyengine_tables_flags_weight_collapse
/Users/maxghenis/.codex-worktrees/microplex-us-tax-unit-coherence-20260529/tests/pipelines/test_us.py:4097: UserWarning: Calibration did not converge on one or more selected constraint sets.
_, calibrated_persons, summary = pipeline.calibrate_policyengine_tables(tables)
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_calibrate_policyengine_tables_applies_feasibility_constraint_budget
/Users/maxghenis/.codex-worktrees/microplex-us-tax-unit-coherence-20260529/tests/pipelines/test_us.py:4386: UserWarning: Calibration feasibility filter dropped 1/2 constraints (50.0%) before solving.
calibrated_tables, _, summary = pipeline.calibrate_policyengine_tables(tables)
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_calibrate_policyengine_tables_runs_deferred_low_support_stage
/Users/maxghenis/.codex-worktrees/microplex-us-tax-unit-coherence-20260529/tests/pipelines/test_us.py:4532: UserWarning: Calibration feasibility filter dropped 1/2 constraints (50.0%) before solving.
_, _, summary = pipeline.calibrate_policyengine_tables(tables)
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_calibrate_policyengine_tables_skips_deferred_stage_below_trigger_threshold
/Users/maxghenis/.codex-worktrees/microplex-us-tax-unit-coherence-20260529/tests/pipelines/test_us.py:4583: UserWarning: Calibration feasibility filter dropped 1/2 constraints (50.0%) before solving.
_, _, summary = pipeline.calibrate_policyengine_tables(tables)
tests/pipelines/test_us.py::TestUSMicroplexPipeline::test_synthesizer_handles_state_program_proxy_condition_vars
/Users/maxghenis/.codex-worktrees/microplex-us-tax-unit-coherence-20260529/.venv/lib/python3.13/site-packages/microplex/transforms.py:350: UserWarning: Fitting zero-inflated transformer with no positive support; using an identity standardizer fallback.
transformer.fit(data[var_name], weights)
-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
======================= 143 passed, 6 warnings in 9.31s ========================
Addresses #76. Full sound eCPS replacement scoring still needs to be rerun after this structural fix is materialized into an H5.