Natural graha nature and house-set witnesses
personal.natural-graha-nature
A source-bounded, versioned decision table classifies each canonical graha as a natural benefic, natural malefic, or unknown and derives decisive three-valued house-set witness predicates.
Assurance
| Level | Current statement |
|---|---|
| Documented and traceable | Yes — the canonical record includes the process and a worked example. |
| Regression or reproduction checked | Linked to 2 repository test file(s). |
| Independently source-supported | Available only for the explicitly named provenance claims or comparison cells. |
Computation method
Method type: decision-table
Validate a complete canonical chart, classify fixed grahas, resolve Chandra from quantized Surya-Chandra elongation, resolve Budha from same-Rasi companions, then use decisive known witnesses before unknown occupants for house-set predicates.
Process
- Require exactly one valid canonical record for Surya, Chandra, Kuja, Budha, Guru, Shukra, Shani, Rahu and Ketu; otherwise return unknown for all natures.
- Reconstruct absolute longitude from Rasi index and in-Rasi degree, normalize Chandra minus Surya to 0-360 degrees, and quantize to ten decimal places using non-negative round-half-up integer units.
- Mark Chandra unknown inside the inclusive 0.02-degree guards around 0, 180 and 360 degrees, benefic between the new and full-Moon guards, and malefic between the full- and new-Moon guards.
- Assign Surya, Kuja, Shani, Rahu and Ketu as fixed malefics and Guru and Shukra as fixed benefics.
- Make Budha malefic when any resolved malefic shares its sidereal Rasi; if only phase-unknown Chandra could decide, return unknown; otherwise make Budha benefic.
- For an existential benefic rule, pass on any known benefic, otherwise return unknown for an unknown-nature occupant, otherwise fail.
- For a forbidden malefic rule, fail on any known malefic, otherwise return unknown for an unknown-nature occupant, otherwise pass.
Formulae
Quantized Chandra elongation
Q = floor((((L(Chandra) - L(Surya)) mod 360) * 10^10) + 0.5)- L(graha): sidereal absolute longitude reconstructed from Rasi and degree
- Q: non-negative integer quantum at ten decimal places
- floor(x + 0.5): shared non-negative round-half-up tie rule
Chandra nature
unknown when min(Q, |Q-180*10^10|, |360*10^10-Q|) <= 0.02*10^10; benefic when Q < 180*10^10 outside the guard; otherwise malefic- 0.02 degrees: disclosed inclusive project precision guard
- 0, 180 and 360 degrees: new-Moon and full-Moon phase boundaries
Decisive witness aggregation
existential benefic: known benefic > unknown > fail; forbidden malefic: known malefic > unknown > pass- known witness: an occupant whose natural nature resolves benefic or malefic
- unknown: an occupant whose unresolved nature could change the predicate
Worked example
Half-quantum full-Moon boundary
Inputs
- Surya: Mesha 10.0 degrees
- Chandra: Tula 9.97999999995 degrees
- Guard: 0.02 degrees
Calculation
- Raw elongation is 179.97999999995 degrees.
- Non-negative half-up quantization produces Q = 179.98 * 10^10.
- The distance to 180 degrees equals the inclusive guard.
Result
- Chandra nature: unknown
- Python and TypeScript return the same boundary result
Decisive benefic beside an unresolved occupant
Inputs
- Target house 7 contains Guru and phase-unknown Chandra
- Predicate: existential natural benefic
Calculation
- Guru is a resolved natural benefic.
- Chandra remains unknown, but cannot undo the known existential witness.
Result
- Predicate: pass
- Evidence names Guru as the decisive witness
Method notes
- The two textual authorities agree on the operative natural-nature categories but do not supply the numerical guard or a conjunction orb.
- Whole-window certification additionally requires phase-boundary and every relevant Rasi-ingress transition from issue #254.
Contract
Owning layer: personal
Claim kind: textual-rule
Time basis: One instantaneous Drik/Lahiri, mean-node, Whole Sign election-chart snapshot. This primitive does not sample a time window or call an ephemeris.
Inputs
- complete canonical Surya-through-Ketu sidereal Rasi, degree, Whole Sign house and retrograde facts
- non-empty required or forbidden house set with integer houses 1-12
Outputs
- complete flag and benefic, malefic or unknown nature for all nine grahas
- existential natural-benefic house witness as pass, fail or unknown
- forbidden natural-malefic house witness as pass, fail or unknown
- human-readable decisive or unresolved evidence
References and evidence
Evidence classes: textual, project_heuristic
Verification states: verified, heuristic
Phaladeepika II.27 and BPHS 3.11 support the natural-nature categories. The numerical lunar guard, ten-decimal half-up quantization, same-Rasi Budha association and decisive unknown precedence are disclosed reproducibility conventions.
election_chart.natural_graha_nature.phaladeepika_2_27
Evidence class: textual
Verification state: verified
Locator: Chapter II, sloka 27, book pp. 19-20 (scan pp. 56-57)
Last reviewed: 2026-09-09
Scope: Enumerates waning Chandra, Surya, Kuja, Shani, Rahu and Ketu as malefic; Guru and Shukra as benefic; waxing Chandra as benefic; and Budha as malefic when joined to a malefic. It does not define a conjunction orb, a numerical phase boundary guard or functional lordship.
Sources
- Phaladeepika — Mantreswara; V. Subrahmanya Sastri English translation, second edition, 1950; authority type:
primary_text_translation
election_chart.natural_malefics.bphs_3_11_modern_witness
Evidence class: textual
Verification state: verified
Locator: Chapter 3, verse 11, Sanskrit compound analysis and English rendering
Last reviewed: 2026-09-04
Scope: A modern web witness for the natural-malefic enumeration: Surya, Kuja, Shani, Rahu, Ketu and waning Chandra, with Budha conditional on association with a malefic. It is not presented as a critical edition or as independent authority for the project's same-sign association inference.
Sources
- Brihat Parashara Hora Shastra, chapter 3 verse 11 — Attributed to Parashara; Enjoy Learning Sanskrit modern web transcription, word analysis, and English rendering; accessed 2026-09-04; not a critical edition; authority type:
modern_text_witness
election_chart.budha_same_sign_association_policy_v1
Evidence class: project_heuristic
Verification state: heuristic
Locator: annaprasana-natural-malefic-lagna-v1; BPHS modern witness chapter 3 verse 11
Last reviewed: 2026-09-04
Scope: Interprets Budha's association condition only as same-sign physical occupation. No additional Budha failure is produced because any accompanying fixed natural malefic in Lagna already controls the prohibition. Aspect, dispositor and lordship associations are not inferred.
Sources
- Brihat Parashara Hora Shastra, chapter 3 verse 11 — Attributed to Parashara; Enjoy Learning Sanskrit modern web transcription, word analysis, and English rendering; accessed 2026-09-04; not a critical edition; authority type:
modern_text_witness
election_chart.raman_180_degree_paksha_policy_v1
Evidence class: project_heuristic
Verification state: heuristic
Locator: B. V. Raman, Chapter II, inspected in the 2020 Chistabo derivative at internal printed p. 4 (physical PDF p. 7); annaprasana-natural-malefic-lagna-v1
Last reviewed: 2026-09-04
Scope: Implements the transcription's below-or-above-180-degree description as E = (Chandra longitude - Surya longitude) mod 360: 0 < E < 180 is waxing and 180 < E < 360 is waning. This ecliptic-longitude arithmetic is the named Raman policy rather than a blended lunar-phase tradition.
Sources
- Muhurtha (Electional Astrology) — B. V. Raman; UBS Publishers' Distributors, 1993, ISBN 9788185674681, 181 catalogued pages; authority type:
modern_synthesis - Muhurtha (Electional Astrology) — Chistabo re-edited derivative — B. V. Raman; re-edited by Simon (Chistabo); 2020 re-edited transcription, 78 physical PDF pages; authority type:
inspected_derivative
election_chart.lunar_phase_boundary_guard_policy_v1
Evidence class: project_heuristic
Verification state: heuristic
Locator: annaprasana-natural-malefic-lagna-v1; lunar_phase_guard_degrees=0.02
Last reviewed: 2026-09-04
Scope: Returns unknown at and within 0.02 degrees of either 0 or 180 degrees of solar elongation. The guard covers rounded sidecar degrees and the source's unclassified exact boundaries; it is a product precision policy, not a textual threshold.
Sources
- No external source is registered for this claim.
election_chart.mean_node_policy_v1
Evidence class: project_heuristic
Verification state: heuristic
Locator: DashaFlow election-chart response contract field engine.nodeConvention; annaprasana-natural-malefic-lagna-v1
Last reviewed: 2026-09-04
Scope: Fixes Rahu and Ketu to the sidecar's disclosed mean-node positions for this policy. The choice of mean rather than true nodes is an engineering convention, not wording supplied by the Annaprasana passage.
Sources
- Swiss Ephemeris — Astrodienst; Swiss Ephemeris 2.10 Programmer's Documentation and pyswisseph runtime used by the repository; authority type:
astronomical_reference
The complete machine-readable source registry is available in provenance.json. A regression fixture or same-code reproduction is not independent verification.
Reproduce and review
Run the linked tests, then the complete offline contract:
python tools/verify_project.pyPublic surfaces
python-librarywebsitegenerated-data
Limitations
- No event scorer consumes this primitive at this snapshot, so it changes no ranking by itself.
- Natural nature is not functional lordship, dignity, strength, combustion, aspect, degree conjunction or event suitability.
- A complete nine-graha set is mandatory; malformed or incomplete data makes every nature unknown.
- The predicates evaluate one chart state and do not prove every transition inside a Muhurtam window.
Implementation
- owner:
telugu_panchangam/personal/election_assessors/graha_nature.py—classify_natural_graha_natures - owner:
telugu_panchangam/personal/election_assessors/graha_nature.py—evaluate_existential_benefic_house_set - owner:
telugu_panchangam/personal/election_assessors/graha_nature.py—evaluate_forbidden_malefic_house_set - mirror:
src/scorer/election-assessors/graha-nature.ts—classifyNaturalGrahaNatures - mirror:
src/scorer/election-assessors/graha-nature.ts—evaluateExistentialBeneficHouseSet - mirror:
src/scorer/election-assessors/graha-nature.ts—evaluateForbiddenMaleficHouseSet
This route is generated from computations.json. Edit the registry and canonical reference prose in the same pull request as a behavior change.