Apply the configured corruption policy to the native-cadence frame.
This is the single entry point for the target-corruption sub-pipeline. It runs :func:detect_target_corruption and then dispatches to the policy branch. The function always acts only on target columns; exogenous columns are never modified.
Policy semantics:
noop (detector inert or no flags): returns the samedf object (no copy) and a report with action="noop".
abort: raises :class:~spotforecast2_safe.exceptions.TargetCorruptionError with the span list and operator guidance.
heal: refuses and raises when (a) any flagged slot lies within anchor_zone_hours of cutoff, or (b) n_flagged_hours > max_heal_hours. Otherwise sets flagged target slots to NaN so that apply_imputation("weighted_interp") can interpolate and zero-weight them.
truncate: sets ALL target columns to NaN from first_flagged_hour onward. The existing 16.3.1 trailing-clamp in prepare_data then retracts data_end to the new last observed target.
Reference column name for the deviation rule (e.g. "Forecasted Load"). When enabling this rule, scope targets to the actuals only (e.g. ["Actual Load"]) so that heal/truncate NaN only the actual and the reference survives as an exogenous prior.