{
  "participants": [
    "s3",
    "s4",
    "s10",
    "s11"
  ],
  "sessions": {
    "s3": [
      "s3-1",
      "s3-2",
      "s3-3",
      "s3-4"
    ],
    "s4": [
      "s4-1",
      "s4-2",
      "s4-3",
      "s4-4",
      "s4-5",
      "s4-6",
      "s4-7",
      "s4-8"
    ],
    "s10": [
      "s10-1",
      "s10-2",
      "s10-4"
    ],
    "s11": [
      "s11-2",
      "s11-4",
      "s11-5"
    ]
  },
  "expected_after_rows": 3240,
  "actual_after_rows": 3240,
  "expected_before_rows": 2760,
  "actual_before_rows": 2760,
  "duplicates": 0,
  "before_definition": "Residual day-1 uses frozen source model plus LOTO support-CSP context; later days use the cumulative production model trained only on prior days. Classical/scratch methods start before points from day 2.",
  "after_definition": "history plus current session excluding held-out trial; strict LOTO"
}