Skip to content

E19200 split: share AGI validation with the exported low-level splitter; band-boundary controls for Decimal/string AGI #562

Description

@MaxGhenis

PR #561 merged (2ae4339) with the E19200 AGI-band decomposition after a four-round review. The final verdict carried two non-blocking advisories worth closing:

  1. The low-level splitter is exported and permissive. split_us_puf_e19200_by_agi_band casts AGI directly to float64, so booleans/datetime/timedelta become finite band values if a caller reaches it directly. Not a production defect — the donor API (puf_tax_unit_donor_from_arrays) validates first (dtype-kind gate + infer_dtype element screen + finiteness) and passes validated float64 down — but the splitter is separately exported from populace.build.us_runtime. Either share the validation (move/reuse the screen inside the splitter) or remove the low-level export.

  2. Decimal/numeric-string positive controls prove acceptance, not correct banding. The round-4 controls use a fixture without E19200, so the split short-circuits before band selection. Add a nonzero-E19200 boundary comparison: identical records with AGI supplied as Decimal/string vs float64 must produce identical mortgage/non-mortgage splits at a band boundary.

Both from the round-4 review verdict on PR #561.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions