You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix: 3 silent-wrong bugs found by adversarial audit + value tests (v1.1.5)
- tarot (HIGH): asset {major,minor} dict never loaded (isinstance list check) ->
every reading used placeholder text. Add _flatten_asset_deck; real meanings now.
- huangli 吉时/凶时 (HIGH): classified by "has any 宜" -> always 12吉/0凶. Now use
时辰黄道/黑道 (getTimeTianShenLuck) for a real split. Drop dead getTimes/getTimeXun.
- ziwei 真太阳时 (HIGH): --tz/--longitude accepted but ignored. Wire through
longitude_correction, opt-in (only non-default longitude/tz) so default
时辰-granular charts are unchanged.
- zodiac (LOW): same-sign pair mis-flagged 三合; require distinct branches.
- +5 tests (94->99): value goldens (紫微/奇门/六壬), regression locks (tarot asset,
huangli split, ziwei opt-in, same-sign), kill meihua tautology.
Copy file name to clipboardExpand all lines: CHANGELOG.md
+30Lines changed: 30 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,6 +2,36 @@
2
2
3
3
All notable changes follow [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) format. This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
4
4
5
+
## [1.1.5] — 2026-05-31
6
+
7
+
Bug-fix release — three silent-wrong defects found by an adversarial line-by-line
8
+
audit, plus value-level test coverage to lock them.
9
+
10
+
### Fixed
11
+
-**塔罗 (HIGH)** — `tarot_draw.load_deck` gated on `isinstance(deck, list)`, but
12
+
the asset ships as `{major_arcana, minor_arcana}` (dict), so the curated 78-card
13
+
deck **never loaded** and every reading silently used placeholder text
14
+
("…第N阶: 见详细解读"). Added `_flatten_asset_deck`; readings now carry the real
15
+
per-card 正/逆位 meanings.
16
+
-**黄历 吉时/凶时 (HIGH)** — classification used "时辰 has any 宜", which is true for
17
+
all 12, so output was always 12 吉 / 0 凶 (meaningless). Now derived from the
18
+
时辰 黄道/黑道 (`getTimeTianShenLuck`): a real 吉/凶 split. Removed dead
19
+
`getTimes()` / `getTimeXun()` calls.
20
+
-**紫微 真太阳时 (HIGH)** — `--tz`/`--longitude` were accepted but ignored, so a
21
+
user-supplied longitude produced an uncorrected chart (silent-wrong near 子时).
22
+
Now wired through `longitude_correction` (with day roll-over) — **opt-in**: only
23
+
applied when a non-default longitude/tz is given, so 时辰-granular charts on the
24
+
default meridian are unchanged (no regression).
25
+
-**生肖 (LOW)** — same-sign pairs (e.g. 鼠-鼠) were mis-flagged 三合 because
26
+
`da in group and db in group` is true when `da == db`. Now requires distinct
0 commit comments