-- Phase A #2 — CONTACT-QUALITY CHALLENGER (contact-v1).
-- A SECOND challenger retained beside the champion (p_win) and the archetype
-- challenger (p_win_challenger / arch-v1). Kept in its OWN columns so each
-- challenger's marginal contribution is measurable independently — folding it
-- into p_win_challenger would contaminate a clean A/B.
--
-- null p_win_contact = HONEST ABSTENTION (no coverage / thin sample / unmapped
-- stat) — a real datum, distinct from a no-lean projection equal to the
-- champion. Segmentable by prop type via the existing ledger_entries.stat.
--
-- Additive + forward-only: existing rows get null contact_version (pre-nomination);
-- new rows carry 'contact-v1'. Champion and settled/locked grades are untouched.
--
-- NOTE: migrations 023-029 were applied directly to prod and are not in this
-- repo; this file resumes tracked migrations and is idempotent so it is safe to
-- (re)run against the live schema.
alter table ledger_entries
  add column if not exists p_win_contact       numeric null,
  add column if not exists contact_delta        numeric null,
  add column if not exists contact_adjustments  jsonb   null,
  add column if not exists contact_version       text    null;
