Skip to content

Align MP PUF aggregate top tail with eCPS Forbes-backed branch #144

@MaxGhenis

Description

@MaxGhenis

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:

  1. Either port/adapt eCPS’s Forbes-backed RECID=999999 aggregate synthesis into MP’s PUF loader, preserving MP source manifests and diagnostics; or
  2. 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
  3. 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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions