Ekadashi, Amavasya, Pournami, and Pradosham flags
panchangam.special-lunar-days
Sunrise and deciding-moment Tithi rules assign recurring lunar observances and Ekadashi names.
Assurance
| Level | Current statement |
|---|---|
| Documented and traceable | Yes — the canonical record includes the process and a worked example. |
| Regression or reproduction checked | Linked to 4 repository test file(s). |
| Independently source-supported | Not independently verified at this level; current behavior is regression-pinned. |
Computation method
Method type: decision-table
Classify recurring lunar days from sunrise and sunset Tithi indices, combine Pradosham with weekday, detect Sankranti from solar-sign changes, and name Ekadashi from Maasam/Paksham overrides.
Process
- At sunrise set Ekadashi for indices 10 or 25, Pournami for 14, and Amavasya for 29.
- Set Pradosham when index 12 or 27 is active at sunrise or sunset; add Shani/Soma for Saturday/Monday.
- Detect a solar-sign change across the engine's comparison window for Sankranti.
- For Adhika Maasam name Shukla/Krishna Ekadashi Padmini/Parama.
- Otherwise use the base Maasam/Paksham lookup and append Vaikunta for Shukla Ekadashi with Sun in Dhanu.
Worked example
Hyderabad, 2026-06-11, Drik Ganita
Inputs
- Sunrise Tithi index: 25
- Maasam/Paksham: Adhika Jyeshtha/Krishna
- Weekday: Thursday
- No solar-sign change
Calculation
- Index 25 matches Krishna Ekadashi.
- The Adhika-Krishna override selects Parama.
- Other special indices and weekday combinations do not match.
Result
- is_ekadashi=true; name=Parama Ekadashi
- Other lunar-day and Sankranti flags are false
Method notes
- Deciding moments and names follow maintained Telugu conventions rather than a universal calendar rule.
Contract
Owning layer: engine-core
Claim kind: regional-convention
Time basis: Panchangam-day deciding moments; names use Telugu Amanta convention.
Inputs
- Maasam
- Paksham
- Tithi at deciding moments
- weekday
- solar sign
Outputs
- observance flags
- Ekadashi name
References and evidence
Evidence classes: published_panchangam, regional_convention
Verification states: partially_verified, engine_pinned
Drik has representative comparisons; non-Drik flags are regression-pinned.
festivals.forward_year_2027_2028
Evidence class: published_panchangam
Verification state: partially_verified
Locator: 1 DP_VERIFIED cell; 29 ENGINE_PINNED cells in the fixture
Scope: Only cells marked DP_VERIFIED are independently verified.
Sources
- Drik Panchang day and festival pages — Drik Panchang; Location- and date-specific web pages; authority type:
published_panchangam
panchangam.non_drik_engine_outputs
Evidence class: astronomical
Verification state: engine_pinned
Locator: tests/test_surya_siddhanta_engine.py and tests/test_vakya_engine.py
Scope: Regression tests preserve the current Surya Siddhanta and Vakya Pancha-Anga and sky-event outputs. No independent published-Panchangam comparison set is registered, so engine-pinned output must not be described as externally verified.
Sources
- No external source is registered for this claim.
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
tests/test_drik_engine.pytests/test_festivals.pytests/test_surya_siddhanta_engine.pytests/test_vakya_engine.py
Run the linked tests, then the complete offline contract:
python tools/verify_project.pyPublic surfaces
python-librarymcpicswebsitegenerated-data
Limitations
- Naming and deciding moments follow documented Telugu conventions.
Implementation
- owner:
telugu_panchangam/engines/base.py—ekadashi_name - owner:
telugu_panchangam/engines/drik.py—DrikGanitaEngine._special_flags - owner:
telugu_panchangam/engines/surya_siddhanta.py—SuryaSiddhantaEngine._special_flags - owner:
telugu_panchangam/engines/vakya.py—VakyaEngine._special_flags - mirror:
src/panels/today.ts—ekadashiName
This route is generated from computations.json. Edit the registry and canonical reference prose in the same pull request as a behavior change.