Skip to content

Add spec-driven ASEC support spine - #221

Merged
MaxGhenis merged 1 commit into
mainfrom
codex/historical-asec-pooling-20260629
Jun 29, 2026
Merged

Add spec-driven ASEC support spine#221
MaxGhenis merged 1 commit into
mainfrom
codex/historical-asec-pooling-20260629

Conversation

@MaxGhenis

@MaxGhenis MaxGhenis commented Jun 29, 2026

Copy link
Copy Markdown
Contributor

Summary

  • adds a packaged US support_spine.json declaring a period-relative current/prior ASEC pool
  • adds shared support-spine manifest parsing and validation for declarative source roles, offsets, shares, and citations
  • requires every support-spine source to declare an explicit share; the builder rejects extra --asec-h5 mappings in spec mode
  • wires tools/build_us_puf_support_base.py so --support-spine-spec default resolves runtime YEAR=PATH ASEC inputs from the packaged spec
  • keeps local paths out of the country package; the manifest owns roles and shares, while the build command supplies files
  • lazily resolves the QRF fitter while preserving the existing puf_support.QRF test seam

Validation

  • uv run --python 3.13 --package populace-build --extra us --group dev pytest packages/populace-build/tests/test_us_puf_support_base_builder.py packages/populace-build/tests/test_us_plan.py -q
  • uv run --python 3.13 --package populace-build --extra us --group dev pytest packages/populace-build/tests/test_spec_only_country_packages.py packages/populace-build/tests/test_us_asec_pool.py packages/populace-build/tests/test_us_puf_support_base_builder.py packages/populace-build/tests/test_us_plan.py -q
  • uv run --python 3.13 --package populace-build --extra us --group dev pytest packages/populace-build/tests/test_us_puf_support.py::test_puf_tax_detail_snaps_sparse_taxable_interest_to_observed_zero packages/populace-build/tests/test_us_puf_support.py::test_puf_tax_detail_imputation_reconciles_social_security_components packages/populace-build/tests/test_us_puf_support.py::test_puf_tax_detail_imputation_snaps_origination_years_to_donor_values packages/populace-build/tests/test_spec_only_country_packages.py packages/populace-build/tests/test_us_asec_pool.py packages/populace-build/tests/test_us_puf_support_base_builder.py packages/populace-build/tests/test_us_plan.py -q
  • uv run --python 3.13 --package populace-build --extra us --group dev ruff check tools/build_us_puf_support_base.py packages/populace-build/tests/test_us_puf_support_base_builder.py packages/populace-build/tests/test_us_plan.py packages/populace-build/src/populace/build/source_manifest.py packages/populace-build/src/populace/build/us_runtime/__init__.py packages/populace-build/src/populace/build/us_runtime/puf_support.py
  • uv run --python 3.13 --package populace-build --extra us --group dev ruff format --check tools/build_us_puf_support_base.py packages/populace-build/tests/test_us_puf_support_base_builder.py packages/populace-build/tests/test_us_plan.py packages/populace-build/src/populace/build/source_manifest.py packages/populace-build/src/populace/build/us_runtime/__init__.py packages/populace-build/src/populace/build/us_runtime/puf_support.py
  • git diff --check
  • bounded smoke build with --support-spine-spec default, 50 households per ASEC source, and --n-estimators 2; output summary confirmed current ASEC resolved to 2024, prior ASEC resolved to 2023, each at 0.5 share, with the packaged spec recorded in provenance

Review cycle

  • Read-only review found two spec-contract gaps: shareless specs could fall back to equal shares, and spec mode ignored extra ASEC mappings.
  • Both are fixed with negative tests.

Notes

This is a pipeline/spec refactor and smoke validation only. It does not publish or promote a new dataset.

@MaxGhenis
MaxGhenis force-pushed the codex/historical-asec-pooling-20260629 branch from 5589906 to 31e887e Compare June 29, 2026 06:52
@MaxGhenis
MaxGhenis force-pushed the codex/historical-asec-pooling-20260629 branch from 31e887e to 1998430 Compare June 29, 2026 07:03
@MaxGhenis
MaxGhenis merged commit b451bc7 into main Jun 29, 2026
4 checks passed
@MaxGhenis
MaxGhenis deleted the codex/historical-asec-pooling-20260629 branch June 29, 2026 11:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant