W1 transport gate: design
The certification design for milestone M5 (#113) — the representative-frame transport gate, workstream W1 of #100. This issue is the design half of the M5 gate ceremony; the floors evidence base is the companion draft PR (the #79/#118/#124 role, one milestone up). gates.yaml is untouched by both; the gate_w1 stub below is a proposal for the eventual ratifying flip, not a change made here.
What W1 certifies — the transport, not the dynamics
The program's signature architectural bet (#113): dynamics are estimated on PSID panels and deployed on a CPS-anchored representative frame. DYNASIM sidesteps this by basing itself on SIPP; we deliberately don't, so M5 carries a burden Urban never took on (#113 named hard part 1). It is also the entire unlock — the transport is what lets one person-period panel serve the cross-sectional microsim, the local-area cuts, and the 75-year projection.
W1 certifies that generators ESTIMATED on PSID (gate-1 earnings histories; gate-2a/2b/2c demographic, household, and marriage×earnings dynamics; M4 disability), when DEPLOYED on populace CPS person records, produce distributions matching targets OBSERVABLE without panel data. It does not re-certify the generators' dynamics — those remain 2a/2b/2c/M4-certified on their PSID holdouts. W1 certifies the deployment map — the CPS↔PSID covariate transport and the SSA-target calibration of #100 W1 — is faithful.
Three target families, each with its own holdout-pricing discipline.
Estimand (honest)
The deployment frame is the certified populace US file, pinned through the policyengine.py release bundle (pe.us.model.release_bundle):
| field |
value |
| bundle |
us-4.18.8 |
| dataset |
populace_us_2024 |
| dataset URI |
hf://policyengine/populace-us/populace_us_2024.h5@populace-us-2024-sparse-l0-refit-57k-71a0887-national-only-20260701 |
| artifact sha256 |
c2065b642ab00da74746afdfd9f06890e5f32f9b10bd6610ff236452d40f39c5 |
| model |
policyengine-us 1.752.2 · data-package populace-data 0.1.0 |
| scale |
166,302 sample persons · 57,240 households · 340.0M weighted · reference period 2024 |
The population claimed is US resident persons, 2024, on the CPS-ASEC-derived, L0-sparse-refit, admin-calibrated certified file — NOT an uncalibrated CPS extract and NOT the PSID estimation sample. Per governance.amendment_rules.description_claims_exactly_the_scored_surface, family A gates exactly the CPS-observable cross-sectional cells the certified file itself carries with verified non-zero support (this is the sparse-57k default, which zeroes untargeted inputs — the floor builds moments only on columns verified populated: age, is_female, employment_income_before_lsr, social_security_retirement/_disability, A_MARITL, household/marital membership; earnings $9.71T, OASI $1.11T, DI $147B all land on plausible national totals).
Target family A — CPS-observable cross-sectional joints (FLOOR-priced)
The deployed generators' terminal/current cross-section must reproduce the joints the CPS already pins, within the deployment frame's own sampling noise. A transport that distorts the observed cross-section while adding history is broken; this is the internal-consistency leg.
- earnings × age × sex distributional moments — participation share, within-cell dispersion (p90/p50, p50/p10 earnings ratios), and the age-earnings profile (cell median / prime-age median) by age band × sex — vs the certified file's own weighted values.
- marital composition × demographics — share in each marital status (married / widowed / divorced / separated / never-married) by age band × sex — vs the file's own
A_MARITL.
- household composition — person-level household-size shares and coresident-with-spouse share by age × sex — vs the certified populace columns.
Pricing. 100-seed household-disjoint half-split floor on the file's OWN weighted moments (the sampling-noise floor of the deployment frame). Household-disjoint, not merely person-disjoint: CPS is a household-cluster sample and composition moments are household-level, so the honest null must keep every household intact on one side (the 2c "couple/person-disjoint where units correlate" lesson, applied to the CPS cluster). Statistic is the symmetric scale-free |ln(rate_candidate / rate_ref)|, identical in shape to 2a/2b/2c. Tolerance = round(mean + 4·sd, 3), capped at T_max = ln(1.5); gate-eligible iff ≥20 raw sample units on the weaker half of every seed AND stabilised tolerance ≤ T_max. Gated vs report-only is the floor's own machine partition — never hand-picked.
Target family B — SSA administrative anchors (ANCHOR-priced, point values)
The deployed and simulated benefits — the statutory formula (§415 chain, 402-aux) run on the transported AIME and calibrated claiming — must land on administrative margins PSID never sees and the CPS only crudely proxies. These are the external-validity leg.
| anchor |
source (staged) |
2022/2023 headline |
| claim-age distribution |
Supplement 6.B5.1 (dynasim-refs/ssa_supplement_2023_6b.txt) |
men age-62 share 23.8%, avg age 65.1; women 25.6%, 65.0 — 8 collapsed categories (the claiming module's COLLAPSED_CATEGORIES) |
| benefit-level distribution |
6.B4 (PIA) / 6.B3 (MOB) |
avg PIA $1,984.09; avg monthly benefit $1,908.86 (men $2,131.04, women $1,683.57) |
| DI prevalence |
data/external/di_asr_2023 Table 19 |
2023 disabled-worker age distribution (60–FRA 45.4%, avg age 55.9), 7.366M workers |
Pricing. Anchors are point values, so there is no half-split sampling floor. Instead each carries a named, machine-derivable measurement/vintage tolerance: the tolerance is the recent-window dispersion of the anchor's OWN published series (both 6.B5.1 and Table 19 publish annual vintages), tol = k · sd(anchor over the last L published vintages), L and k pinned knobs, plus a measurement floor of half the published rounding unit. This is honest about the real uncertainty — "which vintage should a 2024-frame steady state match" — and is reconstructible from the committed anchor series alone. Non-stationary anchors (the FRA-transition-driven claim-age drift) get genuinely wide vintage tolerances, disclosed as such, not hidden. Report-only where the certified file cannot carry the margin (e.g. benefit LEVELS depend on the not-yet-deployed transported AIME).
Target family C — the two ordinal compression fingerprints (BINARY, no floor)
The sharpest transport test, pre-committed in #113: two reform orderings came out wrong on the PSID observed-career frame (compressed careers), and a certified representative frame must REVERSE both to the anchor orderings, and nothing else.
| fingerprint |
PSID-frame order (committed "before") |
representative-frame order (required "after") |
adjacent pair that must swap |
| C1 PPI↔NRA (#115 T2 / #117 F4) |
PI > NRA > PPI > COLA (τ=0.667 vs Mermin) |
PI > PPI > NRA > COLA (τ=1.0) |
PPI must outrank NRA |
| C2 elimination↔+2pp (#117 F2) |
+2pp > elim > +1pp > cap-$150k (τ=0.667 vs Smith) |
elim > +2pp > +1pp > cap-$150k (τ=1.0) |
elimination must outrank +2pp |
Both are τ=0.667 single-adjacent-swap fingerprints of the same mechanism — observed-career compression at the PIA bends (C1) and at the taxable maximum (C2). C1 reverses because a representative frame carries more AIME above the second bend where progressive price indexing bites; C2 reverses because a representative frame carries >16.1% of payroll above the wage base, above the break-even where elimination's revenue gain exceeds +2pp's. Ordinal → no floor: family C is a binary check against the committed anchor orderings. If transport is real both reverse; if it is cosmetic they don't. This is the falsifiable heart of the gate.
Holdout / pricing discipline (summary)
| family |
priced by |
gated |
report-only |
| A (CPS-observable joints) |
100-seed household-disjoint half-split floor |
cells clearing ≥20 events + T_max |
cells demoted by the power cap (machine reason) |
| B (SSA anchors) |
named vintage/measurement tolerance on the anchor's own series |
margins the deployed+simulated benefits can hit |
margins needing the not-yet-deployed AIME |
| C (fingerprints) |
binary vs committed anchor orderings |
both reversals |
— |
What W1 does NOT certify
- The dynamics. Earnings, marital, household, marriage×earnings, and disability dynamics remain 2a/2b/2c/M4-certified on their PSID holdouts. W1 certifies transport, not re-estimation.
- The projection (M6), revenue/trust-fund accounting (M7), integrated scoring (M8) — later milestones.
- Behavioral response — v1 transport is mechanical (claiming from the calibrated distribution; no labor-supply feedback), stated as a domain-of-validity.
- Levels not carried by the frame — anything the sparse-57k certified file zeroes is out of family-A scope by construction, not silently gated.
Proposed gate_w1 stub (for the eventual flip — NOT changed here)
gate_w1:
id: w1_representative_frame_transport
status: unlocked # flips to locked only after the full ceremony
locked: false
covers: >-
the TRANSPORT of the PSID-estimated generators onto the certified populace
CPS representative frame: CPS-observable cross-sectional joints (family A),
SSA administrative margins of the deployed+simulated benefits (family B),
and the two committed ordinal compression fingerprints that must reverse to
the anchor orderings (family C). Does NOT re-certify the dynamics (2a/2b/2c/
M4) nor certify the projection (M6+).
deployment_frame:
bundle: us-4.18.8
dataset: populace_us_2024
dataset_uri: hf://policyengine/populace-us/populace_us_2024.h5@populace-us-2024-sparse-l0-refit-57k-71a0887-national-only-20260701
artifact_sha256: c2065b642ab00da74746afdfd9f06890e5f32f9b10bd6610ff236452d40f39c5
pe_us_version: 1.752.2
holdout_basis: [populace_us_2024_certified, ssa_supplement_6b, di_asr_2023, mermin_smith_committed_orderings]
lock_ceremony:
exists: true
required_before_any_w1_pass: >-
the SAME ceremony 2a/2b/2c followed — a pre-registered gate on a 100-seed
household-disjoint split noise floor over the CPS-observable joints
(family A), named vintage/measurement tolerances on the SSA anchors
(family B), and the binary committed fingerprint orderings (family C);
an adversarial referee round, a verification round, and a ratifying merge.
thresholds:
locked: false
status: draft_pending_referee_round
floor_run: runs/gate_w1_floors_v1.json
# family-A tolerances machine-bound to the floor exactly as 2c:
# tol == round(mean + 4*sd, 3), capped at T_max = ln(1.5)
# family-B tolerances machine-derived from each anchor's own vintage series
# family-C: binary vs the committed before/after orderings (no tolerance)
Ceremony
Step 1 (this round): the floors evidence base as a draft PR — family-A floor + partition, family-B anchor values + vintage-tolerance rules, family-C committed orderings, K=20 estimator protocol from the start, machine-recorded gated/report-only reasons, a WARTS section pre-empting the 2b/2c referee classes. It reads no gate and changes no gate; gates.yaml stays untouched. The ceremony — adversarial referee → fixes → verification → ratifying flip — controls the lock; the draft is never marked ready or merged by its author.
Refs: #113 (M5), #100 (W1), #115 (C1 fingerprint), #117 (C2 fingerprint), #79/#118/#124 (the floors-PR precedent), #42 (registry).
W1 transport gate: design
The certification design for milestone M5 (#113) — the representative-frame transport gate, workstream W1 of #100. This issue is the design half of the M5 gate ceremony; the floors evidence base is the companion draft PR (the #79/#118/#124 role, one milestone up).
gates.yamlis untouched by both; thegate_w1stub below is a proposal for the eventual ratifying flip, not a change made here.What W1 certifies — the transport, not the dynamics
The program's signature architectural bet (#113): dynamics are estimated on PSID panels and deployed on a CPS-anchored representative frame. DYNASIM sidesteps this by basing itself on SIPP; we deliberately don't, so M5 carries a burden Urban never took on (#113 named hard part 1). It is also the entire unlock — the transport is what lets one person-period panel serve the cross-sectional microsim, the local-area cuts, and the 75-year projection.
W1 certifies that generators ESTIMATED on PSID (gate-1 earnings histories; gate-2a/2b/2c demographic, household, and marriage×earnings dynamics; M4 disability), when DEPLOYED on populace CPS person records, produce distributions matching targets OBSERVABLE without panel data. It does not re-certify the generators' dynamics — those remain 2a/2b/2c/M4-certified on their PSID holdouts. W1 certifies the deployment map — the CPS↔PSID covariate transport and the SSA-target calibration of #100 W1 — is faithful.
Three target families, each with its own holdout-pricing discipline.
Estimand (honest)
The deployment frame is the certified populace US file, pinned through the
policyengine.pyrelease bundle (pe.us.model.release_bundle):us-4.18.8populace_us_2024hf://policyengine/populace-us/populace_us_2024.h5@populace-us-2024-sparse-l0-refit-57k-71a0887-national-only-20260701c2065b642ab00da74746afdfd9f06890e5f32f9b10bd6610ff236452d40f39c5policyengine-us1.752.2 · data-packagepopulace-data0.1.0The population claimed is US resident persons, 2024, on the CPS-ASEC-derived, L0-sparse-refit, admin-calibrated certified file — NOT an uncalibrated CPS extract and NOT the PSID estimation sample. Per
governance.amendment_rules.description_claims_exactly_the_scored_surface, family A gates exactly the CPS-observable cross-sectional cells the certified file itself carries with verified non-zero support (this is the sparse-57k default, which zeroes untargeted inputs — the floor builds moments only on columns verified populated:age,is_female,employment_income_before_lsr,social_security_retirement/_disability,A_MARITL, household/marital membership; earnings $9.71T, OASI $1.11T, DI $147B all land on plausible national totals).Target family A — CPS-observable cross-sectional joints (FLOOR-priced)
The deployed generators' terminal/current cross-section must reproduce the joints the CPS already pins, within the deployment frame's own sampling noise. A transport that distorts the observed cross-section while adding history is broken; this is the internal-consistency leg.
A_MARITL.Pricing. 100-seed household-disjoint half-split floor on the file's OWN weighted moments (the sampling-noise floor of the deployment frame). Household-disjoint, not merely person-disjoint: CPS is a household-cluster sample and composition moments are household-level, so the honest null must keep every household intact on one side (the 2c "couple/person-disjoint where units correlate" lesson, applied to the CPS cluster). Statistic is the symmetric scale-free
|ln(rate_candidate / rate_ref)|, identical in shape to 2a/2b/2c. Tolerance= round(mean + 4·sd, 3), capped atT_max = ln(1.5); gate-eligible iff ≥20 raw sample units on the weaker half of every seed AND stabilised tolerance ≤T_max. Gated vs report-only is the floor's own machine partition — never hand-picked.Target family B — SSA administrative anchors (ANCHOR-priced, point values)
The deployed and simulated benefits — the statutory formula (§415 chain, 402-aux) run on the transported AIME and calibrated claiming — must land on administrative margins PSID never sees and the CPS only crudely proxies. These are the external-validity leg.
dynasim-refs/ssa_supplement_2023_6b.txt)COLLAPSED_CATEGORIES)data/external/di_asr_2023Table 19Pricing. Anchors are point values, so there is no half-split sampling floor. Instead each carries a named, machine-derivable measurement/vintage tolerance: the tolerance is the recent-window dispersion of the anchor's OWN published series (both 6.B5.1 and Table 19 publish annual vintages),
tol = k · sd(anchor over the last L published vintages),Landkpinned knobs, plus a measurement floor of half the published rounding unit. This is honest about the real uncertainty — "which vintage should a 2024-frame steady state match" — and is reconstructible from the committed anchor series alone. Non-stationary anchors (the FRA-transition-driven claim-age drift) get genuinely wide vintage tolerances, disclosed as such, not hidden. Report-only where the certified file cannot carry the margin (e.g. benefit LEVELS depend on the not-yet-deployed transported AIME).Target family C — the two ordinal compression fingerprints (BINARY, no floor)
The sharpest transport test, pre-committed in #113: two reform orderings came out wrong on the PSID observed-career frame (compressed careers), and a certified representative frame must REVERSE both to the anchor orderings, and nothing else.
PI > NRA > PPI > COLA(τ=0.667 vs Mermin)PI > PPI > NRA > COLA(τ=1.0)+2pp > elim > +1pp > cap-$150k(τ=0.667 vs Smith)elim > +2pp > +1pp > cap-$150k(τ=1.0)Both are
τ=0.667single-adjacent-swap fingerprints of the same mechanism — observed-career compression at the PIA bends (C1) and at the taxable maximum (C2). C1 reverses because a representative frame carries more AIME above the second bend where progressive price indexing bites; C2 reverses because a representative frame carries >16.1% of payroll above the wage base, above the break-even where elimination's revenue gain exceeds +2pp's. Ordinal → no floor: family C is a binary check against the committed anchor orderings. If transport is real both reverse; if it is cosmetic they don't. This is the falsifiable heart of the gate.Holdout / pricing discipline (summary)
T_maxWhat W1 does NOT certify
Proposed
gate_w1stub (for the eventual flip — NOT changed here)Ceremony
Step 1 (this round): the floors evidence base as a draft PR — family-A floor + partition, family-B anchor values + vintage-tolerance rules, family-C committed orderings, K=20 estimator protocol from the start, machine-recorded gated/report-only reasons, a WARTS section pre-empting the 2b/2c referee classes. It reads no gate and changes no gate;
gates.yamlstays untouched. The ceremony — adversarial referee → fixes → verification → ratifying flip — controls the lock; the draft is never marked ready or merged by its author.Refs: #113 (M5), #100 (W1), #115 (C1 fingerprint), #117 (C2 fingerprint), #79/#118/#124 (the floors-PR precedent), #42 (registry).