{
  "name": "BaZi Calculator Convention Audit",
  "description": "Which conventions eight BaZi (Four Pillars) implementations actually apply, measured by running the same fixed birth moments through each. Covers the year boundary (Li Chun vs Chinese New Year), whether the day pillar rolls at 23:00, true solar time, and daylight saving. Divergence here is convention, not error.",
  "version": "1.1.0",
  "publisher": "Jade Almanac (jadealmanac.com)",
  "canonical_url": "https://jadealmanac.com/bazi-calculator/conventions",
  "methodology_url": "https://jadealmanac.com/bazi-calculator/methodology",
  "license": "https://creativecommons.org/publicdomain/zero/1.0/",
  "captured_at": "2026-08-01",
  "changelog": "1.1.0 (2026-08-01): Jade Almanac’s own row updated after it added an optional birth city, moving it from “no true solar time” to “yes”. Third-party observations unchanged.",
  "published_at": "2026-08-01T00:00:00.000Z",
  "time_convention": "Probe inputs are local clock time at the stated place. Implementations differ in what they then do with it; that difference is the subject of the dataset.",
  "ephemeris_sources": [
    "NAOJ 暦要項 (National Astronomical Observatory of Japan) — solar-term instants, converted JST→CST by −1h",
    "IANA tz database, Rule PRC — China summer-time windows 1986–1991"
  ],
  "probe_caveat": "B1/B2 (1990-06-15) sit inside China’s 1990 summer-time window (Apr 15 – Sep 16). They isolate the day rollover cleanly for a bare clock reading, which is how every implementation here was probed, but an implementation that removes daylight saving from a Chinese birthplace would shift 23:30 out of the zi hour and stop testing the rollover at all. Any re-run that supplies a birthplace should move this probe to a date outside Apr–Sep of 1986–1991.",
  "caveat": "This measures conventions, not correctness. No implementation here is wrong: the year boundary, the 23:00 day rollover and true solar time are all genuine school-level choices. Daylight saving is the one axis that is a matter of record rather than opinion.",
  "field_definitions": {
    "pillars_zh": "Four pillars as returned, in year month day hour order, space separated.",
    "pillars_pinyin": "The same pillars as toneless stem-branch names.",
    "captured": "false means the probe was not run or the tool could not express the input — it never means the tool returned nothing.",
    "day_rollover": "The only axis that changes the day master, and therefore the whole reading."
  },
  "coverage": {
    "implementations": 8,
    "probes": 13,
    "observations_captured": 77,
    "blocked": 2
  },
  "axes": [
    {
      "id": "year_boundary",
      "name": "Year boundary",
      "kind": "convention",
      "question": "Does the year pillar turn at Li Chun (~Feb 4) or at Chinese New Year?"
    },
    {
      "id": "day_rollover",
      "name": "Day rollover at 23:00",
      "kind": "convention",
      "question": "Does the day pillar advance at 23:00 (晚子时归明日) or at midnight? This is the only axis that changes the day master."
    },
    {
      "id": "zi_hour_stem",
      "name": "Zi-hour stem",
      "kind": "convention",
      "question": "For a 23:00–24:00 birth, is the hour stem derived from today’s or tomorrow’s day stem?"
    },
    {
      "id": "true_solar_time",
      "name": "True solar time",
      "kind": "convention",
      "question": "Is the clock corrected for the birthplace’s longitude before the hour pillar is cast?"
    },
    {
      "id": "daylight_saving",
      "name": "Daylight saving",
      "kind": "record",
      "question": "Is the one-hour summer-time offset removed? Not a school choice — the clock either was shifted that day or it was not."
    }
  ],
  "probes": [
    {
      "id": "BASE",
      "date": "1995-06-20",
      "time": "10:00",
      "place": "Beijing",
      "axis": "none",
      "note": "Quiet on every axis — mid solar month, mid hour branch, after 1991. Every implementation should agree; a disagreement here means the capture is bad, not the tool."
    },
    {
      "id": "A1",
      "date": "1985-02-10",
      "time": "12:00",
      "place": "Beijing",
      "axis": "year_boundary",
      "note": "After Li Chun (Feb 4, 05:12 CST), before Chinese New Year (Feb 20)."
    },
    {
      "id": "A2",
      "date": "1966-01-28",
      "time": "12:00",
      "place": "Beijing",
      "axis": "year_boundary",
      "note": "The mirror case: after Chinese New Year (Jan 21), before Li Chun (Feb 4, 14:38 CST)."
    },
    {
      "id": "B1",
      "date": "1990-06-15",
      "time": "23:30",
      "place": "Beijing",
      "axis": "day_rollover",
      "note": "Late zi hour. The day pillar here decides the day master."
    },
    {
      "id": "B2",
      "date": "1990-06-15",
      "time": "22:30",
      "place": "Beijing",
      "axis": "control",
      "note": "Control for B1 — one hour earlier, must NOT move."
    },
    {
      "id": "C1",
      "date": "1988-02-04",
      "time": "22:00",
      "place": "Beijing",
      "axis": "compound",
      "note": "Before Li Chun 1988 (22:43 CST) and before any rollover."
    },
    {
      "id": "C2",
      "date": "1988-02-04",
      "time": "23:00",
      "place": "Beijing",
      "axis": "compound",
      "note": "One hour later: past Li Chun AND past the rollover point. Up to four pillars can move at once."
    },
    {
      "id": "D1",
      "date": "1995-06-15",
      "time": "09:20",
      "place": "Kashgar (75.9°E)",
      "axis": "true_solar_time",
      "note": "Far west of the UTC+8 meridian on a UTC+8 clock — the solar correction is nearly three hours."
    },
    {
      "id": "D2",
      "date": "1995-06-15",
      "time": "09:20",
      "place": "Beijing (116.4°E)",
      "axis": "control",
      "note": "Control for D1 — same clock time, same time zone, ~14 minutes of correction."
    },
    {
      "id": "E1",
      "date": "1988-07-15",
      "time": "15:30",
      "place": "Beijing",
      "axis": "daylight_saving",
      "note": "Inside China’s 1988 summer-time window (Apr 17 – Sep 11)."
    },
    {
      "id": "E2",
      "date": "1988-11-15",
      "time": "15:30",
      "place": "Beijing",
      "axis": "control",
      "note": "Control for E1 — same year, outside the window."
    },
    {
      "id": "F1",
      "date": "2024-08-07",
      "time": "08:00",
      "place": "Beijing",
      "axis": "solar_term",
      "note": "Before Li Qiu 2024 (08:09 CST)."
    },
    {
      "id": "F2",
      "date": "2024-08-07",
      "time": "09:00",
      "place": "Beijing",
      "axis": "solar_term",
      "note": "After Li Qiu 2024 — the month pillar must turn between F1 and F2."
    }
  ],
  "implementations": [
    {
      "id": "jadealmanac",
      "name": "Jade Almanac",
      "kind": "engine",
      "note": "Ours. Included on the same terms as everything else. Its observations are the no-city path — a bare clock reading, which is what every other implementation here was given — so the rows stay comparable. Supplying a birth city changes them, as the true-solar-time column says.",
      "conventions": {
        "year_boundary": "Li Chun",
        "day_rollover": "Yes",
        "true_solar_time": "Yes",
        "daylight_saving": "Yes",
        "detail": "Birth city is optional. Given one, the clock reading is corrected to true solar time for that longitude and the day’s time-zone offset is removed, which takes daylight saving out without asking the reader to remember it. Without a city the clock is read literally and the result says so. No equation-of-time term."
      },
      "observations": [
        {
          "probe_id": "BASE",
          "captured": true,
          "pillars_zh": "乙亥 壬午 壬午 乙巳",
          "pillars_pinyin": "Yi-Hai Ren-Wu Ren-Wu Yi-Si"
        },
        {
          "probe_id": "A1",
          "captured": true,
          "pillars_zh": "乙丑 戊寅 庚辰 壬午",
          "pillars_pinyin": "Yi-Chou Wu-Yin Geng-Chen Ren-Wu"
        },
        {
          "probe_id": "A2",
          "captured": true,
          "pillars_zh": "乙巳 己丑 丁亥 丙午",
          "pillars_pinyin": "Yi-Si Ji-Chou Ding-Hai Bing-Wu"
        },
        {
          "probe_id": "B1",
          "captured": true,
          "pillars_zh": "庚午 壬午 壬子 庚子",
          "pillars_pinyin": "Geng-Wu Ren-Wu Ren-Zi Geng-Zi"
        },
        {
          "probe_id": "B2",
          "captured": true,
          "pillars_zh": "庚午 壬午 辛亥 己亥",
          "pillars_pinyin": "Geng-Wu Ren-Wu Xin-Hai Ji-Hai"
        },
        {
          "probe_id": "C1",
          "captured": true,
          "pillars_zh": "丁卯 癸丑 己丑 乙亥",
          "pillars_pinyin": "Ding-Mao Gui-Chou Ji-Chou Yi-Hai"
        },
        {
          "probe_id": "C2",
          "captured": true,
          "pillars_zh": "戊辰 甲寅 庚寅 丙子",
          "pillars_pinyin": "Wu-Chen Jia-Yin Geng-Yin Bing-Zi"
        },
        {
          "probe_id": "D1",
          "captured": true,
          "pillars_zh": "乙亥 壬午 丁丑 乙巳",
          "pillars_pinyin": "Yi-Hai Ren-Wu Ding-Chou Yi-Si"
        },
        {
          "probe_id": "D2",
          "captured": true,
          "pillars_zh": "乙亥 壬午 丁丑 乙巳",
          "pillars_pinyin": "Yi-Hai Ren-Wu Ding-Chou Yi-Si"
        },
        {
          "probe_id": "E1",
          "captured": true,
          "pillars_zh": "戊辰 己未 辛未 丙申",
          "pillars_pinyin": "Wu-Chen Ji-Wei Xin-Wei Bing-Shen"
        },
        {
          "probe_id": "E2",
          "captured": true,
          "pillars_zh": "戊辰 癸亥 甲戌 壬申",
          "pillars_pinyin": "Wu-Chen Gui-Hai Jia-Xu Ren-Shen"
        },
        {
          "probe_id": "F1",
          "captured": true,
          "pillars_zh": "甲辰 辛未 癸卯 丙辰",
          "pillars_pinyin": "Jia-Chen Xin-Wei Gui-Mao Bing-Chen"
        },
        {
          "probe_id": "F2",
          "captured": true,
          "pillars_zh": "甲辰 壬申 癸卯 丁巳",
          "pillars_pinyin": "Jia-Chen Ren-Shen Gui-Mao Ding-Si"
        }
      ]
    },
    {
      "id": "tyme4ts",
      "name": "tyme4ts 1.5.2",
      "kind": "library",
      "note": "The library our own engine rides on. By 6tail.",
      "conventions": {
        "year_boundary": "Li Chun",
        "day_rollover": "Yes",
        "true_solar_time": "Not offered",
        "daylight_saving": "No",
        "detail": "A library, not a website. It takes no place argument at all."
      },
      "observations": [
        {
          "probe_id": "BASE",
          "captured": true,
          "pillars_zh": "乙亥 壬午 壬午 乙巳",
          "pillars_pinyin": "Yi-Hai Ren-Wu Ren-Wu Yi-Si"
        },
        {
          "probe_id": "A1",
          "captured": true,
          "pillars_zh": "乙丑 戊寅 庚辰 壬午",
          "pillars_pinyin": "Yi-Chou Wu-Yin Geng-Chen Ren-Wu"
        },
        {
          "probe_id": "A2",
          "captured": true,
          "pillars_zh": "乙巳 己丑 丁亥 丙午",
          "pillars_pinyin": "Yi-Si Ji-Chou Ding-Hai Bing-Wu"
        },
        {
          "probe_id": "B1",
          "captured": true,
          "pillars_zh": "庚午 壬午 壬子 庚子",
          "pillars_pinyin": "Geng-Wu Ren-Wu Ren-Zi Geng-Zi"
        },
        {
          "probe_id": "B2",
          "captured": true,
          "pillars_zh": "庚午 壬午 辛亥 己亥",
          "pillars_pinyin": "Geng-Wu Ren-Wu Xin-Hai Ji-Hai"
        },
        {
          "probe_id": "C1",
          "captured": true,
          "pillars_zh": "丁卯 癸丑 己丑 乙亥",
          "pillars_pinyin": "Ding-Mao Gui-Chou Ji-Chou Yi-Hai"
        },
        {
          "probe_id": "C2",
          "captured": true,
          "pillars_zh": "戊辰 甲寅 庚寅 丙子",
          "pillars_pinyin": "Wu-Chen Jia-Yin Geng-Yin Bing-Zi"
        },
        {
          "probe_id": "D1",
          "captured": true,
          "pillars_zh": "乙亥 壬午 丁丑 乙巳",
          "pillars_pinyin": "Yi-Hai Ren-Wu Ding-Chou Yi-Si"
        },
        {
          "probe_id": "D2",
          "captured": true,
          "pillars_zh": "乙亥 壬午 丁丑 乙巳",
          "pillars_pinyin": "Yi-Hai Ren-Wu Ding-Chou Yi-Si"
        },
        {
          "probe_id": "E1",
          "captured": true,
          "pillars_zh": "戊辰 己未 辛未 丙申",
          "pillars_pinyin": "Wu-Chen Ji-Wei Xin-Wei Bing-Shen"
        },
        {
          "probe_id": "E2",
          "captured": true,
          "pillars_zh": "戊辰 癸亥 甲戌 壬申",
          "pillars_pinyin": "Wu-Chen Gui-Hai Jia-Xu Ren-Shen"
        },
        {
          "probe_id": "F1",
          "captured": true,
          "pillars_zh": "甲辰 辛未 癸卯 丙辰",
          "pillars_pinyin": "Jia-Chen Xin-Wei Gui-Mao Bing-Chen"
        },
        {
          "probe_id": "F2",
          "captured": true,
          "pillars_zh": "甲辰 壬申 癸卯 丁巳",
          "pillars_pinyin": "Jia-Chen Ren-Shen Gui-Mao Ding-Si"
        }
      ]
    },
    {
      "id": "lunar-javascript",
      "name": "lunar-javascript 1.7.7",
      "kind": "library",
      "note": "By the same author as tyme4ts (6tail), which bills itself as this library’s successor.",
      "conventions": {
        "year_boundary": "Li Chun",
        "day_rollover": "No",
        "true_solar_time": "Not offered",
        "daylight_saving": "No",
        "detail": null
      },
      "observations": [
        {
          "probe_id": "BASE",
          "captured": true,
          "pillars_zh": "乙亥 壬午 壬午 乙巳",
          "pillars_pinyin": "Yi-Hai Ren-Wu Ren-Wu Yi-Si"
        },
        {
          "probe_id": "A1",
          "captured": true,
          "pillars_zh": "乙丑 戊寅 庚辰 壬午",
          "pillars_pinyin": "Yi-Chou Wu-Yin Geng-Chen Ren-Wu"
        },
        {
          "probe_id": "A2",
          "captured": true,
          "pillars_zh": "乙巳 己丑 丁亥 丙午",
          "pillars_pinyin": "Yi-Si Ji-Chou Ding-Hai Bing-Wu"
        },
        {
          "probe_id": "B1",
          "captured": true,
          "pillars_zh": "庚午 壬午 辛亥 庚子",
          "pillars_pinyin": "Geng-Wu Ren-Wu Xin-Hai Geng-Zi"
        },
        {
          "probe_id": "B2",
          "captured": true,
          "pillars_zh": "庚午 壬午 辛亥 己亥",
          "pillars_pinyin": "Geng-Wu Ren-Wu Xin-Hai Ji-Hai"
        },
        {
          "probe_id": "C1",
          "captured": true,
          "pillars_zh": "丁卯 癸丑 己丑 乙亥",
          "pillars_pinyin": "Ding-Mao Gui-Chou Ji-Chou Yi-Hai"
        },
        {
          "probe_id": "C2",
          "captured": true,
          "pillars_zh": "戊辰 甲寅 己丑 丙子",
          "pillars_pinyin": "Wu-Chen Jia-Yin Ji-Chou Bing-Zi"
        },
        {
          "probe_id": "D1",
          "captured": true,
          "pillars_zh": "乙亥 壬午 丁丑 乙巳",
          "pillars_pinyin": "Yi-Hai Ren-Wu Ding-Chou Yi-Si"
        },
        {
          "probe_id": "D2",
          "captured": true,
          "pillars_zh": "乙亥 壬午 丁丑 乙巳",
          "pillars_pinyin": "Yi-Hai Ren-Wu Ding-Chou Yi-Si"
        },
        {
          "probe_id": "E1",
          "captured": true,
          "pillars_zh": "戊辰 己未 辛未 丙申",
          "pillars_pinyin": "Wu-Chen Ji-Wei Xin-Wei Bing-Shen"
        },
        {
          "probe_id": "E2",
          "captured": true,
          "pillars_zh": "戊辰 癸亥 甲戌 壬申",
          "pillars_pinyin": "Wu-Chen Gui-Hai Jia-Xu Ren-Shen"
        },
        {
          "probe_id": "F1",
          "captured": true,
          "pillars_zh": "甲辰 辛未 癸卯 丙辰",
          "pillars_pinyin": "Jia-Chen Xin-Wei Gui-Mao Bing-Chen"
        },
        {
          "probe_id": "F2",
          "captured": true,
          "pillars_zh": "甲辰 壬申 癸卯 丁巳",
          "pillars_pinyin": "Jia-Chen Ren-Shen Gui-Mao Ding-Si"
        }
      ]
    },
    {
      "id": "feng-shui-institute",
      "name": "feng-shui-institute.org",
      "kind": "site",
      "note": null,
      "conventions": {
        "year_boundary": "Li Chun",
        "day_rollover": "No",
        "true_solar_time": "Yes",
        "daylight_saving": "No",
        "detail": "Asks for a longitude and a GMT offset, and moves the hour pillar by the full longitude correction."
      },
      "observations": [
        {
          "probe_id": "BASE",
          "captured": true,
          "pillars_zh": "乙亥 壬午 壬午 乙巳",
          "pillars_pinyin": "Yi-Hai Ren-Wu Ren-Wu Yi-Si"
        },
        {
          "probe_id": "A1",
          "captured": true,
          "pillars_zh": "乙丑 戊寅 庚辰 壬午",
          "pillars_pinyin": "Yi-Chou Wu-Yin Geng-Chen Ren-Wu"
        },
        {
          "probe_id": "A2",
          "captured": true,
          "pillars_zh": "乙巳 己丑 丁亥 丙午",
          "pillars_pinyin": "Yi-Si Ji-Chou Ding-Hai Bing-Wu"
        },
        {
          "probe_id": "B1",
          "captured": true,
          "pillars_zh": "庚午 壬午 辛亥 庚子",
          "pillars_pinyin": "Geng-Wu Ren-Wu Xin-Hai Geng-Zi"
        },
        {
          "probe_id": "B2",
          "captured": true,
          "pillars_zh": "庚午 壬午 辛亥 己亥",
          "pillars_pinyin": "Geng-Wu Ren-Wu Xin-Hai Ji-Hai"
        },
        {
          "probe_id": "C1",
          "captured": true,
          "pillars_zh": "丁卯 癸丑 己丑 乙亥",
          "pillars_pinyin": "Ding-Mao Gui-Chou Ji-Chou Yi-Hai"
        },
        {
          "probe_id": "C2",
          "captured": true,
          "pillars_zh": "戊辰 甲寅 己丑 乙亥",
          "pillars_pinyin": "Wu-Chen Jia-Yin Ji-Chou Yi-Hai"
        },
        {
          "probe_id": "D1",
          "captured": true,
          "pillars_zh": "乙亥 壬午 丁丑 癸卯",
          "pillars_pinyin": "Yi-Hai Ren-Wu Ding-Chou Gui-Mao"
        },
        {
          "probe_id": "D2",
          "captured": true,
          "pillars_zh": "乙亥 壬午 丁丑 乙巳",
          "pillars_pinyin": "Yi-Hai Ren-Wu Ding-Chou Yi-Si"
        },
        {
          "probe_id": "E1",
          "captured": true,
          "pillars_zh": "戊辰 己未 辛未 丙申",
          "pillars_pinyin": "Wu-Chen Ji-Wei Xin-Wei Bing-Shen"
        },
        {
          "probe_id": "E2",
          "captured": true,
          "pillars_zh": "戊辰 癸亥 甲戌 壬申",
          "pillars_pinyin": "Wu-Chen Gui-Hai Jia-Xu Ren-Shen"
        },
        {
          "probe_id": "F1",
          "captured": true,
          "pillars_zh": "甲辰 辛未 癸卯 丙辰",
          "pillars_pinyin": "Jia-Chen Xin-Wei Gui-Mao Bing-Chen"
        },
        {
          "probe_id": "F2",
          "captured": true,
          "pillars_zh": "甲辰 壬申 癸卯 丙辰",
          "pillars_pinyin": "Jia-Chen Ren-Shen Gui-Mao Bing-Chen"
        }
      ]
    },
    {
      "id": "bazi-calculator",
      "name": "bazi-calculator.com",
      "kind": "site",
      "note": "The only implementation measured that applies an equation-of-time term, and the only one besides ours that handles daylight saving. Prints its own derivation on the result page.",
      "conventions": {
        "year_boundary": "Li Chun",
        "day_rollover": "No",
        "true_solar_time": "Yes",
        "daylight_saving": "Yes",
        "detail": "The most complete input set measured. Adds an equation-of-time term no other implementation applies, and prints its whole correction on the result page."
      },
      "observations": [
        {
          "probe_id": "BASE",
          "captured": true,
          "pillars_zh": "乙亥 壬午 壬午 乙巳",
          "pillars_pinyin": "Yi-Hai Ren-Wu Ren-Wu Yi-Si"
        },
        {
          "probe_id": "A1",
          "captured": true,
          "pillars_zh": "乙丑 戊寅 庚辰 壬午",
          "pillars_pinyin": "Yi-Chou Wu-Yin Geng-Chen Ren-Wu"
        },
        {
          "probe_id": "A2",
          "captured": true,
          "pillars_zh": "乙巳 己丑 丁亥 丙午",
          "pillars_pinyin": "Yi-Si Ji-Chou Ding-Hai Bing-Wu"
        },
        {
          "probe_id": "B1",
          "captured": true,
          "pillars_zh": "庚午 壬午 辛亥 己亥",
          "pillars_pinyin": "Geng-Wu Ren-Wu Xin-Hai Ji-Hai"
        },
        {
          "probe_id": "B2",
          "captured": false,
          "pillars_zh": null,
          "pillars_pinyin": null
        },
        {
          "probe_id": "C1",
          "captured": true,
          "pillars_zh": "丁卯 癸丑 己丑 乙亥",
          "pillars_pinyin": "Ding-Mao Gui-Chou Ji-Chou Yi-Hai"
        },
        {
          "probe_id": "C2",
          "captured": true,
          "pillars_zh": "戊辰 甲寅 己丑 乙亥",
          "pillars_pinyin": "Wu-Chen Jia-Yin Ji-Chou Yi-Hai"
        },
        {
          "probe_id": "D1",
          "captured": false,
          "pillars_zh": null,
          "pillars_pinyin": null
        },
        {
          "probe_id": "D2",
          "captured": false,
          "pillars_zh": null,
          "pillars_pinyin": null
        },
        {
          "probe_id": "E1",
          "captured": false,
          "pillars_zh": null,
          "pillars_pinyin": null
        },
        {
          "probe_id": "E2",
          "captured": false,
          "pillars_zh": null,
          "pillars_pinyin": null
        },
        {
          "probe_id": "F1",
          "captured": false,
          "pillars_zh": null,
          "pillars_pinyin": null
        },
        {
          "probe_id": "F2",
          "captured": false,
          "pillars_zh": null,
          "pillars_pinyin": null
        }
      ]
    },
    {
      "id": "chinesemetasoft",
      "name": "chinesemetasoft plugin",
      "kind": "engine",
      "note": "A white-label embed. It is the engine behind fsinmotion.com, the top organic result for “bazi calculator” — which has no engine of its own.",
      "conventions": {
        "year_boundary": "Li Chun",
        "day_rollover": "No",
        "true_solar_time": "Not offered",
        "daylight_saving": "No",
        "detail": null
      },
      "observations": [
        {
          "probe_id": "BASE",
          "captured": true,
          "pillars_zh": "乙亥 壬午 壬午 乙巳",
          "pillars_pinyin": "Yi-Hai Ren-Wu Ren-Wu Yi-Si"
        },
        {
          "probe_id": "A1",
          "captured": true,
          "pillars_zh": "乙丑 戊寅 庚辰 壬午",
          "pillars_pinyin": "Yi-Chou Wu-Yin Geng-Chen Ren-Wu"
        },
        {
          "probe_id": "A2",
          "captured": true,
          "pillars_zh": "乙巳 己丑 丁亥 丙午",
          "pillars_pinyin": "Yi-Si Ji-Chou Ding-Hai Bing-Wu"
        },
        {
          "probe_id": "B1",
          "captured": true,
          "pillars_zh": "庚午 壬午 辛亥 庚子",
          "pillars_pinyin": "Geng-Wu Ren-Wu Xin-Hai Geng-Zi"
        },
        {
          "probe_id": "B2",
          "captured": true,
          "pillars_zh": "庚午 壬午 辛亥 己亥",
          "pillars_pinyin": "Geng-Wu Ren-Wu Xin-Hai Ji-Hai"
        },
        {
          "probe_id": "C1",
          "captured": true,
          "pillars_zh": "丁卯 癸丑 己丑 乙亥",
          "pillars_pinyin": "Ding-Mao Gui-Chou Ji-Chou Yi-Hai"
        },
        {
          "probe_id": "C2",
          "captured": true,
          "pillars_zh": "戊辰 甲寅 己丑 丙子",
          "pillars_pinyin": "Wu-Chen Jia-Yin Ji-Chou Bing-Zi"
        },
        {
          "probe_id": "D1",
          "captured": false,
          "pillars_zh": null,
          "pillars_pinyin": null
        },
        {
          "probe_id": "D2",
          "captured": false,
          "pillars_zh": null,
          "pillars_pinyin": null
        },
        {
          "probe_id": "E1",
          "captured": true,
          "pillars_zh": "戊辰 己未 辛未 丙申",
          "pillars_pinyin": "Wu-Chen Ji-Wei Xin-Wei Bing-Shen"
        },
        {
          "probe_id": "E2",
          "captured": true,
          "pillars_zh": "戊辰 癸亥 甲戌 壬申",
          "pillars_pinyin": "Wu-Chen Gui-Hai Jia-Xu Ren-Shen"
        },
        {
          "probe_id": "F1",
          "captured": true,
          "pillars_zh": "甲辰 辛未 癸卯 丙辰",
          "pillars_pinyin": "Jia-Chen Xin-Wei Gui-Mao Bing-Chen"
        },
        {
          "probe_id": "F2",
          "captured": true,
          "pillars_zh": "甲辰 壬申 癸卯 丁巳",
          "pillars_pinyin": "Jia-Chen Ren-Shen Gui-Mao Ding-Si"
        }
      ]
    },
    {
      "id": "mingli",
      "name": "mingli.info",
      "kind": "site",
      "note": "The only implementation that exposes the 23:00 rollover as a user-facing toggle (\"Joined Rat Hour\", default off).",
      "conventions": {
        "year_boundary": "Li Chun",
        "day_rollover": "Your choice",
        "true_solar_time": "Yes",
        "daylight_saving": "Not tested",
        "detail": "The rollover is a checkbox called Joined Rat Hour, off by default. Local Solar Time is a second checkbox, on by default."
      },
      "observations": [
        {
          "probe_id": "BASE",
          "captured": true,
          "pillars_zh": "乙亥 壬午 壬午 乙巳",
          "pillars_pinyin": "Yi-Hai Ren-Wu Ren-Wu Yi-Si"
        },
        {
          "probe_id": "A1",
          "captured": false,
          "pillars_zh": null,
          "pillars_pinyin": null
        },
        {
          "probe_id": "A2",
          "captured": false,
          "pillars_zh": null,
          "pillars_pinyin": null
        },
        {
          "probe_id": "B1",
          "captured": true,
          "pillars_zh": "庚午 壬午 辛亥 庚子",
          "pillars_pinyin": "Geng-Wu Ren-Wu Xin-Hai Geng-Zi"
        },
        {
          "probe_id": "B2",
          "captured": false,
          "pillars_zh": null,
          "pillars_pinyin": null
        },
        {
          "probe_id": "C1",
          "captured": false,
          "pillars_zh": null,
          "pillars_pinyin": null
        },
        {
          "probe_id": "C2",
          "captured": false,
          "pillars_zh": null,
          "pillars_pinyin": null
        },
        {
          "probe_id": "D1",
          "captured": false,
          "pillars_zh": null,
          "pillars_pinyin": null
        },
        {
          "probe_id": "D2",
          "captured": false,
          "pillars_zh": null,
          "pillars_pinyin": null
        },
        {
          "probe_id": "E1",
          "captured": false,
          "pillars_zh": null,
          "pillars_pinyin": null
        },
        {
          "probe_id": "E2",
          "captured": false,
          "pillars_zh": null,
          "pillars_pinyin": null
        },
        {
          "probe_id": "F1",
          "captured": false,
          "pillars_zh": null,
          "pillars_pinyin": null
        },
        {
          "probe_id": "F2",
          "captured": false,
          "pillars_zh": null,
          "pillars_pinyin": null
        }
      ]
    },
    {
      "id": "prokerala",
      "name": "prokerala.com",
      "kind": "site",
      "note": "Requires a birth city and returns an identical chart regardless of it. Not selected from the SERP — captured before the roster was rebuilt — and kept because its behaviour is distinctive.",
      "conventions": {
        "year_boundary": "Chinese New Year",
        "day_rollover": "No",
        "true_solar_time": "Collected, unused",
        "daylight_saving": "No",
        "detail": "Requires a birth city, then returns the same chart for cities two time zones apart. It also labels a 1988 summer birth CDT (+09:00) and still casts the hour from the raw clock reading."
      },
      "observations": [
        {
          "probe_id": "BASE",
          "captured": true,
          "pillars_zh": "乙亥 壬午 壬午 乙巳",
          "pillars_pinyin": "Yi-Hai Ren-Wu Ren-Wu Yi-Si"
        },
        {
          "probe_id": "A1",
          "captured": true,
          "pillars_zh": "甲子 戊寅 庚辰 壬午",
          "pillars_pinyin": "Jia-Zi Wu-Yin Geng-Chen Ren-Wu"
        },
        {
          "probe_id": "A2",
          "captured": false,
          "pillars_zh": null,
          "pillars_pinyin": null
        },
        {
          "probe_id": "B1",
          "captured": true,
          "pillars_zh": "庚午 壬午 辛亥 庚子",
          "pillars_pinyin": "Geng-Wu Ren-Wu Xin-Hai Geng-Zi"
        },
        {
          "probe_id": "B2",
          "captured": false,
          "pillars_zh": null,
          "pillars_pinyin": null
        },
        {
          "probe_id": "C1",
          "captured": false,
          "pillars_zh": null,
          "pillars_pinyin": null
        },
        {
          "probe_id": "C2",
          "captured": false,
          "pillars_zh": null,
          "pillars_pinyin": null
        },
        {
          "probe_id": "D1",
          "captured": true,
          "pillars_zh": "乙亥 壬午 丁丑 乙巳",
          "pillars_pinyin": "Yi-Hai Ren-Wu Ding-Chou Yi-Si"
        },
        {
          "probe_id": "D2",
          "captured": true,
          "pillars_zh": "乙亥 壬午 丁丑 乙巳",
          "pillars_pinyin": "Yi-Hai Ren-Wu Ding-Chou Yi-Si"
        },
        {
          "probe_id": "E1",
          "captured": true,
          "pillars_zh": "戊辰 己未 辛未 丙申",
          "pillars_pinyin": "Wu-Chen Ji-Wei Xin-Wei Bing-Shen"
        },
        {
          "probe_id": "E2",
          "captured": false,
          "pillars_zh": null,
          "pillars_pinyin": null
        },
        {
          "probe_id": "F1",
          "captured": false,
          "pillars_zh": null,
          "pillars_pinyin": null
        },
        {
          "probe_id": "F2",
          "captured": false,
          "pillars_zh": null,
          "pillars_pinyin": null
        }
      ]
    }
  ],
  "blocked": [
    {
      "name": "astro-seek.com",
      "reason": "Server returns HTTP 403 to an automated browser."
    },
    {
      "name": "wofs.com",
      "reason": "Calculator form does not submit; the page carries an invisible reCAPTCHA."
    }
  ]
}
