{
  "benchmark_id": "CAL-BENCH-QP-CAL-001",
  "version": "1.2.0",
  "date": "2026-10-01",
  "description": "Canonical machine-verifiable verification test suite for Quizzman Lunisolar Calendar Engine (QP-CAL-001)",
  "vectors": [
    {
      "test_id": "TV-JDN-001",
      "description": "Continuous Julian Date calculation at J2000.0 Epoch (12:00:00 TT)",
      "input": {
        "year": 2000,
        "month": 1,
        "day": 1,
        "hour": 12,
        "minute": 0,
        "second": 0,
        "timeScale": "TT"
      },
      "expected": {
        "jdn": 2451545,
        "jd_continuous": 2451545.0,
        "dayCanChi": "Mậu Ngọ"
      },
      "rule": "CAL-R011"
    },
    {
      "test_id": "TV-JDN-002",
      "description": "Continuous Julian Date calculation at Unix Epoch (1970-01-01 00:00:00 UTC)",
      "input": {
        "year": 1970,
        "month": 1,
        "day": 1,
        "hour": 0,
        "minute": 0,
        "second": 0,
        "timeScale": "UTC"
      },
      "expected": {
        "jdn": 2440588,
        "jd_continuous": 2440587.5
      },
      "rule": "CAL-R011"
    },
    {
      "test_id": "TV-CARDINAL-SPRING-2024",
      "description": "Spring Equinox (Xuân Phân) 2024 USNO Parity",
      "input": {
        "utc_instant": "2024-03-20T03:06:00Z"
      },
      "expected": {
        "target_longitude_deg": 0.0,
        "computed_longitude_deg": 359.999602,
        "residual_deg": 0.000398,
        "max_allowable_residual_deg": 0.0005
      },
      "rule": "CAL-R012"
    },
    {
      "test_id": "TV-CARDINAL-SUMMER-2024",
      "description": "Summer Solstice (Hạ Chí) 2024 USNO Parity",
      "input": {
        "utc_instant": "2024-06-20T20:51:00Z"
      },
      "expected": {
        "target_longitude_deg": 90.0,
        "computed_longitude_deg": 90.000051,
        "residual_deg": 0.000051,
        "max_allowable_residual_deg": 0.0005
      },
      "rule": "CAL-R012"
    },
    {
      "test_id": "TV-CARDINAL-AUTUMN-2024",
      "description": "Autumnal Equinox (Thu Phân) 2024 USNO Parity",
      "input": {
        "utc_instant": "2024-09-22T12:43:00Z"
      },
      "expected": {
        "target_longitude_deg": 180.0,
        "computed_longitude_deg": 179.999585,
        "residual_deg": 0.000415,
        "max_allowable_residual_deg": 0.0005
      },
      "rule": "CAL-R012"
    },
    {
      "test_id": "TV-CARDINAL-WINTER-2024",
      "description": "Winter Solstice (Đông Chí) 2024 USNO Parity",
      "input": {
        "utc_instant": "2024-12-21T09:20:00Z"
      },
      "expected": {
        "target_longitude_deg": 270.0,
        "computed_longitude_deg": 269.999788,
        "residual_deg": 0.000212,
        "max_allowable_residual_deg": 0.0005
      },
      "rule": "CAL-R012"
    },
    {
      "test_id": "TV-NEWMON-20240111",
      "description": "Astronomical New Moon 2024-01-11 NASA Parity",
      "input": {
        "synodic_month_k": 297,
        "nasa_reference_utc": "2024-01-11T11:57:00Z"
      },
      "expected": {
        "computed_utc": "2024-01-11T11:56:56Z",
        "difference_minutes": 0.07,
        "max_allowable_difference_minutes": 2.0
      },
      "rule": "CAL-R014"
    },
    {
      "test_id": "TV-DIV-1968",
      "description": "Lunisolar New Year divergence 1968 (Tết Mậu Thân)",
      "input": {
        "date_gregorian": "1968-01-29"
      },
      "expected": {
        "vn_timezone_offset": 7,
        "vn_lunar_date": "1968-01-01",
        "vn_lunar_year_canchi": "Mậu Thân",
        "cn_timezone_offset": 8,
        "cn_lunar_date": "1967-12-30",
        "cn_lunar_year_canchi": "Đinh Mùi",
        "divergence_type": "sóc_midnight_split"
      },
      "rule": "CAL-R014"
    },
    {
      "test_id": "TV-DIV-1984",
      "description": "Lunisolar leap month placement divergence 1984",
      "input": {
        "date_gregorian": "1984-11-23"
      },
      "expected": {
        "vn_lunar_month": 11,
        "vn_is_leap": false,
        "cn_lunar_month": 10,
        "cn_is_leap": true,
        "divergence_type": "leap_placement_split"
      },
      "rule": "CAL-R014"
    },
    {
      "test_id": "TV-TST-HCM-2024",
      "description": "True Solar Time at Ho Chi Minh City on 2024-11-03 12:45",
      "input": {
        "date": "2024-11-03",
        "clock_time": "12:45:00",
        "longitude_deg": 106.7,
        "timezone_offset": 7
      },
      "expected": {
        "meridian_standard_deg": 105.0,
        "longitude_correction_minutes": 6.8,
        "equation_of_time_minutes": 16.5,
        "total_offset_minutes": 23.3,
        "true_solar_time": "13:08:18",
        "hour_branch": "Mùi"
      },
      "rule": "CAL-R013"
    },
    {
      "test_id": "TV-TST-ROLLOVER-2026",
      "description": "True Solar Time midnight backward rollover propagating effective date",
      "input": {
        "date": "2026-10-01",
        "clock_time": "00:05:00",
        "longitude_deg": 100.0,
        "timezone_offset": 7
      },
      "expected": {
        "effective_date": "2026-09-30",
        "day_pillar": "Đinh Mùi",
        "unadjusted_date_day_pillar": "Mậu Thân"
      },
      "rule": "CAL-R013"
    },
    {
      "test_id": "TV-SOLAR-TERM-DATE-A01",
      "description": "Solar Term civil date mapping over [00:00, 24:00) local day for afternoon transition",
      "input": {
        "term": "Lập Xuân",
        "utc_instant": "2024-02-04T08:27:24Z",
        "local_timezone_offset": 7
      },
      "expected": {
        "local_time": "2024-02-04T15:27:24+07:00",
        "canonical_civil_date": "2024-02-04",
        "previous_erroneous_civil_date": "2024-02-05"
      },
      "rule": "CAL-R012"
    },
    {
      "test_id": "TV-GOLDEN-20260901",
      "description": "Golden validation day 2026-09-01 (VN civil date)",
      "input": {
        "date_gregorian": "2026-09-01",
        "timezone_offset": 7
      },
      "expected": {
        "lunar_day": 20,
        "lunar_month": 7,
        "lunar_year": "Bính Ngọ",
        "day_canchi": "Mậu Dần",
        "solar_term": "Xử Thử",
        "solar_month_branch": "Thân",
        "day_officer": "Phá",
        "mansion": "Thất",
        "element_sound": "Thành Đầu Thổ",
        "deity_track": "Thiên Hình Hắc Đạo"
      },
      "rule": "CAL-R016"
    },
    {
      "test_id": "TV-HIST-TZ-1975",
      "description": "South Vietnam civil timezone reunification boundary at 1975-06-13",
      "input": {
        "region": "south"
      },
      "expected": {
        "offset_on_1975_06_12": 8,
        "offset_on_1975_06_13": 7
      },
      "rule": "CAL-R018"
    },
    {
      "test_id": "TV-LUNAR-MONTH-LENGTH-GUARD",
      "description": "Lunar to solar conversion invalid day rejection (A07)",
      "input": {
        "lunar_year": 2026,
        "lunar_month": 2,
        "lunar_day": 30,
        "is_leap": false
      },
      "expected": {
        "is_valid": false,
        "error_code": "INVALID_LUNAR_DAY_FOR_MONTH"
      },
      "rule": "CAL-R019"
    }
  ]
}
