study:
  title: "When does lab predict field? INP-era replication and divergence taxonomy"
  primary_estimand: "Origin-month-form-factor probability that all available Core Web Vitals are good in CrUX given lab measurements and pre-specified context features."
  secondary_estimands:
    - "URL-level concordance where CrUX URL data are available."
    - "Prospective prediction from lab crawl at date t to future CrUX windows t+28 to t+56."
    - "Divergence class probability conditional on observed lab-field pattern."

sample:
  population: "CrUX-eligible public origins observed in selected monthly releases."
  primary_inclusion:
    - "origin has non-missing LCP, INP, and CLS p75 for the form factor"
    - "origin appears in the aligned HTTP Archive/Lighthouse crawl or a documented lab sample"
  exclusions:
    - "origins with missing join keys after canonicalization"
    - "robots/error pages or non-200 canonical lab responses, except in a separately reported failure stratum"
    - "duplicate origins caused by scheme/host normalization mistakes"
  sensitivity_samples:
    - "CrUX origins with missing INP classified by LCP/CLS only"
    - "homepage-only URL sample"
    - "template-weighted sample for sites with RUM/top-URL panels"

models:
  baselines:
    - "Lighthouse performance score only"
    - "Lab metric vector only: LCP, TBT, CLS, FCP, Speed Index"
    - "Threshold-rule model: lab pass predicts field pass"
  proposed:
    - "calibrated gradient boosting or generalized additive model with monotonicity where justified"
    - "hierarchical random/intercept terms for month, form factor, country/category/technology when available"
    - "conformal prediction intervals on held-out origin-month blocks"
  leakage_policy:
    - "target CrUX metric p75 is never used as a feature for itself"
    - "same-month CrUX context features are explanatory, not lab-only predictive"
    - "prospective prediction uses only features observable before the target CrUX window"

validation:
  splits:
    - "blocked origin holdout"
    - "time holdout: train <= 2025-12, tune 2026-01 to 2026-03, test 2026-04 to 2026-05 unless runner updates months"
    - "segment holdout by technology/category for external validity"
  metrics:
    - "Brier score"
    - "expected calibration error"
    - "calibration slope and intercept"
    - "AUROC and AUPRC"
    - "MAE/RMSE for metric p75 predictions"
    - "conformal interval coverage"
    - "decision cost: incorrect remediation class rate"

causal_component:
  design: "target-trial emulation for interventions observed in lab/HTTP Archive or owner-provided deployment logs"
  assumptions:
    - "consistency"
    - "exchangeability or parallel trends after matching/fixed effects"
    - "positivity"
    - "no interference between origins"
  falsification:
    - "pre-trend tests"
    - "placebo intervention dates"
    - "negative control outcomes"
    - "leave-one-technology-out robustness"
