{
  "note": "Descriptive comparison only \u2014 not a silent protocol change.",
  "n_episodes_forward_only": 5,
  "episodes": [
    {
      "id": "E001",
      "onset": "1990-10-28",
      "detect": "1991-01-27",
      "status": "RECOVERED",
      "confirm_date": "1990-12-01",
      "confirm_rule": "immediate_next_le_B0_minus_D"
    },
    {
      "id": "E002",
      "onset": "1992-06-08",
      "detect": "1996-05-06",
      "status": "RECOVERED",
      "confirm_date": "1992-10-15",
      "confirm_rule": "immediate_next_le_B0_minus_D"
    },
    {
      "id": "E003",
      "onset": "2003-10-26",
      "detect": "2004-10-15",
      "status": "RECOVERED",
      "confirm_date": "2004-03-21",
      "confirm_rule": "immediate_next_le_B0_minus_D"
    },
    {
      "id": "E004",
      "onset": "2005-06-19",
      "detect": "2006-02-05",
      "status": "RECOVERED",
      "confirm_date": "2005-09-09",
      "confirm_rule": "immediate_next_le_B0_minus_D"
    },
    {
      "id": "E005",
      "onset": "2008-10-13",
      "detect": "2010-02-12",
      "status": "RECOVERED",
      "confirm_date": "2009-06-12",
      "confirm_rule": "K_of_3_le_B0_minus_D_half"
    }
  ],
  "discarded_n": 4,
  "cascade_vs_row_delete": {
    "check": "E005_TO_E006_FULL_MACHINE_RERUN_VS_ROW_DELETE",
    "result": "CASCADE_CONFIRMED_ROW_DELETE_NOT_EQUIVALENT",
    "look_ahead_gate": {
      "n_confirmed": 6,
      "E005": {
        "onset": "2008-10-13",
        "detect": "2008-10-15",
        "B1_valid": true,
        "B1": 21.0
      },
      "E006": {
        "onset": "2009-06-12",
        "detect": "2010-02-12",
        "B1_valid": false,
        "B1_reason": "fail_min_span",
        "span_days": 344
      }
    },
    "hybrid_row_invalidate_E005_keep_look_ahead_E006": {
      "n_strict_confirmed": 5,
      "admissible_B1": 4,
      "note": "Prior audit packet approach \u2014 NOT a full-machine rerun"
    },
    "full_forward_only_machine_rerun": {
      "n_confirmed": 5,
      "episodes_E001_to_E004": "unchanged vs look-ahead",
      "FO_E005": {
        "onset": "2008-10-13",
        "confirm_date": "2009-06-12",
        "confirm_rule": "K_of_3_le_B0_minus_D_half",
        "detect": "2010-02-12",
        "absorbs_look_ahead_E006": true,
        "B1_valid": false,
        "B1_reason": "fail_min_span",
        "B1_span_days": 344,
        "note": "Same post-detect window that made look-ahead E006 B1 invalid"
      },
      "admissible_B1": 4,
      "discarded_unconfirmed_n": 4
    },
    "implication": "Removing E005 as a row while retaining look-ahead E006 does NOT equal forward-only re-execution. Under forward-only, look-ahead E005+E006 merge into one episode; B1 for that merged episode fails min_span. Either path: N_ep=5 < 6 and admissible B1=4 \u2192 sparse gate FAILS. Do not compute ratchet."
  },
  "admissible_B1_forward_only": 4,
  "sparse_gate": "FAIL_N_EP_LT_6"
}
