{
  "manifest_version": "synthetic-evaluation-evidence-v1",
  "prepared_date": "2026-09-20",
  "data_origin": "Original fictional conditional account snapshots generated by make_fixture.py; no real account records or continuous event-log reconstruction.",
  "generator_seed": 20261004,
  "rows": 320,
  "customers": 40,
  "prediction_grain": "one customer at one decision timestamp",
  "target_contract": {
    "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."
  },
  "input_columns": [
    "snapshot_id",
    "customer_id",
    "decision_at",
    "features_available_at",
    "days_since_activity",
    "tickets_7d",
    "tenure_days",
    "plan",
    "horizon_end",
    "label_available_at",
    "future_active_days",
    "inactive_next_7d",
    "split"
  ],
  "split_snapshot_ids": {
    "train": [
      "S01-C001",
      "S01-C002",
      "S01-C003",
      "S01-C004",
      "S01-C005",
      "S01-C006",
      "S01-C007",
      "S01-C008",
      "S01-C009",
      "S01-C010",
      "S01-C011",
      "S01-C012",
      "S01-C013",
      "S01-C014",
      "S01-C015",
      "S01-C016",
      "S01-C017",
      "S01-C018",
      "S01-C019",
      "S01-C020",
      "S01-C021",
      "S01-C022",
      "S01-C023",
      "S01-C024",
      "S01-C025",
      "S01-C026",
      "S01-C027",
      "S01-C028",
      "S01-C029",
      "S01-C030",
      "S01-C031",
      "S01-C032",
      "S01-C033",
      "S01-C034",
      "S01-C035",
      "S01-C036",
      "S01-C037",
      "S01-C038",
      "S01-C039",
      "S01-C040",
      "S02-C001",
      "S02-C002",
      "S02-C003",
      "S02-C004",
      "S02-C005",
      "S02-C006",
      "S02-C007",
      "S02-C008",
      "S02-C009",
      "S02-C010",
      "S02-C011",
      "S02-C012",
      "S02-C013",
      "S02-C014",
      "S02-C015",
      "S02-C016",
      "S02-C017",
      "S02-C018",
      "S02-C019",
      "S02-C020",
      "S02-C021",
      "S02-C022",
      "S02-C023",
      "S02-C024",
      "S02-C025",
      "S02-C026",
      "S02-C027",
      "S02-C028",
      "S02-C029",
      "S02-C030",
      "S02-C031",
      "S02-C032",
      "S02-C033",
      "S02-C034",
      "S02-C035",
      "S02-C036",
      "S02-C037",
      "S02-C038",
      "S02-C039",
      "S02-C040",
      "S03-C001",
      "S03-C002",
      "S03-C003",
      "S03-C004",
      "S03-C005",
      "S03-C006",
      "S03-C007",
      "S03-C008",
      "S03-C009",
      "S03-C010",
      "S03-C011",
      "S03-C012",
      "S03-C013",
      "S03-C014",
      "S03-C015",
      "S03-C016",
      "S03-C017",
      "S03-C018",
      "S03-C019",
      "S03-C020",
      "S03-C021",
      "S03-C022",
      "S03-C023",
      "S03-C024",
      "S03-C025",
      "S03-C026",
      "S03-C027",
      "S03-C028",
      "S03-C029",
      "S03-C030",
      "S03-C031",
      "S03-C032",
      "S03-C033",
      "S03-C034",
      "S03-C035",
      "S03-C036",
      "S03-C037",
      "S03-C038",
      "S03-C039",
      "S03-C040",
      "S04-C001",
      "S04-C002",
      "S04-C003",
      "S04-C004",
      "S04-C005",
      "S04-C006",
      "S04-C007",
      "S04-C008",
      "S04-C009",
      "S04-C010",
      "S04-C011",
      "S04-C012",
      "S04-C013",
      "S04-C014",
      "S04-C015",
      "S04-C016",
      "S04-C017",
      "S04-C018",
      "S04-C019",
      "S04-C020",
      "S04-C021",
      "S04-C022",
      "S04-C023",
      "S04-C024",
      "S04-C025",
      "S04-C026",
      "S04-C027",
      "S04-C028",
      "S04-C029",
      "S04-C030",
      "S04-C031",
      "S04-C032",
      "S04-C033",
      "S04-C034",
      "S04-C035",
      "S04-C036",
      "S04-C037",
      "S04-C038",
      "S04-C039",
      "S04-C040"
    ],
    "validation": [
      "S05-C001",
      "S05-C002",
      "S05-C003",
      "S05-C004",
      "S05-C005",
      "S05-C006",
      "S05-C007",
      "S05-C008",
      "S05-C009",
      "S05-C010",
      "S05-C011",
      "S05-C012",
      "S05-C013",
      "S05-C014",
      "S05-C015",
      "S05-C016",
      "S05-C017",
      "S05-C018",
      "S05-C019",
      "S05-C020",
      "S05-C021",
      "S05-C022",
      "S05-C023",
      "S05-C024",
      "S05-C025",
      "S05-C026",
      "S05-C027",
      "S05-C028",
      "S05-C029",
      "S05-C030",
      "S05-C031",
      "S05-C032",
      "S05-C033",
      "S05-C034",
      "S05-C035",
      "S05-C036",
      "S05-C037",
      "S05-C038",
      "S05-C039",
      "S05-C040",
      "S06-C001",
      "S06-C002",
      "S06-C003",
      "S06-C004",
      "S06-C005",
      "S06-C006",
      "S06-C007",
      "S06-C008",
      "S06-C009",
      "S06-C010",
      "S06-C011",
      "S06-C012",
      "S06-C013",
      "S06-C014",
      "S06-C015",
      "S06-C016",
      "S06-C017",
      "S06-C018",
      "S06-C019",
      "S06-C020",
      "S06-C021",
      "S06-C022",
      "S06-C023",
      "S06-C024",
      "S06-C025",
      "S06-C026",
      "S06-C027",
      "S06-C028",
      "S06-C029",
      "S06-C030",
      "S06-C031",
      "S06-C032",
      "S06-C033",
      "S06-C034",
      "S06-C035",
      "S06-C036",
      "S06-C037",
      "S06-C038",
      "S06-C039",
      "S06-C040"
    ],
    "test": [
      "S07-C001",
      "S07-C002",
      "S07-C003",
      "S07-C004",
      "S07-C005",
      "S07-C006",
      "S07-C007",
      "S07-C008",
      "S07-C009",
      "S07-C010",
      "S07-C011",
      "S07-C012",
      "S07-C013",
      "S07-C014",
      "S07-C015",
      "S07-C016",
      "S07-C017",
      "S07-C018",
      "S07-C019",
      "S07-C020",
      "S07-C021",
      "S07-C022",
      "S07-C023",
      "S07-C024",
      "S07-C025",
      "S07-C026",
      "S07-C027",
      "S07-C028",
      "S07-C029",
      "S07-C030",
      "S07-C031",
      "S07-C032",
      "S07-C033",
      "S07-C034",
      "S07-C035",
      "S07-C036",
      "S07-C037",
      "S07-C038",
      "S07-C039",
      "S07-C040",
      "S08-C001",
      "S08-C002",
      "S08-C003",
      "S08-C004",
      "S08-C005",
      "S08-C006",
      "S08-C007",
      "S08-C008",
      "S08-C009",
      "S08-C010",
      "S08-C011",
      "S08-C012",
      "S08-C013",
      "S08-C014",
      "S08-C015",
      "S08-C016",
      "S08-C017",
      "S08-C018",
      "S08-C019",
      "S08-C020",
      "S08-C021",
      "S08-C022",
      "S08-C023",
      "S08-C024",
      "S08-C025",
      "S08-C026",
      "S08-C027",
      "S08-C028",
      "S08-C029",
      "S08-C030",
      "S08-C031",
      "S08-C032",
      "S08-C033",
      "S08-C034",
      "S08-C035",
      "S08-C036",
      "S08-C037",
      "S08-C038",
      "S08-C039",
      "S08-C040"
    ]
  },
  "artifacts": {
    "account-snapshots.csv": {
      "bytes": 40775,
      "sha256": "ee1184e9c0eaebe7cb119bd02a5ac63496fe94efa5d58175a65123203b25771c"
    },
    "experiment-contract.json": {
      "bytes": 1239,
      "sha256": "d78cdb27dac34e634e946b656ae6e74d8cf37a136d05b3105c803a45d72f5a9b"
    },
    "requirements.txt": {
      "bytes": 169,
      "sha256": "8b3b12253e84b7c26c51c8b5ec7313f1856464163bf92469b103ded48117ea29"
    },
    "make_fixture.py": {
      "bytes": 2208,
      "sha256": "646f1d5b12ad4b0d37848c12e91b7b0106e764ccad66fd0ad7aead14bd546779"
    },
    "evaluation_core.py": {
      "bytes": 7416,
      "sha256": "8f3861cddfc38d3944edf886921d2d72dda518f507d368855b63c64697aa9d6a"
    },
    "verify.py": {
      "bytes": 4101,
      "sha256": "39f19c37275f938cb117e599ff369e7048c34840af8d794e9c8eac44f3c9e294"
    },
    "reproduce.py": {
      "bytes": 2354,
      "sha256": "a4826344cceb680b41d705d05afdff1babde64f44abe019d43149f69e0a5123c"
    },
    "metric_cases.py": {
      "bytes": 5804,
      "sha256": "9877315942383a99d39dab22abcfe9f5e4a0a335c2f328c0409df187c9bfcdfa"
    },
    "assessment_cases.py": {
      "bytes": 5445,
      "sha256": "19f489272ed725ed06d38d39170a19d6b8437c2b358a8f2a6e537bdfbd7ec198"
    },
    "provenance.py": {
      "bytes": 2835,
      "sha256": "4baa9934a2c0c089277f3ca81eef1f9933d114e00deb6dea7834660023d41381"
    },
    "experiment-results.json": {
      "bytes": 4637,
      "sha256": "a574be843f37fc5a06b264f8e6ded883a7938bbe9c66c1b9d6e942ed04ce1776"
    },
    "predictions.csv": {
      "bytes": 9871,
      "sha256": "57d41ccee19179c8df17636e751a12d55186ddfe6c820fc70a88666099c2de85"
    },
    "verification-results.json": {
      "bytes": 1554,
      "sha256": "7f8e6260203133f3e6dfd18b0ff9c75f3b8c6848caf403905a6a27bc8a77dee6"
    },
    "metric-verification.json": {
      "bytes": 4850,
      "sha256": "f413084d48814a42541db9e41a4ba9d6196841b046c44bbd536e212e04ca9097"
    },
    "assessment-verification.json": {
      "bytes": 6636,
      "sha256": "a2b6a7bc1b2a6f045a67989668341fb279ca1f9083e3537032989413ee6fe568"
    },
    "error-audit.csv": {
      "bytes": 9187,
      "sha256": "5aaad42a9b1ac58c4061a908b655b3a58f1c7259ded3d9f3f3544d37ee4e9daa"
    }
  },
  "review_status": "Pending instructor/user review; no authenticated approval or publication.",
  "limits": "Local hashes detect differences relative to this manifest. They do not prove source truth, historical availability, authorship, approval or resistance to an attacker able to alter both files and manifest."
}
