Engine Validation

How we prove the BaZi engine is correct — not just claim it. Every calculation layer below is locked by an automated regression suite. Any future change that breaks a verified case blocks deployment.

Assertions
736
Pass Rate
100.00%
Suites
13/13

Verification Layers

Tests are layered from astronomy to derived rules. Sources of truth: astronomical computation (VSOP87 solar model, minute-precision solar terms), independent rule implementations (a second algorithm written separately, cross-checked), and dual-engine agreement (two full engines must produce identical pillars).

LayerSuiteCasesStatus
L1 Astronomy / Calendar Five-Element Seasonal Strength (60-cell rule matrix)60 PASS
L2 Classical Rules Life Palace - San Ming Tong Hui zhong-qi method4 PASS
L1 Astronomy / Timezone Historical DST — US / EU / AU / China 1986-91 (incl. 1974 emergency, 1987/2007 rules)37 PASS
L3 Derived Dynamics Unified element weighting (stem 1.0 / hidden 1.0-0.6-0.4)3 PASS
L2 Classical Rules 3-Pillar mode data isolation3 PASS
L2 Classical Rules Late-Zi hour school (matches Yuan Heng Li Zhen / Wen Zhen)6 PASS
L1 Astronomy Dual-engine consistency (main table vs tianji, 16 cases)16 PASS
L1 Astronomy Kashgar rollback / lichun minute-switch / Sydney DST / luck-age 015 PASS
L1 Astronomy Solar-term boundary scan (12 terms x 3 years x +/-1 min)68 PASS
L1 Astronomy Term-sensitive window correction4 PASS
L1 Astronomy Day pillar 1900-2100 triple-source scan414 PASS
L3 Derived Dynamics Ten Gods 10x10 full matrix (independent rule impl)100 PASS
L2 Classical Rules Self-Punishment activation + luck-cycle month carry6 PASS

Public Validation Corpus

50 independently reproducible cases. These expected values were not generated by the production engine alone — each case was cross-validated by two independent engines plus astronomical anchor dates. Anyone can take any case below, enter it into any BaZi calculator (ours or a competitor's), and compare.

Public Cases
50
Categories
7
Browser Verify
#BirthLocationExpected PillarsStatus
11949-10-01 10:00Beijing己丑 癸酉 甲子 己巳
22000-01-01 12:00Beijing己卯 丙子 戊午 戊午
31997-07-01 09:00Hong Kong丁丑 丙午 甲辰 戊辰
41976-09-09 12:00Beijing丙辰 丁酉 甲子 庚午
52008-08-08 20:00Beijing戊子 庚申 庚辰 丙戌
61969-07-20 20:17Houston己酉 辛未 丙申 丁酉
71990-10-03 00:00Berlin庚午 乙酉 辛丑 戊子
82020-01-01 00:30Tokyo己亥 丙子 癸卯 壬子
92024-02-04 16:20Beijing
1 min before Li Chun
癸卯 乙丑 戊戌 庚申
102024-02-04 16:22Beijing
1 min after Li Chun
甲辰 丙寅 戊戌 庚申
112024-08-07 08:08Beijing
around Li Qiu
甲辰 壬申 癸卯 丙辰
122024-12-21 16:19Beijing
around Dong Zhi (zhong-qi)
甲辰 丙子 己未 壬申
132025-02-03 21:09Beijing
1 min before Li Chun 2025
甲辰 丁丑 癸卯 壬戌
142025-02-03 21:11Beijing
1 min after Li Chun 2025
甲辰 丁丑 癸卯 壬戌
152024-05-05 09:58Beijing
around Li Xia
甲辰 己巳 己巳 己巳
162024-11-07 06:17Beijing
around Li Dong
甲辰 乙亥 乙亥 己卯
172023-10-08 21:14Beijing
1 min before Han Lu
癸卯 壬戌 己亥 乙亥
182023-10-08 21:16Beijing
1 min after Han Lu
癸卯 壬戌 己亥 乙亥
192024-06-05 11:09Beijing
around Mang Zhong
甲辰 己巳 庚子 辛巳
202024-03-05 10:21Beijing
around Jing Zhe
甲辰 丁卯 戊辰 丁巳
212023-10-15 23:30Shanghai
Late Zi 23:30
癸卯 壬戌 丙午 戊子
222023-10-16 00:10Shanghai
Early Zi 00:10
癸卯 壬戌 丁未 庚子
232023-10-15 23:59Shanghai
Late Zi last minute
癸卯 壬戌 丁未 庚子
242024-02-04 23:45Beijing
Late Zi + Li Chun day
甲辰 丙寅 戊戌 壬子
252024-02-05 00:05Beijing
Early Zi day after Li Chun
甲辰 丙寅 戊戌 壬子
262025-10-08 23:50Beijing
Late Zi near Han Lu
乙巳 丙戌 庚戌 丙子
271988-06-25 13:00Beijing
China DST 1988
戊辰 戊午 辛亥 甲午
281986-07-01 10:00Shanghai
China DST first year
丙寅 甲午 丙午 癸巳
291974-07-15 12:00Los Angeles
US 1974 emergency DST
甲寅 辛未 丁巳 丙午
302024-01-15 14:30Sydney
AU Southern summer DST
癸卯 乙丑 戊寅 己未
312024-07-15 14:30Sydney
AU winter no DST
甲辰 辛未 庚辰 癸未
322024-07-01 12:00London
UK summer DST
甲辰 庚午 丙寅 癸巳
332024-01-01 00:30Paris
EU winter no DST
癸卯 甲子 癸亥 壬子
342024-03-10 02:30Los Angeles
US DST spring-forward day
甲辰 丁卯 癸酉 癸丑
352024-05-10 01:15Kashgar
Day rollback -172 min
甲辰 己巳 癸酉 癸亥
362023-05-15 23:50Tokyo
Day roll-FORWARD +23 min
癸卯 丁巳 甲戌 甲子
372028-10-07 16:00Buenos Aires
-40 min correction
戊申 辛酉 乙丑 甲申
382025-01-10 23:30Dubai
Late Zi via TST
甲辰 丁丑 己卯 甲子
392024-06-15 18:30Honolulu
Far west UTC-10
甲辰 庚午 庚戌 乙酉
402024-09-01 05:40Auckland
Far east UTC+12
甲辰 壬申 戊辰 乙卯
411900-02-28 23:50Shanghai
Pre-1900 leap century
庚子 戊寅 壬申 庚子
422000-02-29 12:00Beijing
Leap day 2000
庚辰 戊寅 丁巳 丙午
432099-12-31 23:59Beijing
Century end
己未 丙子 壬寅 庚子
442100-01-01 00:01Beijing
22nd century start
己未 丙子 壬寅 庚子
451920-04-15 06:30Beijing庚申 庚辰 癸卯 乙卯
461955-08-20 18:45Guangzhou乙未 甲申 癸丑 辛酉
471985-10-08 15:20Singapore
Day Pillar famous case
乙丑 乙酉 庚辰 癸未
482000-08-15 08:08Beijing庚辰 甲申 乙巳 庚辰
492015-03-03 03:03Shanghai乙未 戊寅 戊寅 癸丑
502040-12-12 12:12Beijing
Future date
庚申 戊子 甲戌 庚午

Expected values generated by dual-engine cross-validation (library calendar engine + astronomical engine, UTC-anchored day pillar) — not by the production engine alone.

Methodology →
How the chart is calculated
Worked Examples →
10 full derivation chains
BaZi Calculator →
Run your chart — free

How Truth Is Established

  • No circular verification. We never use another astrology site's output as the expected answer — sites often copy each other's bugs. Instead: astronomical computation, independent rule implementations, and cross-engine agreement.
  • Minute-precision boundaries. Solar-term switches are tested at one minute before and after the exact astronomical moment — not by calendar day, where most errors hide.
  • Century-scale day pillars. 1900–2100 scanned with three independent algorithms (UTC-anchored arithmetic, library calendar, Julian-day method) all agreeing.
  • Edge cases first. Kashgar 1 AM solar-time rollback, Sydney Southern-Hemisphere DST, luck-cycle start age of zero, 23:00 late-Zi boundary — cases normal users rarely hit, but which silently break naive engines.

Report generated: 2026-09-06T17:56:29.763Z · Suite runs on every engine release; a single failed assertion blocks deployment.