Verification Artifacts

How Trikona's calculation engine is held to classical fidelity — the evidence, in the open.

1. Reference corpus

The engine is exercised against an independently-assembled corpus of birth charts spanning known celebrity nativities, deliberate edge cases (high latitude, day boundaries, ayanamsa extremes), and synthetic seeds.

0
bphs commentary
5
celebrity charts
12
edge cases
0
jhora bundled
39
synthetic
56
total corpus charts

2. PyJHora oracle cross-checks

Cross-validatable positional fields are checked against 100 deterministic fixtures generated independently with PyJHora. PyJHora is a separately authored Python library inspired by Jagannatha Hora; it is not the official Jagannatha Hora desktop application, and these fixtures are not JHora exports. The corpus currently contains 0 official JHora exports. Formulation differences and circularity limits are recorded in the classical audit log rather than hidden.

100 PyJHora oracle fixtures

3. BPHS golden tests

Hand-computed goldens derived directly from Brihat Parashara Hora Shastra verses, plus canonical-snapshot and randomized regression goldens, guard against silent drift:

4. Engine integrity sweep

Every layer's verification validator, re-run in the final engine state and pinned by a deterministic RESULT_SHA256 so the result is reproducible:

36/36 PASS

ValidatorVerdictRESULT_SHA256
validate_cp2l1_crossvalPASS48d35fb1
validate_cp2l2_aspectsPASS9c98489c
validate_cp2l2_divisionalPASSef01885b
validate_cp2l2_karakasPASS7eb69cbc
validate_cp2l2_transitsPASS23d1af57
validate_cp2l2_vimshottariPASSa78ee523
validate_cp2l3_argalaPASS7eb2e105
validate_cp2l3_dasha_systems_extendedPASS43d734e1
validate_cp2l3_dispositorPASSdfd40317
validate_cp2l3_jaimini_dashasPASSd43c8a93
validate_cp2l3_narayanaPASSab6d5fe8
validate_cp2l4_ashtakavargaPASSa3597f2f
validate_cp2l4_ashtakavarga_extensionsPASS55b7f498
validate_cp2l4_functional_statusPASS4bc5ff3d
validate_cp2l4_house_strengthPASS5be7ea3f
validate_cp2l4_planetary_statePASSbc492dea
validate_cp2l4_shadbalaPASS4dfddb9d
validate_cp2l4_transit_aggregatorPASS68baa02c
validate_cp2l4_transit_overlayPASSea77a72e
validate_cp2l4_transitsPASS82f0e1e6
validate_cp2l4_vimshopaka_balaPASSc75e00c9
validate_cp2l4_yoga_catalog_expandedPASS37bcdccc
validate_cp2l4_yoga_enginePASSc308e894
validate_cp2l4_yoga_extensionsPASS812f518f
validate_cp2l5_compatibilityPASSebae76a9
validate_cp2l5_muhurta_choghadiyaPASS184fe20e
validate_cp2l5_muhurta_panchangPASSf674236a
validate_cp2l5_muhurta_scoringPASSabe66a07
validate_cp2l5_muhurta_sunrisePASS17e2bf85
validate_cp2l5_muhurta_tarabalaPASSc8232f52
validate_cp2l5_prashnaPASSfc569dcf
validate_cp2l5_special_points_lagnasPASS87034da3
validate_cp2l5_special_points_upagrahasPASSb4ac6f52
validate_cp2l5_varshaphalaPASS53bca7b3
validate_cp2s_relationshipsPASS8331b491
validate_cp2s_yoga_crosslayerPASS7e089869

5. Classical source audit log

Provisional — pending launch-readiness ratification. Where Trikona's method differs from another tool, the difference is a documented classical-methodology judgment, not a bug. Each is logged below and reserved for ratification by credentialed practitioners under NDA at launch readiness (Constitution §4.5). Claude Code does not adjudicate classical disputes.
IDLoggedQuestion
CQ-00012026-05-29Shadbala/Bhava Bala authoritative values come from PyJHora, not independently classically derived in Hora
CQ-00022026-05-29D60 (Shashtiamsa) formulation differs from JHora; no PyJHora method matches
CQ-00032026-05-29Vimshottari year-length (and dasha-epoch) convention differs from JHora
CQ-00042026-05-298-karaka diagnostic: Rahu degree convention (plain vs reverse)
CQ-00052026-05-29Arudha pada: ~7% divergence from JHora (exception/edge-rule variant)
CQ-00062026-05-29Yogini dasha: starting-yogini convention differs from JHora
CQ-00072026-05-30Narayana dasha: progression + period-years formulation differs from PyJHora
CQ-00082026-05-30Sthira dasha: seed sign + per-sign duration table differ from PyJHora
CQ-00092026-05-30Niryana Shoola dasha: seed/direction + duration table differ from PyJHora
CQ-00102026-05-30dasha_systems_extended ships only Tier-4 / placeholder / deferred dashas
CQ-00112026-05-30Ekadhipatya Shodhana: scope-of-application methodology differs from PyJHora
CQ-00122026-05-30Cheshta Bala reading: BPHS Ch 27 vv. 24-25 (sheeghra-kendra) vs vv. 21-23 (8-motion table)
CQ-00132026-05-30Bhava Digbala is a PyJHora-port (Tier-5 impl of the sign-class verse) + Sripati-midpoint choice
CQ-00142026-05-30Yoga synthesis GATES are documented modern (Raman/Rao) interpretive overlays, not pure BPHS
CQ-00132026-06-01Graha drishti: engine models all aspects as FULL; the graded 1/4–1/2–3/4 (Sphuta) drishti is not implemented
CQ-00152026-06-02Śrīpati vs Bhāva-Chalit bhāva semantics + the quadrant-cusp method (CP8.E.1)
CQ-00162026-06-02interpretive_school factor-weighting multipliers (CP8.E.3)
CQ-00172026-06-02Graha-Yuddha basis for the canonical Shadbala total (CP8.F.2)
CQ-00182026-06-02Interpretive strength-gating onto the canonical Shadbala tier (CP8.F.7)
CQ-00192026-06-14Jaimini rasi-strength ladder (shared primitive) + Brahma seed resolution
CQ-00202026-06-14Sthira Dasha: two schools (seed + year-table) — PVR/PyJHora shipped as opt-in
CQ-00212026-06-15Sudasa (Sri-Lagna rasi-dasha): NEW build; logic exact, divergence inherited
CQ-00222026-06-15Drig (Dṛg) Daśā: equal-10y placeholder REBUILT to real PVR algorithm; logic exact
CQ-00232026-06-15Trikoṇa (Lagna-trine) rāśi-dasha: NEW build; logic exact, durations inherited
CQ-00242026-06-15Maṇḍūka (frog-leap) rāśi-dasha: NEW build; sequence AND durations byte-exact
CQ-00252026-06-15Lagna-Kendrādhi (Kendrādhi) rāśi-dasha: NEW build; logic exact, durations inherited
CQ-00262026-06-15Kāraka-Kendrādhi rāśi-dasha: NEW build; logic exact, divergence = OQ-0005 + CQ-0007
CQ-00272026-06-15Shashṭihāyani (60y conditional nakṣatra dasha): NEW build; the nakṣatra-dasha pattern, byte-exact
CQ-00282026-06-15Phase 3 nakṣatra-dasha batch (7 NEW conditional dashas): byte-exact
CQ-00292026-06-15Tāra Daśā (kendra-strength nakṣatra dasha): NEW build → Phase 3 COMPLETE (9/9)
CQ-00302026-06-15KP (Krishnamurti Paddhati) sub-lord engine: Phase 4 foundation, byte-exact
CQ-00312026-06-15KP cuspal sub-lords (CSL): byte-exact, two PyJHora sources
CQ-00322026-06-15KP four-fold significators: core is unambiguous canon; node agency flagged
CQ-00332026-06-15KP Ruling Planets (RP): assembly of validated primitives; byte-exact
CQ-00342026-06-15KP horary (1..249): byte-identical to PyJHora's published KP-249 table
CQ-00352026-06-15Nābhasa (Āśraya + Saṅkhyā): planet set = 7 (Sun–Saturn), nodes excluded
CQ-00362026-06-15Nābhasa Ākṛti: 18 purely-positional shape yogas (3 occupancy regimes)
CQ-00372026-06-15Nābhasa Dala + Vajra/Yava: natural benefic/malefic classifier (completes the family 32/32)
CQ-00382026-06-15Mālikā (garland) Rāja yogas = the start-house naming of the Nābhasa 7-span geometry
CQ-00392026-06-15Named Rāja yogas, positional sub-batch (Chatussāgara, Rājalakṣaṇa, Trilochana)
CQ-00402026-06-15Lord-based named Rāja yogas (Devendra, Indra): Sc/Aq lordship = classical single lord, NOT PyJHora's strength-resolved node co-lordship
CQ-00412026-06-15Named-yoga backlog coverage triage is UNRELIABLE; Vipareeta was already covered (caught + reverted)
CQ-00422026-06-15Parvata Yoga (BVR #14): classical 6th+8th (not PyJHora's 7th), waxing Moon counts, kendras must hold a benefic
CQ-00432026-06-16Chamara Yoga (BPHS Ch.36, NOT a Raman number): three corrections of PyJHora (lagna-inclusion, whole-sign exaltation, conditional benefics)
CQ-00442026-06-16Sankha Yoga (B.V. Raman #44): PyJHora has a genuine Path-B coding bug; Hora corrects it
CQ-00452026-06-16"Strong" planet = classical BPHS naisargika dignity, NOT PyJHora's strength table (Jupiter→Mercury is an ENEMY)
CQ-00462026-06-16Qualitative Rāja batch 2 (Kusuma #54, Makuta #58, Kahala #15): independent sourcing corrected three PyJHora combination numbers; Kusuma rule corrected
CQ-00472026-06-16Qualitative Rāja batch 3 (Jaya #73, Kalanidhi #51): another PyJHora bug (Kalanidhi venus-join tautology); Jaya deep-vs-sign exaltation
CQ-00482026-06-16Gaja Yoga (#50, ≠ Gajakesari #1): "aspected" = graha-dṛṣṭi (classical), PyJHora also admits rasi-dṛṣṭi
CQ-00492026-06-16Lord-placement Rāja yogas (Siva #63, Khadga); Sreenatha #32 DEFERRED (self-contradictory); more PyJHora number errors
CQ-00502026-06-16Module split (raja_yoga_helpers.py) + Matsya #47
CQ-00512026-06-16Brahma #65 (the LORD-KENDRA one); trio Brahma/Hari/Hara + Koorma/Vishnu DEFERRED (contested / need D9)
CQ-00522026-06-16Structural Dhana yogas (Bahudravyārjana #129, Amaranantha #142, Ayatnadhanalābha #143); loose Vayasi-Dhana EXCLUDED
CQ-00532026-06-16Phase 7 convergence sweep BEGUN (iteration 1: newest yoga modules → zero Medium+)
CQ-00542026-06-16Phase 7 sweep iter 4: real MEDIUM bug found+fixed — nakṣatra-dasha boundary inconsistency (index vs spent-fraction floor)
CQ-00552026-06-16Phase 7 sweep iter 5: real MEDIUM bug found+fixed — Kalachakra (nakṣatra,pada) boundary inconsistency
CQ-00562026-06-16Phase 7 sweep iter 6: divisional-chart boundary flag → VERIFIED FALSE POSITIVE (byte-faithful to PyJHora's canonical varga formula)
CQ-00572026-06-16Phase 7 sweep iter 7: orchestration + robustness deep-review → ALL findings traced to non-bugs (zero Medium+)
CQ-00582026-06-16Phase 7 sweep iter 8: REAL MEDIUM bug — Yogi Pravrajya Yoga broken fire condition (+ circular validator)
CQ-00592026-06-16Phase 7 sweep iter 9: FOUR real bugs in the Phase-6 yoga catalog/extension modules + a gate-coverage gap
CQ-00602026-06-16Phase 7 sweep iter 10: orphaned-validator sweep → gate-coverage gap closed; planetary_state ENGINE verified CORRECT (a CHURN false-alarm the safety-net caught)
CQ-00612026-06-16Phase 7 sweep iter 11: REAL MEDIUM bug — Deeptadi "Shakta" avastha INVERTED (direct vs retrograde)
CQ-00622026-06-16Phase 7 sweep iter 12: Jagradadi avastha dropped classical debilitation→Sushupta (JHora-alignment hierarchy violation) — REVERTED to classical

6. Accuracy bounty program

The public accuracy-bounty program is planned, not yet open (parked until 1,000 paid users). There is no live intake and no payout path today. When it opens, reports will include your chart, the output you expected (with its classical/JHora source), and what Trikona produced; confirmed defects will be fixed and rewarded through an internal triage queue.

Planned, not yet open