Skip to content

Certify Build N US Populace as the certified default#481

Merged
MaxGhenis merged 1 commit into
mainfrom
certify-buildn-sparse
Jul 22, 2026
Merged

Certify Build N US Populace as the certified default#481
MaxGhenis merged 1 commit into
mainfrom
certify-buildn-sparse

Conversation

@MaxGhenis

Copy link
Copy Markdown
Contributor

Fixes #480.

Merging this PR is the default flip — it certifies populace-us-2024-buildn-sparse-rmloss100-c3e378a-20260722T010408Z (published 2026-07-22, immutable tag; latest.json deliberately untouched) as the certified US default, replacing Build M. The merge decision stays with the maintainer.

What changes

Same shape as the Build M certification (#475), the #470 common case — policyengine-us==1.764.6 is unchanged (compatibility_basis: built_with_model_package), so pyproject and household snapshots are untouched:

  • src/policyengine/data/bundle/manifest.json — US data package rebound to the Build N release (manifest sha256 99d8b7a5…, artifact sha256 38de53a3…)
  • us.trace.tro.jsonld — regenerated against the published tag
  • uk.trace.tro.jsonld — two sha fields update because the sidecar binds the same (changed) bundle manifest; regenerated with the HF token, not a degraded regeneration
  • three pinned test constants (US_DATA_RELEASE_ID in test_release_manifests.py, plus the URI pins in test_models.py / test_us_regions.py)
  • towncrier fragment

Scorecard: Build N sparse vs Build M

Metric Build N Build M
Final loss 0.028242 0.02666
Within-10% 89.49% 90.21%
Compiled targets 5,672 5,667

The headline pair is not surface-comparable: Build N repaired the target surface itself. populace#486 (capital-gain-distributions level repair) and populace#488 (cross-vintage aging chain completion) corrected 518 target values — state capital gains +$298.5B, taxable interest +$21.6B — so N is scored against a strictly harder, truthful surface than M was.

Gates and receipts (published release manifest)

  • All 8 build gates passed. The M-era SSI reconcile-loop gates no longer exist: populace#477 deleted the loop; its replacement one-shot Bernoulli law gate reports bernoulli_law_violation_count = 0.
  • Export-mass parity: 0 failures on both legs.
  • Reform-coverage smoke: 39/39 probes green, including keogh_distribution_neutralization.
  • QRF tail concentration: 14-entry evidenced exclusion register, sha-recorded, fails loud if dormant (owners populace#481/LRUCache.add silently keeps the old value for an existing key #487/Remove policyengine-us-data from the certified bundle package scaffold #432/Notify consumer repos after PyPI release #451).
  • Publish contract: green with medical_expense_deduction_total at the adjudicated 0.25 broad-fit bound (populace#490; published row −20.57%). Durable fix staged on populace branch loss-contract-alignment; 0.15 restores once a boosted run holds it.
  • CD surface ships off per the populace#449 verdict; the parity generator carries a fail-closed CD_SURFACE_REGIME = "off" constant.

Verification

  • scripts/certify_data_release.py ran against the published HF tag (revision-pinned manifest URI)
  • scripts/generate_trace_tros.py regenerated both TRO sidecars with the HF token
  • Full test battery: 738 passed, 0 failed (3:54) against the published tag
  • scripts/bundle.py check: green (rc 0)
  • Ruff format + lint clean on the changed test files
  • uv.lock deliberately untouched (main's lock is stale at 4.20.1 vs pyproject 4.22.0 — pre-existing, separate concern)

🤖 Generated with Claude Code

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
MaxGhenis marked this pull request as ready for review July 22, 2026 11:26
@MaxGhenis

Copy link
Copy Markdown
Contributor Author

CI complete: 12/12 checks pass (including both full-battery jobs against the published tag), mergeable clean. Local receipts in the description (738/738 battery, bundle check, TROs regenerated with token).

Ready for the maintainer. Merging this PR is the default-flip decision and stays with Max, as does the subsequent latest.json pointer move.

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.

Certify Build N US Populace (populace-us-2024-buildn-sparse-rmloss100-c3e378a) as the certified default

1 participant