Skip to content

Keogh carriers lack selection support in the frozen rmloss100 57k: protect-swap for Build M + restoration-time support checks #434

Description

@MaxGhenis

Build M sparse attempt 11 failed the keogh_distribution_neutralization reform-coverage smoke probe with a structural zero (+$11.8k vs the ≥$1M floor; expected ~+$24.47M). The gate is working exactly as the coverage campaign designed: it caught a restored input that the certified selection cannot express.

Diagnosis (measured on base-m, sha 5d8a3162):

  • keogh_distributions is CORRECT in the base pool: $148.97M weighted across exactly 13 carrier households (13 persons, all positive) — matching the probe's own expectation from the locked ASEC DST_SC*/DST_VAL* source (Populate remaining US tax-input and reported-observation layers #38).
  • The rmloss100 selection (Build I, 152baca3) predates the keogh restoration, so its 57,240 households include only 4 of the 13 carriers — the tiny ones (~$0.1M unweighted). An input restored after the selection froze has no selection support; no count-based gate can see it (the column is zero on the incumbent reference too, so parity passes trivially). Only the smoke probe has teeth here.

Remedy shipped with Build M: buildm-keogh-carrier-protect-swap — a documented protect-swap in the rmloss100 lineage pattern (rmloss100 itself was a 100-household misc swap):

  • ADD the 9 absent carrier households.
  • REMOVE the 9 lowest-base-weight non-carrier asec-channel households (deterministic tiebreak on the join key; base weights 22.7–27.4, the thinnest records in the selection). Channel composition preserved; n stays 57,240.
  • Result: the full $148.97M weighted source mass is in-selection under base weights; the calibration re-solve re-equilibrates the 9 removals (0.016% of records).
  • Manifest: buildm_keogh_swap_selection_source.json, identities sha256 1812b819b0a2…, parent 152baca3…, constructed against base-m 5d8a3162….

Systemic follow-up for architecture week: every future input restoration needs a selection-support check at restoration time (carriers ∩ frozen selection, with a protect-swap or reselection decision recorded), so this class is caught before a release run instead of by the smoke gate two builds later.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    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