policyengine 6.7.2__tar.gz → 6.7.3__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 (420) hide show
  1. {policyengine-6.7.2 → policyengine-6.7.3}/CHANGELOG.md +7 -0
  2. {policyengine-6.7.2/src/policyengine.egg-info → policyengine-6.7.3}/PKG-INFO +1 -1
  3. {policyengine-6.7.2 → policyengine-6.7.3}/pyproject.toml +1 -1
  4. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/data/bundle/manifest.json +10 -10
  5. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/data/bundle/uk.trace.tro.jsonld +5 -5
  6. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/data/bundle/us.trace.tro.jsonld +5 -5
  7. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/tax_benefit_models/uk/budget_reform_contract.py +126 -44
  8. {policyengine-6.7.2 → policyengine-6.7.3/src/policyengine.egg-info}/PKG-INFO +1 -1
  9. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine.egg-info/SOURCES.txt +1 -1
  10. policyengine-6.7.3/tests/fixtures/uk_contract/README.md +15 -0
  11. policyengine-6.7.3/tests/fixtures/uk_contract/evaluate_case_rows.json +1 -0
  12. policyengine-6.7.2/tests/fixtures/uk_contract/full_released_uk_2.130.1.json → policyengine-6.7.3/tests/fixtures/uk_contract/full_released_uk_2.135.0.json +2346 -567
  13. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_uk_budget_reform_contract.py +88 -4
  14. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_uk_candidate_gates.py +228 -47
  15. {policyengine-6.7.2 → policyengine-6.7.3}/tests/uk_contract_row_scenarios.py +5 -2
  16. {policyengine-6.7.2 → policyengine-6.7.3}/uv.lock +1 -1
  17. policyengine-6.7.2/tests/fixtures/uk_contract/README.md +0 -15
  18. policyengine-6.7.2/tests/fixtures/uk_contract/evaluate_case_rows.json +0 -1
  19. {policyengine-6.7.2 → policyengine-6.7.3}/.claude/policyengine-guide.md +0 -0
  20. {policyengine-6.7.2 → policyengine-6.7.3}/.claude/quick-reference.md +0 -0
  21. {policyengine-6.7.2 → policyengine-6.7.3}/.github/CONTRIBUTING.md +0 -0
  22. {policyengine-6.7.2 → policyengine-6.7.3}/.github/bump_version.py +0 -0
  23. {policyengine-6.7.2 → policyengine-6.7.3}/.github/capture-version.sh +0 -0
  24. {policyengine-6.7.2 → policyengine-6.7.3}/.github/changelog_template.md +0 -0
  25. {policyengine-6.7.2 → policyengine-6.7.3}/.github/check-changelog.sh +0 -0
  26. {policyengine-6.7.2 → policyengine-6.7.3}/.github/copilot-instructions.md +0 -0
  27. {policyengine-6.7.2 → policyengine-6.7.3}/.github/dispatch-policyengine-release.sh +0 -0
  28. {policyengine-6.7.2 → policyengine-6.7.3}/.github/fetch_version.py +0 -0
  29. {policyengine-6.7.2 → policyengine-6.7.3}/.github/get-changelog-diff.sh +0 -0
  30. {policyengine-6.7.2 → policyengine-6.7.3}/.github/has-functional-changes.sh +0 -0
  31. {policyengine-6.7.2 → policyengine-6.7.3}/.github/is-version-number-acceptable.sh +0 -0
  32. {policyengine-6.7.2 → policyengine-6.7.3}/.github/publish-git-tag.sh +0 -0
  33. {policyengine-6.7.2 → policyengine-6.7.3}/.github/qualification-ledger.sh +0 -0
  34. {policyengine-6.7.2 → policyengine-6.7.3}/.github/wait-for-pypi.sh +0 -0
  35. {policyengine-6.7.2 → policyengine-6.7.3}/.github/workflows/certify-uk-release.yaml +0 -0
  36. {policyengine-6.7.2 → policyengine-6.7.3}/.github/workflows/draft-pdf.yml +0 -0
  37. {policyengine-6.7.2 → policyengine-6.7.3}/.github/workflows/pr_code_changes.yaml +0 -0
  38. {policyengine-6.7.2 → policyengine-6.7.3}/.github/workflows/pr_docs_changes.yaml +0 -0
  39. {policyengine-6.7.2 → policyengine-6.7.3}/.github/workflows/push.yaml +0 -0
  40. {policyengine-6.7.2 → policyengine-6.7.3}/.gitignore +0 -0
  41. {policyengine-6.7.2 → policyengine-6.7.3}/.python-version +0 -0
  42. {policyengine-6.7.2 → policyengine-6.7.3}/AGENTS.md +0 -0
  43. {policyengine-6.7.2 → policyengine-6.7.3}/CITATION.cff +0 -0
  44. {policyengine-6.7.2 → policyengine-6.7.3}/CLAUDE.md +0 -0
  45. {policyengine-6.7.2 → policyengine-6.7.3}/CODE_OF_CONDUCT.md +0 -0
  46. {policyengine-6.7.2 → policyengine-6.7.3}/CONTRIBUTING.md +0 -0
  47. {policyengine-6.7.2 → policyengine-6.7.3}/LICENSE +0 -0
  48. {policyengine-6.7.2 → policyengine-6.7.3}/Makefile +0 -0
  49. {policyengine-6.7.2 → policyengine-6.7.3}/README.md +0 -0
  50. {policyengine-6.7.2 → policyengine-6.7.3}/architecture.png +0 -0
  51. {policyengine-6.7.2 → policyengine-6.7.3}/architecture.svg +0 -0
  52. {policyengine-6.7.2 → policyengine-6.7.3}/changelog.d/.gitkeep +0 -0
  53. {policyengine-6.7.2 → policyengine-6.7.3}/docs/.gitignore +0 -0
  54. {policyengine-6.7.2 → policyengine-6.7.3}/docs/_generator/README.md +0 -0
  55. {policyengine-6.7.2 → policyengine-6.7.3}/docs/_generator/build_reference.py +0 -0
  56. {policyengine-6.7.2 → policyengine-6.7.3}/docs/_quarto.yml +0 -0
  57. {policyengine-6.7.2 → policyengine-6.7.3}/docs/bundles.md +0 -0
  58. {policyengine-6.7.2 → policyengine-6.7.3}/docs/countries.md +0 -0
  59. {policyengine-6.7.2 → policyengine-6.7.3}/docs/data-publishing-design.md +0 -0
  60. {policyengine-6.7.2 → policyengine-6.7.3}/docs/decile-impact-spec.md +0 -0
  61. {policyengine-6.7.2 → policyengine-6.7.3}/docs/dev.md +0 -0
  62. {policyengine-6.7.2 → policyengine-6.7.3}/docs/disclosure.md +0 -0
  63. {policyengine-6.7.2 → policyengine-6.7.3}/docs/engineering/runbooks/acs-local-wic-replacement.md +0 -0
  64. {policyengine-6.7.2 → policyengine-6.7.3}/docs/engineering/runbooks/build-m-us-populace-certification.md +0 -0
  65. {policyengine-6.7.2 → policyengine-6.7.3}/docs/engineering/runbooks/canonical-spm-development.md +0 -0
  66. {policyengine-6.7.2 → policyengine-6.7.3}/docs/engineering/runbooks/uk-qualification.md +0 -0
  67. {policyengine-6.7.2 → policyengine-6.7.3}/docs/engineering/runbooks/us-legacy-spm-sources.md +0 -0
  68. {policyengine-6.7.2 → policyengine-6.7.3}/docs/engineering/skills/README.md +0 -0
  69. {policyengine-6.7.2 → policyengine-6.7.3}/docs/engineering/skills/data-certification.md +0 -0
  70. {policyengine-6.7.2 → policyengine-6.7.3}/docs/engineering/skills/github-prs.md +0 -0
  71. {policyengine-6.7.2 → policyengine-6.7.3}/docs/engineering/skills/repository-guidance.md +0 -0
  72. {policyengine-6.7.2 → policyengine-6.7.3}/docs/examples.md +0 -0
  73. {policyengine-6.7.2 → policyengine-6.7.3}/docs/getting-started.md +0 -0
  74. {policyengine-6.7.2 → policyengine-6.7.3}/docs/households.md +0 -0
  75. {policyengine-6.7.2 → policyengine-6.7.3}/docs/impact-analysis.md +0 -0
  76. {policyengine-6.7.2 → policyengine-6.7.3}/docs/index.md +0 -0
  77. {policyengine-6.7.2 → policyengine-6.7.3}/docs/methodology/index.md +0 -0
  78. {policyengine-6.7.2 → policyengine-6.7.3}/docs/methodology/model-architecture.md +0 -0
  79. {policyengine-6.7.2 → policyengine-6.7.3}/docs/methodology/us-health-costs.md +0 -0
  80. {policyengine-6.7.2 → policyengine-6.7.3}/docs/microsim.md +0 -0
  81. {policyengine-6.7.2 → policyengine-6.7.3}/docs/outputs.md +0 -0
  82. {policyengine-6.7.2 → policyengine-6.7.3}/docs/programs/index.md +0 -0
  83. {policyengine-6.7.2 → policyengine-6.7.3}/docs/programs/us-chip.md +0 -0
  84. {policyengine-6.7.2 → policyengine-6.7.3}/docs/receipts.md +0 -0
  85. {policyengine-6.7.2 → policyengine-6.7.3}/docs/reference/index.md +0 -0
  86. {policyengine-6.7.2 → policyengine-6.7.3}/docs/reforms.md +0 -0
  87. {policyengine-6.7.2 → policyengine-6.7.3}/docs/regions.md +0 -0
  88. {policyengine-6.7.2 → policyengine-6.7.3}/docs/release-bundles.md +0 -0
  89. {policyengine-6.7.2 → policyengine-6.7.3}/docs/run-records.md +0 -0
  90. {policyengine-6.7.2 → policyengine-6.7.3}/docs/trace-case-study.md +0 -0
  91. {policyengine-6.7.2 → policyengine-6.7.3}/docs/visualisation.md +0 -0
  92. {policyengine-6.7.2 → policyengine-6.7.3}/examples/belgium_axiom_pilot.py +0 -0
  93. {policyengine-6.7.2 → policyengine-6.7.3}/examples/employment_income_variation_uk.py +0 -0
  94. {policyengine-6.7.2 → policyengine-6.7.3}/examples/employment_income_variation_us.py +0 -0
  95. {policyengine-6.7.2 → policyengine-6.7.3}/examples/household_impact_example.py +0 -0
  96. {policyengine-6.7.2 → policyengine-6.7.3}/examples/income_bands_uk.py +0 -0
  97. {policyengine-6.7.2 → policyengine-6.7.3}/examples/income_distribution_us.py +0 -0
  98. {policyengine-6.7.2 → policyengine-6.7.3}/examples/paper_repro_uk.py +0 -0
  99. {policyengine-6.7.2 → policyengine-6.7.3}/examples/policy_change_uk.py +0 -0
  100. {policyengine-6.7.2 → policyengine-6.7.3}/examples/speedtest_us_simulation.py +0 -0
  101. {policyengine-6.7.2 → policyengine-6.7.3}/examples/uk_geography_disclosure.py +0 -0
  102. {policyengine-6.7.2 → policyengine-6.7.3}/examples/us_budgetary_impact.py +0 -0
  103. {policyengine-6.7.2 → policyengine-6.7.3}/paper-preview.html +0 -0
  104. {policyengine-6.7.2 → policyengine-6.7.3}/paper.bib +0 -0
  105. {policyengine-6.7.2 → policyengine-6.7.3}/paper.md +0 -0
  106. {policyengine-6.7.2 → policyengine-6.7.3}/scripts/bundle.py +0 -0
  107. {policyengine-6.7.2 → policyengine-6.7.3}/scripts/certify_data_release.py +0 -0
  108. {policyengine-6.7.2 → policyengine-6.7.3}/scripts/check_data_staleness.py +0 -0
  109. {policyengine-6.7.2 → policyengine-6.7.3}/scripts/check_native_spm_loading.py +0 -0
  110. {policyengine-6.7.2 → policyengine-6.7.3}/scripts/check_release_credentials.py +0 -0
  111. {policyengine-6.7.2 → policyengine-6.7.3}/scripts/check_uk_candidate.py +0 -0
  112. {policyengine-6.7.2 → policyengine-6.7.3}/scripts/export_bundle_release_assets.py +0 -0
  113. {policyengine-6.7.2 → policyengine-6.7.3}/scripts/generate_bundle_artifacts.py +0 -0
  114. {policyengine-6.7.2 → policyengine-6.7.3}/scripts/generate_receipt_schemas.py +0 -0
  115. {policyengine-6.7.2 → policyengine-6.7.3}/scripts/generate_trace_tros.py +0 -0
  116. {policyengine-6.7.2 → policyengine-6.7.3}/scripts/prepare_package_bundle_update.py +0 -0
  117. {policyengine-6.7.2 → policyengine-6.7.3}/scripts/release_consumers.py +0 -0
  118. {policyengine-6.7.2 → policyengine-6.7.3}/scripts/release_lock.py +0 -0
  119. {policyengine-6.7.2 → policyengine-6.7.3}/scripts/spm_bundle.py +0 -0
  120. {policyengine-6.7.2 → policyengine-6.7.3}/setup.cfg +0 -0
  121. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/__init__.py +0 -0
  122. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/bundle.py +0 -0
  123. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/cli.py +0 -0
  124. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/core/__init__.py +0 -0
  125. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/core/cache.py +0 -0
  126. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/core/dataset.py +0 -0
  127. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/core/dynamic.py +0 -0
  128. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/core/output.py +0 -0
  129. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/core/parameter.py +0 -0
  130. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/core/parameter_node.py +0 -0
  131. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/core/parameter_value.py +0 -0
  132. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/core/policy.py +0 -0
  133. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/core/region.py +0 -0
  134. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/core/run_record.py +0 -0
  135. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/core/scoping_strategy.py +0 -0
  136. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/core/simulation.py +0 -0
  137. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/core/spm.py +0 -0
  138. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/core/tax_benefit_model.py +0 -0
  139. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/core/tax_benefit_model_version.py +0 -0
  140. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/core/variable.py +0 -0
  141. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/countries/__init__.py +0 -0
  142. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/countries/uk/__init__.py +0 -0
  143. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/countries/uk/regions.py +0 -0
  144. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/countries/us/__init__.py +0 -0
  145. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/countries/us/data/__init__.py +0 -0
  146. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/countries/us/data/districts.py +0 -0
  147. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/countries/us/data/places.py +0 -0
  148. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/countries/us/data/states.py +0 -0
  149. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/countries/us/regions.py +0 -0
  150. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/data/__init__.py +0 -0
  151. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/data/qualification/replay_policy.md +0 -0
  152. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/data/qualification/uk.json +0 -0
  153. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/data/qualification/uk_budget_critical_inputs.json +0 -0
  154. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/data/qualification/uk_review_bounds.json +0 -0
  155. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/data/schemas/execution_receipt.v1.schema.json +0 -0
  156. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/data/schemas/trace_tro.schema.json +0 -0
  157. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/data/schemas/vendor/policyengine-scorecard/README.md +0 -0
  158. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/data/schemas/vendor/policyengine-scorecard/qualification_request.v1.json +0 -0
  159. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/data/schemas/vendor/policyengine-scorecard/replay_receipt.v1.json +0 -0
  160. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/data/schemas/vendor/policyengine-scorecard/replay_status.v1.json +0 -0
  161. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/data/uk_geography_assets.py +0 -0
  162. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/derivations/__init__.py +0 -0
  163. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/derivations/narrate.py +0 -0
  164. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/derivations/trace.py +0 -0
  165. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/disclosure/__init__.py +0 -0
  166. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/disclosure/__main__.py +0 -0
  167. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/disclosure/areas.py +0 -0
  168. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/disclosure/estimate.py +0 -0
  169. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/disclosure/noise.py +0 -0
  170. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/disclosure/release.py +0 -0
  171. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/disclosure/schema.py +0 -0
  172. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/disclosure/support.py +0 -0
  173. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/disclosure/validate.py +0 -0
  174. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/graph/__init__.py +0 -0
  175. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/graph/extractor.py +0 -0
  176. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/graph/graph.py +0 -0
  177. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/outputs/__init__.py +0 -0
  178. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/outputs/aggregate.py +0 -0
  179. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/outputs/change_aggregate.py +0 -0
  180. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/outputs/cliff_impact.py +0 -0
  181. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/outputs/congressional_district_impact.py +0 -0
  182. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/outputs/constituency_impact.py +0 -0
  183. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/outputs/decile_analysis.py +0 -0
  184. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/outputs/decile_grouping.py +0 -0
  185. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/outputs/decile_impact.py +0 -0
  186. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/outputs/extra_variables.py +0 -0
  187. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/outputs/inequality.py +0 -0
  188. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/outputs/intra_decile_impact.py +0 -0
  189. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/outputs/labor_supply_response.py +0 -0
  190. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/outputs/local_authority_impact.py +0 -0
  191. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/outputs/poverty.py +0 -0
  192. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/outputs/program_statistics.py +0 -0
  193. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/outputs/uk_geography_assets.py +0 -0
  194. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/outputs/uk_geography_disclosure.py +0 -0
  195. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/outputs/uk_geography_impact.py +0 -0
  196. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/provenance/__init__.py +0 -0
  197. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/provenance/bundle_validation.py +0 -0
  198. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/provenance/bytecode.py +0 -0
  199. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/provenance/canonical.py +0 -0
  200. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/provenance/certification.py +0 -0
  201. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/provenance/dataset_materialization.py +0 -0
  202. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/provenance/loaded.py +0 -0
  203. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/provenance/manifest.py +0 -0
  204. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/provenance/pyproject_pins.py +0 -0
  205. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/provenance/qualification.py +0 -0
  206. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/provenance/qualification_ledger.py +0 -0
  207. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/provenance/receipt.py +0 -0
  208. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/provenance/spm_configuration.py +0 -0
  209. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/provenance/trace.py +0 -0
  210. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/provenance/uk_candidate.py +0 -0
  211. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/provenance/uk_qualification.py +0 -0
  212. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/provenance/verify.py +0 -0
  213. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/provenance/wheels.py +0 -0
  214. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/provenance/zenodo.py +0 -0
  215. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/results/__init__.py +0 -0
  216. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/results/schema.py +0 -0
  217. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/results/trace_tro.py +0 -0
  218. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/results/tracking.py +0 -0
  219. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/tax_benefit_models/be/__init__.py +0 -0
  220. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/tax_benefit_models/be/datasets.py +0 -0
  221. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/tax_benefit_models/be/model.py +0 -0
  222. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/tax_benefit_models/common/__init__.py +0 -0
  223. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/tax_benefit_models/common/axes.py +0 -0
  224. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/tax_benefit_models/common/extra_variables.py +0 -0
  225. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/tax_benefit_models/common/household.py +0 -0
  226. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/tax_benefit_models/common/model_version.py +0 -0
  227. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/tax_benefit_models/common/reform.py +0 -0
  228. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/tax_benefit_models/common/result.py +0 -0
  229. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/tax_benefit_models/uk/__init__.py +0 -0
  230. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/tax_benefit_models/uk/analysis.py +0 -0
  231. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/tax_benefit_models/uk/budget_reform_population.py +0 -0
  232. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/tax_benefit_models/uk/capital_gains_responses.py +0 -0
  233. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/tax_benefit_models/uk/datasets.py +0 -0
  234. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/tax_benefit_models/uk/household.py +0 -0
  235. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/tax_benefit_models/uk/model.py +0 -0
  236. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/tax_benefit_models/us/__init__.py +0 -0
  237. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/tax_benefit_models/us/analysis.py +0 -0
  238. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/tax_benefit_models/us/datasets.py +0 -0
  239. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/tax_benefit_models/us/household.py +0 -0
  240. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/tax_benefit_models/us/legacy_inputs.py +0 -0
  241. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/tax_benefit_models/us/legacy_spm/__init__.py +0 -0
  242. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/tax_benefit_models/us/legacy_spm/declarations.py +0 -0
  243. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/tax_benefit_models/us/legacy_spm/independence.py +0 -0
  244. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/tax_benefit_models/us/legacy_spm/model_adapter.py +0 -0
  245. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/tax_benefit_models/us/legacy_spm/record.py +0 -0
  246. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/tax_benefit_models/us/legacy_spm/registry.py +0 -0
  247. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/tax_benefit_models/us/legacy_spm/runs.py +0 -0
  248. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/tax_benefit_models/us/legacy_spm/universe.py +0 -0
  249. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/tax_benefit_models/us/model.py +0 -0
  250. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/tax_benefit_models/us/spm.py +0 -0
  251. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/utils/__init__.py +0 -0
  252. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/utils/dates.py +0 -0
  253. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/utils/design.py +0 -0
  254. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/utils/entity_utils.py +0 -0
  255. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/utils/errors.py +0 -0
  256. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/utils/hashing.py +0 -0
  257. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/utils/household_validation.py +0 -0
  258. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/utils/parameter_labels.py +0 -0
  259. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/utils/parametric_reforms.py +0 -0
  260. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine/utils/plotting.py +0 -0
  261. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine.egg-info/dependency_links.txt +0 -0
  262. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine.egg-info/entry_points.txt +0 -0
  263. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine.egg-info/requires.txt +0 -0
  264. {policyengine-6.7.2 → policyengine-6.7.3}/src/policyengine.egg-info/top_level.txt +0 -0
  265. {policyengine-6.7.2 → policyengine-6.7.3}/tests/__init__.py +0 -0
  266. {policyengine-6.7.2 → policyengine-6.7.3}/tests/conftest.py +0 -0
  267. {policyengine-6.7.2 → policyengine-6.7.3}/tests/fixtures/__init__.py +0 -0
  268. {policyengine-6.7.2 → policyengine-6.7.3}/tests/fixtures/filtering_fixtures.py +0 -0
  269. {policyengine-6.7.2 → policyengine-6.7.3}/tests/fixtures/household_calculator_snapshots/uk_couple_two_kids.json +0 -0
  270. {policyengine-6.7.2 → policyengine-6.7.3}/tests/fixtures/household_calculator_snapshots/uk_model_surface.json +0 -0
  271. {policyengine-6.7.2 → policyengine-6.7.3}/tests/fixtures/household_calculator_snapshots/uk_single_adult_employment_income.json +0 -0
  272. {policyengine-6.7.2 → policyengine-6.7.3}/tests/fixtures/household_calculator_snapshots/uk_single_adult_no_income.json +0 -0
  273. {policyengine-6.7.2 → policyengine-6.7.3}/tests/fixtures/household_calculator_snapshots/uk_single_parent_one_child.json +0 -0
  274. {policyengine-6.7.2 → policyengine-6.7.3}/tests/fixtures/household_calculator_snapshots/us_married_two_kids_high_income.json +0 -0
  275. {policyengine-6.7.2 → policyengine-6.7.3}/tests/fixtures/household_calculator_snapshots/us_model_surface.json +0 -0
  276. {policyengine-6.7.2 → policyengine-6.7.3}/tests/fixtures/household_calculator_snapshots/us_single_adult_employment_income.json +0 -0
  277. {policyengine-6.7.2 → policyengine-6.7.3}/tests/fixtures/household_calculator_snapshots/us_single_adult_no_income.json +0 -0
  278. {policyengine-6.7.2 → policyengine-6.7.3}/tests/fixtures/household_calculator_snapshots/us_single_parent_one_child.json +0 -0
  279. {policyengine-6.7.2 → policyengine-6.7.3}/tests/fixtures/parameter_labels_fixtures.py +0 -0
  280. {policyengine-6.7.2 → policyengine-6.7.3}/tests/fixtures/parametric_reforms_fixtures.py +0 -0
  281. {policyengine-6.7.2 → policyengine-6.7.3}/tests/fixtures/poverty_by_demographics_fixtures.py +0 -0
  282. {policyengine-6.7.2 → policyengine-6.7.3}/tests/fixtures/region_fixtures.py +0 -0
  283. {policyengine-6.7.2 → policyengine-6.7.3}/tests/fixtures/release_tros/README.md +0 -0
  284. {policyengine-6.7.2 → policyengine-6.7.3}/tests/fixtures/release_tros/country-models.lock.toml +0 -0
  285. {policyengine-6.7.2 → policyengine-6.7.3}/tests/fixtures/release_tros/manifest.json +0 -0
  286. {policyengine-6.7.2 → policyengine-6.7.3}/tests/fixtures/release_tros/us-release_manifest.json +0 -0
  287. {policyengine-6.7.2 → policyengine-6.7.3}/tests/fixtures/release_tros/us.trace.tro.jsonld +0 -0
  288. {policyengine-6.7.2 → policyengine-6.7.3}/tests/fixtures/spm_development.py +0 -0
  289. {policyengine-6.7.2 → policyengine-6.7.3}/tests/fixtures/uk_contract/pinned_uk_2.125.1_defects.json +0 -0
  290. {policyengine-6.7.2 → policyengine-6.7.3}/tests/fixtures/uk_contract/population_pass_max_examples_0.json +0 -0
  291. {policyengine-6.7.2 → policyengine-6.7.3}/tests/fixtures/uk_metrics/README.md +0 -0
  292. {policyengine-6.7.2 → policyengine-6.7.3}/tests/fixtures/uk_metrics/budget_metrics_report.json +0 -0
  293. {policyengine-6.7.2 → policyengine-6.7.3}/tests/fixtures/uk_metrics/standard_reforms.yaml +0 -0
  294. {policyengine-6.7.2 → policyengine-6.7.3}/tests/fixtures/uk_replay/DIGESTS.json +0 -0
  295. {policyengine-6.7.2 → policyengine-6.7.3}/tests/fixtures/uk_replay/README.md +0 -0
  296. {policyengine-6.7.2 → policyengine-6.7.3}/tests/fixtures/uk_replay/qualification_request_golden.jcs +0 -0
  297. {policyengine-6.7.2 → policyengine-6.7.3}/tests/fixtures/uk_replay/qualification_request_golden.json +0 -0
  298. {policyengine-6.7.2 → policyengine-6.7.3}/tests/fixtures/uk_replay/receipt_6.4.1_attempt1/REPLAY_RECEIPT.json +0 -0
  299. {policyengine-6.7.2 → policyengine-6.7.3}/tests/fixtures/uk_replay/receipt_6.4.1_attempt1/REQUEST.json +0 -0
  300. {policyengine-6.7.2 → policyengine-6.7.3}/tests/fixtures/uk_replay/receipt_6.5.0/REPLAY_RECEIPT.json +0 -0
  301. {policyengine-6.7.2 → policyengine-6.7.3}/tests/fixtures/uk_replay/receipt_6.5.0/REQUEST.json +0 -0
  302. {policyengine-6.7.2 → policyengine-6.7.3}/tests/fixtures/uk_replay/receipt_6.5.0/STATUS.json +0 -0
  303. {policyengine-6.7.2 → policyengine-6.7.3}/tests/fixtures/uk_replay/replay_receipt_golden.jcs +0 -0
  304. {policyengine-6.7.2 → policyengine-6.7.3}/tests/fixtures/uk_replay/replay_receipt_golden.json +0 -0
  305. {policyengine-6.7.2 → policyengine-6.7.3}/tests/fixtures/us_reform_fixtures.py +0 -0
  306. {policyengine-6.7.2 → policyengine-6.7.3}/tests/fixtures/variable_label_fixtures.py +0 -0
  307. {policyengine-6.7.2 → policyengine-6.7.3}/tests/qualification_fixtures.py +0 -0
  308. {policyengine-6.7.2 → policyengine-6.7.3}/tests/receipt_modifiers.py +0 -0
  309. {policyengine-6.7.2 → policyengine-6.7.3}/tests/receipt_unbindable_modifiers.py +0 -0
  310. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_aggregate.py +0 -0
  311. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_be_axiom_pilot.py +0 -0
  312. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_budgetary_impact.py +0 -0
  313. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_bump_version.py +0 -0
  314. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_bundle.py +0 -0
  315. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_bundle_metadata.py +0 -0
  316. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_cache.py +0 -0
  317. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_canonical_json.py +0 -0
  318. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_certify_data_release.py +0 -0
  319. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_change_aggregate.py +0 -0
  320. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_cliff_impact.py +0 -0
  321. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_cliff_impact_analysis.py +0 -0
  322. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_congressional_district_impact.py +0 -0
  323. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_constituency_impact.py +0 -0
  324. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_dataset_materialization.py +0 -0
  325. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_dataset_persistence.py +0 -0
  326. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_dataset_runtime.py +0 -0
  327. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_dataset_source.py +0 -0
  328. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_decile_grouping.py +0 -0
  329. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_derivations.py +0 -0
  330. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_dict_reforms_on_simulation.py +0 -0
  331. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_disclosure_areas.py +0 -0
  332. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_disclosure_estimate.py +0 -0
  333. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_disclosure_noise.py +0 -0
  334. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_disclosure_release.py +0 -0
  335. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_disclosure_schema.py +0 -0
  336. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_disclosure_support.py +0 -0
  337. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_disclosure_validate.py +0 -0
  338. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_entity_mapping.py +0 -0
  339. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_entity_utils.py +0 -0
  340. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_entity_utils_characterization.py +0 -0
  341. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_errors.py +0 -0
  342. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_execution_receipt.py +0 -0
  343. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_extra_variables.py +0 -0
  344. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_filtering.py +0 -0
  345. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_generate_trace_tros.py +0 -0
  346. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_graph/__init__.py +0 -0
  347. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_graph/conftest.py +0 -0
  348. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_graph/test_extractor.py +0 -0
  349. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_household_calculator_snapshot.py +0 -0
  350. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_household_impact.py +0 -0
  351. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_inequality.py +0 -0
  352. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_intra_decile_impact.py +0 -0
  353. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_labor_supply_response.py +0 -0
  354. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_local_authority_impact.py +0 -0
  355. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_manifest_version_mismatch.py +0 -0
  356. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_models.py +0 -0
  357. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_pandas3_compatibility.py +0 -0
  358. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_parameter_labels.py +0 -0
  359. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_parameter_nodes.py +0 -0
  360. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_parameter_values.py +0 -0
  361. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_parametric_reforms.py +0 -0
  362. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_poverty.py +0 -0
  363. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_poverty_by_demographics.py +0 -0
  364. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_poverty_run.py +0 -0
  365. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_preservation_mirror.py +0 -0
  366. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_program_statistics.py +0 -0
  367. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_pyproject_pins.py +0 -0
  368. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_qualification_contracts.py +0 -0
  369. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_qualification_ledger_concurrency.py +0 -0
  370. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_qualification_ledger_script.py +0 -0
  371. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_qualified_pair_certification.py +0 -0
  372. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_region.py +0 -0
  373. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_region_group_strategy.py +0 -0
  374. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_release_credentials.py +0 -0
  375. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_release_lock.py +0 -0
  376. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_release_manifests.py +0 -0
  377. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_release_tro_generation.py +0 -0
  378. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_results.py +0 -0
  379. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_run_record.py +0 -0
  380. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_scoping_strategy.py +0 -0
  381. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_small_follow_ups.py +0 -0
  382. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_spm_bundle_bootstrap.py +0 -0
  383. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_spm_bundle_tooling.py +0 -0
  384. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_spm_decile.py +0 -0
  385. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_spm_development_authentication.py +0 -0
  386. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_spm_household.py +0 -0
  387. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_spm_model.py +0 -0
  388. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_spm_selection.py +0 -0
  389. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_spm_selection_schema.py +0 -0
  390. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_trace_tro.py +0 -0
  391. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_trace_tro_verify.py +0 -0
  392. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_uk_analysis.py +0 -0
  393. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_uk_candidate_metric_baselines.py +0 -0
  394. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_uk_cgt_response_records.py +0 -0
  395. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_uk_cgt_responses.py +0 -0
  396. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_uk_dated_reforms.py +0 -0
  397. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_uk_geography_assets.py +0 -0
  398. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_uk_geography_disclosure.py +0 -0
  399. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_uk_program_statistics.py +0 -0
  400. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_uk_qualification_pipeline.py +0 -0
  401. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_uk_qualification_workflow.py +0 -0
  402. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_uk_regions.py +0 -0
  403. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_uk_year_file_data_year.py +0 -0
  404. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_us_legacy_inputs.py +0 -0
  405. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_us_legacy_inputs_integration.py +0 -0
  406. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_us_legacy_spm.py +0 -0
  407. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_us_legacy_spm_integration.py +0 -0
  408. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_us_legacy_spm_model_contract.py +0 -0
  409. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_us_long_term_datasets.py +0 -0
  410. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_us_microsim_structural_reforms.py +0 -0
  411. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_us_native_alignment.py +0 -0
  412. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_us_native_hdf_weights.py +0 -0
  413. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_us_program_statistics.py +0 -0
  414. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_us_reform_application.py +0 -0
  415. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_us_regions.py +0 -0
  416. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_us_year_file_stamp.py +0 -0
  417. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_variable_labels.py +0 -0
  418. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_variable_metadata.py +0 -0
  419. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_wheels.py +0 -0
  420. {policyengine-6.7.2 → policyengine-6.7.3}/tests/test_zenodo_mirror.py +0 -0
@@ -1,3 +1,10 @@
1
+ ## [6.7.3] - 2026-10-17
2
+
3
+ ### Changed
4
+
5
+ - Contract 2.0.0 of the UK Budget reform contract resolves cos d1344: after a freeze ends, the personal allowance, basic rate limit and aligned NICs thresholds are checked against indexation from the frozen amount (ITA 2007 ss21 and 57), and the six pending checks become gating ones; the sampled property uses the same statutory oracle for the allowance.
6
+
7
+
1
8
  ## [6.7.2] - 2026-10-17
2
9
 
3
10
  ### Fixed
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: policyengine
3
- Version: 6.7.2
3
+ Version: 6.7.3
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
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "policyengine"
7
- version = "6.7.2"
7
+ version = "6.7.3"
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.2",
2
+ "bundle_version": "6.7.3",
3
3
  "citation": {
4
4
  "publisher": "PolicyEngine",
5
- "title": "PolicyEngine bundle 6.7.2",
5
+ "title": "PolicyEngine bundle 6.7.3",
6
6
  "type": "software-bundle",
7
- "version": "6.7.2"
7
+ "version": "6.7.3"
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.2",
20
+ "bundle_id": "uk-6.7.3",
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.2",
102
+ "policyengine_version": "6.7.3",
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.2",
115
+ "bundle_id": "us-6.7.3",
116
116
  "certification": {
117
117
  "built_with_model_version": "2.2.1",
118
118
  "certified_by": "policyengine.py bundle certification",
@@ -217,7 +217,7 @@
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.2",
220
+ "policyengine_version": "6.7.3",
221
221
  "region_datasets": {
222
222
  "congressional_district": {
223
223
  "path_template": "populace_us_2024.h5"
@@ -295,10 +295,10 @@
295
295
  "packages": {
296
296
  "policyengine": {
297
297
  "import_name": "policyengine",
298
- "install_requirement": "policyengine==6.7.2",
298
+ "install_requirement": "policyengine==6.7.3",
299
299
  "name": "policyengine",
300
300
  "role": "bundle_carrier",
301
- "version": "6.7.2"
301
+ "version": "6.7.3"
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.2",
337
+ "policyengine_version": "6.7.3",
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.2 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.3 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.2"
26
+ "schema:softwareVersion": "6.7.3"
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.2.",
32
+ "rdfs:comment": "Certified arrangement for bundle uk-6.7.3.",
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": "6680bb82cd34486f2fe8c9fad7455b34fdecbd2586487b65c2b4c2cec2e6f20b"
78
+ "trov:sha256": "c7295f74a1145f2f90bc015f503c70295b3959878c2504b542efef0021f3250d"
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": "de752e7eba643dbd363f783783239fdcde3b439858c06ced739be5cb78a8734f"
105
+ "trov:sha256": "9807327c2a08dd5d193295864a0efca682d851bf42b72c00a9f8a4892de6d19e"
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.2 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.3 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.2"
25
+ "schema:softwareVersion": "6.7.3"
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.2.",
31
+ "rdfs:comment": "Certified arrangement for bundle us-6.7.3.",
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": "6680bb82cd34486f2fe8c9fad7455b34fdecbd2586487b65c2b4c2cec2e6f20b"
77
+ "trov:sha256": "c7295f74a1145f2f90bc015f503c70295b3959878c2504b542efef0021f3250d"
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": "fdda3195c7d0d9de4123c8087ebaf2d09b20908b0068f46fa8f3bf686edf90f7"
104
+ "trov:sha256": "f69dfc687a037b5c08ac87a52632a0e3a43b44cf4859ae27b14a0a4e942b24c0"
105
105
  }
106
106
  },
107
107
  "trov:hasPerformance": {
@@ -47,11 +47,30 @@ reading cases.
47
47
  Prior law after a bounded change
48
48
  --------------------------------
49
49
 
50
- The contract expects prior law's projected path to resume after a bounded
51
- change (``PRIOR_LAW_OPTION = "projected"``, since contract 1.0.0). Whether indexation should
52
- instead resume from a changed statutory amount (Income Tax Act 2007 s57
53
- indexes "the amount ... for the previous tax year") is an open methodology
54
- call (cos d1344). Checks that depend on it carry ``pending`` and never gate.
50
+ Where the timeline states no later value, what prior law is after a change
51
+ ends depends on how the parameter's future is made. Contract 2.0.0
52
+ (``PRIOR_LAW_OPTION = "statutory"``) records the Budget CI workstream's
53
+ call under cos d1344, taken with independent review:
54
+
55
+ - A threshold indexed from its own previous year (the personal allowance,
56
+ the basic rate limit and the NICs thresholds aligned with them) resumes
57
+ indexation from the changed amount. Income Tax Act 2007 s57(3) Step 1
58
+ multiplies "the allowance ... for the previous tax year" and s21(3) Step 1
59
+ increases "the basic rate limit for the previous tax year"; freezes are
60
+ legislated by fixing the amount and disapplying the indexation for named
61
+ years (Finance Act 2021 s5), so the frozen amount is indexed after them.
62
+ Returning to the path the threshold would have taken without the change,
63
+ contract 1.0.0's reading, has no statutory basis.
64
+ - An amount uprated from an index (benefit and pension rates) returns to its
65
+ uprated path, as contract 1.0.0 expected. That reading is not settled:
66
+ freezes of such amounts resumed from the frozen amount (Welfare Reform and
67
+ Work Act 2016 s11), while a period-limited modification reverts (SI
68
+ 2020/371 reg 3). It is open in policyengine-uk#2430; the contract's
69
+ checks on it stay as they were until that is decided.
70
+
71
+ ``Check.pending`` remains for open calls. No check waits on d1344 now; the
72
+ default capital gains response's checks wait on policyengine-uk#2396 (see
73
+ Behavioural responses).
55
74
 
56
75
  Behavioural responses
57
76
  ---------------------
@@ -111,9 +130,13 @@ from decimal import ROUND_CEILING, Decimal
111
130
  from typing import Any, Optional, Union
112
131
 
113
132
  CONTRACT_ID = "policyengine-uk/budget-reform-contract"
114
- CONTRACT_VERSION = "1.1.0"
115
- PRIOR_LAW_OPTION = "projected"
133
+ CONTRACT_VERSION = "2.0.0"
134
+ PRIOR_LAW_OPTION = "statutory"
135
+ # The cos decision under which the prior-law call was taken.
116
136
  PRIOR_LAW_DECISION = "d1344"
137
+ # Finance Act 2021 s5, as amended by Finance Act 2026 s10, fixes the
138
+ # personal allowance and basic rate limit for 2022-23 to 2030-31.
139
+ LAST_FROZEN_TAX_YEAR = 2030
117
140
  # The capital gains response default: policyengine-uk#2396 makes it a
118
141
  # retention-rate elasticity of 1. Its checks gate once policyengine.py pins it.
119
142
  DEFAULT_RESPONSE_DECISION = "policyengine-uk#2396"
@@ -335,18 +358,51 @@ def _freeze_change(year: int) -> Callable[[Context], float]:
335
358
  return expected
336
359
 
337
360
 
338
- def _statutory_resumption(path: str) -> Callable[[Context], float]:
361
+ def _resumed_after_freeze(path: str, year: int) -> Callable[[Context], float]:
362
+ """A threshold frozen to 2033-34, indexed from the frozen amount after it.
363
+
364
+ ITA 2007 s57(3) for the personal allowance and s21(3) for the basic rate
365
+ limit, each year from the year before, with current law's September CPI
366
+ rise for that year.
367
+ """
368
+
339
369
  def expected(context: Context) -> float:
340
- increase = context.baseline(SEPTEMBER_CPI_RISE, 2034)
370
+ allowance, limit = 12_570.0, 37_700.0
371
+ for each in range(2034, year + 1):
372
+ increase = context.baseline(SEPTEMBER_CPI_RISE, each)
373
+ allowance = s57_personal_allowance(allowance, increase)
374
+ limit = s21_basic_rate_limit(limit, increase)
341
375
  if path == PERSONAL_ALLOWANCE:
342
- return s57_personal_allowance(12_570, increase)
343
- return s21_basic_rate_limit(37_700, increase)
376
+ return allowance
377
+ if path == BASIC_RATE_LIMIT:
378
+ return limit
379
+ if path == LOWER_PROFITS_LIMIT:
380
+ return allowance
381
+ if path == UPPER_PROFITS_LIMIT:
382
+ return allowance + limit
383
+ if path == PRIMARY_THRESHOLD:
384
+ return weekly(allowance)
385
+ if path == UPPER_EARNINGS_LIMIT:
386
+ return weekly(allowance + limit)
387
+ raise ValueError(path)
388
+
389
+ return expected
390
+
391
+
392
+ def _resumed_freeze_change(year: int) -> Callable[[Context], float]:
393
+ def expected(context: Context) -> float:
394
+ allowance = _resumed_after_freeze(PERSONAL_ALLOWANCE, year)(context)
395
+ frozen_out = context.baseline(PERSONAL_ALLOWANCE, year) - allowance
396
+ return context.baseline(BASIC_RATE, year) * frozen_out
344
397
 
345
398
  return expected
346
399
 
347
400
 
348
- def _baseline_value(path: str, year: int) -> Callable[[Context], float]:
349
- return lambda context: context.baseline(path, year)
401
+ RESUMPTION_ORACLE = (
402
+ "indexed from the frozen amount after the freeze (ITA 2007 s57(3) and "
403
+ "s21(3), the previous tax year's amount; cos d1344), with current law's "
404
+ "September CPI rise"
405
+ )
350
406
 
351
407
 
352
408
  GAINS = 10_000
@@ -635,30 +691,37 @@ CASES: tuple[Case, ...] = (
635
691
  ),
636
692
  )
637
693
  )
638
- + (
639
- Check(
640
- "parameter",
641
- PERSONAL_ALLOWANCE,
642
- 2034,
643
- _baseline_value(PERSONAL_ALLOWANCE, 2034),
644
- "prior law's projected path resumes (PRIOR_LAW_OPTION)",
645
- ),
646
- Check(
647
- "parameter",
648
- PERSONAL_ALLOWANCE,
649
- 2034,
650
- _statutory_resumption(PERSONAL_ALLOWANCE),
651
- "ITA 2007 s57 from the frozen £12,570 with 2034's September CPI rise",
652
- pending=PRIOR_LAW_DECISION,
653
- ),
654
- Check(
655
- "parameter",
656
- BASIC_RATE_LIMIT,
657
- 2034,
658
- _statutory_resumption(BASIC_RATE_LIMIT),
659
- "ITA 2007 s21 from the frozen £37,700 with 2034's September CPI rise",
660
- pending=PRIOR_LAW_DECISION,
661
- ),
694
+ + tuple(
695
+ check
696
+ for year in (2034, 2035)
697
+ for check in (
698
+ *(
699
+ Check(
700
+ "parameter",
701
+ path,
702
+ year,
703
+ _resumed_after_freeze(path, year),
704
+ RESUMPTION_ORACLE,
705
+ )
706
+ for path in (
707
+ PERSONAL_ALLOWANCE,
708
+ BASIC_RATE_LIMIT,
709
+ LOWER_PROFITS_LIMIT,
710
+ UPPER_PROFITS_LIMIT,
711
+ PRIMARY_THRESHOLD,
712
+ UPPER_EARNINGS_LIMIT,
713
+ )
714
+ ),
715
+ Check(
716
+ "change",
717
+ "income_tax",
718
+ year,
719
+ _resumed_freeze_change(year),
720
+ "basic rate x (current law's allowance - the allowance "
721
+ "indexed from the frozen amount)",
722
+ 0.005,
723
+ ),
724
+ )
662
725
  ),
663
726
  ),
664
727
  Case(
@@ -2001,16 +2064,21 @@ def _sampled_change(rng: random.Random) -> Change:
2001
2064
  def expected_annual(
2002
2065
  change: Change, year: int, baseline: Callable[[str, int], float]
2003
2066
  ) -> float:
2004
- """The annual value a single change gives, under the contract's prior-law
2005
- option (``PRIOR_LAW_OPTION``).
2006
-
2007
- Prior law is current law's annual value outside the change. Blended
2008
- parameters are sampled only from 2025 on, where current law holds one
2009
- value through each fiscal year, so each day of the year takes the
2010
- change's value inside the change and prior law's outside it.
2067
+ """The annual value a single change gives, under contract 2.0.0.
2068
+
2069
+ For the personal allowance, prior law is statute: tax years the change
2070
+ covers take its value, years to 2030-31 take current law (Finance Act
2071
+ 2021 s5 fixes them), and every later year is ITA 2007 s57(3) applied to
2072
+ the year before. For the other sampled parameters prior law is current
2073
+ law's annual value outside the change. Blended parameters are sampled
2074
+ only from 2025 on, where current law holds one value through each fiscal
2075
+ year, so each day of the year takes the change's value inside the change
2076
+ and prior law's outside it.
2011
2077
  """
2012
2078
  blend, _ = SAMPLED_PARAMETERS[change.path]
2013
2079
  stop = change.stop or FLAT_STOP
2080
+ if change.path == PERSONAL_ALLOWANCE:
2081
+ return _statutory_allowance(change, year, baseline)
2014
2082
  prior = baseline(change.path, year)
2015
2083
  if not blend:
2016
2084
  sample = datetime.date(year, 4, 30)
@@ -2026,6 +2094,20 @@ def expected_annual(
2026
2094
  return total / days
2027
2095
 
2028
2096
 
2097
+ def _statutory_allowance(
2098
+ change: Change, year: int, baseline: Callable[[str, int], float]
2099
+ ) -> float:
2100
+ sample = datetime.date(year, 4, 30)
2101
+ if change.start <= sample <= (change.stop or FLAT_STOP):
2102
+ return float(change.value)
2103
+ if year <= LAST_FROZEN_TAX_YEAR:
2104
+ return baseline(PERSONAL_ALLOWANCE, year)
2105
+ return s57_personal_allowance(
2106
+ _statutory_allowance(change, year - 1, baseline),
2107
+ baseline(SEPTEMBER_CPI_RISE, year),
2108
+ )
2109
+
2110
+
2029
2111
  def _property_annual_values(
2030
2112
  change: Change,
2031
2113
  routes: Sequence[str],
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: policyengine
3
- Version: 6.7.2
3
+ Version: 6.7.3
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
@@ -394,7 +394,7 @@ tests/fixtures/release_tros/us-release_manifest.json
394
394
  tests/fixtures/release_tros/us.trace.tro.jsonld
395
395
  tests/fixtures/uk_contract/README.md
396
396
  tests/fixtures/uk_contract/evaluate_case_rows.json
397
- tests/fixtures/uk_contract/full_released_uk_2.130.1.json
397
+ tests/fixtures/uk_contract/full_released_uk_2.135.0.json
398
398
  tests/fixtures/uk_contract/pinned_uk_2.125.1_defects.json
399
399
  tests/fixtures/uk_contract/population_pass_max_examples_0.json
400
400
  tests/fixtures/uk_metrics/README.md
@@ -0,0 +1,15 @@
1
+ # UK Budget reform contract reports
2
+
3
+ Real reports from the UK Budget reform contract runner (workstream W1,
4
+ `policyengine.tax_benefit_models.uk.budget_reform_contract`, PolicyEngine/policyengine.py#577),
5
+ run on 11 October 2026. The qualification gate tests in `tests/test_uk_candidate_gates.py` read them.
6
+
7
+ - `pinned_uk_2.125.1_defects.json`: every case on policyengine-uk 2.125.1, the pinned model at the time, with `max_examples=2` and no dataset. The 66 failures and 35 errors are the dated-reform defects the contract was written to catch.
8
+ - `full_released_uk_2.135.0.json`: the full run of contract 2.0.0 (17 October 2026, UTC), the runner at policyengine.py#627's head f1f2431d9 (main merged in, #643 included), on policyengine-uk 2.135.0, which holds the d1344 statutory resumption (policyengine-uk#2423), with core 3.33.0. It covers every route and case, seed 0 and `max_examples=20`, with population checks on the certified `enhanced_frs_2024_25` (SHA-256 `056e80fd…`, the dataset of the certified pair). Result: 881 pass, 19 pending a methodology call (policyengine-uk#2396, the default capital gains response), 119 unsupported with reasons, both properties passing, 19 of 19 population rows. #651 changed only how the household route imports the UK model; its review found the output unchanged row for row. Its `versions` record policyengine 6.4.3, the stale metadata of the editable install that ran it; treat them as fixture metadata. The gate tests read it through the coverage the current runner module declares, and fail rather than skip when the runner's contract version moves past it. It replaces the 1.1.0 run on policyengine-uk 2.130.1, whose freeze checks contract 2.0.0 replaced.
9
+ - `population_pass_max_examples_0.json`: population checks only, on the earlier certified `enhanced_frs_2024_25` (uk-data 1.58.0, SHA-256 `5ba399ea…`). It has no cases, and with `max_examples=0` its sampled properties did not run, so the gate treats it as an incomplete run.
10
+
11
+ The edits:
12
+ - `dataset.path` (a local Hugging Face cache path) was replaced with a placeholder in the two files that name a dataset, and every file was re-serialized with sorted keys.
13
+ - Population rows are computed on the survey dataset, so a count from 1 to 9 in their `detail` is a small cell, which the metrics tool's `privacy.py` rule never publishes. Since policyengine.py#643 the runner suppresses them at source, so `full_released_uk_2.135.0.json` reads `"fewer than 10"` where they occur, and its population details agree across routes. No gate rule reads `detail`, and the qualification ledger (`publishable_contract_report`) publishes none of a population detail's values beyond its top-level true/false findings, since rows of one check on different routes share a subsample and their differences would give a handful's figures back. Check any new fixture for such counts before committing it.
14
+
15
+ The run of contract 1.0.0 on policyengine-uk 2.126.8 (`full_allpass_uk_2.126.8.json`) was removed once no test read it.