Repository navigation
Rewrite the Belgian country package for donor transport - #1369
Conversation
Pin the reviewed US Build P donor, declare private inactive transport inputs, and propose 2026 policy with NIS 2025 commune assignment. Retain observed-region compatibility while allowing national donor assignment; update Belgian contract tests and regenerate its golden. Co-Authored-By: GPT-6.1 Sol <noreply@openai.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ocstring The module docstring still said the be/ package declares BE-SILC source stages; it now declares the pinned populace-us support pool. Review nit from the Sol review of c68994f. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Independent review: GPT-6.1 Sol, APPROVE_WITH_NITS at c68994f ( What the review checked:
The one finding was a P3: the module docstring in Merge is pinned to head dc157a7 and gated on green checks and MERGEABLE. |
|
Held until 2026-10-29 12:00Z. Do not merge before then. The UK hub asked for this hold, and the NZ hub is holding microcosm#1375 to the same date for the same reason. Both kernels below hash the source bytes of
So this PR changes their implementation hashes for every country. UK outputs don't change, but every cached UK graph node would recompute during the Budget window:
Belgium doesn't need this before then. The PR is back to draft so no sweep merges it. It will be re-checked and merged on green at reviewed head dc157a7 after 10/29 12:00Z. |
Brings S5 and the G8 stack under B1 before it lands. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Rewrites Microcosm's Belgian country package from its never-built BE-SILC design to the donor-transport design. Belgium becomes the second country on
build/transport/, after New Zealand (decision d048). The package stays inactive: notransport_graph.json, receipt contract, rule bindings or scenarios yet.What changes in
build/be/build/nz/, in both the JSON and the typed projections.policyengine/populace-be-private, with no public artifacts. The SILC licence language is replaced by the Microcosm-BE provenance line (synthetic population, US survey donor pool reweighted). Publication stays Max's decision.rg -ni silc build/bereturns nothing.Shared files (cleared with the NZ hub before push)
country_spec.py: one new branch in the Belgian-only_attest_be_typed_geography_compatibility(~1939), whose single call site is gated ondeclared_country == "be". It accepts an empty observed-region constraint only with a<level>_nationallydraw and nosource_nuts1_preservedclaim. The legacy observed-region path still requires preservation, and a new BE test proves it.tests/engine_free/shared/test_country_spec.py: onlyTestBelgianPackageandTestCountryStagePlanchange, both Belgian-only (stage renames and the new donor/geography contract). The one negative-case change,"province"→"district", exists because province is now a declared Belgian layer.tests/engine_free/shared/test_spec_engine_country_bundles.py: Belgian assertions only. No NZ assertion changed, and Add NZ G8-r1 target references, ERP bridge and d1376 gates #1362's NZ resource additions are intact.tests/golden/be_country_spec.json: regenerated with the test's own helpers. It's the only golden that changed.build/nz/,build/transport/ortools/ci_test_plan.py.Checks (each file run separately on this branch)
test_spec_engine_country_bundles.pytest_country_spec.pytest_nz_spec_package.pytest_spec_only_country_packages.pyLanding shape: main moved to 4e30332 when #1434 landed, after this head's CI began. This head merged onto that main has no conflicts, and
test_spec_engine_country_bundles.py, the one file both PRs touch, passes. On that merge, all five Belgian dumps match the earlier checks byte for byte, and the same six kernel hashes move with no pins.test_country_spec.py137,test_spec_only_country_packages.py28,test_spec_engine_country_bundles.py22,test_nz_spec_package.py1,201,test_transport_population_kernels.py32,test_transport_gate_bindings.py126 andtest_transport_annual_transfers.py75 all pass.Ruff lint and format pass, and
git diff --checkis clean. An independent GPT-6.1 Sol review approved c68994f with one docstring nit, which dc157a7 fixes (see the review comment).Sol's landing review approved 55ac91b, which merges main at b979d46, with one nit: the missing changelog fragment, which this head adds. It found the merge faithful, with additions, removals and hunks matching dc157a7 file by file.
A second independent review agreed at fa38d92. It confirmed that the delta adds only the fragment, checked the fragment against the package, and reran the hash and geography cases. It didn't complete the 15 fingerprint comparisons, which rest on the landing review.
Impact on other countries
country_spec.pysource bytes feed kernel implementation hashes, so this PR moves six transport kernel hashes for every country, as any edit of that file does:transport.create@1,transport.quantile_map@1,targets.compile@1,takeup.compare@1,takeup.gap@1andgates.battery@1. Two independent hash runs on main and on this branch show exactly these six, and no tracked file pins their old values.uk_runtime/,us_runtime/,uk/orus/names these six refs, and the UK target kernels listcountry_specas an excluded import.Invariants
<level>_nationallydraw and nosource_nuts1_preservedclaim, and the legacy observed-region path still requires preservation. Sol ran 12 cases: 2 pass and 10 refuse.test_country_spec.pyandtest_spec_engine_country_bundles.pypin the refusals between them.declared_country == "be". Sol's landing review saw zero calls to it in fresh AM, US, UK and NZ loads.🤖 Generated with Claude Code