Context
While implementing #141, we verified that latest eCPS does more than the original PUF aggregate disaggregation from PolicyEngine/policyengine-us-data#627. Current upstream policyengine-us-data also includes PolicyEngine/policyengine-us-data#825, which routes the $100M+ aggregate PUF row (RECID=999999) through a Forbes/SCF-backed top-tail synthesis path before falling back to donor synthesis.
MP #141 now handles the core aggregate-row issue: it replaces MARS=0, RECID 999996-999999 aggregate rows with 122 weighted synthetic records instead of dropping them. This matches #627 at the support-count and aggregate-preservation level, but it does not yet implement eCPS #825’s Forbes-backed branch for RECID=999999.
MP already has a separate forbes_fixed_spine facility, but the active Gate-1 CPS/PUF/SIPP/SCF no-ACS run is not using it, and it is not equivalent to eCPS’s PUF-aggregate top-tail branch.
Desired outcome
Make MP’s top-tail handling production-ready for MP-vs-eCPS replacement by choosing one clear architecture and validating loss impact:
- Either port/adapt eCPS’s Forbes-backed
RECID=999999 aggregate synthesis into MP’s PUF loader, preserving MP source manifests and diagnostics; or
- Wire MP’s existing Forbes fixed-spine path into the eCPS-shaped build in a way that is intentionally equivalent or better for the same target surface; and
- Record the choice in the architecture catalog and artifact sidecars so this gap cannot recur silently.
Acceptance checks
- A fixture-level test proves
RECID=999999 uses the chosen Forbes/top-tail path or records an explicit fallback.
- Real raw PUF smoke records the aggregate rows, synthetic row count, and whether Forbes top-tail was used.
- The eCPS-shaped Gate-1 artifact comparison includes latest local eCPS as the primary MP-vs-eCPS loss baseline and published HF eCPS as diagnostic only.
- If top-tail integration is not enabled by default, the artifact sidecar must say why.
References
Context
While implementing #141, we verified that latest eCPS does more than the original PUF aggregate disaggregation from PolicyEngine/policyengine-us-data#627. Current upstream
policyengine-us-dataalso includes PolicyEngine/policyengine-us-data#825, which routes the$100M+aggregate PUF row (RECID=999999) through a Forbes/SCF-backed top-tail synthesis path before falling back to donor synthesis.MP #141 now handles the core aggregate-row issue: it replaces
MARS=0,RECID999996-999999 aggregate rows with 122 weighted synthetic records instead of dropping them. This matches #627 at the support-count and aggregate-preservation level, but it does not yet implement eCPS #825’s Forbes-backed branch forRECID=999999.MP already has a separate
forbes_fixed_spinefacility, but the active Gate-1 CPS/PUF/SIPP/SCF no-ACS run is not using it, and it is not equivalent to eCPS’s PUF-aggregate top-tail branch.Desired outcome
Make MP’s top-tail handling production-ready for MP-vs-eCPS replacement by choosing one clear architecture and validating loss impact:
RECID=999999aggregate synthesis into MP’s PUF loader, preserving MP source manifests and diagnostics; orAcceptance checks
RECID=999999uses the chosen Forbes/top-tail path or records an explicit fallback.References