Skip to content

Aggregate impact: record which small-cell condition withheld a reform-year #2654

Open

Description

@MaxGhenis

The aggregate-impact tool (policyengine_uk/utils/aggregate_impact/measure.py, reform_withheld, added with #2335) withholds a reform's costing and target change in a year where any of three conditions holds:

  1. the reform changes a record of a component suppressed in the baseline;
  2. it leaves another component with 1 to 9 records;
  3. it changes gov_balance in 1 to 9 households, or its target variable in 1 to 9 records.

The report records only that a year was withheld, not which condition fired.

Why this matters: the qualification gate (policyengine.py's reform_responsiveness) can't recompute the tool's verdict for a withheld year, so it returns needs_review and someone has to read the code to resolve it.

Example: in the reform-responsiveness.json receipt for Microcosm cut microcosm-uk-2024-25-national-20261023T075039Z-a133f37a (pe-uk 2.147.2, tool at 1191ac5a), reform_targets.additional_rate_plus_3pp is withheld in 2027 to 2030 and published in 2025, 2026 and 2031 (+£3.9bn to +£5.5bn). The baseline suppresses the same two heads, spending.disabled_students_allowance and spending.statutory_paternity_pay, in all seven years. So the receipt alone can't say why only 2027 to 2030 are withheld. The Budget coordinator accepted the gate for that cut (PolicyEngine/policyengine.py#715, comment). The tool's own responsive:additional_rate_plus_3pp check, computed before withholding, passes in every year.

Ask: record, for each withheld reform-year, which condition fired (for example withheld_because: suppressed_component_changed | small_component_left | small_target_change), without publishing any small-cell value or count. Check first that the condition label can't itself disclose a small cell, for example combined with the published years. Add a test.

Non-blocking: the release decision above doesn't depend on it.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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