Skip to content

Certify US Populace default: Build J 57k (rmloss100)#470

Merged
MaxGhenis merged 1 commit into
mainfrom
certify-buildj-57k
Jul 10, 2026
Merged

Certify US Populace default: Build J 57k (rmloss100)#470
MaxGhenis merged 1 commit into
mainfrom
certify-buildj-57k

Conversation

@MaxGhenis

Copy link
Copy Markdown
Contributor

Certifies the Build J 57k sparse artifact as the US default, replacing populace-us-2024-buildi-sparse-rmloss100-6e8e929-20260709T034135Z (July 9).

Release: populace-us-2024-buildj-sparse-rmloss100-75d5add-20260710T094201Z (latest.json already flipped via the tracked publish)
Dataset sha256: 9d1e460d… · 57,240 households · pe-us 1.764.6 · generated by scripts/certify_data_release.py

Build J re-runs the full gated stack on populace main (the #369 coverage gate + reform-coverage smoke, #373 SCF asset stage, #384 TANF fix, #385 release-native loading, #387 CMS substitution register) with every gate enforced and no bypass flags. It exists to close populace#368: an SSI resource-limit reform must no longer silently score $0.

Why promote (promotion scorecard — populace#368 verdict, all figures verbatim from artifacts)

metric Build J (new) Build I (outgoing) Build H frozen
SSI $10k/$20k reform effect +$5,153,370,118 (scored $0 pre-asset)
final loss 0.030843 0.030833 0.030915
within-10% 0.8900 0.8888 0.8901
fed income tax vs SOI ht2 +0.58% +0.22% +0.45%
export-mass parity PASS 0/35 PASS 0/35 FAIL 1/35
zero-support (post-exclusion) 0 0 0

The SSI probe — the reason populace#368 exists — is green at +$5,153,370,118 at 2024 (baseline SSI $55,192,291,256 → reform $60,345,661,375, $1B floor enforced). The three SSI countable-resource asset columns (bank_account_assets, stock_assets, bond_assets) ship on the H5 with signal and are hard requirements in the coverage manifest (no exclusion), exactly as the issue demanded.

Registry: Build J compiles 5,510 specs (091ace02f962) vs Build I's 5,514 (d71c59514e3a). The delta is the #387 RI CMS Medicaid substitution (+1 injected spec: RI anchored at the ledger-verified November 2024 count, cannot-rot on backfill) and 5 new TANF thin-state zero-support exclusions (−5: fl/ia/mo/ne/nj basic assistance, which lost support once #384 made TANF take-up seeding live). Base pool data is identical to Build F/H/I; selection is exactly Build I's rmloss100 57,240 (identity join: 0 unmapped, 0 ambiguous).

Caveats carried forward

  • populace#374 (open): the SSI magnitude lands between the +$9.66B SCF-only overlay and the ~+$1.60B dense-native reference class — the gap is the SIPP blend (SCF-only understates the low-liquid-asset left tail). populace#368's acceptance criterion (smoke green on a bound reform) is met; landing the magnitude in the dense-native class is Align changelog fragment checks with Towncrier #374's remaining work.
  • populace#340 (unchanged): never-persisted input families carry over from the incumbent, unchanged by this certification.

Refs populace#368, populace#359.

🤖 Generated with Claude Code

Certifies populace-us-2024-buildj-sparse-rmloss100-75d5add-20260710T094201Z
as the US default, replacing Build I. latest.json already flipped via the
tracked publish. Build J re-runs the full gated stack (SSI asset stage +
coverage gate + reform smoke) so an SSI resource-limit reform no longer
scores $0: the ssi_asset_limit_10k_20k probe scores +$5,153,370,118.

Generated by scripts/certify_data_release.py (bundle manifest + US TRO
sidecar rebind + changelog fragment); pe-us stays 1.764.6, so pyproject and
the model-surface snapshot are unchanged. Test release-id constants updated.
UK TRO left for the post-merge generate --include-tros step.

Refs PolicyEngine/populace#368, PolicyEngine/populace#359.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@MaxGhenis
MaxGhenis marked this pull request as ready for review July 10, 2026 11:43
@MaxGhenis
MaxGhenis merged commit 9f071a0 into main Jul 10, 2026
12 checks passed
MaxGhenis added a commit that referenced this pull request Jul 12, 2026
)

Register a staged, non-default Populace US artifact
(populace_us_2024_acs_local, published in its own immutable Build L
release) so it can be loaded by name without ever becoming the certified
default.

- Add a sibling dataset_overlays.{country} manifest section merged into
  the resolvable dataset registry by get_release_manifest. Overlays are
  strictly additive (may not shadow the certified default or any certified
  dataset) and survive re-certification, because certify_data_release only
  rewrites data_releases.
- Register dataset_overlays.us.populace_us_2024_acs_local pinned to its
  Build L revision + sha256; rebind the US TRO sidecar to the new manifest.
- Document loading the local-area dataset and filtering it for state/CD
  breakdowns (docs/microsim.md), and the overlay mechanism
  (docs/release-bundles.md).
- Add a fill-in-the-id Build M US Populace certification runbook replaying
  #470 (docs/engineering/runbooks/), including verifying overlay survival.

Fixes #471

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
MaxGhenis added a commit that referenced this pull request Jul 17, 2026
Fixes #474.

BUILD_M_RELEASE_ID populace-us-2024-buildm-sparse-rmloss100-98bf731-
20260717T075101Z replaces populace-us-2024-buildj-sparse-rmloss100-
75d5add-20260710T094201Z; policyengine-us stays 1.764.6
(built_with_model_package), so pyproject and household snapshots are
untouched - the #470 common case, per the Build M runbook.

Build M sparse vs Build J: final loss 0.02666 vs 0.03084, within-10%
90.21% vs 89.00%, 5,667 vs 5,510 compiled targets, all 14 release
gates passed. The UK TRO sidecar's two sha fields update because it
binds the same (changed) bundle manifest; not a degraded regeneration.

Verified: bundle.py check green; local-area overlay preserved;
manifest+certify suites 70 passed; models+US regions 57 passed against
the published tag; overlay selection 7 passed; format+lint clean.

Merging this PR is the default-flip decision and stays with the
maintainer.

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
MaxGhenis added a commit that referenced this pull request Jul 22, 2026
Fixes #480.

BUILD_N_RELEASE_ID populace-us-2024-buildn-sparse-rmloss100-c3e378a-
20260722T010408Z replaces populace-us-2024-buildm-sparse-rmloss100-
98bf731-20260717T075101Z; policyengine-us stays 1.764.6
(built_with_model_package), so pyproject and household snapshots are
untouched - the #470 common case, per the Build M runbook.

Build N sparse vs Build M: final loss 0.028242 vs 0.02666, within-10%
89.49% vs 90.21%, 5,672 vs 5,667 compiled targets. The pair is not
surface-comparable: populace#486/#488 repaired 518 target values
(state capital gains +$298.5B, taxable interest +$21.6B), so N holds
89.49% against a strictly harder, truthful surface. All 8 build gates
passed; export-mass parity 0 failures both legs; reform-coverage
smoke 39/39 including the keogh probe; the SSI one-shot Bernoulli law
gate reports 0 violations (populace#477 deleted the reconcile loop).
Publish contract green with medical_expense_deduction_total at the
adjudicated 0.25 bound (populace#490; published row -20.57%).

The UK TRO sidecar's two sha fields update because it binds the same
(changed) bundle manifest; not a degraded regeneration.

Merging this PR is the default-flip decision and stays with the
maintainer.

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
MaxGhenis added a commit that referenced this pull request Jul 23, 2026
BUILD_O_RELEASE_ID populace-us-2024-buildo-sparse-rmloss100-22bd902-
20260722T232627Z replaces populace-us-2024-buildn-sparse-rmloss100-
c3e378a-20260722T010408Z; policyengine-us stays 1.764.6
(built_with_model_package), so pyproject and household snapshots are
untouched - the #470 common case.

Build O attempt 1 vs Build N: final loss 0.028131 vs 0.028242,
within-10% 89.56% vs 89.49%, 5,672 targets on the same truthful
surface (directly comparable, unlike N-vs-M). First release to pass
every gate on its first attempt - the populace#491 register alignment
at work. Input coverage 163/163 now includes the populace#500
adult-care and SE-health stages: CDCC adult-care reforms score real
dollars instead of a silent $0.

Known boundaries stated in full in the populace#368 verdict, led by
the inherited populace#507 SSI aged-band defect (do not cite for SSI
baselines); attempt 2 with the populace#508 fix supersedes this
default when it lands. Strict-dominance rationale in the verdict.

The UK TRO sidecar's sha fields update because it binds the same
(changed) bundle manifest; not a degraded regeneration.

Merging this PR is the default-flip decision and stays with the
maintainer.

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant