# `stotras/` — sources and verification notes

Internal record of which sources confirmed each stotra, divergences between
editions, the editorial scope decisions, and remaining soft spots. **Not
surfaced in any user-facing field**; consumers should never display content
from this file (no source name appears in any getter output).

## What a stotra ships

A `Stotra` is a devotional hymn recited as continuous metered verse (distinct
from a namavali's name-list or a mantra's single repeated chant). Each verse is
a `ScriptureVerse` carrying:

- **`devanagari`** — the verbatim published text, with the `॥N॥` verse marker
  kept inline (as the Geeta keeps its `।।C.V।।` markers).
- **`iast`** — machine-generated from the Devanagari and round-trip-verified.
- **`english` / `hindi`** — a **researched per-stanza meaning gloss** (a
  sense-rendering, **not** copied from any copyrighted translation/commentary),
  shipped `draft` with `reviewPending: true` on the stotra.

This follows the precedent set by the researched kathas, the puja/navratri
modules, and the Geeta/Sundarkand meaning glosses: researched-and-cited content
shipped provisional, with the review debt recorded here.

## Verification protocol

The Devanagari of each stotra is cross-validated against **≥ 2 independent
canonical sources** before it ships (the same bar as the sahasranama module).
"Independent" means editions that did not derive from each other. The primary
Devanagari is taken from the cleaner edition; the second source is used to
confirm the same recension, verse set, and readings (a coarse phonetic-skeleton
containment check tolerant of the well-known orthographic variation between
editions — anusvāra `ं` vs. conjunct nasals, spacing, vowel length).

## IAST pass

Every verse carries an `iast` field, machine-generated from the Devanagari with
`@indic-transliteration/sanscript` and **round-trip-verified** (Devanagari →
IAST → Devanagari must normalise back to the original; danda runs `[।॥|.]+ → |`,
ॐ↔ओम् reconciled, Devanagari digits folded). This is the identical bar the
shipped Bhagavad Geeta and Vishnu Sahasranama IAST are held to in
`scripts/audit-verify.cjs`. Anusvāra is the project-standard `ṃ` (not overdot
`ṁ`). The round-trip is asserted over all 64 verses.

## Devanagari normalization rules applied

The shipped Devanagari is the verbatim published text, with only these
systematic, content-preserving normalizations (never word changes, never
reorderings, never silent emendations):

1. **NFC** applied to all Devanagari; **zero-width joiners stripped** (none were
   present in this batch — the `शृ`-ligature ZWJ defect that affected the Geeta /
   Vishnu sources did not occur here).
2. **Eyelash-ra `ऱ` (U+0931) → `र`** in the Achyutashtakam (`रुक्मिणिऱागिणे →
   रुक्मिणिरागिणे`). The eyelash-ra is an encoding artifact here, not the
   intended grapheme; the corrected reading matches the independent source.
3. **Parenthetical pāṭhabheda apparatus dropped.** Several sources print
   alternative readings inline in parentheses; the shipped verse carries the
   primary reading and the dropped variants are recorded per-stotra below
   (not a content change).
4. **Editorial `var …` annotations dropped** (Achyutashtakam vv. 6, 7).
5. **Verse-end markers normalised to `॥ N॥`** (matching the Vishnu Sahasranama
   form), with half-line `।` rendered ` । `.

## Per-stotra record

### Shiva Tandava Stotram — `shiva-tandava-stotram.ts`  (deity: shiva, 17 verses)

**Recension**: the Rāvaṇa-kṛta Śivatāṇḍavastotram, 16 verses + a concluding
phalaśruti (`पूजावसानसमये…`, shipped as v17).

**Sources**: (1) Sanskrit Documents `shivtAND` (`श्रीशिवताण्डवस्तोत्रम्
रावणरचितम्`) — primary Devanagari. (2) **sa.wikisource** `शिवताण्डवस्तोत्रम्`
(author रावण) — independent edition; confirmed the same recension and the same
16+phalaśruti verse set character-skeleton (the two editions differ chiefly in
anusvāra-vs-conjunct orthography, and famously swap several primary/variant
readings — see below).

**Editorial decisions**:
- Dropped the scribal maṅgala `॥ श्रीगणेशाय नमः ॥` printed before verse 1.
- **Dropped the appended verses printed after the `…सम्पूर्णम्` colophon**
  (`नमामि पार्वतीपतिं…`, `रावणेन कृतं स्तोत्रं…`) — popular add-ons of separate
  provenance appended to the daily pāṭha, not part of the stotram proper (same
  posture as the Vishnu Sahasranama appendix omission).
- Stripped 11 inline parenthetical pāṭhabheda variants. Notably, SD's bracketed
  alternates at v12 (`समं प्रवर्तयन्मनः कदा सदाशिवं भजे`) and v13
  (`विमुक्तलोललोचनो…`) are the **primary** readings on wikisource — a known
  cross-edition swap; we ship SD's primary in each case and note the variant
  here.

### Lingashtakam — `lingashtakam.ts`  (deity: shiva, 9 verses)

**Recension**: the popular Liṅgāṣṭakam, 8 verses (refrain `तत् प्रणमामि
सदाशिव लिङ्गम्`) + phalaśruti (`लिङ्गाष्टकमिदं पुण्यं…`, shipped as v9).

**Sources**: (1) Sanskrit Documents `lingashh`. (2) **sa.wikisource**
`लिङ्गाष्टकम्` (title there `लिंगाष्टक`) — confirmed (≈87% skeleton; the gap is
the anusvāra-vs-conjunct orthographic style).

**Editorial decisions**: dropped the bare closing seal `॥ ॐ तत् सत् ॥` after the
phalaśruti (a universal colophon, not part of the hymn). Variants stripped:
v1 `निर्मलभासित`(~`भाषित`), v7 `विनाशन`(~`विनाशित`).

### Bilvashtakam — `bilvashtakam.ts`  (deity: shiva, 9 verses)

**Recension**: the standard Bilvāṣṭakam, 8 verses (refrain `एकबिल्वं
शिवार्पणम्`) + phalaśruti (`बिल्वाष्टकमिदं पुण्यं…`, shipped as v9).

**Sources**: (1) Sanskrit Documents `bilvaashhtaka`. (2) **shlokam.org**
(`bilvashtakam`) — used as the independent second source because sa.wikisource's
`बिल्वाष्टकम्` is a PDF page-transclusion (from the print anthology
*बृहत्स्तोत्ररत्नाकरः*, 1953) with no machine-readable inline text. Confirmed
≈98% skeleton.

**Editorial decision**: the SD page prints an **unnumbered ninth couplet**
between vv. 7 and 8 (`काशीक्षेत्रनिवासं च कालभैरवदर्शनम् | प्रयागमाधवं दृष्ट्वा
ह्येकबिल्वं शिवार्पणम् ॥`). It is **not shipped** — it is absent from the
independent shlokam.org edition, confirming it as an edition-specific
interpolation rather than part of the canonical eight.

### Madhurashtakam — `madhurashtakam.ts`  (deity: krishna, 8 verses)

**Recension**: Vallabhācārya's Madhurāṣṭakam, 8 verses (refrain
`मधुराधिपतेरखिलं मधुरम्`). No phalaśruti in the source (the closing colophon
`॥ इति श्रीमद्वल्लभाचार्यविरचितं… ॥` is a colophon, not shipped).

**Sources**: (1) Sanskrit Documents `madhurst`. (2) **sa.wikisource**
`मधुराष्टकम्` (author वल्लभाचार्य) — confirmed ≈96% skeleton.

### Achyutashtakam — `achyutashtakam.ts`  (deity: vishnu; deities: vishnu, krishna; 9 verses)

**Recension**: the Acyutāṣṭakam traditionally attributed to Ādi Śaṅkarācārya,
8 verses + phalaśruti (`अच्युतस्याष्टकं यः पठेत्…`, shipped as v9). The hymn is
woven almost entirely from the names of Viṣṇu in His Kṛṣṇa and Rāma forms.

**Multi-deity tagging**: the tradition recites this as praise of **both** Viṣṇu
and Kṛṣṇa (the verses name Achyuta/Keshava/Narayana alongside Krishna/Govinda
and Rama/Raghava). Shipped with primary `deity: 'vishnu'` and the full
association set `deities: ['vishnu', 'krishna']`, so `getStotrasForDeity` surfaces
it under both. (Ishank's call, 2026-05-30.)

**Sources**: (1) Sanskrit Documents `achyuta8`. (2) **sa.wikisource**
`अच्युताष्टकम्` (author शङ्कराचार्यः) — confirmed ≈94% skeleton.

**Editorial decisions**: eyelash-ra fix at v3 (`रुक्मिणिऱागिणे → रुक्मिणिरागिणे`);
dropped two editorial `var` annotations (v6 `द्वेषिहा`, v7 `विद्युदुद्योतवान्`).

### Mahalakshmi Ashtakam — `mahalakshmi-ashtakam.ts`  (deity: lakshmi, 12 verses)

**Recension**: the Mahālakṣmyaṣṭakam spoken by Indra (Padma Purāṇa tradition).
Shipped as the `इन्द्र उवाच` framing line + 8 praise verses + 3 phalaśruti
couplets (12 entries total).

**Sources**: (1) Sanskrit Documents `mahaalakshmyashhTakaM` (the page prints two
copies of the hymn; the **first** copy, which carries the phalaśruti, is used —
the two copies share the SD page origin and count as one source). (2)
**greenmesg.org** (an independent edition, attributed to the Padma Purāṇa, with
Devanagari + IAST + word-by-word meaning) — used as the independent second
source because sa.wikisource has no `महालक्ष्म्यष्टकम्` page (only unrelated
`महालक्ष्मीदीपदानविधिः` / `…पूजाविधिः`). Confirmed ≈92% skeleton; `मन्त्रमूर्ते`
(v5) confirmed as the primary reading (SD's parenthetical `मन्त्रपूते` dropped).

**Editorial decisions**: dropped the orphan trailing refrain half-line
`महालक्ष्मि नमोऽस्तु ते ।` that the SD first copy prints after the phalaśruti
(the independent greenmesg edition ends cleanly at the third phalaśruti
couplet). Used the first SD copy throughout; the second copy's minor
orthographic differences (`नमोऽस्तुते` joined, etc.) are not shipped.

## Batch B (added 2026-05-31)

The four "re-sourced" stotras. Each needed a non-default primary because the
nearest Sanskrit Documents file was either the wrong recension or
commentary-interleaved (see per-stotra notes).

### Mahishasura Mardini Stotram — `mahishasura-mardini-stotram.ts`  (deity: durga, 22 verses)

**Recension**: the **Aigiri Nandini** recension (`अयिगिरिनन्दिनि नन्दितमेदिनि…`),
traditionally Ādi Śaṅkarācārya — 21 verses + a concluding phalaśruti
(`स्तुतिमिमां स्तिमितः…`, shipped as v22).

**Sources**: (1) **sa.wikisource** `महिषासुरमर्दिनी स्तोत्रम्` — primary. The
Sanskrit Documents `doc_devii/mahisha` file is the *Padya-Puṣpāñjali* variant
(`महिषासुरमर्दिनि महामहिते…`), **not** this hymn, so SD was not used. (2)
**greenmesg.org** (Aigiri Nandini edition, Devanagari hex-entities + IAST) —
independent second source, confirmed ≈91% skeleton.

**Editorial decisions**: normalized the source's inconsistent verse markers
(`। 2`, `.12`, and a ZWJ inside `॥1‌1॥`) to the project `॥ N॥` form (ASCII verse
digits folded to Devanagari); dropped the trailing `॥ हरिः ॐ तत्सत् … ॥` seal and
the external-link lines.

### Kanakadhara Stotram — `kanakadhara-stotram.ts`  (deity: lakshmi, 22 verses)

**Recension**: Ādi Śaṅkarācārya's Kanakadhārā Stotram, 21 verses + phalaśruti
(`स्तुवन्ति ये…`, shipped as v22).

**Sources**: (1) **sa.wikisource** `कनकधारास्तोत्रम्` — primary (clean, verse-
numbered; the SD `doc_devii/kanaka` page interleaves word-by-word commentary).
(2) **Sanskrit Documents** `kanaka` — independent second source (its verse text,
read past the commentary, confirmed ≈93% skeleton).

**Editorial decisions**: normalized two Hindi-ization nukta artifacts in the
wikisource text — `गरुड़ध्वज → गरुडध्वज` (v10) and `तड़िद् → तडिद्` (v5) — the
Sanskrit readings (Garuḍa, taḍit = lightning), confirmed by SD (`गरुडध्वज`,
`तडिद`). Dropped the closing colophon.

### Bhaja Govindam — `bhaja-govindam.ts`  (deity: krishna; deities: krishna, vishnu; 34 verses)

**Recension**: Ādi Śaṅkarācārya's Bhaja Govindam / Moha-Mudgara — the 12
Dvādaśa-Mañjarikā verses + the `१२अ` colophon verse (`द्वादशमञ्जरिकाभिः…` naming
Śaṅkara) + the 21 Caturdaśa-Mañjarikā / closing verses = 34 stanzas, numbered
1–12, 12अ, 13–33 as the source prints them.

**Multi-deity tagging**: the hymn calls the seeker to worship **Govinda**
(Kṛṣṇa) and repeatedly names **Murāri / Viṣṇu / Śrīpati**, so it is shipped with
primary `deity: 'krishna'` and the full set `deities: ['krishna', 'vishnu']` —
surfacing under both, the same posture as the Achyutashtakam. (Ishank's call,
2026-05-31.)

**Sources**: (1) **sa.wikisource** `भजगोविन्दम्` — primary (clean; the SD
`doc_vishhnu/bhajagovindam` page interleaves commentary). (2) **Sanskrit
Documents** `bhajagovindam` — independent second source, ≈96% skeleton.

**Editorial decision**: dropped the **Hare-Kṛṣṇa mahāmantra** that the wikisource
text prepends before verse 1 (a separate chant, not part of Bhaja Govindam).

### Rama Raksha Stotram — `rama-raksha-stotram.ts`  (deity: rama, 39 verses)

**Recension**: the Śrī Rāmarakṣāstotram of the sage Budha Kauśika — shipped as
the opening dhyāna (`ध्यायेदाजानुबाहुं…`) + the 38 numbered verses (39 entries).

**Sources**: (1) **Sanskrit Documents** `doc_raama/rraksha` — primary. It is used
over sa.wikisource because the wikisource `रामरक्षास्तोत्रम्` text carries several
genuine typos (`ध्रुतशर` for `धृतशर`, `बदध` for `बद्ध`, `ध्रुशौ` for `दृशौ`,
`जगतत्रातु` for `जगत्त्रातुम्`); SD has the correct readings. (2) **sa.wikisource**
— independent second source (same recension and verse set; ≈91% skeleton despite
its typos).

**Editorial decisions (VSN-style sectioning)**: the **technical nyāsa /
viniyoga preamble** (`अस्य श्रीरामरक्षास्तोत्रमन्त्रस्य … विनियोगः`, the ṛṣi /
chandas / devatā / bīja apparatus) is **not shipped** — it is ritual procedure,
not the hymn, the same posture as the Vishnu-sahasranama nyāsa omission. The
`अथ ध्यानम् / इति ध्यानम्` headings and the closing colophons
(`इति … सम्पूर्णम्`, `श्रीसीतारामचन्द्रार्पणमस्तु`) are likewise dropped. The
famous phalaśruti tail (`आपदामपहर्तारं`, `रामो राजमणिः`, `रामरामेति रामेति …
सहस्रनामतत्तुल्यम्`) is **within** the 38 verses and is shipped. A parenthetical
variant `(श्रीरामरामरामेति)` at v38 was stripped (primary reading kept).

## Batch C (added 2026-05-31) — the Awadhi Hanuman texts

These are **Awadhi/Braj** (the Goswami Tulsidas tradition), not Sanskrit. They
are shipped with `language: 'awadhi'` set, which signals that the `iast` field
is a **best-effort pronunciation romanization, NOT a strict IAST claim** — the
retroflex flaps `ड़`/`ढ़` (kept verbatim, e.g. `छाँड़ि`, `पढ़त`) have no IAST
form. This is the identical posture the Sundarkand romanization is held to. The
audit therefore scopes its strict Dev→IAST→Dev round-trip to the Sanskrit
stotras and asserts only romanization-presence on the Awadhi ones. Per-stanza
en/hi glosses are researched sense-renderings of the Awadhi, shipped `draft` /
`reviewPending`.

Primary Devanagari for both is **Sanskrit Documents** (`doc_z_otherlang_hindi/`,
the same collection as the Sundarkand and Hanuman Chalisa). The nukta is NOT
stripped here (unlike the Sanskrit Batch B Kanakadhara fix), because in Awadhi
`ड़`/`ढ़` are genuine phonemes.

### Sankat Mochan Hanuman Ashtak — `sankat-mochan-hanuman-ashtak.ts`  (deity: hanuman, 10 verses)

**Recension**: Goswami Tulsidas's Hanumānāṣṭaka (`बाल समय रबि भक्षि लियो…`) — the
8 ashtaka verses (mattagayanda chanda) + the closing doha (`लाल देह लाली लसे…`)
+ the `सियावर रामचन्द्र पद गहि रहुँ…` surrender-refrain (10 entries total).

**Sources**: (1) **Sanskrit Documents** `sankatamochana` — primary. (2)
**hindibhajanmanjari.com** (≈92% skeleton) and **divineaarti.com** (≈83%) —
independent corroboration. Dropped the `मत्तगयन्द छन्द` / `दोहा` meter-labels and
the closing colophon.

### Bajrang Baan — `bajrang-baan.ts`  (deity: hanuman, 58 verses)

**Recension**: the Bajraṅga Bāṇa, traditionally ascribed to Tulsidas — the
opening doha (`निश्चय प्रेम प्रतीति ते…`) + 56 chaupāī + the closing doha
(`उर प्रतीति दृढ़…`).

**Sources**: (1) **Sanskrit Documents** `bajarangabaaNHindi` — primary. (2)
**webdunia (hindi)** — independent second source. As a folk hymn it has real
recensional variance: skeleton match ≈68%, reflecting differing verse selection,
order and spelling across editions (not a defect). Shipped `draft` on the
researched-and-cited / shipped-provisional footing (as the puja/navratri/vaar
modules).

**Editorial decisions**: dropped the meter-labels (`दोहा -`, `चौपाई -`,
`दोहाः -`); dropped a **trailing block of duplicate / variant chaupāī** the SD
copy prints after the core (`तेज प्रताप बुद्धि अधिकाई …)` with a stray `)`, and
re-statements of `यह बजरंग बाण जेहि मारे` / `पाठ करै बजरंग बाण की` / `धूप देय…`);
dropped the parenthetical alternate closing doha (`प्रेम प्रतीतिहि कपि भजै…`) and
the colophon.

### Hanuman Bahuk — `hanuman-bahuk.ts`  (deity: hanuman, 44 verses)

**Shipped 2026-05-31 (`draft`)** — the Batch C text deferred earlier in the day,
unblocked once a vetted translation reference was on hand to anchor the glosses.

**Recension**: Goswami Tulsidas's Hanumānbāhuk (also titled *Vairāgya
Sandīpanī*) — 44 stanzas across **five metres**: 2 chhappay (1–2), 1 jhūlnā (3),
36 ghanākṣarī (4–15, 20–35, 37–39, 43–44) and 5 savaiyā (16–19, 36). (The popular
"44-verse" form carries no separate dohā; the meter parse confirms exactly the
documented 2 / 1 / 5 / 36 split.) The hymn opens with praise of Hanuman's
strength and deeds (1–15) and turns, from stanza 16, into Tulsidas's intensely
personal plea for the cure of his arm-pain (`bāṃha pīra`) and the removal of
every affliction.

**Sources**: (1) **Sanskrit Documents** `doc_z_otherlang_hindi/hanumAnabAhuka`
(the same collection as the Sundarkand, Hanuman Chalisa and the other Batch C
Awadhi texts) — primary Devanagari. (2) **ramcharit.in** (RamCharitManas) —
independent second source, skeleton-containment **97.2%**; corroborated further
by **hindipath.com** at **94.4%**. Both confirm the same recension, the same
44-stanza set (॥१॥–॥४४॥ dense), and the readings of the editorial fixes below.

**Gloss anchor (internal)**: the per-stanza en/hi sense-renderings were
researched against a documented **Gita Press (Malaviya tika)** edition plus the
ramcharit.in / hindipath.com Hindi bhāvārtha — anchored, never copied (the same
bar as the Geeta / Sundarkand glosses). Shipped `draft` / `reviewPending`.

**Editorial decisions**:
- Dropped the title line (*वैराग्य संदीपनी…*), the `॥ अथ …हनुमानबाहुक ॥` /
  `॥ इति …हनुमानबाहुक ॥` colophons, and the five meter-label lines
  (छप्पय / झूलना / घनाक्षरी / सवैया).
- **SD nukta-vowel artifact repaired.** The SD copy systematically prints
  `ड़/ढ़` followed by an **independent vowel** where a **mātrā** is intended.
  The nukta is *kept* (Awadhi-phonemic, unlike the Batch B Kanakadhara nukta
  *removal*); only the broken vowel is mended, each reading confirmed against
  both 2nd sources: `बड़ए→बड़े` (18, 32), `बढ़ए→बढ़े` (18), `बड़ओ→बड़ो` (21),
  `बड़ई→बड़ी` (25, 31), `बढ़ई→बढ़ी` (30), `कौड़ई→कौड़ी` (34), `उड़आई→उड़ाई` (35),
  `बूढ़ए→बूढ़े` (38), and **st16 `ढ़आरो→ढ़ारो`** (a word cannot begin ढ़; both
  2nd sources read `ढ़ारो` = "bigāṛā/spoiled", paired with `बिगारो`). After the
  fix, no residual nukta+vowel remains; the 12 stanzas that legitimately carry
  `ड़/ढ़` keep it verbatim.

**Soft spots flagged for the human review pass** (low-confidence Braj, glossed to
the tika but worth a Sanskritist's eye): **st16** `ढ़ारो` (the editorial reading
above — all three editions agree, but it reads like a shared upstream scar);
**st34** `कूर कौड़ी दूको` (the word `दूको` is obscure — rendered "a base
half-cowrie"); and the most compressed ghanākṣarī closes **st38, st44**
(metaphysical / Agastya-Kumbhaja allusion). The glosses ship as faithful drafts,
not certainties, on these.

## Soft spots (open debt)

- **A human reviewer pass on the per-stanza meaning glosses** (`english` /
  `hindi`) against printed editions / commentaries. These are researched
  sense-renderings authored for this package, not copied translations; every
  stotra ships `reviewPending: true` until that pass lands, and the coverage
  rows stay `draft`.
- **A human verification pass on the Devanagari** against a printed edition
  (e.g. a Gita Press stotra-ratnāvalī), the same debt the Geeta / Sundarkand /
  Vishnu Sahasranama carry.
- The Shiva Tandava cross-edition reading swaps (vv. 12–13 above) would benefit
  from a Sanskritist's confirmation of which primary reading to prefer.
