policyengine 6.7.4__tar.gz → 6.7.6__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (437) hide show
  1. {policyengine-6.7.4 → policyengine-6.7.6}/.github/workflows/certify-uk-release.yaml +8 -1
  2. {policyengine-6.7.4 → policyengine-6.7.6}/CHANGELOG.md +14 -0
  3. {policyengine-6.7.4/src/policyengine.egg-info → policyengine-6.7.6}/PKG-INFO +1 -1
  4. {policyengine-6.7.4 → policyengine-6.7.6}/docs/bundles.md +1 -3
  5. {policyengine-6.7.4 → policyengine-6.7.6}/docs/engineering/runbooks/build-m-us-populace-certification.md +3 -17
  6. {policyengine-6.7.4 → policyengine-6.7.6}/docs/engineering/runbooks/us-legacy-spm-sources.md +18 -3
  7. {policyengine-6.7.4 → policyengine-6.7.6}/docs/engineering/skills/data-certification.md +2 -27
  8. {policyengine-6.7.4 → policyengine-6.7.6}/docs/regions.md +4 -9
  9. {policyengine-6.7.4 → policyengine-6.7.6}/docs/release-bundles.md +1 -2
  10. {policyengine-6.7.4 → policyengine-6.7.6}/pyproject.toml +1 -1
  11. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/data/bundle/manifest.json +16 -16
  12. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/data/bundle/uk.trace.tro.jsonld +5 -5
  13. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/data/bundle/us.trace.tro.jsonld +5 -5
  14. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/tax_benefit_models/us/legacy_spm/__init__.py +4 -2
  15. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/tax_benefit_models/us/legacy_spm/registry.py +37 -6
  16. {policyengine-6.7.4 → policyengine-6.7.6/src/policyengine.egg-info}/PKG-INFO +1 -1
  17. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_release_manifests.py +7 -23
  18. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_us_legacy_spm.py +72 -3
  19. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_us_legacy_spm_integration.py +115 -0
  20. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_us_regions.py +8 -11
  21. {policyengine-6.7.4 → policyengine-6.7.6}/uv.lock +1 -1
  22. {policyengine-6.7.4 → policyengine-6.7.6}/.claude/policyengine-guide.md +0 -0
  23. {policyengine-6.7.4 → policyengine-6.7.6}/.claude/quick-reference.md +0 -0
  24. {policyengine-6.7.4 → policyengine-6.7.6}/.github/CONTRIBUTING.md +0 -0
  25. {policyengine-6.7.4 → policyengine-6.7.6}/.github/bump_version.py +0 -0
  26. {policyengine-6.7.4 → policyengine-6.7.6}/.github/capture-version.sh +0 -0
  27. {policyengine-6.7.4 → policyengine-6.7.6}/.github/changelog_template.md +0 -0
  28. {policyengine-6.7.4 → policyengine-6.7.6}/.github/check-changelog.sh +0 -0
  29. {policyengine-6.7.4 → policyengine-6.7.6}/.github/copilot-instructions.md +0 -0
  30. {policyengine-6.7.4 → policyengine-6.7.6}/.github/dispatch-policyengine-release.sh +0 -0
  31. {policyengine-6.7.4 → policyengine-6.7.6}/.github/fetch_version.py +0 -0
  32. {policyengine-6.7.4 → policyengine-6.7.6}/.github/get-changelog-diff.sh +0 -0
  33. {policyengine-6.7.4 → policyengine-6.7.6}/.github/has-functional-changes.sh +0 -0
  34. {policyengine-6.7.4 → policyengine-6.7.6}/.github/is-version-number-acceptable.sh +0 -0
  35. {policyengine-6.7.4 → policyengine-6.7.6}/.github/publish-git-tag.sh +0 -0
  36. {policyengine-6.7.4 → policyengine-6.7.6}/.github/qualification-ledger.sh +0 -0
  37. {policyengine-6.7.4 → policyengine-6.7.6}/.github/wait-for-pypi.sh +0 -0
  38. {policyengine-6.7.4 → policyengine-6.7.6}/.github/workflows/draft-pdf.yml +0 -0
  39. {policyengine-6.7.4 → policyengine-6.7.6}/.github/workflows/pr_code_changes.yaml +0 -0
  40. {policyengine-6.7.4 → policyengine-6.7.6}/.github/workflows/pr_docs_changes.yaml +0 -0
  41. {policyengine-6.7.4 → policyengine-6.7.6}/.github/workflows/push.yaml +0 -0
  42. {policyengine-6.7.4 → policyengine-6.7.6}/.gitignore +0 -0
  43. {policyengine-6.7.4 → policyengine-6.7.6}/.python-version +0 -0
  44. {policyengine-6.7.4 → policyengine-6.7.6}/AGENTS.md +0 -0
  45. {policyengine-6.7.4 → policyengine-6.7.6}/CITATION.cff +0 -0
  46. {policyengine-6.7.4 → policyengine-6.7.6}/CLAUDE.md +0 -0
  47. {policyengine-6.7.4 → policyengine-6.7.6}/CODE_OF_CONDUCT.md +0 -0
  48. {policyengine-6.7.4 → policyengine-6.7.6}/CONTRIBUTING.md +0 -0
  49. {policyengine-6.7.4 → policyengine-6.7.6}/LICENSE +0 -0
  50. {policyengine-6.7.4 → policyengine-6.7.6}/Makefile +0 -0
  51. {policyengine-6.7.4 → policyengine-6.7.6}/README.md +0 -0
  52. {policyengine-6.7.4 → policyengine-6.7.6}/architecture.png +0 -0
  53. {policyengine-6.7.4 → policyengine-6.7.6}/architecture.svg +0 -0
  54. {policyengine-6.7.4 → policyengine-6.7.6}/changelog.d/.gitkeep +0 -0
  55. {policyengine-6.7.4 → policyengine-6.7.6}/docs/.gitignore +0 -0
  56. {policyengine-6.7.4 → policyengine-6.7.6}/docs/_generator/README.md +0 -0
  57. {policyengine-6.7.4 → policyengine-6.7.6}/docs/_generator/build_reference.py +0 -0
  58. {policyengine-6.7.4 → policyengine-6.7.6}/docs/_quarto.yml +0 -0
  59. {policyengine-6.7.4 → policyengine-6.7.6}/docs/countries.md +0 -0
  60. {policyengine-6.7.4 → policyengine-6.7.6}/docs/data-publishing-design.md +0 -0
  61. {policyengine-6.7.4 → policyengine-6.7.6}/docs/decile-impact-spec.md +0 -0
  62. {policyengine-6.7.4 → policyengine-6.7.6}/docs/dev.md +0 -0
  63. {policyengine-6.7.4 → policyengine-6.7.6}/docs/disclosure.md +0 -0
  64. {policyengine-6.7.4 → policyengine-6.7.6}/docs/engineering/runbooks/acs-local-wic-replacement.md +0 -0
  65. {policyengine-6.7.4 → policyengine-6.7.6}/docs/engineering/runbooks/canonical-spm-development.md +0 -0
  66. {policyengine-6.7.4 → policyengine-6.7.6}/docs/engineering/runbooks/uk-qualification.md +0 -0
  67. {policyengine-6.7.4 → policyengine-6.7.6}/docs/engineering/skills/README.md +0 -0
  68. {policyengine-6.7.4 → policyengine-6.7.6}/docs/engineering/skills/github-prs.md +0 -0
  69. {policyengine-6.7.4 → policyengine-6.7.6}/docs/engineering/skills/repository-guidance.md +0 -0
  70. {policyengine-6.7.4 → policyengine-6.7.6}/docs/examples.md +0 -0
  71. {policyengine-6.7.4 → policyengine-6.7.6}/docs/getting-started.md +0 -0
  72. {policyengine-6.7.4 → policyengine-6.7.6}/docs/households.md +0 -0
  73. {policyengine-6.7.4 → policyengine-6.7.6}/docs/impact-analysis.md +0 -0
  74. {policyengine-6.7.4 → policyengine-6.7.6}/docs/index.md +0 -0
  75. {policyengine-6.7.4 → policyengine-6.7.6}/docs/methodology/index.md +0 -0
  76. {policyengine-6.7.4 → policyengine-6.7.6}/docs/methodology/model-architecture.md +0 -0
  77. {policyengine-6.7.4 → policyengine-6.7.6}/docs/methodology/us-health-costs.md +0 -0
  78. {policyengine-6.7.4 → policyengine-6.7.6}/docs/microsim.md +0 -0
  79. {policyengine-6.7.4 → policyengine-6.7.6}/docs/outputs.md +0 -0
  80. {policyengine-6.7.4 → policyengine-6.7.6}/docs/programs/index.md +0 -0
  81. {policyengine-6.7.4 → policyengine-6.7.6}/docs/programs/us-chip.md +0 -0
  82. {policyengine-6.7.4 → policyengine-6.7.6}/docs/receipts.md +0 -0
  83. {policyengine-6.7.4 → policyengine-6.7.6}/docs/reference/index.md +0 -0
  84. {policyengine-6.7.4 → policyengine-6.7.6}/docs/reforms.md +0 -0
  85. {policyengine-6.7.4 → policyengine-6.7.6}/docs/run-records.md +0 -0
  86. {policyengine-6.7.4 → policyengine-6.7.6}/docs/trace-case-study.md +0 -0
  87. {policyengine-6.7.4 → policyengine-6.7.6}/docs/visualisation.md +0 -0
  88. {policyengine-6.7.4 → policyengine-6.7.6}/examples/belgium_axiom_pilot.py +0 -0
  89. {policyengine-6.7.4 → policyengine-6.7.6}/examples/employment_income_variation_uk.py +0 -0
  90. {policyengine-6.7.4 → policyengine-6.7.6}/examples/employment_income_variation_us.py +0 -0
  91. {policyengine-6.7.4 → policyengine-6.7.6}/examples/household_impact_example.py +0 -0
  92. {policyengine-6.7.4 → policyengine-6.7.6}/examples/income_bands_uk.py +0 -0
  93. {policyengine-6.7.4 → policyengine-6.7.6}/examples/income_distribution_us.py +0 -0
  94. {policyengine-6.7.4 → policyengine-6.7.6}/examples/paper_repro_uk.py +0 -0
  95. {policyengine-6.7.4 → policyengine-6.7.6}/examples/policy_change_uk.py +0 -0
  96. {policyengine-6.7.4 → policyengine-6.7.6}/examples/speedtest_us_simulation.py +0 -0
  97. {policyengine-6.7.4 → policyengine-6.7.6}/examples/uk_geography_disclosure.py +0 -0
  98. {policyengine-6.7.4 → policyengine-6.7.6}/examples/us_budgetary_impact.py +0 -0
  99. {policyengine-6.7.4 → policyengine-6.7.6}/paper-preview.html +0 -0
  100. {policyengine-6.7.4 → policyengine-6.7.6}/paper.bib +0 -0
  101. {policyengine-6.7.4 → policyengine-6.7.6}/paper.md +0 -0
  102. {policyengine-6.7.4 → policyengine-6.7.6}/scripts/bundle.py +0 -0
  103. {policyengine-6.7.4 → policyengine-6.7.6}/scripts/certify_data_release.py +0 -0
  104. {policyengine-6.7.4 → policyengine-6.7.6}/scripts/check_data_staleness.py +0 -0
  105. {policyengine-6.7.4 → policyengine-6.7.6}/scripts/check_native_spm_loading.py +0 -0
  106. {policyengine-6.7.4 → policyengine-6.7.6}/scripts/check_release_credentials.py +0 -0
  107. {policyengine-6.7.4 → policyengine-6.7.6}/scripts/check_uk_candidate.py +0 -0
  108. {policyengine-6.7.4 → policyengine-6.7.6}/scripts/export_bundle_release_assets.py +0 -0
  109. {policyengine-6.7.4 → policyengine-6.7.6}/scripts/generate_bundle_artifacts.py +0 -0
  110. {policyengine-6.7.4 → policyengine-6.7.6}/scripts/generate_receipt_schemas.py +0 -0
  111. {policyengine-6.7.4 → policyengine-6.7.6}/scripts/generate_trace_tros.py +0 -0
  112. {policyengine-6.7.4 → policyengine-6.7.6}/scripts/prepare_package_bundle_update.py +0 -0
  113. {policyengine-6.7.4 → policyengine-6.7.6}/scripts/release_consumers.py +0 -0
  114. {policyengine-6.7.4 → policyengine-6.7.6}/scripts/release_lock.py +0 -0
  115. {policyengine-6.7.4 → policyengine-6.7.6}/scripts/spm_bundle.py +0 -0
  116. {policyengine-6.7.4 → policyengine-6.7.6}/setup.cfg +0 -0
  117. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/__init__.py +0 -0
  118. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/bundle.py +0 -0
  119. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/cli.py +0 -0
  120. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/core/__init__.py +0 -0
  121. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/core/cache.py +0 -0
  122. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/core/dataset.py +0 -0
  123. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/core/dynamic.py +0 -0
  124. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/core/output.py +0 -0
  125. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/core/parameter.py +0 -0
  126. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/core/parameter_node.py +0 -0
  127. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/core/parameter_value.py +0 -0
  128. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/core/policy.py +0 -0
  129. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/core/region.py +0 -0
  130. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/core/run_record.py +0 -0
  131. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/core/scoping_strategy.py +0 -0
  132. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/core/simulation.py +0 -0
  133. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/core/spm.py +0 -0
  134. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/core/tax_benefit_model.py +0 -0
  135. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/core/tax_benefit_model_version.py +0 -0
  136. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/core/variable.py +0 -0
  137. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/countries/__init__.py +0 -0
  138. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/countries/uk/__init__.py +0 -0
  139. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/countries/uk/regions.py +0 -0
  140. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/countries/us/__init__.py +0 -0
  141. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/countries/us/data/__init__.py +0 -0
  142. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/countries/us/data/districts.py +0 -0
  143. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/countries/us/data/places.py +0 -0
  144. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/countries/us/data/states.py +0 -0
  145. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/countries/us/regions.py +0 -0
  146. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/data/__init__.py +0 -0
  147. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/data/qualification/replay_policy.md +0 -0
  148. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/data/qualification/uk.json +0 -0
  149. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/data/qualification/uk_budget_critical_inputs.json +0 -0
  150. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/data/qualification/uk_replay_exceptions.json +0 -0
  151. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/data/qualification/uk_review_bounds.json +0 -0
  152. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/data/schemas/execution_receipt.v1.schema.json +0 -0
  153. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/data/schemas/trace_tro.schema.json +0 -0
  154. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/data/schemas/vendor/policyengine-scorecard/README.md +0 -0
  155. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/data/schemas/vendor/policyengine-scorecard/qualification_request.v1.json +0 -0
  156. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/data/schemas/vendor/policyengine-scorecard/replay_receipt.v1.json +0 -0
  157. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/data/schemas/vendor/policyengine-scorecard/replay_status.v1.json +0 -0
  158. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/data/uk_geography_assets.py +0 -0
  159. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/derivations/__init__.py +0 -0
  160. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/derivations/narrate.py +0 -0
  161. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/derivations/trace.py +0 -0
  162. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/disclosure/__init__.py +0 -0
  163. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/disclosure/__main__.py +0 -0
  164. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/disclosure/areas.py +0 -0
  165. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/disclosure/estimate.py +0 -0
  166. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/disclosure/noise.py +0 -0
  167. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/disclosure/release.py +0 -0
  168. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/disclosure/schema.py +0 -0
  169. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/disclosure/support.py +0 -0
  170. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/disclosure/validate.py +0 -0
  171. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/graph/__init__.py +0 -0
  172. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/graph/extractor.py +0 -0
  173. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/graph/graph.py +0 -0
  174. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/outputs/__init__.py +0 -0
  175. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/outputs/aggregate.py +0 -0
  176. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/outputs/change_aggregate.py +0 -0
  177. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/outputs/cliff_impact.py +0 -0
  178. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/outputs/congressional_district_impact.py +0 -0
  179. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/outputs/constituency_impact.py +0 -0
  180. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/outputs/decile_analysis.py +0 -0
  181. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/outputs/decile_grouping.py +0 -0
  182. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/outputs/decile_impact.py +0 -0
  183. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/outputs/extra_variables.py +0 -0
  184. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/outputs/inequality.py +0 -0
  185. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/outputs/intra_decile_impact.py +0 -0
  186. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/outputs/labor_supply_response.py +0 -0
  187. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/outputs/local_authority_impact.py +0 -0
  188. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/outputs/poverty.py +0 -0
  189. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/outputs/program_statistics.py +0 -0
  190. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/outputs/uk_geography_assets.py +0 -0
  191. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/outputs/uk_geography_disclosure.py +0 -0
  192. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/outputs/uk_geography_impact.py +0 -0
  193. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/provenance/__init__.py +0 -0
  194. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/provenance/bundle_validation.py +0 -0
  195. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/provenance/bytecode.py +0 -0
  196. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/provenance/canonical.py +0 -0
  197. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/provenance/certification.py +0 -0
  198. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/provenance/dataset_materialization.py +0 -0
  199. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/provenance/loaded.py +0 -0
  200. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/provenance/manifest.py +0 -0
  201. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/provenance/pyproject_pins.py +0 -0
  202. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/provenance/qualification.py +0 -0
  203. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/provenance/qualification_ledger.py +0 -0
  204. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/provenance/receipt.py +0 -0
  205. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/provenance/replay_probe.py +0 -0
  206. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/provenance/spm_configuration.py +0 -0
  207. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/provenance/trace.py +0 -0
  208. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/provenance/uk_candidate.py +0 -0
  209. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/provenance/uk_qualification.py +0 -0
  210. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/provenance/verify.py +0 -0
  211. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/provenance/wheels.py +0 -0
  212. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/provenance/zenodo.py +0 -0
  213. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/results/__init__.py +0 -0
  214. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/results/schema.py +0 -0
  215. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/results/trace_tro.py +0 -0
  216. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/results/tracking.py +0 -0
  217. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/tax_benefit_models/be/__init__.py +0 -0
  218. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/tax_benefit_models/be/datasets.py +0 -0
  219. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/tax_benefit_models/be/model.py +0 -0
  220. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/tax_benefit_models/common/__init__.py +0 -0
  221. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/tax_benefit_models/common/axes.py +0 -0
  222. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/tax_benefit_models/common/extra_variables.py +0 -0
  223. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/tax_benefit_models/common/household.py +0 -0
  224. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/tax_benefit_models/common/model_version.py +0 -0
  225. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/tax_benefit_models/common/reform.py +0 -0
  226. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/tax_benefit_models/common/result.py +0 -0
  227. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/tax_benefit_models/uk/__init__.py +0 -0
  228. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/tax_benefit_models/uk/analysis.py +0 -0
  229. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/tax_benefit_models/uk/budget_reform_contract.py +0 -0
  230. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/tax_benefit_models/uk/budget_reform_population.py +0 -0
  231. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/tax_benefit_models/uk/capital_gains_responses.py +0 -0
  232. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/tax_benefit_models/uk/datasets.py +0 -0
  233. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/tax_benefit_models/uk/household.py +0 -0
  234. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/tax_benefit_models/uk/model.py +0 -0
  235. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/tax_benefit_models/us/__init__.py +0 -0
  236. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/tax_benefit_models/us/analysis.py +0 -0
  237. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/tax_benefit_models/us/datasets.py +0 -0
  238. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/tax_benefit_models/us/household.py +0 -0
  239. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/tax_benefit_models/us/legacy_inputs.py +0 -0
  240. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/tax_benefit_models/us/legacy_spm/declarations.py +0 -0
  241. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/tax_benefit_models/us/legacy_spm/independence.py +0 -0
  242. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/tax_benefit_models/us/legacy_spm/model_adapter.py +0 -0
  243. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/tax_benefit_models/us/legacy_spm/record.py +0 -0
  244. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/tax_benefit_models/us/legacy_spm/runs.py +0 -0
  245. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/tax_benefit_models/us/legacy_spm/universe.py +0 -0
  246. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/tax_benefit_models/us/model.py +0 -0
  247. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/tax_benefit_models/us/spm.py +0 -0
  248. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/utils/__init__.py +0 -0
  249. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/utils/dates.py +0 -0
  250. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/utils/design.py +0 -0
  251. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/utils/entity_utils.py +0 -0
  252. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/utils/errors.py +0 -0
  253. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/utils/hashing.py +0 -0
  254. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/utils/household_validation.py +0 -0
  255. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/utils/parameter_labels.py +0 -0
  256. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/utils/parametric_reforms.py +0 -0
  257. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/utils/plotting.py +0 -0
  258. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine.egg-info/SOURCES.txt +0 -0
  259. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine.egg-info/dependency_links.txt +0 -0
  260. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine.egg-info/entry_points.txt +0 -0
  261. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine.egg-info/requires.txt +0 -0
  262. {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine.egg-info/top_level.txt +0 -0
  263. {policyengine-6.7.4 → policyengine-6.7.6}/tests/__init__.py +0 -0
  264. {policyengine-6.7.4 → policyengine-6.7.6}/tests/conftest.py +0 -0
  265. {policyengine-6.7.4 → policyengine-6.7.6}/tests/fixtures/__init__.py +0 -0
  266. {policyengine-6.7.4 → policyengine-6.7.6}/tests/fixtures/filtering_fixtures.py +0 -0
  267. {policyengine-6.7.4 → policyengine-6.7.6}/tests/fixtures/household_calculator_snapshots/uk_couple_two_kids.json +0 -0
  268. {policyengine-6.7.4 → policyengine-6.7.6}/tests/fixtures/household_calculator_snapshots/uk_model_surface.json +0 -0
  269. {policyengine-6.7.4 → policyengine-6.7.6}/tests/fixtures/household_calculator_snapshots/uk_single_adult_employment_income.json +0 -0
  270. {policyengine-6.7.4 → policyengine-6.7.6}/tests/fixtures/household_calculator_snapshots/uk_single_adult_no_income.json +0 -0
  271. {policyengine-6.7.4 → policyengine-6.7.6}/tests/fixtures/household_calculator_snapshots/uk_single_parent_one_child.json +0 -0
  272. {policyengine-6.7.4 → policyengine-6.7.6}/tests/fixtures/household_calculator_snapshots/us_married_two_kids_high_income.json +0 -0
  273. {policyengine-6.7.4 → policyengine-6.7.6}/tests/fixtures/household_calculator_snapshots/us_model_surface.json +0 -0
  274. {policyengine-6.7.4 → policyengine-6.7.6}/tests/fixtures/household_calculator_snapshots/us_single_adult_employment_income.json +0 -0
  275. {policyengine-6.7.4 → policyengine-6.7.6}/tests/fixtures/household_calculator_snapshots/us_single_adult_no_income.json +0 -0
  276. {policyengine-6.7.4 → policyengine-6.7.6}/tests/fixtures/household_calculator_snapshots/us_single_parent_one_child.json +0 -0
  277. {policyengine-6.7.4 → policyengine-6.7.6}/tests/fixtures/parameter_labels_fixtures.py +0 -0
  278. {policyengine-6.7.4 → policyengine-6.7.6}/tests/fixtures/parametric_reforms_fixtures.py +0 -0
  279. {policyengine-6.7.4 → policyengine-6.7.6}/tests/fixtures/poverty_by_demographics_fixtures.py +0 -0
  280. {policyengine-6.7.4 → policyengine-6.7.6}/tests/fixtures/region_fixtures.py +0 -0
  281. {policyengine-6.7.4 → policyengine-6.7.6}/tests/fixtures/release_tros/README.md +0 -0
  282. {policyengine-6.7.4 → policyengine-6.7.6}/tests/fixtures/release_tros/country-models.lock.toml +0 -0
  283. {policyengine-6.7.4 → policyengine-6.7.6}/tests/fixtures/release_tros/manifest.json +0 -0
  284. {policyengine-6.7.4 → policyengine-6.7.6}/tests/fixtures/release_tros/us-release_manifest.json +0 -0
  285. {policyengine-6.7.4 → policyengine-6.7.6}/tests/fixtures/release_tros/us.trace.tro.jsonld +0 -0
  286. {policyengine-6.7.4 → policyengine-6.7.6}/tests/fixtures/replay_exceptions/README.md +0 -0
  287. {policyengine-6.7.4 → policyengine-6.7.6}/tests/fixtures/replay_exceptions/main_policy_metadata.json +0 -0
  288. {policyengine-6.7.4 → policyengine-6.7.6}/tests/fixtures/replay_exceptions/main_replay_policy.py.txt +0 -0
  289. {policyengine-6.7.4 → policyengine-6.7.6}/tests/fixtures/replay_exceptions/replay_receipt_uk2.134.7_failed.json +0 -0
  290. {policyengine-6.7.4 → policyengine-6.7.6}/tests/fixtures/replay_exceptions/uk2.134.7_budget_inputs.json +0 -0
  291. {policyengine-6.7.4 → policyengine-6.7.6}/tests/fixtures/replay_exceptions/uk2.134.7_budget_inputs.result.json +0 -0
  292. {policyengine-6.7.4 → policyengine-6.7.6}/tests/fixtures/replay_exceptions/uk2.134.7_qualification_receipt.json +0 -0
  293. {policyengine-6.7.4 → policyengine-6.7.6}/tests/fixtures/spm_development.py +0 -0
  294. {policyengine-6.7.4 → policyengine-6.7.6}/tests/fixtures/uk_contract/README.md +0 -0
  295. {policyengine-6.7.4 → policyengine-6.7.6}/tests/fixtures/uk_contract/evaluate_case_rows.json +0 -0
  296. {policyengine-6.7.4 → policyengine-6.7.6}/tests/fixtures/uk_contract/full_released_uk_2.135.0.json +0 -0
  297. {policyengine-6.7.4 → policyengine-6.7.6}/tests/fixtures/uk_contract/pinned_uk_2.125.1_defects.json +0 -0
  298. {policyengine-6.7.4 → policyengine-6.7.6}/tests/fixtures/uk_contract/population_pass_max_examples_0.json +0 -0
  299. {policyengine-6.7.4 → policyengine-6.7.6}/tests/fixtures/uk_metrics/README.md +0 -0
  300. {policyengine-6.7.4 → policyengine-6.7.6}/tests/fixtures/uk_metrics/budget_metrics_report.json +0 -0
  301. {policyengine-6.7.4 → policyengine-6.7.6}/tests/fixtures/uk_metrics/standard_reforms.yaml +0 -0
  302. {policyengine-6.7.4 → policyengine-6.7.6}/tests/fixtures/uk_replay/DIGESTS.json +0 -0
  303. {policyengine-6.7.4 → policyengine-6.7.6}/tests/fixtures/uk_replay/README.md +0 -0
  304. {policyengine-6.7.4 → policyengine-6.7.6}/tests/fixtures/uk_replay/qualification_request_golden.jcs +0 -0
  305. {policyengine-6.7.4 → policyengine-6.7.6}/tests/fixtures/uk_replay/qualification_request_golden.json +0 -0
  306. {policyengine-6.7.4 → policyengine-6.7.6}/tests/fixtures/uk_replay/receipt_6.4.1_attempt1/REPLAY_RECEIPT.json +0 -0
  307. {policyengine-6.7.4 → policyengine-6.7.6}/tests/fixtures/uk_replay/receipt_6.4.1_attempt1/REQUEST.json +0 -0
  308. {policyengine-6.7.4 → policyengine-6.7.6}/tests/fixtures/uk_replay/receipt_6.5.0/REPLAY_RECEIPT.json +0 -0
  309. {policyengine-6.7.4 → policyengine-6.7.6}/tests/fixtures/uk_replay/receipt_6.5.0/REQUEST.json +0 -0
  310. {policyengine-6.7.4 → policyengine-6.7.6}/tests/fixtures/uk_replay/receipt_6.5.0/STATUS.json +0 -0
  311. {policyengine-6.7.4 → policyengine-6.7.6}/tests/fixtures/uk_replay/replay_receipt_golden.jcs +0 -0
  312. {policyengine-6.7.4 → policyengine-6.7.6}/tests/fixtures/uk_replay/replay_receipt_golden.json +0 -0
  313. {policyengine-6.7.4 → policyengine-6.7.6}/tests/fixtures/us_reform_fixtures.py +0 -0
  314. {policyengine-6.7.4 → policyengine-6.7.6}/tests/fixtures/variable_label_fixtures.py +0 -0
  315. {policyengine-6.7.4 → policyengine-6.7.6}/tests/qualification_fixtures.py +0 -0
  316. {policyengine-6.7.4 → policyengine-6.7.6}/tests/receipt_modifiers.py +0 -0
  317. {policyengine-6.7.4 → policyengine-6.7.6}/tests/receipt_unbindable_modifiers.py +0 -0
  318. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_aggregate.py +0 -0
  319. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_be_axiom_pilot.py +0 -0
  320. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_budgetary_impact.py +0 -0
  321. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_bump_version.py +0 -0
  322. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_bundle.py +0 -0
  323. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_bundle_metadata.py +0 -0
  324. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_cache.py +0 -0
  325. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_canonical_json.py +0 -0
  326. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_certify_data_release.py +0 -0
  327. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_change_aggregate.py +0 -0
  328. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_cliff_impact.py +0 -0
  329. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_cliff_impact_analysis.py +0 -0
  330. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_congressional_district_impact.py +0 -0
  331. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_constituency_impact.py +0 -0
  332. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_dataset_materialization.py +0 -0
  333. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_dataset_persistence.py +0 -0
  334. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_dataset_runtime.py +0 -0
  335. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_dataset_source.py +0 -0
  336. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_decile_grouping.py +0 -0
  337. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_derivations.py +0 -0
  338. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_dict_reforms_on_simulation.py +0 -0
  339. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_disclosure_areas.py +0 -0
  340. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_disclosure_estimate.py +0 -0
  341. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_disclosure_noise.py +0 -0
  342. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_disclosure_release.py +0 -0
  343. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_disclosure_schema.py +0 -0
  344. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_disclosure_support.py +0 -0
  345. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_disclosure_validate.py +0 -0
  346. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_entity_mapping.py +0 -0
  347. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_entity_utils.py +0 -0
  348. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_entity_utils_characterization.py +0 -0
  349. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_errors.py +0 -0
  350. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_execution_receipt.py +0 -0
  351. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_extra_variables.py +0 -0
  352. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_filtering.py +0 -0
  353. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_generate_trace_tros.py +0 -0
  354. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_graph/__init__.py +0 -0
  355. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_graph/conftest.py +0 -0
  356. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_graph/test_extractor.py +0 -0
  357. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_household_calculator_snapshot.py +0 -0
  358. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_household_impact.py +0 -0
  359. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_inequality.py +0 -0
  360. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_intra_decile_impact.py +0 -0
  361. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_labor_supply_response.py +0 -0
  362. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_local_authority_impact.py +0 -0
  363. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_manifest_version_mismatch.py +0 -0
  364. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_models.py +0 -0
  365. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_pandas3_compatibility.py +0 -0
  366. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_parameter_labels.py +0 -0
  367. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_parameter_nodes.py +0 -0
  368. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_parameter_values.py +0 -0
  369. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_parametric_reforms.py +0 -0
  370. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_poverty.py +0 -0
  371. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_poverty_by_demographics.py +0 -0
  372. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_poverty_run.py +0 -0
  373. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_preservation_mirror.py +0 -0
  374. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_program_statistics.py +0 -0
  375. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_pyproject_pins.py +0 -0
  376. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_qualification_contracts.py +0 -0
  377. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_qualification_ledger_concurrency.py +0 -0
  378. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_qualification_ledger_script.py +0 -0
  379. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_qualified_pair_certification.py +0 -0
  380. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_region.py +0 -0
  381. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_region_group_strategy.py +0 -0
  382. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_release_credentials.py +0 -0
  383. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_release_lock.py +0 -0
  384. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_release_tro_generation.py +0 -0
  385. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_replay_exception_coherence_round3.py +0 -0
  386. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_replay_exception_finalize_review.py +0 -0
  387. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_replay_exception_hardening_round3.py +0 -0
  388. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_replay_exception_lineage.py +0 -0
  389. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_replay_exception_lineage_round3.py +0 -0
  390. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_replay_exception_policy_review.py +0 -0
  391. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_replay_exception_probe.py +0 -0
  392. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_replay_exception_probe_round3.py +0 -0
  393. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_replay_exceptions.py +0 -0
  394. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_results.py +0 -0
  395. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_run_record.py +0 -0
  396. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_scoping_strategy.py +0 -0
  397. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_small_follow_ups.py +0 -0
  398. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_spm_bundle_bootstrap.py +0 -0
  399. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_spm_bundle_tooling.py +0 -0
  400. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_spm_decile.py +0 -0
  401. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_spm_development_authentication.py +0 -0
  402. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_spm_household.py +0 -0
  403. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_spm_model.py +0 -0
  404. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_spm_selection.py +0 -0
  405. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_spm_selection_schema.py +0 -0
  406. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_trace_tro.py +0 -0
  407. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_trace_tro_verify.py +0 -0
  408. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_uk_analysis.py +0 -0
  409. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_uk_budget_reform_contract.py +0 -0
  410. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_uk_candidate_gates.py +0 -0
  411. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_uk_candidate_metric_baselines.py +0 -0
  412. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_uk_cgt_response_records.py +0 -0
  413. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_uk_cgt_responses.py +0 -0
  414. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_uk_dated_reforms.py +0 -0
  415. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_uk_geography_assets.py +0 -0
  416. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_uk_geography_disclosure.py +0 -0
  417. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_uk_program_statistics.py +0 -0
  418. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_uk_qualification_pipeline.py +0 -0
  419. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_uk_qualification_replay_inputs.py +0 -0
  420. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_uk_qualification_workflow.py +0 -0
  421. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_uk_regions.py +0 -0
  422. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_uk_year_file_data_year.py +0 -0
  423. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_us_legacy_inputs.py +0 -0
  424. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_us_legacy_inputs_integration.py +0 -0
  425. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_us_legacy_spm_model_contract.py +0 -0
  426. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_us_long_term_datasets.py +0 -0
  427. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_us_microsim_structural_reforms.py +0 -0
  428. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_us_native_alignment.py +0 -0
  429. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_us_native_hdf_weights.py +0 -0
  430. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_us_program_statistics.py +0 -0
  431. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_us_reform_application.py +0 -0
  432. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_us_year_file_stamp.py +0 -0
  433. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_variable_labels.py +0 -0
  434. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_variable_metadata.py +0 -0
  435. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_wheels.py +0 -0
  436. {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_zenodo_mirror.py +0 -0
  437. {policyengine-6.7.4 → policyengine-6.7.6}/tests/uk_contract_row_scenarios.py +0 -0
@@ -294,7 +294,14 @@ jobs:
294
294
  needs: [resolve, prepare]
295
295
  if: needs.prepare.outputs.duplicate == 'false'
296
296
  runs-on: ubuntu-latest
297
- timeout-minutes: 120
297
+ # The local gates took 80-89 minutes while every wrapper.household
298
+ # contract row errored at once. Since #651 those rows run the household
299
+ # calculator, which takes the gates past two hours, so a 120-minute limit
300
+ # cancelled every attempt and re-staged it. 330 stays under the 360-minute
301
+ # ceiling for GitHub-hosted jobs. Note that stage_attempt's four-hour lease
302
+ # still lets a catch-up re-stage a live attempt whose gates pass about four
303
+ # hours (#662), so in practice runs should stay under that.
304
+ timeout-minutes: 330
298
305
  concurrency:
299
306
  group: uk-candidate-${{ needs.resolve.outputs.pair_id }}
300
307
  cancel-in-progress: false
@@ -1,3 +1,17 @@
1
+ ## [6.7.6] - 2026-10-19
2
+
3
+ ### Fixed
4
+
5
+ - The UK qualification job may now run for up to 330 minutes, so candidates whose gates take over two hours, now that the household contract route runs, finish instead of being cancelled and re-staged.
6
+
7
+
8
+ ## [6.7.5] - 2026-10-18
9
+
10
+ ### Changed
11
+
12
+ - US state and congressional-district regions use the ACS-local Populace dataset again: the rebuilt release `populace-us-2024-buildo-acs-local-766b7c7-20261017T030317Z` (PolicyEngine/microcosm#1263), in which every SPM unit has a classified adult. This ends the temporary national-file filter of #604. The rebuild is registered as a legacy SPM source with the ACS household-population scope rule, so its group-quarters units stay outside SPM measurement, as for the previous release.
13
+
14
+
1
15
  ## [6.7.4] - 2026-10-18
2
16
 
3
17
  ### Changed
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: policyengine
3
- Version: 6.7.4
3
+ Version: 6.7.6
4
4
  Summary: A package to conduct policy analysis using PolicyEngine tax-benefit models.
5
5
  Author-email: PolicyEngine <hello@policyengine.org>
6
6
  License: GNU AFFERO GENERAL PUBLIC LICENSE
@@ -147,9 +147,7 @@ python scripts/bundle.py certify-data \
147
147
  --model-version <policyengine-us-version>
148
148
  ```
149
149
 
150
- **Temporarily**, state and congressional-district regions filter the certified national dataset (`populace_us_2024`), as in policyengine 6.2.1. The certified ACS-local release has no source-backed SPM independence, so canonical SPM refuses thousands of its SPM units (PolicyEngine/microcosm#1263, PolicyEngine/policyengine-sim-api#747). They move back to the ACS-local dataset with a release whose SPM units all have a classified adult.
151
-
152
- When they use it, US state and congressional-district regions scope one certified ACS-local
150
+ US state and congressional-district regions scope one certified ACS-local
153
151
  Populace dataset with row filters. Pass its non-default local-area release
154
152
  manifest through `--regional-manifest-uri`; certification adds the pinned H5
155
153
  artifact to `data_releases.us.datasets` and writes both regional path templates
@@ -63,19 +63,6 @@ This one command:
63
63
  - writes the changelog fragment
64
64
  `changelog.d/certify-us-$NATIONAL_RELEASE_ID.changed.md`.
65
65
 
66
- **Interim exception (from policyengine 6.3.4; PolicyEngine/policyengine.py#604).**
67
- State and congressional-district regions filter the national dataset until an
68
- ACS-local release has no SPM unit without a classified adult
69
- (PolicyEngine/microcosm#1263). Run the command above unchanged, with
70
- `--regional-manifest-uri`: without it, certification drops the ACS-local
71
- dataset and leaves no state or district template. Then, before Step 3, set
72
- `region_datasets.state` and `region_datasets.congressional_district` in
73
- `data_releases.us` to `{"path_template": "populace_us_2024.h5"}` by hand. In
74
- Step 5, expect those two templates to select the national artifact, not the
75
- local-area one. The data-certification skill
76
- (`docs/engineering/skills/data-certification.md`) says what must hold before
77
- the exception ends.
78
-
79
66
  ## Step 3 — regenerate TRACE sidecars
80
67
 
81
68
  The certify step does not touch TRACE sidecars. Regenerate them so they record
@@ -103,16 +90,15 @@ PE_UPDATE_SNAPSHOTS=1 pytest tests/test_household_calculator_snapshot.py
103
90
 
104
91
  ## Step 5 — certify and verify the local-area release
105
92
 
106
- The certification command passes the immutable ACS-local
107
- release manifest with `--regional-manifest-uri`. Confirm all of the following:
93
+ The certification command passes the immutable ACS-local release manifest with
94
+ `--regional-manifest-uri`. Confirm all of the following:
108
95
 
109
96
  - `default_dataset` remains the national Populace dataset;
110
97
  - the local-area artifact appears in `data_releases.us.datasets` with its
111
98
  repository type, immutable revision, and SHA-256;
112
99
  - `region_datasets.national` selects the national artifact;
113
100
  - `region_datasets.state` and `region_datasets.congressional_district` select
114
- the shared local-area artifact (the national artifact while the interim
115
- exception in Step 2 holds);
101
+ the shared local-area artifact;
116
102
  - no derived `states/*.h5` or `districts/*.h5` artifacts are runtime inputs.
117
103
 
118
104
  ```bash
@@ -1,9 +1,13 @@
1
1
  # Legacy US SPM sources (backward compatibility)
2
2
 
3
3
  > **Backward compatibility, not a data contract.** This layer exists so that
4
- > certified US sources published *before* SPM declarations existed can still
5
- > be measured. New certified sources must carry the declarations themselves;
6
- > do not register them here.
4
+ > certified US sources that cannot carry an SPM declaration can still be
5
+ > measured: sources published *before* the declarations existed, and sources
6
+ > that cannot store a declaration because the pinned policyengine-us does not
7
+ > define its variable (today `spm_unit_spm_universe_status`, before
8
+ > PolicyEngine/policyengine-us#9462). Register only the declarations a source
9
+ > lacks. Every other certified source must carry the declarations itself; do
10
+ > not register it here.
7
11
 
8
12
  policyengine-us measures SPM poverty only when a source declares two things:
9
13
 
@@ -29,6 +33,7 @@ Sources are keyed by certified SHA-256 in `legacy_spm/registry.py`.
29
33
  | Source | Scope rule | Independence list |
30
34
  | --- | --- | --- |
31
35
  | `populace_us_2024_acs_local` Build O (`769756c3…a7ec`) | `acs_household_population` | national release `source_spm_person_independence.csv` (`22b5968d…3ce5`) |
36
+ | `populace_us_2024_acs_local` rebuilt for microcosm#1263 (`3ce781c4…8d6c`, the bundle's certified ACS-local file) | `acs_household_population` | none: the source stores `is_spm_independent_minor_role` |
32
37
 
33
38
  ### Scope rule `acs_household_population` (#597)
34
39
 
@@ -43,6 +48,10 @@ Age is never used. Unknown channels, missing or inconsistent evidence, and SPM
43
48
  units that mix group quarters with household people all raise.
44
49
 
45
50
  On the full Build O source, 183,206 SPM units are outside the measurement.
51
+ On the microcosm#1263 rebuild, 181,260 are: Build O's group-quarters
52
+ units less the 1,946 one-person group-quarters records of children under 15,
53
+ which the rebuild leaves out of the population until the model reads scope
54
+ natively (PolicyEngine/microcosm#1263).
46
55
 
47
56
  ### Independence list (#598)
48
57
 
@@ -111,6 +120,12 @@ existing files must be made again.
111
120
  - **A rebuilt source declares scope and role itself.** Point the bundle at it.
112
121
  Keep the Build O registry entry only while anything still reads Build O,
113
122
  then delete it.
123
+ - **A rebuilt source can store the role but not the scope.** The pinned
124
+ policyengine-us does not define `spm_unit_spm_universe_status`, so the
125
+ source cannot store it (Microcosm's stored-inputs gate refuses a variable
126
+ the model does not define). Register it with its scope rule and no
127
+ independence list, as for the microcosm#1263 rebuild. Remove the entry once
128
+ a release of the source carries the scope natively.
114
129
 
115
130
  ## Related
116
131
 
@@ -35,33 +35,8 @@ python scripts/bundle.py certify-data --country us --data-producer populace \
35
35
  --model-version "<policyengine-us-version>"
36
36
  ```
37
37
 
38
- **Interim exception (from policyengine 6.3.4; PolicyEngine/policyengine.py#604).**
39
- State and congressional-district regions currently filter the certified
40
- national dataset, not the ACS-local one. The certified ACS-local release has
41
- no source-backed SPM independence, so canonical SPM refuses its SPM units that
42
- have no classified adult, and with them every state-region run
43
- (PolicyEngine/microcosm#1263, PolicyEngine/policyengine-sim-api#747). The 6.3.4
44
- manifest was certified with `--regional-manifest-uri`, as below, and then
45
- edited by hand. Until the exception ends, do the same:
46
-
47
- - still pass `--regional-manifest-uri`. Without it, certification rewrites
48
- `data_releases.us` from the national manifest alone, which drops the
49
- ACS-local dataset and leaves no state or district template at all;
50
- - then set `region_datasets.state` and `region_datasets.congressional_district`
51
- to `{"path_template": "populace_us_2024.h5"}` by hand, before regenerating
52
- the TRACE sidecars. `tests/test_release_manifests.py` fails if they name
53
- the ACS-local file, and also if the ACS-local dataset is no longer
54
- certified.
55
-
56
- Restore the ACS-local regions only with an ACS-local release in which every
57
- SPM unit has at least one classified adult under the pinned spm-calculator's
58
- rule (zero unclassified units), and after a state-region run through the
59
- public wrapper succeeds on it. Then remove this exception, the temporary test
60
- and the matching notes in `docs/regions.md` and `docs/bundles.md`.
61
-
62
- Outside that exception, US state and congressional-district regions are row
63
- filters over one shared, certified ACS-local Populace dataset. Its release
64
- manifest must declare
38
+ US state and congressional-district regions are row filters over one shared,
39
+ certified ACS-local Populace dataset. Its release manifest must declare
65
40
  `dataset_role: non_default_local_area`, `is_default: false`, no default
66
41
  datasets, and exactly one pinned H5 microdata artifact. Certification writes:
67
42
 
@@ -23,13 +23,9 @@ ca_snap = Aggregate(
23
23
  ca_snap.run()
24
24
  ```
25
25
 
26
- Each state is a region in the US registry. State regions load the Populace
27
- dataset declared by `region.dataset_path`, then scope its rows by `state_fips`.
28
- They do not require separate state H5 files.
29
-
30
- **Temporarily**, state and congressional-district regions filter the certified national dataset (`populace_us_2024`), as in policyengine 6.2.1. The certified ACS-local release has no source-backed SPM independence, so canonical SPM refuses thousands of its SPM units (PolicyEngine/microcosm#1263, PolicyEngine/policyengine-sim-api#747). They move back to the ACS-local dataset with a release whose SPM units all have a classified adult.
31
-
32
- For example:
26
+ Each state is a region in the US registry. State regions load the ACS-local
27
+ Populace dataset declared by `region.dataset_path`, then scope its rows by
28
+ `state_fips`. They do not require separate state H5 files:
33
29
 
34
30
  ```python
35
31
  states = pe.us.model.region_registry.get_by_type("state")
@@ -56,8 +52,7 @@ for row in impacts.district_results:
56
52
 
57
53
  `district_geoid` is the SSDD integer (state FIPS × 100 + district number;
58
54
  at-large districts use `00`). Congressional district regions load the same
59
- file as state regions (for now the national dataset; see above) and scope its rows by
60
- `congressional_district_geoid`.
55
+ ACS-local file and scope its rows by `congressional_district_geoid`.
61
56
 
62
57
  ## UK countries
63
58
 
@@ -207,8 +207,7 @@ python scripts/bundle.py certify-data --country us --data-producer populace \
207
207
 
208
208
  That produces one US bundle manifest entry containing the Populace national
209
209
  default dataset and the certified ACS-local regional dataset. State and
210
- congressional-district simulations use one of them with runtime row filters (for now the
211
- national dataset; see [Regions](regions.md)), so
210
+ congressional-district simulations use the latter with runtime row filters, so
212
211
  derived `states/*.h5` or `districts/*.h5` files are not vendored into
213
212
  `data_releases.us.datasets`.
214
213
 
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "policyengine"
7
- version = "6.7.4"
7
+ version = "6.7.6"
8
8
  description = "A package to conduct policy analysis using PolicyEngine tax-benefit models."
9
9
  readme = "README.md"
10
10
  authors = [
@@ -1,10 +1,10 @@
1
1
  {
2
- "bundle_version": "6.7.4",
2
+ "bundle_version": "6.7.6",
3
3
  "citation": {
4
4
  "publisher": "PolicyEngine",
5
- "title": "PolicyEngine bundle 6.7.4",
5
+ "title": "PolicyEngine bundle 6.7.6",
6
6
  "type": "software-bundle",
7
- "version": "6.7.4"
7
+ "version": "6.7.6"
8
8
  },
9
9
  "countries": {
10
10
  "uk": {
@@ -17,7 +17,7 @@
17
17
  "data_releases": {
18
18
  "uk": {
19
19
  "build_id": "policyengine-uk-data-1.58.1",
20
- "bundle_id": "uk-6.7.4",
20
+ "bundle_id": "uk-6.7.6",
21
21
  "certification": {
22
22
  "built_with_model_git_sha": "daad71cd26c107f1b784ff600d1464ba59c70e4a",
23
23
  "built_with_model_version": "2.122.2",
@@ -99,7 +99,7 @@
99
99
  "version": "2.130.1",
100
100
  "wheel_url": "https://files.pythonhosted.org/packages/1a/21/88e8addba0eabd9a7d3a29fa5293e141feb405baf0432209387f9a1f467a/policyengine_uk-2.130.1-py3-none-any.whl"
101
101
  },
102
- "policyengine_version": "6.7.4",
102
+ "policyengine_version": "6.7.6",
103
103
  "region_datasets": {
104
104
  "national": {
105
105
  "path_template": "enhanced_frs_2024_25.h5"
@@ -112,7 +112,7 @@
112
112
  },
113
113
  "us": {
114
114
  "build_id": "populace-us-2024-spm-20260915",
115
- "bundle_id": "us-6.7.4",
115
+ "bundle_id": "us-6.7.6",
116
116
  "certification": {
117
117
  "built_with_model_version": "2.2.1",
118
118
  "certified_by": "policyengine.py bundle certification",
@@ -175,8 +175,8 @@
175
175
  "path": "populace_us_2024_acs_local.h5",
176
176
  "repo_id": "policyengine/populace-us",
177
177
  "repo_type": "dataset",
178
- "revision": "populace-us-2024-buildo-acs-local-767312d60-20260923T074941Z",
179
- "sha256": "769756c31f3ca646d12c272511744dec04c0e68870c6946dd945fbba65b6a7ec"
178
+ "revision": "populace-us-2024-buildo-acs-local-766b7c7-20261017T030317Z",
179
+ "sha256": "3ce781c440a7f933b1d952ff4e9d9f65f4698c64b94d2fad165af0c662838d6c"
180
180
  },
181
181
  "source_enrichment": {
182
182
  "path": "releases/populace-us-2024-spm-20260915/source_enrichment.json",
@@ -217,20 +217,20 @@
217
217
  "version": "2.2.1",
218
218
  "wheel_url": "https://files.pythonhosted.org/packages/5e/09/86ac3968d2a18e28fce3ba1186fc21728e9f299b96a806d6f204f1e0aaed/policyengine_us-2.2.1-py3-none-any.whl"
219
219
  },
220
- "policyengine_version": "6.7.4",
220
+ "policyengine_version": "6.7.6",
221
221
  "region_datasets": {
222
222
  "congressional_district": {
223
- "path_template": "populace_us_2024.h5"
223
+ "path_template": "populace_us_2024_acs_local.h5"
224
224
  },
225
225
  "national": {
226
226
  "path_template": "populace_us_2024.h5"
227
227
  },
228
228
  "state": {
229
- "path_template": "populace_us_2024.h5"
229
+ "path_template": "populace_us_2024_acs_local.h5"
230
230
  }
231
231
  },
232
- "regional_release_manifest_uri": "https://huggingface.co/datasets/policyengine/populace-us/resolve/populace-us-2024-buildo-acs-local-767312d60-20260923T074941Z/releases/populace-us-2024-buildo-acs-local-767312d60-20260923T074941Z/release_manifest.json",
233
- "regional_source_manifest_uri": "hf://dataset/policyengine/populace-us@populace-us-2024-buildo-acs-local-767312d60-20260923T074941Z/releases/populace-us-2024-buildo-acs-local-767312d60-20260923T074941Z/release_manifest.json",
232
+ "regional_release_manifest_uri": "https://huggingface.co/datasets/policyengine/populace-us/resolve/populace-us-2024-buildo-acs-local-766b7c7-20261017T030317Z/releases/populace-us-2024-buildo-acs-local-766b7c7-20261017T030317Z/release_manifest.json",
233
+ "regional_source_manifest_uri": "hf://dataset/policyengine/populace-us@populace-us-2024-buildo-acs-local-766b7c7-20261017T030317Z/releases/populace-us-2024-buildo-acs-local-766b7c7-20261017T030317Z/release_manifest.json",
234
234
  "release_manifest_uri": "https://huggingface.co/datasets/policyengine/populace-us/resolve/populace-us-2024-spm-20260915/releases/populace-us-2024-spm-20260915/release_manifest.json",
235
235
  "schema_version": 1,
236
236
  "source_manifest_uri": "hf://dataset/policyengine/populace-us@populace-us-2024-spm-20260915/releases/populace-us-2024-spm-20260915/release_manifest.json",
@@ -295,10 +295,10 @@
295
295
  "packages": {
296
296
  "policyengine": {
297
297
  "import_name": "policyengine",
298
- "install_requirement": "policyengine==6.7.4",
298
+ "install_requirement": "policyengine==6.7.6",
299
299
  "name": "policyengine",
300
300
  "role": "bundle_carrier",
301
- "version": "6.7.4"
301
+ "version": "6.7.6"
302
302
  },
303
303
  "policyengine-core": {
304
304
  "import_name": "policyengine_core",
@@ -334,6 +334,6 @@
334
334
  "wheel_url": "https://files.pythonhosted.org/packages/19/a0/c484f69a0ebf88a9b9fd0ac28176f8df66550f46714f1b0c5ec0b360824e/spm_calculator-1.0.0-py3-none-any.whl"
335
335
  }
336
336
  },
337
- "policyengine_version": "6.7.4",
337
+ "policyengine_version": "6.7.6",
338
338
  "schema_version": 2
339
339
  }
@@ -18,18 +18,18 @@
18
18
  "schema:url": "https://policyengine.org"
19
19
  },
20
20
  "schema:dateCreated": "2026-10-14T07:43:49.920588Z",
21
- "schema:description": "TRACE TRO for certified runtime bundle uk-6.7.4 covering the bundle manifest, the certified dataset artifact, the country model wheel, and the country data release manifest when it is available.",
21
+ "schema:description": "TRACE TRO for certified runtime bundle uk-6.7.6 covering the bundle manifest, the certified dataset artifact, the country model wheel, and the country data release manifest when it is available.",
22
22
  "schema:name": "policyengine uk certified bundle TRO",
23
23
  "trov:createdWith": {
24
24
  "@type": "schema:SoftwareApplication",
25
25
  "schema:name": "policyengine",
26
- "schema:softwareVersion": "6.7.4"
26
+ "schema:softwareVersion": "6.7.6"
27
27
  },
28
28
  "trov:hasArrangement": [
29
29
  {
30
30
  "@id": "arrangement/1",
31
31
  "@type": "trov:ArtifactArrangement",
32
- "rdfs:comment": "Certified arrangement for bundle uk-6.7.4.",
32
+ "rdfs:comment": "Certified arrangement for bundle uk-6.7.6.",
33
33
  "trov:hasArtifactLocation": [
34
34
  {
35
35
  "@id": "arrangement/1/location/bundle_manifest",
@@ -75,7 +75,7 @@
75
75
  "@type": "trov:ResearchArtifact",
76
76
  "schema:name": "policyengine.py bundle manifest for uk",
77
77
  "trov:mimeType": "application/json",
78
- "trov:sha256": "ba941346a5d4c77426756e38cb1dc6c518985bbc3d05fb9ebfb0c0aeef3d7151"
78
+ "trov:sha256": "5e248b55d0fdb81ee8f7911f01d27584d8f46e6fa2cdd3b15a6fdfd5b9bed47c"
79
79
  },
80
80
  {
81
81
  "@id": "composition/1/artifact/data_release_manifest",
@@ -102,7 +102,7 @@
102
102
  "trov:hasFingerprint": {
103
103
  "@id": "composition/1/fingerprint",
104
104
  "@type": "trov:CompositionFingerprint",
105
- "trov:sha256": "e52daf7bac16573b5f91057ea25906990ed6689576b143deb4fa67652644df5c"
105
+ "trov:sha256": "ad3cbb4f1ee3ed4cde4c485e5f43be494e5be063b87325c498525a9f49cc6b1a"
106
106
  }
107
107
  },
108
108
  "trov:hasPerformance": {
@@ -17,18 +17,18 @@
17
17
  "schema:name": "PolicyEngine",
18
18
  "schema:url": "https://policyengine.org"
19
19
  },
20
- "schema:description": "TRACE TRO for certified runtime bundle us-6.7.4 covering the bundle manifest, the certified dataset artifact, the country model wheel, and the country data release manifest when it is available.",
20
+ "schema:description": "TRACE TRO for certified runtime bundle us-6.7.6 covering the bundle manifest, the certified dataset artifact, the country model wheel, and the country data release manifest when it is available.",
21
21
  "schema:name": "policyengine us certified bundle TRO",
22
22
  "trov:createdWith": {
23
23
  "@type": "schema:SoftwareApplication",
24
24
  "schema:name": "policyengine",
25
- "schema:softwareVersion": "6.7.4"
25
+ "schema:softwareVersion": "6.7.6"
26
26
  },
27
27
  "trov:hasArrangement": [
28
28
  {
29
29
  "@id": "arrangement/1",
30
30
  "@type": "trov:ArtifactArrangement",
31
- "rdfs:comment": "Certified arrangement for bundle us-6.7.4.",
31
+ "rdfs:comment": "Certified arrangement for bundle us-6.7.6.",
32
32
  "trov:hasArtifactLocation": [
33
33
  {
34
34
  "@id": "arrangement/1/location/bundle_manifest",
@@ -74,7 +74,7 @@
74
74
  "@type": "trov:ResearchArtifact",
75
75
  "schema:name": "policyengine.py bundle manifest for us",
76
76
  "trov:mimeType": "application/json",
77
- "trov:sha256": "ba941346a5d4c77426756e38cb1dc6c518985bbc3d05fb9ebfb0c0aeef3d7151"
77
+ "trov:sha256": "5e248b55d0fdb81ee8f7911f01d27584d8f46e6fa2cdd3b15a6fdfd5b9bed47c"
78
78
  },
79
79
  {
80
80
  "@id": "composition/1/artifact/data_release_manifest",
@@ -101,7 +101,7 @@
101
101
  "trov:hasFingerprint": {
102
102
  "@id": "composition/1/fingerprint",
103
103
  "@type": "trov:CompositionFingerprint",
104
- "trov:sha256": "e329a374b3ca516be0e7e0273a02b68bad9b4c8e670f88e8c80cd74fceb974b1"
104
+ "trov:sha256": "daf551601e171f7cc896db5e5a28d564b14ef1acefc6f19ffebc66c3d0c943ea"
105
105
  }
106
106
  },
107
107
  "trov:hasPerformance": {
@@ -11,8 +11,10 @@
11
11
  # #
12
12
  # This package DERIVES the declarations from evidence those sources do #
13
13
  # carry, for the sources registered in ``registry.LEGACY_SPM_SOURCES`` and #
14
- # for nothing else. New certified sources must carry the declarations #
15
- # themselves: do NOT register them here. #
14
+ # for nothing else. A new certified source is registered only for a #
15
+ # declaration the pinned policyengine-us cannot read (today the scope, #
16
+ # before PolicyEngine/policyengine-us#9462); see ``registry``. Otherwise new #
17
+ # certified sources must carry the declarations themselves. #
16
18
  # #
17
19
  # ``model_adapter`` is the part that must eventually go: it overrides SPM #
18
20
  # variables only while the installed policyengine-us cannot read the scope #
@@ -1,8 +1,20 @@
1
- """Certified US sources that predate SPM declarations.
2
-
3
- BACKWARD COMPATIBILITY (#597, #598): register a source here only when it was
4
- certified before SPM measurement-scope and independence-role declarations
5
- existed. New certified sources must carry the declarations themselves.
1
+ """Certified US sources that cannot carry their SPM declarations.
2
+
3
+ BACKWARD COMPATIBILITY (#597, #598). Register a certified source here only
4
+ when it cannot carry a declaration itself:
5
+
6
+ - it was certified before SPM measurement-scope and independence-role
7
+ declarations existed (Build O); or
8
+ - the pinned policyengine-us does not define that declaration's variable, so
9
+ the source cannot store it. Today that is ``spm_unit_spm_universe_status``,
10
+ which policyengine-us defines only from PolicyEngine/policyengine-us#9462;
11
+ Microcosm's stored-inputs gate refuses a variable the model does not define.
12
+
13
+ Register only the declarations the source lacks: a source that stores
14
+ ``is_spm_independent_minor_role`` takes no independence list. Delete an entry
15
+ once nothing reads that source, or once a release of it carries the
16
+ declaration natively. Every other certified source must carry the
17
+ declarations itself.
6
18
  """
7
19
 
8
20
  from __future__ import annotations
@@ -63,7 +75,26 @@ POPULACE_US_2024_ACS_LOCAL_BUILD_O = LegacySPMSource(
63
75
  ),
64
76
  )
65
77
 
66
- LEGACY_SPM_SOURCES: tuple[LegacySPMSource, ...] = (POPULACE_US_2024_ACS_LOCAL_BUILD_O,)
78
+ #: ``populace_us_2024_acs_local`` rebuilt for PolicyEngine/microcosm#1263. It
79
+ #: stores the SPM independence role for every person, so it takes no list. It
80
+ #: cannot store the measurement scope: policyengine-us 2.2.1 does not define
81
+ #: ``spm_unit_spm_universe_status``. Its ACS group-quarters units are outside
82
+ #: the measurement under Census's ACS household-population rule, as Build O's
83
+ #: are. Remove the entry once a release carries the scope natively
84
+ #: (PolicyEngine/policyengine-us#9462).
85
+ POPULACE_US_2024_ACS_LOCAL_MICROCOSM_1263 = LegacySPMSource(
86
+ name=(
87
+ "populace_us_2024_acs_local@"
88
+ "populace-us-2024-buildo-acs-local-766b7c7-20261017T030317Z"
89
+ ),
90
+ source_sha256="3ce781c440a7f933b1d952ff4e9d9f65f4698c64b94d2fad165af0c662838d6c",
91
+ spm_universe_rule="acs_household_population",
92
+ )
93
+
94
+ LEGACY_SPM_SOURCES: tuple[LegacySPMSource, ...] = (
95
+ POPULACE_US_2024_ACS_LOCAL_BUILD_O,
96
+ POPULACE_US_2024_ACS_LOCAL_MICROCOSM_1263,
97
+ )
67
98
 
68
99
 
69
100
  def legacy_spm_source(source_sha256: Optional[str]) -> Optional[LegacySPMSource]:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: policyengine
3
- Version: 6.7.4
3
+ Version: 6.7.6
4
4
  Summary: A package to conduct policy analysis using PolicyEngine tax-benefit models.
5
5
  Author-email: PolicyEngine <hello@policyengine.org>
6
6
  License: GNU AFFERO GENERAL PUBLIC LICENSE
@@ -65,11 +65,9 @@ US_RELEASE_MANIFEST_DATASET_URI = (
65
65
  # immutable release. It remains non-default nationally and is selected for
66
66
  # states and congressional districts.
67
67
  US_LOCAL_AREA_DATASET = "populace_us_2024_acs_local"
68
- US_LOCAL_AREA_RELEASE_ID = (
69
- "populace-us-2024-buildo-acs-local-767312d60-20260923T074941Z"
70
- )
68
+ US_LOCAL_AREA_RELEASE_ID = "populace-us-2024-buildo-acs-local-766b7c7-20261017T030317Z"
71
69
  US_LOCAL_AREA_SHA256 = (
72
- "769756c31f3ca646d12c272511744dec04c0e68870c6946dd945fbba65b6a7ec"
70
+ "3ce781c440a7f933b1d952ff4e9d9f65f4698c64b94d2fad165af0c662838d6c"
73
71
  )
74
72
  US_LOCAL_AREA_DATASET_URI = (
75
73
  "hf://policyengine/populace-us/populace_us_2024_acs_local.h5"
@@ -330,15 +328,12 @@ class TestReleaseManifests:
330
328
  assert manifest.region_datasets["national"].path_template == (
331
329
  "populace_us_2024.h5"
332
330
  )
333
- # Temporary (microcosm#1263): state and district regions filter the
334
- # national file until the ACS-local release supplies source-backed SPM
335
- # independence; see the test below.
336
331
  assert manifest.region_datasets["state"].path_template == (
337
- "populace_us_2024.h5"
332
+ "populace_us_2024_acs_local.h5"
338
333
  )
339
334
  assert (
340
335
  manifest.region_datasets["congressional_district"].path_template
341
- == "populace_us_2024.h5"
336
+ == "populace_us_2024_acs_local.h5"
342
337
  )
343
338
 
344
339
  def test__given_local_area_name__then_resolves_to_its_immutable_tag(self):
@@ -365,21 +360,10 @@ class TestReleaseManifests:
365
360
  assert US_LOCAL_AREA_DATASET in resolve_default_datasets("us")
366
361
  assert US_LOCAL_AREA_DATASET != manifest.default_dataset
367
362
 
368
- def test__given_us_manifest__then_local_regions_filter_the_national_file(self):
369
- """Temporary revert, until microcosm#1263 lands.
370
-
371
- The ACS-local release (``populace-us-2024-buildo-acs-local-767312d60-…``)
372
- has no ``is_spm_independent_minor_role``, so 5,274 SPM units have no
373
- classified adult and canonical SPM refuses every state-region run
374
- (SPM_COMPOSITION_REQUIRED; policyengine-sim-api#747). State and district
375
- regions filter the national file again, as in policyengine 6.2.1, which
376
- carries the role. Point them back at the ACS-local dataset only with a
377
- release whose SPM units all have a classified adult.
378
- """
379
-
363
+ def test__given_us_manifest__then_local_regions_resolve_to_acs_local(self):
380
364
  assert (
381
365
  resolve_region_dataset_path("us", "state", state_code="CA")
382
- == US_CERTIFIED_DATASET_URI
366
+ == US_LOCAL_AREA_DATASET_URI
383
367
  )
384
368
  assert (
385
369
  resolve_region_dataset_path(
@@ -387,7 +371,7 @@ class TestReleaseManifests:
387
371
  "congressional_district",
388
372
  district_code="CA-01",
389
373
  )
390
- == US_CERTIFIED_DATASET_URI
374
+ == US_LOCAL_AREA_DATASET_URI
391
375
  )
392
376
  assert not any(
393
377
  key.startswith(("states/", "districts/"))