Skip to content

Normalize inconsistent tags; backfill obviously-missing ones - #37

Open
karthikraman wants to merge 8 commits into
masterfrom
tag-normalization
Open

karthikraman wants to merge 8 commits into
masterfrom
tag-normalization

Conversation

@karthikraman

@karthikraman karthikraman commented Sep 15, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

Commit 1 — normalization:

  • Merged plural/spacing/casing variants of the same tag into one canonical form (SpecialPujas->SpecialPuja, "Devi Parva"->DeviParva, "Anadhyayana Days"->AnadhyayanaDays, etc. — full list in that commit's message).
  • Disambiguated Sankranti -> GrahaSankranti (the 6 files under it are planetary ingress events — Mars/Rahu/Venus/Jupiter — not solar, so the old name collided in meaning with SunSankranti).
  • Renamed TamilFestivals -> TamilNaduFestivals (correct state name) and split the one-off CommonFestivalsTamilnadu tag into CommonFestivals + TamilNaduFestivals.
  • Backfilled MahapurushaEvents on 12 historical/modern mahapurusha entries, Pushkara on 2 mela start/end entries, and a new Ayana tag on 4 solstice/equinox entries with no fitting tag at all.

Commit 2 — popularity-tier coverage (Major/Common/LessCommon/Rare):

  • Only 37% of files had any of these four tags before this PR. Every file now has exactly one.
  • RareDays is reserved for events that don't land on a fixed annual calendar slot — irregular/multi-year phenomena (Pushkara-mela's 12-year per-river cycle) or floating astronomical coincidences that may not recur every year. Chandra-darshanam (monthly) and the sayana-vaidhrti/vyatipata yogas (recur ~monthly like any of the 27 yogas) were previously tagged in ways that looked "rare" but aren't by this definition — they get LessCommonFestivals instead.
  • Everything else without a tier defaults to LessCommonFestivals — a deliberately weak, low-risk claim, rather than guessing CommonFestivals broadly (which the data shows would likely be wrong often, due to selection bias in which files curators had already bothered tiering).
  • Renamed ShannavatiTarpanaDays -> ShannavatiDays (17 files) — "Tarpana" was redundant given the tag already scopes to Shraddha days.
  • Promoting specific well-known entries out of LessCommonFestivals into CommonFestivals/MajorFestivals is left as a smaller, separate curation pass.

Verification

  • All 1335 in-scope TOML files parse cleanly after both commits.
  • Every old/merged tag string confirmed absent; every new/merged tag's count matches the expected sum.
  • 100% popularity-tier coverage (up from 37%), zero files with conflicting tiers.
  • Diffs are scoped to exactly the tags = [...] line per file (or a single inserted line where none existed) — no other content touched.

This came out of a broader tag audit for https://adyatithi.github.io/ (a new Hugo site browsing this data by month/devata/tithi/nakshatra/tag).

🤖 Generated with Claude Code

https://claude.ai/code/session_01BKtdfepRnYSUcuQN8YkAny

karthikraman and others added 8 commits September 15, 2026 19:01
Consistency fixes (case/spacing/plural variants merged to one form):
- SpecialPujas -> SpecialPuja
- OtherAvataram -> OtherAvatarams
- Danam -> DanamDays
- Yugadi -> YugadiDays
- "Devi Parva" -> DeviParva (space broke the PascalCase convention
  every other tag follows)
- "Pancha Parva" -> PanchaParva
- "Anadhyayana Days" -> AnadhyayanaDays
- "Temple Festivals" (vague, only file of its kind) -> NorthIndiaTempleFestivals,
  matching its actual temples/North/ location
- Sankranti -> GrahaSankranti: the 6 files under this tag are all
  planetary (Mars/Rahu/Venus/Jupiter) ingress events, not solar ones,
  so the old generic name collided in meaning with SunSankranti
- CommonFestivalsTamilnadu (a file's only tag, conflating two
  dimensions) split into CommonFestivals + TamilNaduFestivals
- TamilFestivals -> TamilNaduFestivals (correct state name)

Backfilled obviously-missing tags on previously untagged files:
- 12 mahApuruSha historical/modern entries (Vivekananda's Chicago
  address, Ramanujan's birth, etc.) get MahapurushaEvents, matching
  every other entry of the same kind
- 2 Pushkara-mela start/end entries get Pushkara
- 4 solstice/equinox entries (no fitting existing tag) get a new
  Ayana tag

Verified: all 1335 in-scope files still parse; every old tag string
is now absent; every new/merged tag's count equals the expected sum.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BKtdfepRnYSUcuQN8YkAny
Every festival now carries exactly one of MajorFestivals/CommonFestivals/
LessCommonFestivals/RareDays (was 37% coverage before this commit).

RareDays is reserved for events that don't fall on a fixed annual
calendar slot -- irregular/multi-year phenomena (Pushkara-mela's 12-year
per-river cycle) or floating astronomical coincidences that may not
recur every year. It deliberately excludes anything that just happens
every month or every year on a fixed date, however obscure: Chandra-
darshanam (monthly moonrise-sighting) and the sayana-vaidhrti/vyatipata
yogas (recur ~monthly like any of the 27 yogas) were tagged Combinations/
ChandraDarshanam but are not rare by this definition, so they get
LessCommonFestivals instead, not RareDays. Only the 2 Pushkara-mela
files get RareDays here.

Everything else without a tier defaults to LessCommonFestivals -- a
deliberately weak, low-risk claim ("specific, not mainstream") rather
than guessing CommonFestivals broadly. That guess would likely be wrong
often: e.g. of 94 MahapurushaEvents-tagged files, the 35 a curator had
already tiered were 100% CommonFestivals, but that's selection bias --
curators evidently only bothered tiering the handful of famous ones,
not the routine matha-pontiff aradhana days that make up most of the
remaining 59. Promoting specific well-known entries out of
LessCommonFestivals into CommonFestivals/MajorFestivals is left as a
smaller, separate, lower-risk curation pass.

Also renamed ShannavatiTarpanaDays -> ShannavatiDays (17 files): the
"Tarpana" was redundant given the tag already scopes to Shraddha days.

Verified: all 1335 in-scope files still parse; every file has exactly
one tier tag.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BKtdfepRnYSUcuQN8YkAny
Audited all 108 existing RareDays files against the rule: rare means
irregular/multi-year or "sometimes never in a year", not just obscure.
Checked every file's timing structure (fixed month+anga vs. a genuine
secondary vaara/nakshatra/intersection constraint that isn't guaranteed
to align every year) rather than trusting the tag name alone.

104/108 check out: floating combinations, planetary war/combustion,
eclipses, amrita-siddhi/nakta-vrata yoga day-nakshatra pairings (~1.9x/
year per pairing), and the 13 genuine river-Pushkaram entries in
time_focus/puShkara/ (each a 12-year cycle, driven by Jupiter's transit
per the code comment in gaGgA-puSkara-viSeSaH.toml).

The other 2 -- puShkara-melA-samApti/prArambha under temples/North/ --
are a different "Pushkara" entirely: the well-known ANNUAL Pushkar
Camel Fair in Rajasthan (Kartik Purnima, livestock fair + pilgrimage
bathing), not the 12-year river festival. I'd mistakenly approved these
for RareDays in the previous commit by going off the "Pushkara" tag
name alone without reading the file. Fixed to CommonFestivals given
the fair's actual prominence; left the Pushkara tag in place since
untangling that shared name from the river-Pushkaram concept is a
separate, smaller judgment call.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BKtdfepRnYSUcuQN8YkAny
…eFestivals to Pushkar Mela

The prior backfill commit defaulted any untagged file to LessCommonFestivals,
which is wrong when the file is one stage of an event that's well-known
overall -- it just happened to be the sibling file nobody had tagged
yet. Found via a systematic audit rather than more guessing:

1. Built a "family" detector using two purely structural, non-semantic
   signals: (a) same id after stripping a fixed ArambhaH/samApanam/etc.
   suffix set, and (b) identical `timing` spec (month_type, month_number,
   anga_type, anga_number) across files, i.e. literally the same
   calendar slot.
2. Cross-referenced flagged groups against git history to see which
   member's tier predates the backfill commit (curator-assigned) vs.
   which was newly defaulted by it.
3. Manually verified every candidate by reading the actual file content
   -- shlokas, description, references -- not just trusting id/tag
   text, since a shared id-root or timing slot does not by itself prove
   two files describe the same real-world event (see false positives
   below).

Confirmed real bugs, fixed:
- mahAlaya-pakSaH (the Pitr Paksha period itself) and
  mahAlaya-pakSa-ArambhaH (its start) -> CommonFestivals, matching
  mahAlaya-pakSa-samApanam / mahAlaya-pakSa-tarpaNa-pUrtiH (its end),
  which already correctly had CommonFestivals pre-backfill.
- (bhAdrapada)_mahAlaya_amAvAsyA -> CommonFestivals. Not caught by the
  id-suffix check (different naming scheme entirely), but confirmed via
  identical shlokas/references to be the exact same day as
  mahAlaya-pakSa-samApanam, just filed under the AmavasyaDays scheme
  instead of the SpecialPeriod one.

Investigated and confirmed NOT bugs (left as-is):
- tulasI-vivAhOtsava-ArambhaH staying LessCommonFestivals while the
  main day/end are CommonFestivals: read the actual verses -- ArambhaH
  is a 3-day vrata's preparatory start, genuinely less observed than
  the Tulasi-Shaligram wedding day itself. Pre-existing curator choice,
  not backfill-introduced, and defensible.
- The many `anadhyAyaH~X` (no-Veda-study-day) files staying
  LessCommonFestivals while their anchor festival (an Upakarma,
  equinox, etc.) is CommonFestivals: a real, more niche concept
  distinct from the festival itself, not the same event misfiled.
- Several id-suffix/timing-slot matches were false positives from the
  detection heuristics themselves (e.g. Holika Purnima's tithi
  coincidentally also hosts an unrelated Venkatachala temple event, a
  manvantara day, and Chaitanya Mahaprabhu's jayanti -- four distinct
  observances sharing a date, not one event needing a consistent tier).

Also added NorthIndiaTempleFestivals to the 2 Pushkar-Mela files
(temples/North/), matching the existing state-tagging convention in
that folder (KashmirTempleFestivals, UttarPradeshTempleFestivals) that
a prior commit in this PR had already established but missed applying
here.

Separately flagged (not fixed here, needs a decision, not a tag fix):
general/description_only/payOvratam.toml and aditi-payOvratam.toml are
two DIFFERENT vratas (Aditi's Phalguna payovratam vs. a Margashirsha
"dvidala-vratam") that share the literal id "payOvratam" -- a
pre-existing id-collision bug unrelated to tags, violating the repo's
own id-uniqueness convention. Left alone since fixing it means renaming
an id, which is more consequential (potential downstream references)
than a tag change.

Verified: all 1335 in-scope files still parse.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BKtdfepRnYSUcuQN8YkAny
State-specific tags (TamilnaduTempleFestivals, AndhraTempleFestivals,
etc.) already exist, but there was no way to filter "temple festivals"
across all regions at once. Added TempleFestivals to all 121 files
under temples/ -- the same folder-based criterion the site's own
"Temple Festivals" category grouping already uses, so this is just
making that grouping available as a tag too.

Deliberately does NOT extend to matha/pontiff commemoration days
(KanchiAradhanaDays, SringeriFestivals, SringeriAradhanaDays), which
live under mahApuruSha/ -- those honor a person/lineage, not a temple
utsava, and folding them in would blur what "TempleFestivals" means.

Verified: all 1335 in-scope files still parse; 0 files under temples/
still missing the tag.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BKtdfepRnYSUcuQN8YkAny
vEGkaTAcalE_jyESThAbhiSEkaH_(svarNa).toml was the sole TempleFestivals
file (out of 121) with no state-specific tag -- found while answering
"what's missing a state tag" during PR review. Its 17 sibling files
describing the same Tirumala Jyeshthabhishekam festival (other days/
kavacas of the same 3-day rite) all correctly carry AndhraTempleFestivals;
this one was just missing it, predating any of this PR's changes.

Note: this file also carries a DanamDays tag that looks questionable
given its description (a kavaca/abhisheka ritual, not obviously a
donation day) -- also pre-existing, not touched here pending a decision
on what it should be.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BKtdfepRnYSUcuQN8YkAny
vEGkaTAcalE_jyESThAbhiSEkaH_(svarNa).toml describes a kavaca/abhisheka
(ceremonial armor + ritual bathing) rite -- no donation component in
the description, so DanamDays doesn't fit. Pre-existing tag, unrelated
to this PR's other changes; removed per review.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BKtdfepRnYSUcuQN8YkAny
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant