PolicyEngine / PolicyEngine/microcosm

Belgian selection: country-specific L0 from the full base (dense-informed init) once the BE target surface productionizes

Open
#347 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Python
Stars
0
Forks
4
Avg merge
1d 3h
Merged PRs (30d)
94

Description

The problem

populace-be currently inherits the US frozen 57,240-record selection (the certified US sparse support) as its record set, reweighted to Belgian targets. That inheritance is a convenience, not a choice: the US selection's value is accumulated optimization against the US target surface (populace#299's Build G head-to-head: frozen beats cold L0 decisively — but only because the frozen set embodies search against THAT objective). For Belgium the objective is different, so:

  1. Records that would carry Belgian structure but didn't make the US cut are unavailable to Belgian calibration — the US selection silently binds BE.
  2. There is no Belgian incumbent lineage to warm-start from; Belgium's first real selection must be fresh.

At today's 21-marginal-target surface this doesn't bite (21/21 within 1.8%, healthy ESS). It will bite as #263 builds out the real Belgian surface.

The ask

When the Belgian target surface productionizes (#263), run Belgium's own selection:

  • Pool: the full 337,704-record base (not the inherited US 57k).
  • Objective: the productionized Belgian registry.
  • Form: cold in lineage, warm in initialization — run the Belgian DENSE solve first and initialize L0 selection probabilities proportional to dense weights (the dense-informed init from populace#346), plus criticality weighting on Belgium's protected targets. This avoids the thin-tail failure mode that killed cold L0 in the US head-to-head (populace#299) without pretending a US-optimized lineage transfers across countries.
  • Output: the first entry of a Belgian selection lineage, recorded via the #330 selection-manifest machinery so future BE releases warm-start per #346.

Sequencing: with or immediately after #263; before any certified populace-be release channel (#265). Prereq alignment: the transfer-paper input-quality work (fx conversion done; missing components per #262/#263) should land first — selection against a surface computed from wrong inputs bakes in wrong choices.

Refs: #259 (EPIC), #263, #265, #346 (informed-init design), #330 (selection-manifest seam), #299 (frozen-vs-cold evidence).

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with #263 for the production Belgian target surface, then read #346 for dense-informed initialization and #330 for selection manifests. The work should select from the full 337,704-record base using the Belgian registry, protected-target criticality weighting, and dense initialization. It is done when the first Belgian selection lineage entry is recorded before the certified release channel.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
data
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.