Domy: Placidus i Koch + jawny fallback (Etap 2) — oraz PILNA poprawka 500 z Etapu 1 #63
Reference in New Issue
Block a user
Delete Branch "feat/placidus-koch"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Najpierw rzecz pilna
Na masterze jest teraz błąd 500 wprowadzony przez PR #62. Rozszerzenie
houses.SYSTEMSdo ośmiu pozycji odblokowało wchart.pyfiltrhouse_system in H.SYSTEMS, ale samo liczenie zostało naH.cusps(), które zna wyłącznie trzy systemy dzielące ekliptykę i dla reszty rzucaValueError. Wybranie campanusa (albo dowolnego z pięciu nowych) przechodzi walidację i dopiero potem wywala horoskop.Testy tego nie złapały, bo żaden nie prosił o nowy system przez
build_chart. Poprawka przepina nacusps_fori dokłada test parametryzowany poH.SYSTEMS— dopisanie nazwy na listę bez przepięcia liczenia zapali się od razu.Etap 2: Placidus i Koch
Te 1,7e-6° to próg zbieżności wyroczni, nie nasz błąd — nasze cuspy spełniają definicję Placidusa z dokładnością 1e-12°, co sprawdza osobny test działający bez swissepha.
Placidus jako jedyny nie ma wzoru zamkniętego: cusp jest zdefiniowany warunkiem na samego siebie („punkt, który przebył 1/3 swojego półłuku"), więc iterujemy po punkcie stałym do 1e-11°. Brak zbieżności = wyjście poza dziedzinę, nie wynik.
Koch okazał się zamknięty. Jego kryterium to czas od wschodu stopnia stojącego na MC, a półłuk tego stopnia znamy wprost z deklinacji — żadnej iteracji. Definicja wzięta z Astrodienst Astrowiki, nie zgadywana; zgodność co do zera za pierwszym uruchomieniem.
Fallback, który zostawia ślad
Powyżej koła podbiegunowego oba systemy odmawiają liczenia — i wyrocznia odmawia dokładnie tych samych przypadków, zero rozjazdów dziedziny na 20 000 losowych.
cusps_forzostaje funkcją czystą i nieustępliwą (to ją porównuje wyrocznia). Ustępstwo siedzi osobno, wcusps_detailed(): podstawia Porphyry'ego i zawsze zostawia komunikat. Ten komunikat idzie wszystkimi trzema wyjściami:muted\fbox, przed rysunkami (test pilnuje kolejności)Powód jest jeden: po podmianie kosmogram wygląda bezbłędnie. Ten akapit jest jedyną informacją, że podział domów pochodzi z innego systemu.
Katalog systemów
Nazwy były zaszyte w czterech szablonach naraz. Przy trzech systemach uchodziło; przy dziesięciu nie. Jest jedno źródło (
app/house_systems.py), a testy szablonów renderują je zamiast szukać tekstu w źródle — łapią więc i literówki w Jinja, czego grep nigdy nie robił. Systemy z granicą dziedziny dostają w UI gwiazdkę, żeby uprzedzić przed liczeniem.Jądro efemeryd — decyzja
de441 zdegradowane do „nice to have" i odłożone: rozszerza wyłącznie zakres dat, nie poprawia niczego w obecnym. Odnotowane przy
JD_MIN/JD_MAXwtests/oracle/domain.py, żeby nie wróciło po cichu.Weryfikacja
🤖 Generated with Claude Code