Other trust pages: About · Sources · Chart rules · Disclaimer · Methodology
This is the canonical list of every public fix on this site, kept in live sync with the corrections section of the methodology page. The discipline is one line: nothing is fixed silently. Each entry states the date, the versions involved, what changed, how it was verified, and which claims were declared unaffected.
| Entries | 17 |
|---|---|
| Versions touched | 18 |
| Time range | 2026-09-20 → 2026-09-16 |
| Status | All resolved in the stated version — nothing is left open |
| Date | Version | What changed | How verified |
|---|---|---|---|
| 2026-09-16 | v0.1 → v0.2 | True-solar baseline was hardcoded to 120°E (China's central meridian), breaking every overseas birth. Added explicit tzOffsetHours parameter (includes DST, e.g. London in July = UTC+1). | Manual expert spot-check: 1991-03-23 11:00 New York — correct chart 辛未 辛卯 壬辰 丙午 (Xin Wei, Xin Mao, Ren Chen, Bing Wu). |
| 2026-09-16 | v0.2 → v0.3 | Year/month pillars now determined by the absolute instant (UTC) against the solar-term table; v0.2 fed local time where Beijing time was expected, mis-dating far-longitude births near a term boundary. | Manual expert spot-check: 1993-07-07 15:30 London. Xiǎoshǔ 1993 = Jul 7 10:32:02 Beijing (three independent sources agree); birth = 22:30 Beijing → after the term → month pillar Jǐ-Wèi (己未). A popular app showing Wù-Wǔ (戊午) switches months by date, not by instant. |
| 2026-09-16 | v0.3 → v0.3.1 | Ten-god labels for year/month stems were computed against the absolute-instant chart's day master, which has changed by the time an Americas birth converts to Beijing time. Ten gods are now always relative to the true day master. | Dual-engine regression suite (33 cases, pillar-by-pillar) built during the web port. |
| 2026-09-16 | v0.3.1 → v0.3.2 | The longitude-rounding heuristic for the true-solar baseline (e.g. Chengdu 104°E → 105°) contradicted the engine's own ±2h documentation for Ürümqi. Baseline is now always UTC-offset × 15, matching the textbook definition. | Dual-engine regression suite — the web port's first gate caught two convention-level defects before launch. |
| 2026-09-20 | v0.8.0 → v0.9.0 | Added the year and zodiac layer (R30): the Chinese zodiac as a calendar object — which Gregorian years belong to each animal, the exact minute each of those years begins, the five fan-tai-sui relations, and the twelve month pillars of a year. 27 new pages per language (12 animal profiles, 12 animal-in-2027 pages, a zodiac calculator and two year-structure pages), plus the family hub in both languages. Two decisions carry the layer: the animal changes at the lichun instant, and the lichun table is generated, not typed — generate-lichun.mjs reads the solar-term table from the calendar library and the browser engine stores it verbatim. No existing calculation changed; the version bump is purely additive, and every prior fixture still passes. | Ten new assertion blocks, both engines: the 201-entry lichun table byte-for-byte between implementations; the animal index re-derived from the sixty jiazi across 1900–2100; seven boundary golden values with probes one minute either side of the instant (and the instant itself counting as the new year); the conservation law of fan tai sui (exactly one own-year, one clash, one harm, one break per year) cross-checked against the branch table; the 2026 and 2027 offender lists; and the five-tiger month rule swept across 1900–2100 so every month pillar lands back inside the sixty jiazi. |
| 2026-09-20 | v0.7.1 → v0.8.0 | Added three structural layers, all computed by the engine (R27/R28/R29): the twelve earthly branches (polarity, element, zodiac animal, month and solar term, the two-hour clock window, direction, season, hidden stems, and every relation it holds — harmony, clash, harm, punishment, trine, directional meeting); the twelve stages of growth (which of the ten stems sits in which stage, and in which of the sixty pillars that stage appears); and the ten gods by pillar position (for each of the ten day masters, which stem in the year, month or hour pillar produces a given god — with the reverse mapping printed on the page so any row can be checked by hand). Powers 54 new pages (12 branches + 12 stages + 30 god-positions), equally in both languages. No existing calculation changed — every prior fixture still passes; the version bump is purely additive. Convention R26, which the v0.7.1 entry cites, is now labelled in the engine source as well: it had been recorded only in this log, which made it untraceable from the code. | Cross-table assertions: branch polarity is re-derived from the sixty jiazi; the element of each directional meeting must equal its season’s element; each trine must be exactly the yang stems’ growth, peak and tomb stages; and the ten-god-by-pillar mapping must round-trip back to the day master across all 30 combinations. 5 new assertion blocks, run on both engines. |
| 2026-09-20 | v0.7.0 → v0.7.1 | Corrected the stem polarity table (R26). STEM_POLARITY had been written as paired groups — Yang, Yang, Yin, Yin, … — which mislabelled 乙 丙 己 庚 and 癸 (and 甲). No calculation changed: ten-god derivation has always read polarity from the stem's index parity, which is why every existing fixture still passes. But every place that printed the label was wrong, including the titles and descriptions of the sixty day-pillar pages. The table is now derived from the index, and the test suite cross-checks it against the English full-name table on all ten stems. This is exactly the class of error the corrections log exists for: a label that disagreed with the computation, not a computation that disagreed with tradition. | Truth table: 10/10 stems asserted against both the English full-name table (甲 Yang … 癸 Yin) and index parity, on both engines — the assertion reproduces the original bug if the paired-group form is ever reintroduced. |
| 2026-09-20 | v0.6.0 → v0.7.0 | Added the nayin (纳音) table and the day-pillar profile layer (R24/R25): sixty-jiazi nayin as a fixed pair table, hidden stems with their ten-god roles, the twelve stage of the stem seated on the branch, and the five stem-branch seat relations (比和/得地/泄/盖头/截脚). Powers the 60 day-pillar pages, which are generated from the engine rather than hand-written. Existing calculations are unchanged — all prior fixtures still pass. The site's stance on day pillars is declared on every page: structural facts only, no "one pillar = one personality" verdicts. | Truth tables: 30 nayin pairs hard-coded as ground truth (independent of the engine's table), 6 golden pillars for seat/stage/hidden-god assertions, 60-pillar dual-engine field-by-field equality, and a 120-consecutive-day reconciliation against lunar-javascript's day nayin. |
| 2026-09-17 | v0.5.0 → v0.6.0 | Added the favorable-element (喜用神) layer: day-master strength as a published weighted tally (visible stems 1, branch main qi 1, hidden stems 0.5, month pillar ×2, day stem excluded), declared strong/weak thresholds (0.55/0.45), the support-and-suppress school for strong and weak verdicts, and the simplified climate-adjustment rule (summer→Water, winter→Fire, other months get no answer). Computed birth charts, luck pillars and compatibility relations are unchanged — all prior fixtures still pass. No defect escaped to release in this layer; the three golden-chart gates (strong, weak, balanced-at-exactly-0.5) were locked before the web port, and the dual-engine field-by-field comparison covers 8 charts including an unknown-hour case and a 23:00 birth. | Three layers: invariant scans over 168 charts (score sums re-add, verdicts re-derive from thresholds, favorable and unfavorable sets checked disjoint and complete, month-pillar doubling and day-stem exclusion re-verified entry by entry); golden full-tree values for six hand-checked charts covering every verdict path and both climate seasons; and dual-engine parity on all 8 inputs. The page's worked example (8 July 1988, Beijing) is one of the locked golden charts, so the arithmetic shown to users is the arithmetic under test. |
| 2026-09-17 | v0.4.0 → v0.5.0 | Added the compatibility (合盘) layer: ten gods between the two day masters, all sixteen stem pairs and sixteen branch pairs checked against the classical combination, clash, harm, punishment and trine tables, the zodiac pair, and cross-chart trine frames. Computed birth charts and luck pillars are unchanged — all prior fixtures and the 4,939-assertion suite still pass. One defect was caught by our own truth-table gate before release: the transform-element lookup tables were keyed by the traditional pair spellings (子丑, 甲己) while the relation checker generates lookup keys in codepoint-sorted order (丑子, 己甲), which would have silently returned no transform element for the Zi-Chou harmony and the Jia-Ji combination. Both engines now key identically and a full 144-pair scan asserts every relation's presence and its element. | Three layers: textbook enumeration with whole-domain scans (every one of the 144 branch pairs and 100 stem pairs classified, so over- and under-reporting both fail); reconciliation against lunar-javascript's HE_GAN_5 / HE_ZHI_6 / CHONG / SHENGXIAO tables (the library has no harm, punishment or trine tables — note its ZHI_XING is the twelve day-officers, not punishments, a referencing trap we document); and golden full-tree values for four hand-checked chart pairs. Both engines are additionally compared field-by-field across 8 chart pairs and all 244 stem/branch pair combinations. |
| 2026-09-17 | v0.3.3 → v0.4.0 | Added the luck-pillar (大运) layer: direction rule, starting-age arithmetic under two published granularities, twelve-stage positions, and the full ten-decade sequence with exact changeover dates. Computed birth charts are unchanged in this release — the 33 boundary fixtures still pass byte-for-byte. Two defects were found and fixed inside the new layer while it was being built: (a) our first block counter treated 23:00 as the start of the Zi block rather than the boundary between Hài and Zǐ, which shifted the starting age by exactly one block for any interval crossing 23:00; (b) solar-term instants were being truncated to the minute, skewing the displayed distance by about 35 seconds. Both are covered by new assertions. | Three independent gates, deliberately not the library's own answer: a mathematical bound (the block-quantised result may never differ from the exact linear ratio by more than half a block, i.e. 130 luck-days — the real maximum we measure is 9.83); an item-by-item reconciliation against lunar-javascript's getYun() across 48 charts, in which ten cases land in the 23:00 band and are recorded as declared divergences instead of being forced to agree; and hand-checkable truth tables for all twenty direction combinations and all twelve branches' hidden stems. |
| 2026-09-17 | v0.3.2 → v0.3.3 | Ten-god derivation is now exposed as structured data (relation group, polarity, both variants) so the ten gods tool can show the rule behind every label instead of only the label. Also fixed a presentation defect: the day-pillar school was being printed on English pages as the internal Chinese string. Computed charts are unchanged in this release. | Automated parity test: all 100 day-master × stem combinations compared field-by-field between the two engine implementations, plus 14 hand-verified known values that would catch both engines drifting identically. |
| 2026-09-20 | v0.9.0 → v0.10.0 | Added the hexagram layer (R31): all 64 hexagrams as derived objects — King Wen and binary numbering, upper/lower trigrams, Jing Fang's eight palaces with shi/ying lines, the six na jia stem-branches with their six relations, and the cuo/zong/hu partners. 65 new pages per language (64 hexagram pages plus the /hexagrams hub with its 8×8 matrix and trigram lookup). The tables were produced by generate-hexagrams.py, which cross-checks eight independent sources (the Unicode U+4DC0 block, the 8×8 matrix, an explicit per-hexagram list and the sequence rhyme) before anything is copied into the engines. No existing calculation changed. | R31 assertion block, both engines: Unicode code-point anchors for both blocks; the King Wen pairing rule verified for all 32 pairs; the eight palaces as an 8×8 bijection; na jia golden values for the eight pure hexagrams with the 12-branches-×-32 conservation law; the six relations substituted back into the classical formulas; and a field-by-field profile comparison of all 64 hexagrams. |
| 2026-09-20 | v0.10.0 → v0.11.0 | Added the shen sha layer (R32): 36 symbolic stars as fixed tables cross-checked against external sources and against their own derivations — Lu = Attiring Post, blades = Prosperity stage, void = xun derivation, Ten Evils = salary-in-void. Each language adds 37 pages (36 star pages + the /shensha index with a 36-star scanner). School differences printed on-page: Geng/Xin nobleman rows, yin-stem blades, the Yi-Chou variant, the Zou-Ma alias. Declaration unchanged: tags stay tags — no verdicts. | test-web-engine R32 section (double-engine byte equality + derivation cross-checks); generate-shensha.py 14 structural checks; visual-check [4f]/[5e] sampling and scanner golden value |
| 2026-09-20 | v0.11.0 → v0.12.0 | Added the Eight Mansions life-gua layer (R36): the Da You Nian table as a fixed table verified against external sources and against its own structure — full symmetry, eight stars per row, favorable stars confined to same-group directions; the century formulas asserted congruent to the unified mod-9 form for all years 1900–2099; lichun year boundary shared with the year pillar. Each language adds 1 page (the kua calculator). Declared unchanged: nothing in R1–R35 was touched; all previously generated pages are byte-identical. | test-web-engine R36 section (dual-engine byte equality + structure assertions + ten golden kua values + lichun boundary ±1 minute); golden values cross-checked against three independent published kua tables before implementation |
| 2026-09-20 | v0.12.0 → v0.13.0 | Added the daily ganzhi layer (R37): the twelve day officers as a derived table — month-branch seat plus offset — verified against the calendar library for 628 consecutive days and against its own structure for all 144 month-day pairs (Jian equals the month branch, Po equals its clash); dailyProfile assembles the existing layers with no new source of truth. Each language adds 1 page (the daily pillar page). Declared unchanged: nothing in R1–R36 was touched; all previously generated pages are byte-identical. | test-web-engine R37 section (dual-engine byte equality + 144-pair structure assertions + 628-day library cross-check + twelve golden profiles); the officer formula was probed against the calendar library for 628 days before any code was written |
| 2026-09-20 | v0.13.0 → v0.14.0 | New R38 wedding-date layer: the 28-mansion wheel (Julian day + 11 mod 28) and the twelve day spirits ((day branch + 4 - 2 × month branch) mod 12) are derived rather than tabled, both reconciled against the calendar library over 900 consecutive days; five hard exclusions plus fifteen published weights replace any opaque auspicious-day verdict. Declared non-changes: the pillars, luck pillars, compatibility, favorable element and officer layers are untouched, and no prediction is added. | Reconciliation against the calendar library (900 days, zero mismatches for both the mansion and the spirit), structural assertions (the two colour systems agree on exactly 72 of 144 combinations, i.e. 50.0 percent; mansion ratings differ from the library on exactly the seven disputed mansions 21/28), and dual-engine field-by-field equality on twelve sample dates plus a full month scan. |
Every enumerable component of ba zi has its own page here. Each page is computed by the same engine and can be checked item by item — none of it is a personality table.