{
  "version": "synthetic-inactivity-v1",
  "population": "40 fictional existing accounts scored at eight fixed UTC decision times",
  "target": "inactive_next_7d",
  "target_definition": "1 if active days in [decision_at, horizon_end) equal zero; otherwise 0",
  "horizon_elapsed_days": 7,
  "label_reporting_delay_days": 1,
  "features": ["days_since_activity", "tickets_7d", "tenure_days", "plan"],
  "forbidden_predictors": ["snapshot_id", "customer_id", "decision_at", "features_available_at", "horizon_end", "label_available_at", "future_active_days", "inactive_next_7d", "split"],
  "train_freeze": "2026-02-01T00:00:00Z",
  "selection_freeze": "2026-03-01T00:00:00Z",
  "evaluation_as_of": "2026-03-20T00:00:00Z",
  "candidate_C": [0.1, 1.0, 10.0],
  "selection_rule": "Lowest validation log loss; exact ties prefer lower C. Fit on training only, with no train+validation refit for this reference.",
  "classification_threshold": 0.5,
  "threshold_rule": "positive when probability >= threshold",
  "baseline": "DummyClassifier(strategy='prior') fitted on the same training targets",
  "seed": 20261004,
  "scope": "Synthetic predictive teaching experiment; not contractual churn, intervention uplift or production performance."
}
