FixApplyResult:
    | { fixed: true; trace?: string }
    | { fixed: false; reason: FixSkipReason; trace?: string }

Return type of Fix.apply. Discriminated on fixed: successful fixes carry an optional trace; declined fixes carry a FixSkipReason so UIs can show why the strategy declined rather than a flat "skipped".