Skip to content

Commit b9ac223

Browse files
g-battagliaclaude
andcommitted
release: 6.0.0a63 β€” regenerate golden baselines on DE441 extended kernel
Regenerate every test golden baseline on the extended (DE441) precision tier with libephemeris 3.0.0rc1, restoring the 9 pre-1550 historical subjects a prior medium-tier regeneration had silently dropped (41 subjects again, not 32). No kerykeion computation bug was involved; the diff decomposes into: - Stale-baseline fixes now captured: the previous baselines predated two house-ring fixes (composite MC/IC no longer swapped by re-sorting non-monotone cusps; get_planet_house resolves non-monotone rings via the shortest arc, e.g. Horizon houses at the equator). Regenerated fixtures satisfy the invariants (composite 10th cusp == MC; equatorial-Horizon planets spread across houses). - Documented libephemeris updates: houses_ex2 now reports true time-derivative cusp speeds, so sign-locked systems (Whole Sign/Aries/Krusinski) carry the guiding-point (Asc/MC) rate instead of 0; Interpolated-Lilith/osculating-apogee drifted ~0.02-0.06deg after the upstream apogee fixes. Report snapshots (which track the shipped base/medium kernel) regenerated accordingly. - Heliocentric charts no longer carry geocentric lunar nodes. Fix TestDavisonBCE to parse the extended-year ISO string instead of the absent CompositeSubjectModel.year (latent failure; these BCE tests only run on the extended kernel, so default-tier CI never surfaced it). Verified green: full offline suite at default tier (9548 passed) and the CI --tier=base command (8864 passed); data baselines pass at forced extended tier. Libephemeris rc updated Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DEPVRxJVsgWGtkBGg6zAbT
1 parent 23bdd91 commit b9ac223

400 files changed

Lines changed: 158007 additions & 149467 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

β€ŽCHANGELOG.mdβ€Ž

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,31 @@
22

33
## [Unreleased]
44

5+
### Changed (6.0.0a63 β€” golden-baseline regeneration on the DE441 extended kernel)
6+
7+
Regenerated every test golden baseline on the `extended` (DE441) precision tier
8+
with libephemeris `3.0.0rc1`, restoring the nine pre-1550 historical subjects a
9+
prior `medium`-tier regeneration had silently dropped (41 subjects again, not 32).
10+
No kerykeion computation bug was involved; the diff decomposes into:
11+
12+
- **Stale-baseline fixes now captured.** The previous baselines predated two
13+
house-ring fixes (composite MC/IC no longer swapped by re-sorting non-monotone
14+
cusps; `get_planet_house` resolves non-monotone rings via the shortest arc β€” e.g.
15+
Horizon houses at the equator). The regenerated fixtures encode the corrected
16+
(invariant-satisfying) values: composite 10th cusp == MC, and equatorial-Horizon
17+
planets distributed across houses instead of collapsed into the 1st.
18+
- **libephemeris behavioural updates (documented upstream).** `houses_ex2` now
19+
reports true time-derivative cusp speeds, so sign-locked systems (Whole Sign,
20+
Aries, Krusinski) carry the guiding-point (Asc/MC) rate instead of `0`; the
21+
Interpolated-Lilith/osculating-apogee position drifted ~0.02–0.06Β° after the
22+
upstream apogee fixes. Report snapshots (which track the shipped base/medium
23+
kernel) were regenerated accordingly.
24+
- **Heliocentric charts** no longer carry geocentric lunar nodes.
25+
- **Test fix.** `TestDavisonBCE` derived the era from `davison.year`, but
26+
`CompositeSubjectModel` exposes only ISO datetimes; it now parses the
27+
extended-year ISO string. These BCE tests only run on the extended kernel, so the
28+
latent failure was invisible to the default-tier CI.
29+
530
### Fixed (pre-6.0.0 zero-bug review campaign, rounds 26–35)
631

732
Ten further review rounds, each rotating a fresh runtime-reproduced lens. Every

β€Žpyproject.tomlβ€Ž

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[project]
22
name = "kerykeion"
3-
version = "6.0.0a62"
3+
version = "6.0.0a63"
44
authors = [
55
{ name = "Giacomo Battaglia", email = "kerykeion.astrology@gmail.com" }
66
]
@@ -46,7 +46,7 @@ classifiers = [
4646
requires-python = ">=3.12"
4747
dependencies = [
4848
# TODO before tagging 6.0.0: bump the floor to the stable 3.0.0 once released.
49-
"libephemeris>=3.0.0rc1,<4",
49+
"libephemeris==3.0.0rc3",
5050
"pydantic>=2.5",
5151
"svg-polish>=1.0.0",
5252
"requests-cache>=1.2.1",

β€Žtests/core/test_davison_composite.pyβ€Ž

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,20 @@
55
from kerykeion import AstrologicalSubjectFactory, CompositeSubjectFactory
66

77

8+
def _astro_year_from_iso(iso_datetime: str) -> int:
9+
"""Astronomical year from a kerykeion ISO 8601 extended-year string.
10+
11+
``CompositeSubjectModel`` exposes the Davison event date only through its
12+
ISO datetime fields (it has no scalar ``year`` attribute like a natal
13+
subject). BCE years carry a leading ``-`` (e.g. ``-0072-04-30T...``), so
14+
the sign must be stripped before splitting on the date separators.
15+
"""
16+
negative = iso_datetime.startswith("-")
17+
year_token = iso_datetime.lstrip("-").split("-", 1)[0]
18+
year = int(year_token)
19+
return -year if negative else year
20+
21+
822
@pytest.fixture(scope="module")
923
def subjects():
1024
s1 = AstrologicalSubjectFactory.from_birth_data(
@@ -247,7 +261,7 @@ def test_bce_pair_round_trips_to_midpoint_jd(self):
247261

248262
davison = CompositeSubjectFactory(s1, s2).get_davison_composite_subject_model()
249263

250-
assert davison.year < 1
264+
assert _astro_year_from_iso(davison.iso_formatted_utc_datetime) < 1
251265
err_seconds = abs(davison.julian_day - mid_jd) * 86400.0
252266
assert err_seconds < 1.0, (
253267
f"Davison JD {davison.julian_day} is {err_seconds:.1f}s away from "
@@ -261,7 +275,7 @@ def test_mixed_pair_with_bce_midpoint_round_trips(self):
261275

262276
davison = CompositeSubjectFactory(s1, s2).get_davison_composite_subject_model()
263277

264-
assert davison.year < 1
278+
assert _astro_year_from_iso(davison.iso_formatted_utc_datetime) < 1
265279
assert abs(davison.julian_day - mid_jd) * 86400.0 < 1.0
266280

267281
def test_bce_davison_sun_matches_ephe_at_midpoint_jd(self):

β€Žtests/data/configurations/composite/expected_composite_charts.pyβ€Ž

Lines changed: 208 additions & 208 deletions
Large diffs are not rendered by default.

β€Žtests/data/configurations/ephemeris/expected_ephemeris_ranges.pyβ€Ž

Lines changed: 273 additions & 273 deletions
Large diffs are not rendered by default.

β€Žtests/data/configurations/house_systems/expected_positions_house_A.pyβ€Ž

Lines changed: 2515 additions & 2515 deletions
Large diffs are not rendered by default.

β€Žtests/data/configurations/house_systems/expected_positions_house_B.pyβ€Ž

Lines changed: 2515 additions & 2515 deletions
Large diffs are not rendered by default.

β€Žtests/data/configurations/house_systems/expected_positions_house_C.pyβ€Ž

Lines changed: 2515 additions & 2515 deletions
Large diffs are not rendered by default.

β€Žtests/data/configurations/house_systems/expected_positions_house_D.pyβ€Ž

Lines changed: 2515 additions & 2515 deletions
Large diffs are not rendered by default.

β€Žtests/data/configurations/house_systems/expected_positions_house_F.pyβ€Ž

Lines changed: 2515 additions & 2515 deletions
Large diffs are not rendered by default.

0 commit comments

Comments
Β (0)