_Created: 01-08-2026 · Last updated: 29-10-2026_

# FEATURES_INDEX.md — what the Sanskrit Lexicon project actually has

_Created: 04-07-2026 · Last updated: 29-10-2026 (H7299: E47 extended with independent PD, one DCS/Dharmamitra chronology lineage and a consumer corroboration contract. Prior H4796: F48 extended — sa-ru-glossary joined as the RU third witness of the defgen eval, 287-headword three-witness census + judge-ready harness, RU surface channel measured script-degenerate. Prior H4262/H4261 /document sweep: I15 Кампус наглядности + I16 Карта мастерства registered. Prior H3970: J22 — the public ELI5 explainer hub registered, first page the PWG→RU translation line. Prior: H4011: E51 refreshed — the `-ant` pool's ADJ half measured from the DCS master, GAPS §14 graduated in full; prior W2.4: F50 added — SanskritScienceBench (SSB) pilot task pack (30 tasks, 4 families) + grading/eval/canary tooling registered, /roadmap-item-exec A09). Prior: H3984: E51 refreshed — the `-ī` and `-ant` pooled classes split on an external lexical signal (syllable count; MW/PWG entry-id sets), NOUN half of GAPS §14 closed; prior: H3948: L17 PWG four-tier enumeration reader + store-impact meter — turned «should we re-segment the store?» into a measured 12–3,212-row range nobody has to guess; prior: H3959: L16 PWG `<ab>` abbreviation bucketer — the three disjoint sets + the census gate that makes "none remain German" mechanical; prior: H3878: E25 refreshed — the aorist/perfect conflation it warned about was resolved inside the indicative by H1486, and the residual 8,726 non-indicative past tokens are unformationed upstream, not query-hidden; prior: H3790: E53 curated per-work dating table for PWG's 45 cited works — sourced ranges, two dating-invalid sigla, eleven decisions on the vote hub; prior: H3750: L15 pwg_ru provenance census — measured/asserted/absent classifier + the git-reconstruction probe that refuses the backfill; H3344: crosslink audit — P4 `public/exercises` repointed to its renamed `public/lila`; H2943: P12 samskrtam.ru crossword + bandha explorers; H2874: F47 citation-count provenance resolved + the two `<ls>` count tables added as sidecars; H2408: F48 defgen eval benchmark + D20 corrected French/second-reference role; H2361: L12 citation_tm.py parallel-verse lookup + its measured EN-lane misalignment; H2110: H8 Systema in-cabinet reading packs; H1909: L5 nws_ls_markup.py bare-citation discriminator)_

**Purpose.** A clickable, capability-first map of the working assets across the ~85
repositories: the **dictionaries** digitised, the **interfaces** that serve them, the
**data** already computed, and the **tools** you import rather than re-type. Where its
companion [`REUSE_INDEX.md`](https://github.com/gasyoun/Uprava/blob/main/REUSE_INDEX.md)
answers *"don't rebuild — consume this"*, this file answers *"what exists at all?"* — the
inventory a newcomer (or a fresh session) reads to see the shape of the whole. Every asset
carries a **real example** and its **first-introduced month/year**.

- **Interactive view:** **built** — [`features_index.html`](https://github.com/gasyoun/SanskritLexicography/blob/master/features_index.html),
  a self-contained, filterable single-file HTML artifact (free-text search + category tabs
  Данные/Словари/Интерфейсы/Инструменты/Changelog + status/size-tier/language filters),
  theme-aware, no dependencies. It is **generated from this Markdown file** by
  [`build_features_index_html.py`](https://github.com/gasyoun/SanskritLexicography/blob/master/build_features_index_html.py)
  (`python build_features_index_html.py`), so the two never drift — edit the Markdown,
  re-run, never hand-edit the HTML. The Markdown table below remains the canonical source.
- **Code-level "who owns this":** [`SHARED_CODE.md`](https://github.com/gasyoun/github-spine/blob/main/SHARED_CODE.md).
- **Data-flow "who feeds whom":** [`PROJECT_INTERLINKS.md`](https://github.com/gasyoun/Uprava/blob/main/PROJECT_INTERLINKS.md).

> Sizes and counts are approximate; re-verify against a source repo before a large change.
> Some linked repos are private ([`github-spine`](https://github.com/gasyoun/github-spine),
> [`Uprava`](https://github.com/gasyoun/Uprava)).

**At a glance:** 44 dictionaries · 23 interfaces (17 live) · 48 data assets · 17 tools · 4 external stacks · 12 learner-facing drill/practice sets (P1–P12) · 30 catalogued methods/algorithms (Q1–Q30).

**IDs & tiers.** Every asset has a **stable ID** — a **running number within its category**
(1–N; it does *not* restart at each sub-section) prefixed by a **section letter** (`A`–`F` data ·
`G`–`K` interfaces · `L`–`M` tools · `P` drills · `Q` methods; dictionaries use their code). Datasets are graded by **size** (measured
on disk, so magnitudes are comparable — rows/entries alone are not): 🟢 **large** (&gt;10 MB) · 🟡 **medium**
(1–10 MB) · ⚪ **small** (&lt;1 MB); the **Size** column carries the count and the exact MB. The **Intro** column is the asset's
first-introduced month/year from git history; for the external stacks (M10–M14) it is instead the
**last update**, each from a documented source of truth (see the † note under that table).

**How assets connect.** Many entries belong to shared clusters — the **vidyut**
lemmatization chain (`build_vidyut_fallback.py` (L6) calls the `vidyut` engine (M14), feeding
`vidyut_form2lemma.tsv` (E29) and the Zaliznyak index (E31)), the **DCS** frequency stack, the
**Heritage** oracle suite, the **roots / etymology** crosswalks. In the interactive artifact
these are clickable `#tags` that pivot the whole index to everything in a cluster.

---

## I. Data assets — query it, someone already spent the compute

Size tier: 🟢 large (&gt;10 MB) · 🟡 medium (1–10 MB) · ⚪ small (&lt;1 MB). Examples are **verbatim sample rows** from the
actual files (⚪-tier / *schema*-marked = gitignored / binary / too large, so the shape is shown).

### A · Sanskrit → Russian & translation

| ID | Asset | What it is | Size | Example (real sample) | Intro | Home |
|---|---|---|---|---|---|---|
| 🟢 A1 | `corpus_lexicon` | 1.09 M word-aligned Sa→Ru rows (per verse-pair, SLP1-keyed, ~190k keys) | 1.09 M rows · 276.6 MB | `<slp1-word>  <russian>  <verse-pair-id>` (schema; JSONL gitignored) | 06/26 | [build_corpus_lexicon.py](https://github.com/gasyoun/SanskritLexicography/blob/master/RussianTranslation/src/build_corpus_lexicon.py) |
| 🟢 A2 | SanskritRussian glossary (3-layer) | Ranked Sa→Ru glossary: surface 190,838 · lemma 40,370 · root 2,021; 87% coverage | 233k entries · 61.3 MB | `A → принеси · freq 43 · ADP` (lemma layer) | 07/26 | [SanskritRussian](https://github.com/gasyoun/SanskritRussian) |
| 🟢 A3 | `mw_en_tm.json` | SLP1-keyed MW English-gloss translation memory behind the RU/EN kits | 187,506 · 11.1 MB | `"a": "the first letter of the alphabet · the first short vowel…"` | 06/26 | [RussianTranslation/src](https://github.com/gasyoun/SanskritLexicography/tree/master/RussianTranslation/src) |
| 🟢 A4 | lemma / root glossary (DCS) | DCS lemma→gloss and root→gloss glossaries, bilingual, TSV + JSONL | lemma 16– · root · 20.3 MB | `AGozi → Распространяя звуки · verb` (root layer) | 07/26 | [SanskritRussian](https://github.com/gasyoun/SanskritRussian) |
| 🟢 A5 | `jamison_brereton_en_2014.json` | Jamison–Brereton 2014, the current scholarly RV standard in English — the **fifth** translation column of the RV evidence spine (with Grassmann 1876-77 de, Griffith 1896 en, Geldner 1951-57 de, Elizarenkova 1989-99 ru), so translator pairs are 10, not 6. Extracted from the archive.org OCR of all three print volumes; the OCR itself is an input and is not committed | 10,552 / 10,552 loci · 3.2 MB · 0 unmatched | `1.1.1 → "Agni do I invoke—the one placed to the fore, god and priest of the sacrifice…"` | 07/26 | [rv_jamison_brereton_extract.py](https://github.com/gasyoun/SanskritLexicography/blob/master/RussianTranslation/src/rv_jamison_brereton_extract.py) |
| 🟢 A6 | `rv_renou_evp_witness.jsonl` | Renou's *Études védiques et pāṇinéennes* (1955–69) as a locus-keyed **witness** beside the RV spine, never a column — EVP is a selective commentary, so a `translations` layer would be mostly `absent_from_source` and would corrupt `omitted_by_one`. Mined from Elizarenkova's own commentary: where she cites Renou, an Elizarenkova↔Geldner divergence is likely her following Renou against Geldner | 1,908 loci · 2,182 mentions · 458 quoted fr · 928 KB | `{"location":"1.1.1","witness":"renou_fr_1955","mention_count":2,"quotes_fr":[…]}` | 07/26 | [rv_renou_evp_witness.py](https://github.com/gasyoun/SanskritLexicography/blob/master/RussianTranslation/src/rv_renou_evp_witness.py) |
| ⚪ A7 | `cyrillic_proper_noun_slp1.tsv` | Validated Cyrillic→SLP1 **proper-noun lookup** — every key taken from a named authority: an IAST witness printed beside the Cyrillic name (H3985) or an inm/pui `<k1>` headword copied verbatim with exact-match corpus attestation (H4750); zero rule-derived keys (tiers: onomasticon 534 / lexicon 50 / IAST-witness-only 38) | 622 rows · 106 KB | `Кадамбари	kAdambarI	Kādambarī	onomasticon` | 09/26 | [h4750_cyr_slp1_backfill.py](https://github.com/gasyoun/SanskritLexicography/blob/master/RussianTranslation/tools/h4750_cyr_slp1_backfill.py) |

### B · Roots & etymology

| ID | Asset | What it is | Size | Example (real sample) | Intro | Home |
|---|---|---|---|---|---|---|
| ⚪ B5 | `mw_roots.tsv` | MW verbal-root inventory: 2,113 records with explicit `verb_type` (750 genuineroot + 1363 root) | 2,113 · 75 KB | `aMS   aṃś   genuineroot   10P,10Ā` | 06/26 | [csl-orig/v02/mw](https://github.com/sanskrit-lexicon/csl-orig/blob/main/v02/mw/mw_roots.tsv) |
| 🟡 B6 | `mw_etymology.tsv` / `pwg_etymology.tsv` | Headword→root derivation tables (Pāṇinian), 10 dicts | ~9–11k rows each · 2.9 MB | `10   aṃśa   aMSa   aś   aS   fr-root   0Ā,0P   Y` | 06/26 | [csl-orig/v02/mw](https://github.com/sanskrit-lexicon/csl-orig/blob/main/v02/mw/mw_etymology.tsv) |
| 🟡 B7 | `etymology_stats` | Cross-dict aggregates: root oracle, 41-pair agreement matrix (95% CI), affix entropy/frequency | 10 dicts · 2.9 MB | `root_oracle:  A   ā   kram   kram   1   mw` | 06/26 | [csl-orig/v02](https://github.com/sanskrit-lexicon/csl-orig/tree/main/v02) |
| ⚪ B8 | `etymology-oracle.json` | csl-atlas cross-dict etymology aggregator, consumed verbatim from `etymology_stats` | 67k rows · 23 KB | `{ "dictionaryCount": 10, "generatedAt": "2026-06-26…", "totals": {…} }` | 06/26 | [csl-atlas](https://github.com/sanskrit-lexicon/csl-atlas) |
| ⚪ B9 | `root_crosswalk.csv` + `class_concordance.csv` | MW ↔ Whitney root-class alignment + concordance with frequency | + · 53 KB | `1,aṃh,yes,114,,matched,0` | 06/26 | [MWS/root_crosswalk](https://github.com/sanskrit-lexicon/MWS/tree/master/root_crosswalk) |
| ⚪ B10 | `Whitney_DCS_audit.json` | Whitney × DCS root audit vs the 935-root Whitney hub | 415 KB | `{ "root":"aṃh", "dcs_lemma":"aṃh", "status":"matched", "class_verdict":"whitney-missing" }` | 06/26 | [WhitneyRoots](https://github.com/gasyoun/WhitneyRoots) |
| ⚪ B11 | `corpus_class_verdicts.json` | Corpus-verified root-class verdicts. ⚠ unaccented DCS can't split class I vs VI | 514 KB | `{ "aṃh": { "classes": [], "verdict": "not_attested" } }` | 06/26 | [WhitneyRoots](https://github.com/gasyoun/WhitneyRoots) |
| ⚪ B12 | `dcs_ppp_verified.tsv` | Corpus-attested past-passive-participle forms + counts | 5,181 forms · 147 KB | `vac   ukta   2   P.   7734` (√vac → ukta, 7734×) | 07/26 | [VisualDCS](https://github.com/gasyoun/VisualDCS/tree/main/derived-data/Glagolnye-formy) |
| 🟡 B13 | `kewa_ewa_pwg_crosswalk_extended.tsv` | The modern-IE etymology lane, §7-shaped: 11,418 KEWA heading→PWG rows (78.9 % matched) + `source`/`supersedes`/reserved `ewa_*` slots so Mayrhofer EWA rows land in-place when MG acquires the index (absent from the estate 15-09-2026; readiness census: 900/1,026 Concordance EWA-pointer roots already exact in PWG key1) | 11,418 rows · 968 KB | `modern-IE	KEWA	1	I	13	0	a	exact	a	…	(supersedes empty)` | 09/26 | [ewa_extend.py](https://github.com/gasyoun/SanskritLexicography/blob/master/RussianTranslation/src/etym/ewa_extend.py) |

### C · Headwords & crosswalks

| ID | Asset | What it is | Size | Example (real sample) | Intro | Home |
|---|---|---|---|---|---|---|
| 🟢 C13 | `union_headwords.tsv` | Cross-dict union headword index with per-dict provenance | ~323k · 11.8 MB | `A   ā   12   AP BUR CAE CCS GRA MD MW PWG PWK SCH SKD VCP   fmn` | 06/26 | [HeadwordLists/union](https://github.com/gasyoun/SanskritLexicography/blob/master/HeadwordLists/union/union_headwords.tsv) |
| 🟡 C14 | `mw_heritage_crosswalk.tsv` | MW → Sanskrit Heritage alignment: 185,803 entries, 97.6% anchor-resolved | 185.8k · 3.1 MB | `a   0` (MW headword → Heritage anchor id / coverage) | 07/26 | [HeadwordLists](https://github.com/gasyoun/SanskritLexicography/blob/master/HeadwordLists/mw_heritage_crosswalk.tsv) |
| ⚪ C15 | DCS↔CDSL crosswalk | DCS lemma ↔ CDSL headword linkset, 12,946 rows (81.4% linked) | 12,946 rows · 618 KB | `37875   tad   tad   tad   1   3734   pron` | 06/26 | [csl-apidev](https://github.com/sanskrit-lexicon/csl-apidev/blob/main/simple-search/dcs_xref/dcs_cdsl_xref.tsv) |
| ⚪ C16 | union `coverage_additions.tsv` | Headwords found beyond the core CDSL dictionaries | union · 711 KB | `5   nominal   enad   enad` | 06/26 | [HeadwordLists/union](https://github.com/gasyoun/SanskritLexicography/tree/master/HeadwordLists/union) |
| 🟢 C17 | csl-atlas `alignment-confidence.json` | Per-pair cross-dict headword alignment confidence, sharded | 164 shards · 43.0 MB | `{ "code":"mw", "label":"MW", "grammarReliable": true }` | 05/26 | [csl-atlas](https://github.com/sanskrit-lexicon/csl-atlas) |
| 🟢 C18 | csl-atlas low-confidence review set | Alignments flagged below threshold for a human pass | review set · 31.3 MB | the below-threshold subset of `alignment-confidence.json` (schema) | 05/26 | [csl-atlas](https://github.com/sanskrit-lexicon/csl-atlas) |
| 🟢 C19 | semdom ↔ Amarakosha crosswalk | First SIL semantic-domains ↔ classical-thesaurus map (H742): Level A varga↔domain ID pairs (108, hand-authored) + top-6 machine candidates for all 5,590 AK synsets + 200-synset adjudicated gold (κ 0.677; bridge top-1 17.5% — a shortlist, not labels, [FINDINGS §76](https://github.com/gasyoun/SanskritLexicography/blob/master/FINDINGS.md)); + the grammatical-annex symmetry counted by [semdom_ak_annex_table.py](https://github.com/gasyoun/SanskritLexicography/blob/master/data/semdom_ak_annex_table.py) (H774: AK kāṇḍa 3 46.4% of synsets vs semdom top-9 9.4% of domains, converging 10.7% vs 9.4% sans nānārtha, [FINDINGS §77](https://github.com/gasyoun/SanskritLexicography/blob/master/FINDINGS.md)); CC BY-SA 4.0, feeds the H721 MDF/LIFT `\sd` layer | 108 + 5,590 + 200 rows · ~400 KB | `AK-1.4,kAlavargaH,…,8.4,…,Time,close` | 07/26 | [data/SEMDOM_AK_CROSSWALK_2026.md](https://github.com/gasyoun/SanskritLexicography/blob/master/data/SEMDOM_AK_CROSSWALK_2026.md) |

| 🟢 C20 | `bhs_dcs_mw_key2_crosswalk.tsv` — BHS (Edgerton) × MW × DCS Buddhist loci (H4744) | First crosswalk for the BHS dictionary: all 18,188 BHS key2 headwords against MW key2, PWG key2 and DCS lemmas attested in the 20 Buddhist texts of the pinned `dcs_full.sqlite` (285,109 locus tokens; H1000 period-map register classes kept per-row: pm-excluded / bhs-hybrid / buddhist-classical). Tiered matching (exact → form_key → marker_strip for BHS's `˚`/`-`/`()` conventions → ms+form_key), IAST→SLP1 via canonical `sanskrit_util.to_slp1`. Headline: **MW misses 13,604 of 18,188 BHS headwords (74.8%)** — the Buddhist-dictionary gap (retired H4808 measure); PWG gap 13,305 (73.2%); 3,171 BHS headwords (17.4%) DCS-attested carrying 130,416 tokens. Report of record [bhs_dcs_mw_key2_crosswalk_report_15-09-2026.md](https://github.com/gasyoun/SanskritLexicography/blob/master/HeadwordLists/bhs_dcs_mw_key2_crosswalk_report_15-09-2026.md); builder [bhs_dcs_mw_key2_crosswalk.py](https://github.com/gasyoun/SanskritLexicography/blob/master/HeadwordLists/bhs_dcs_mw_key2_crosswalk.py) (stdlib + sanskrit_util, re-run regenerates byte-identical). | 18,188 rows · 982 KB | `aBisaMboDi  unlinked  unlinked  220451  2  Aṣṭasāhasrikā;Divyāvadāna  exact  1` | 09/26 | [HeadwordLists](https://github.com/gasyoun/SanskritLexicography/blob/master/HeadwordLists/bhs_dcs_mw_key2_crosswalk.tsv) |

| ⚪ C21 | KoshaSHRI `agni` fixture (H7316) | First fixture-only KoshaSHRI export: `pd_koshashri_entries.tsv` (one entry, all 29 senses) + `pd_koshashri_citations.tsv` (1,400 citation-reference rows); first sense preserves 242 texts→248 rows, only exact `ṚV.` resolves through H7296. Deterministic offline regeneration, five tests and source canaries; restricted single fixture, full response uncommitted | 1 + 1,400 rows · 1.37 MB | `ṚV.  ["i.12.6;"]  Maṇḍala.Sūkta.Ṛc.  1400BCE` | 10/26 | [csl-atlas export report](https://github.com/sanskrit-lexicon/csl-atlas/blob/main/reports/PD_KOSHASHRI_FIXTURE_EXPORT_2026.md) |

### D · Heritage & morphology oracles

| ID | Asset | What it is | Size | Example (real sample) | Intro | Home |
|---|---|---|---|---|---|---|
| ⚪ D19 | `heritage_forms_oracle.tsv.gz` | Pandora → Heritage inflected-form alignment oracle, morphology-aware | 525 KB | `form ↔ Heritage lemma + morphology` (schema; gzip) | 07/26 | [HeadwordLists](https://github.com/gasyoun/SanskritLexicography/tree/master/HeadwordLists) |
| 🟡 D20 | `heritage_dico_gloss.tsv` | Heritage DICO lemma glosses — SLP1-keyed, gloss prose in **French** (Huet), not English. Doubles as the **independent second reference** for the defgen eval (F48) | 24.5k · 4.3 MB | `akAra   DICO/1.html#akaara   [ ( a ) - kāra ] m. le son ou la lettre 'a'.   kaara` | 07/26 | [HeadwordLists](https://github.com/gasyoun/SanskritLexicography/tree/master/HeadwordLists) |
| 🟡 D21 | `heritage_forms_oracle_disagreements.tsv` | Cross-dict morphology disagreement audit | 20.5k · 1.3 MB | `ABAByAm   disagree   ABA   ABa   nominal   dcs   genuine-or-ambiguous` | 07/26 | [HeadwordLists](https://github.com/gasyoun/SanskritLexicography/tree/master/HeadwordLists) |
| 🟢 D22 | `heritage_only_forms.tsv` | Forms attested in Heritage but absent from MW/PWG/etc. | 28.9 MB | one Heritage-exclusive form per line (schema) | 11/14 | [HeadwordLists](https://github.com/gasyoun/SanskritLexicography/tree/master/HeadwordLists) |
| 🟢 D23 | `heritage_mirror/DATA/` frequency tables | Heritage frequency & morphology corpus TSVs (pada_freq, comp_freq, …) | 21.0 MB | `comp_freq.tsv:   a   6894` | 07/26 | [heritage_mirror](https://github.com/gasyoun/SanskritLexicography/tree/master/HeadwordLists/heritage_mirror) |
| 🟢 D24 | `sanhw1.xlsx` (Sanskrit-Hybrid Word) | Catalan-Pujol Sanskrit-Hybrid Word master headword list | 61k · 39.3 MB | xlsx: one headword per row (schema) | 11/14 | [HeadwordLists](https://github.com/gasyoun/SanskritLexicography/tree/master/HeadwordLists) |

### E · Frequency & corpus

| ID | Asset | What it is | Size | Example (real sample) | Intro | Home |
|---|---|---|---|---|---|---|
| 🟡 E25 | VisualDCS DCS ingest + lemma summary | Canonical CoNLL-U → SQLite build + `dcs_lemma_summary.json`. `Tense=Past` is split into Aorist/Perfect per token via DCS `Formation` (H1486); the 8,726 non-indicative past tokens carry no `Formation` upstream and are quotable by mood only (H3878) | ~15.9k lemmas · 3.4 MB | `{ "A": { "freqBand": 5, "attested": true } }` | 06/26 | [import_dcs_conllu.py](https://github.com/gasyoun/VisualDCS/blob/main/src/DCS-data-2026/import_dcs_conllu.py) |
| 🟡 E26 | kosha frequency layer | SLP1-keyed sidecar: whole-corpus counts + per-period vectors + core-vocab coverage (DCS M9) | 83,277 · 4.7 MB | `ca   155088   ind   1   9 Vedic=8283 · 1 -800=2897 · …   176104` | 07/26 | [kosha/data/frequency](https://github.com/gasyoun/kosha/blob/main/data/frequency/lemma_frequency.tsv) |
| 🟡 E27 | `dcs_form2lemma.tsv` | DCS form→lemma alignment, SLP1-keyed | 408k · 9.4 MB | `''jYAya   AjYA   VERB   1` | 07/26 | [SanskritRussian](https://github.com/gasyoun/SanskritRussian) |
| ⚪ E28 | `dcs_lemma2root.tsv` | DCS lemma → root mapping | 244 KB | `ABA   BA   suffix` | 07/26 | [SanskritRussian](https://github.com/gasyoun/SanskritRussian) |
| ⚪ E29 | `vidyut_form2lemma.tsv` | Stage-C fallback: forms DCS missed, resolved via the **vidyut** FST | 28.5k · 744 KB | `ABAga   ABAj   noun   2` | 07/26 | [SanskritRussian](https://github.com/gasyoun/SanskritRussian) |
| 🟡 E30 | `surface_dcs_misses.tsv` | DCS resolution-gap analysis — forms that failed DCS lookup | 6.5 MB | `'maratejasi   'maratejasi   1   …` | 07/26 | [SanskritRussian](https://github.com/gasyoun/SanskritRussian) |
| 🟡 E31 | Zaliznyak grammar index | Compact Zaliznyak-style grammar tokens over all PWG: 98,639 headwords, 335 tokens | 98,639 rows · 5.8 MB | `a   2   f.   a   f·1   a-stem` (headword · G·T · stem-class) | 06/26 | [headword_index.tsv](https://github.com/gasyoun/SanskritLexicography/blob/master/RussianTranslation/src/headword_index.tsv) |
| 🟢 E32 | `correction_events_release.csv` | Correction event log: 50,953 events × 43 dicts × 210 correctors, 2014–2026 | ~52k · 58.7 MB | `1a1bd21d909e0bb0, 2014-03-18, form, apes, pain, ghad → ghaṭ` | 06/26 | [csl-observatory](https://github.com/sanskrit-lexicon/csl-observatory) |
| 🟡 E38 | `<ls>` citation-frequency graph | Which classical texts each dict quotes via `<ls>`, canonicalized to shared nodes across 11 dicts; 828,505 resolved citations, 912 texts. MW non-text markers filtered | 912 texts · 1,707 edges · ~150 KB | `pwg   Mahābhārata   39130` (edge) · `Mahābhārata   56818   8   MAHĀBHĀRATA; MBh; …` (node) | 07/26 | [csl-atlas/data/citations](https://github.com/sanskrit-lexicon/csl-atlas/tree/main/data/citations) |
| ⚪ E39 | markup-tag census | Markup-tag frequency census over all 44 csl-orig/v02 dicts: tag × dict counts + per-1,000-entry rates, 96 distinct tags, 17.5M tag hits, with under-marking verdicts ([report](https://github.com/gasyoun/SanskritLexicography/blob/master/data/MARKUP_TAG_CENSUS_CSLORIG_2026.md)) | 671 rows · 18 KB | `sch   29125   <ab>   2   0.07` (an abbreviation-tagging start that never happened) | 07/26 | [data/markup_tag_census.tsv](https://github.com/gasyoun/SanskritLexicography/blob/master/data/markup_tag_census.tsv) |
| ⚪ E40 | headword overlap matrix + unique counts | Pairwise headword overlap over the 15-dict union (C13): 105 dict pairs with shared/union/Jaccard + per-dict unique inventories ([findings](https://github.com/gasyoun/SanskritLexicography/blob/master/data/HEADWORD_OVERLAP_UNION15_2026.md); MW∩PWG=94,753 — the figure once mislabeled as "the union"; BHS 58.7% unique, CCS 0.6%) | 105 pairs + 15 dicts · 3 KB | `CAE   CCS   27008   40211   0.6717` (the max-Jaccard pair) | 07/26 | [data/headword_overlap_matrix.tsv](https://github.com/gasyoun/SanskritLexicography/blob/master/data/headword_overlap_matrix.tsv) |
| ⚪ E47 | witness-independence map + corroboration re-audit | Derivation-graph over the 15-dict union operationalizing [FINDINGS §83/§97](https://github.com/gasyoun/SanskritLexicography/blob/master/FINDINGS.md): per-edge ruling + witness-family partition + a 5-rung collapse ladder (P0..P4) recomputing the union "in N dicts" corroboration over independent families ([report](https://github.com/gasyoun/SanskritLexicography/blob/master/data/WITNESS_INDEPENDENCE_REAUDIT_UNION15_2026.md); machine map [witness_tiers.json](https://github.com/gasyoun/SanskritLexicography/blob/master/data/witness_tiers.json)). Corroborated share 55.9% → 34.7% (MW folds into Petersburg); Apte kept independent per §83. **H1389 text-attestation regrade** (MW's non-`<ls>L.</ls>` from csl-orig, [mw_ls_textattest.py](https://github.com/gasyoun/SanskritLexicography/blob/master/data/mw_ls_textattest.py)): P3 → 33.8%, 17,386 MW-listed ghost headwords. **H7299 PD/chronology extension:** PD stays a separate family; 16-dict P0 → P3 is 44.3% → 28.5%; DCS/Dharmamitra are one chronology lineage (ρ=0.94, 56 works), and PD's 89.0% unique inventory is inventory-only. [Extension report](https://github.com/gasyoun/SanskritLexicography/blob/master/data/WITNESS_INDEPENDENCE_PD_E47_EXTENSION_2026.md) + [consumer contract](https://github.com/gasyoun/SanskritLexicography/blob/master/data/witness_corroboration_contract.json) reject N dictionaries = N independent witnesses | 15+16 dicts · 9+5 policies · deterministic JSON/TSV | `P3   12   1   298464` (16-dict single-family rows) | 10/26 | [data/witness_independence_pd_extension.py](https://github.com/gasyoun/SanskritLexicography/blob/master/data/witness_independence_pd_extension.py) |
| 🟢 E41 | `correction_events_{all,typed,final}.csv` | Full correction-event log behind E32: 52,498 events (git-mined 28,057 + release diffs), one row per correction with old/new IAST, edit-op trace, corrector, latency; `_typed` adds the empirical error typology, `_final` is the canonical enriched view | 52,498 × 3 views · 178.0 MB | `1a1bd21d909e0bb0, 2014-03-18, form, apes, pain, ghad → ghaṭ (ट् instead of द्)` | 06/26 | [csl-observatory data/](https://github.com/sanskrit-lexicon/csl-observatory/tree/main/observatory/site/src/data) |
| 🟢 E42 | Kompozity `names.csv` | DCS proper-name compound (samāsa) splits with frequency vectors: surface form; constituent-stem split; part count; total corpus frequency; per-period/text tail | 168,880 · 90.7 MB | `rājendra; rājan indra;2;863;596;14;…` | 07/26 | [VisualDCS Kompozity](https://github.com/gasyoun/VisualDCS/blob/main/derived-data/Kompozity/README.md) |
| 🟡 E43 | kosha corpus sandhi (programme) | Corpus-attested, frequency-ranked sandhi rules induced from DCS gold splits — a junction-rule inducer derives the `X Y → Z` notation (**96.3 %** Gītā-gold coverage), swept over 17 texts + a graded curriculum + per-class reference. Splitter for no-gold/GRETIL texts settled by an A/B/C bake-off: DharmaMitra neural (not vidyut). | 9,840 rules · ~580k junctions | `a a → ā   vowel coalescence   35533   6.12   17` | 07/26 | [SANDHI_PROGRAMME.md](https://github.com/gasyoun/kosha/blob/main/SANDHI_PROGRAMME.md) |
| ⚪ E43 | code-duplication census + LOC/language-mix per repo | Org-wide dup census over 129 repos (transcoder ×83/9 versions, digentry ×193/5, updateByLine ×144/9, redo.sh ×204/174 …) + sanskrit-util payoff (4/19 donor sites delegate) + per-repo total LOC / dominant language / Python·JS-TS·PHP·Shell·Other split (H688; closes ROADMAP_STATISTICS_ORG_CENSUS L6 rows) | 129 repos · ~40 KB | `transcoder.py 83(62) 9(7) …` (dup family row) · `SanskritLexicography 9,267,485 HTML 187,987 …` (LOC row) | 07/26 | [csl-observatory report](https://github.com/sanskrit-lexicon/csl-observatory/blob/main/reports/code_duplication_census.md) + [script](https://github.com/sanskrit-lexicon/csl-observatory/blob/main/scripts/code_duplication_census.py) |
| ⚪ E44 | POS distribution per text | UD-upos (11-tag) frequency per DCS text, all 270 texts, 5,688,416 tokens; verb%/noun% density ranking (nighaṇṭus most noun-dense, śrautasūtras most verb-dense) — closes ROADMAP_STATISTICS_ORG_CENSUS L3 row (H817) | 270 texts × 11 upos · 2,790 rows | `Mahābhārata VERB 217,081 18.91` | 07/26 | [csl-observatory data/pos_distribution_per_text.tsv](https://github.com/sanskrit-lexicon/csl-observatory/blob/main/data/pos_distribution_per_text.tsv) + [report](https://github.com/sanskrit-lexicon/csl-observatory/blob/main/reports/pos_distribution_per_text.md) |
| ⚪ E45 | sense/polysemy distribution per dict (11/44 general lexica) | Senses-per-entry via 4 convention-specific parsers (Western markers / lumped-gloss semicolon proxy / *iti*-prose / reverse-index), mirrored from the A02 paper's `r2_h1.json`; family trait not diachronic trend (r=0.036) — closes ROADMAP_STATISTICS_ORG_CENSUS L1 row **◐ partial**, remaining 33 dicts blocked (no structural sense-marking; `<L>` decimal suffix confirmed NOT a valid proxy, H817) | 11 dicts · 3 KB | `mw 1899 Monier-Williams 1.15 286525` | 07/26 | [csl-observatory data/sense_polysemy_per_dict.tsv](https://github.com/sanskrit-lexicon/csl-observatory/blob/main/data/sense_polysemy_per_dict.tsv) + [report](https://github.com/sanskrit-lexicon/csl-observatory/blob/main/reports/sense_polysemy_per_dict.md) |
| ⚪ E46 | paradigm-cell coverage per root | Distinct finite (tense·mood·voice·person·number) UD-tag cells attested per verb root over the DCS corpus: 8,054/11,096 lemmas ≥1 finite token, 171 distinct cells corpus-wide; kṛ/gam/bhū top coverage — quantifies org-wide what the VisualDCS 6-root paradigm browser (I10) demonstrates by hand; closes ROADMAP_STATISTICS_ORG_CENSUS L2 row (H817) | 8,054 roots · ~700 KB | `kṛ 107 19827` (root · distinct cells · finite tokens) | 07/26 | [csl-observatory data/paradigm_cell_coverage_per_root.tsv](https://github.com/sanskrit-lexicon/csl-observatory/blob/main/data/paradigm_cell_coverage_per_root.tsv) + [report](https://github.com/sanskrit-lexicon/csl-observatory/blob/main/reports/paradigm_cell_coverage.md) |
| ⚪ E49 | definition typology (synonym / equivalent / encyclopedic) | Classical microstructural axis over **all 44** csl-orig dicts (1,496,157 `<L>` records): operational rubric + per-dict distribution + stratified gold sample; closes ROADMAP_STATISTICS L1 / WS2.4 and ATLAS_FAIR Part I "○ not started" as ◐ first-pass (H1483; double-key 300×7 pool still open) | 44 dicts · ~1.5M records | `mw   286525   2.1% syn / 89.6% eqv / 0.6% enc` (after linear citation strip) | 07/26 | [report](https://github.com/gasyoun/SanskritLexicography/blob/master/data/DEFINITION_TYPOLOGY_WS2_4_2026.md) · [TSV](https://github.com/gasyoun/SanskritLexicography/blob/master/data/definition_typology_per_dict.tsv) · [script](https://github.com/gasyoun/SanskritLexicography/blob/master/data/definition_typology_classifier.py) |
| 🟡 E50 | Rāmāyaṇa edition-alignment family (Gorresio · Bombay · Southern↔critical) | Everything PWG's three-edition `R.` citation scheme needs, in one place (H1656 + H1689 + H1705). **Gorresio**: structural inventory (672 sargas) + a full IAST e-text (19,852 vv — Google text layer for vols 1/3/5, tesseract-5 `san` OCR for the image-only 2/4/uk) + a CONTENT-BASED Gorresio↔Southern verse map that keys live citation reuse. **Bombay 1859**: structural inventory for all 7 kāṇḍas from the scan-viewer per-page index, **no OCR** — and the measured verdict that its uttarakāṇḍa (111 sargas + 13 interpolated) is NOT ≈1:1 with the 100-sarga corpus text, so no book-7 map is owed. **Southern↔critical**: verse-level map for kāṇḍas 1/2/3/5/6/7 — ⚠️ kāṇḍas 6–7 align to themselves ([#822](https://github.com/gasyoun/SanskritLexicography/issues/822)) | 4 TSVs + 1 JSONL · 658 + 672 sargas · 19,852 vv | `7   111   11   III   810   812   153b   154b   index_typo_111` (Bombay inventory row) | 07/26 | [`ramayana_bombay_inventory.tsv`](https://github.com/gasyoun/SanskritLexicography/blob/master/RussianTranslation/src/ramayana_bombay_inventory.tsv) · [`ramayana_gorresio_inventory.tsv`](https://github.com/gasyoun/SanskritLexicography/blob/master/RussianTranslation/src/ramayana_gorresio_inventory.tsv) · [`gorresio_etext.jsonl`](https://github.com/gasyoun/SanskritLexicography/blob/master/RussianTranslation/src/gorresio_etext.jsonl) · [builder](https://github.com/gasyoun/SanskritLexicography/blob/master/RussianTranslation/src/build_ramayana_concordance.py) |
| 🟡 E48 | kosha Pāṇinian sūtra↔corpus concordance | W2b inversion of the W2a vidyut-derivation harness: one row per (sūtra, attested DCS form, corpus locus) triple, `ok`-status forms only — 221 distinct sūtras spanning 7/8 adhyāyas, chain length min 6/median 12/max 36 (H1390); ambiguous-status forms (86,857) not yet invertible — W2a's shipped output carries no chain_id for them, parked as a W2a follow-up; manifest tier public, unreleased pending a D-license `@DECIDE` | 893,482 rows · 82.0 MB | `sutra:1.2.45   dcs:651370   asurAn (chain step 1/13)   ok` | 07/26 | [kosha/data/concordance/paninian_concordance.tsv](https://github.com/gasyoun/kosha/blob/main/data/concordance/paninian_concordance.tsv) + [viewer](https://github.com/gasyoun/kosha/blob/main/concordance/panini/index.html) |
| ⚪ E52 | attested declension cells per lemma (Sangram G2) | Per **lemma** (not per class): which of the 24 case×number cells each of 57,144 noun lemmas attests in the pinned DCS master, as a `cells_bits24` bitstring + gender/stem/frequency breakdowns. Median 1 cell/lemma; only 10.44% of the lemma×cell space ever attested — the corpus-scale measurement of paradigm overgeneration. Built H1048, catalogued here 27-07-2026 during the H1472 propagation pass (it had no row). Its class taxonomy is the shared one E50 reuses | 57,144 lemmas · 3.1 MB | `70467,rājan,Masc,an,15212,20,111111101101101111101111` | 07/26 | [SanskritGrammar sangram/data/declension_cell_coverage/](https://github.com/gasyoun/SanskritGrammar/tree/main/sangram/data/declension_cell_coverage) |
| ⚪ E53 | curated dating table for PWG's cited works (C2 phase 2) | A **range** plus the scholarly source per date for all 45 works in [`ls_source_map.json`](https://github.com/gasyoun/SanskritLexicography/blob/master/RussianTranslation/src/ls_source_map.json) — the provenance phase 1's bare point dates never had. Graded 9 anchored · 20 consensus · 14 contested · **2 dating-invalid**: `Spr.` is Böhtlingk's own 1863–1873 anthology and `ŚKDR.` a Calcutta compilation of 1821–1858, so neither dates anything, yet between them they set a bound on 11,771 of 43,990 phase-1 windows. Seven further map dates fall outside their sourced range (`AMAR`, `GĪT. GOV`, `KATHĀS`, `RĀJAN`, `SĀH. D`, `VOP`, `Spr`), recorded as corrections without touching the committed map. Eight claims are quoted from Vogel 1979 with its printed page, that volume being held in this repo; the rest cite the standard handbook and are marked `reference-only`. Gated by `c2p2_dating_table.py --check` — a date with no citation is a hard failure. The eleven datings no evidence can settle are one published sheet, [pwg_c2p2_work_dating_11](https://gasyoun.github.io/vote/sheets/pwg_c2p2_work_dating_11.html) (H3790) | 45 works · 33 sources · 11 decisions · 41 KB | `MED · Medinīkośa · 1200–1275 CE · anchored · Vogel 1979: 347 («somewhere between 1200 and 1275»)` | 09/26 | [`work_dating_table.json`](https://github.com/gasyoun/SanskritLexicography/blob/master/RussianTranslation/src/work_dating_table.json) · [memo](https://github.com/gasyoun/SanskritLexicography/blob/master/RussianTranslation/research/C2P2_WORK_DATING_TABLE.md) · [gate](https://github.com/gasyoun/SanskritLexicography/blob/master/RussianTranslation/research/c2p2_dating_table.py) |

### F · Text collections & other

| ID | Asset | What it is | Size | Example (real sample) | Intro | Home |
|---|---|---|---|---|---|---|
| 🟡 F33 | Indische Sprüche | All 7,537 Böhtlingk subhāṣitas as JSONL (public domain) | 7,537 · 6.9 MB | `{ "num":1, "saying_id":"Saying 1", "deva":"अंशो ऽपि दुष्टदिष्टानां…" }` | 07/26 | [indische_sprueche.jsonl](https://github.com/gasyoun/SanskritLexicography/blob/master/IndischeSprueche/data/indische_sprueche.jsonl) |
| ⚪ F34 | ortho-drift reform maps | 19th-c.→modern spelling maps: de 15,685 · ru 7,709 · fr 254 · en 71 | ~23.7k forms · 727 KB | `de_reform_map.tsv:   aachner → aachener   (×75)` | 06/26 | [SanskritSpellCheck/ortho_drift](https://github.com/drdhaval2785/SanskritSpellCheck/tree/master/ortho_drift) |
| ⚪ F35 | do-not-file corpus | 2,297 deliberately non-standard headword spellings across 33 dicts | 2,297 · 25 KB | `ABasvara` (deliberately non-standard — do not "correct") | 06/26 | [do_not_file_suppress.txt](https://github.com/drdhaval2785/SanskritSpellCheck/blob/master/nochange/do_not_file_suppress.txt) |
| 🟢 F36 | csl-santam Tamil SQLite | MW + Cappeller + Cologne Online Tamil Lexicon combined | 321,620 · 29.9 MB | `source(mwd·cap·otl) · headword · body` (schema; Harvard-Kyoto keys) | 06/15 | [csl-santam](https://github.com/sanskrit-lexicon/csl-santam) |
| ⚪ F37 | OCR'd dictionary front-matter | Faithful Markdown + EN/RU editions of title pages, prefaces, abbreviations | multi-dict | per dict: title-page + preface + abbreviations as Markdown (schema) | 06/26 | [csl-guides](https://github.com/gasyoun/csl-guides) |
| 🟢 F43 | `allngramtxt.txt` char-n-gram oracle | Every distinct character n-gram (all lengths, sorted by length) of the pan-CDSL headword list `sanhw1.txt` — the membership oracle of the n-gram spell-check method (a headword containing a chunk attested nowhere else is suspect; generator [listngrams.py](https://github.com/sanskrit-lexicon/CORRECTIONS/blob/master/ngram/listngrams.py)) | 6,656,616 n-grams · 82.3 MB | `aBisaMboD` (one SLP1 n-gram per line) | 06/26 | [CORRECTIONS/ngram](https://github.com/sanskrit-lexicon/CORRECTIONS/tree/master/ngram) |
| 🟢 F44 | INDOLOGY-L mailing-list archive atlas | Metadata-first atlas of the public INDOLOGY-L Pipermail archive (1990-2026): messages, threads, reply network, author normalization, Renou-axis topic tagging. Split out of IndologyScholars into its own citable repo 19-07-2026 (H460), full history preserved (`git filter-repo`) | 62,115 messages · 24,034 threads · ~200 MB | `data/processed/messages_clean.csv: normalized_author, author_id, primary_topic, thread_root_id, …` | 07/26 | [IndologyArchiveAtlas](https://github.com/gasyoun/IndologyArchiveAtlas) |
| 🟡 F45 | Laukika-nyāya (Jacob's "Handful of Popular Maxims") | All 404 laukika-nyāya popular maxims from Jacob's 3-part collection (1907-1911, PD) as JSONL, OCR-ingested and cross-referenced against the book's own back-matter index, mirroring the IndischeSprueche field style — closes the last open deliverable of the 2004 AIOC-Varanasi manifesto (H803) | 404 · ~500 KB | `{ "num":1, "nyaya_deva":"अजाकृपाणीयन्यायः", "gloss_en":"The maxim of the she-goat and the sword." }` | 07/26 | [laukika_nyaya.jsonl](https://github.com/gasyoun/SanskritLexicography/blob/master/LaukikaNyaya/data/laukika_nyaya.jsonl) |
| 🟢 F46 | VK wall archive — «Общество ревнителей санскрита» (vk-ors) | Public VK wall (vk.com/samskrtamru / wall-88831040, 2015–2026) as SQLite+FTS5 + four analysis layers + wave-1 gallery/search/tiers; live refresh via wall.get | 7,613 posts · 10,174 attachments · ~CSV bundle | `data/processed/activity_by_year.csv`, `attachments_gallery.csv`, `engagement_tiers.csv` | 07/26 | [IndologyScholars/vk-ors](https://github.com/gasyoun/IndologyScholars/tree/main/vk-ors) |
| ⚪ F47 | PWG literary-source scan-index campaign registry | The 2025–26 volunteer campaign that page-indexed the printed editions PWG cites, as committed data: per-source index status, volunteer, dates, page count, coordinating GitHub issue, and scan directory — cross-validated against `pwgbib` and the full-dictionary `<ls>` extraction. Sidecars: the verbatim 4-tab sheet snapshot, a ranked e-text candidate queue, a dated audit of all 37 `sanskrit-lexicon-scans` directories, and (H2874) the two `<ls>`-per-abbreviation count tables the campaign's numbers rest on. ✅ `citation_count` **provenance resolved 16-08-2026** — the 2024-09-11 `lsextract_all.txt` work-family rollup (`ALL` 739,056), 66/67 rows exact; the old 1.2×–433× "disagreement" was a comparison against cleaned-*string* counts, a different object. ⚠️ consume `citation_count_safe`, fold by `in_pwgbib` before summing, divide only by the same snapshot's `ALL` | 82 works · 43 cols · 38 KB (+11 KB queue, +10 KB audit, +2 × ~90 KB count tables) | `ls_code=RAGH., ls_code_raw=RAGH., ls_code_base=RAGH., book_no=1a, title=RAGHUVAM̃SA 1832 Stenzler ed., status=done, status_gloss=index built, reviewed, and posted, citation_count=8752, total_pages=385, volunteer=@grigoriyt1, started=2025-01-29, finished=2025-01-30, issue_repo=PWG, issue_no=100, issue_url=https://github.com/sanskrit-lexicon/PWG/issues/100, index_posted=2025-02-21, scan_dir=raghuvamsa, scan_dir_canonical=raghuvamsa, scan_spelling_ok=yes, scan_url=https://github.com/sanskrit-lexicon-scans/raghuvamsa, ` | 07/26 | [csl-observatory/data/pwg_scan_index_tracker](https://github.com/sanskrit-lexicon/csl-observatory/tree/main/data/pwg_scan_index_tracker) |
| 🟢 F48 | Sanskrit **definition-generation benchmark** (defgen) + gloss-grounded WSD pilot | The org's eval set for "write this headword's gloss": a frozen 500-headword MW sample (seed 730, stratified 3×3 frequency × polysemy, ≥3 DCS attestations each) + 5 frozen system arms (2 DeepSeek variants, a reasoner, an in-session Fable arm, and a seeded-derangement floor) + deterministic chrF/token-F1 + a blinded LLM judge with **gates** (floor separation, judge~chrF ρ, human subsample still owed). Extended H2408 with an **independent second reference** — Huet's French glosses (D20) on the 333-headword overlap: the arm ranking is **reference-invariant**, and the MW-familiarity premium is real but small (+0.13…+0.25 on 0–5, CI excludes 0 for every system arm, largest for the no-context memorisation arm). Extended H4796 with the **Russian third reference** — corpus-attested sa-ru-glossary renderings (SanskritRussian lemma layer) on a **287-headword three-witness subset** (500 frozen ∩ 333 FR ∩ 384 RU): RU covers 76.8% of the frozen sample; the RU surface channel is **script-degenerate** (token-F1 ≈ 0 vs Cyrillic regardless of meaning — the judge is mandatory for the RU channel), and the surface MW-familiarity gradient reproduces on the subset for every arm (floor +2.9 < ctx arms +8…+11 < F1 +14.1 chrF, CI excludes 0). ⚠️ MW 1899 is in every model's pretraining data — these numbers measure *reproduction + grounding*, never generation from corpus evidence alone; and cross-lingual surface metrics are near-degenerate, so the judged score is the measurement. Extended H5279 (24-09) with a **Jev judge-arm measurement** — jev-1.13.0 score-channel on all 2500 arm×item pairs (blinded, same state shape): no discrimination (all arms ≈4.05 incl. the derangement floor 4.046 vs baseline 0.186; pairwise ρ vs baseline 0.239; within-item range 0.071) → **KEEP_BASELINE**, the deepseek-chat judge stands; runner `tools/bench_defgen_jev_gloss_judge.py` + dated report | 500 items × 5 arms + 333-item FR subset + 287-item three-witness subset (digests only) · ~1.4 MB | `AyA  āyā  2.Ā.  mono  high  rank 641  →  gen "to come near, approach, arrive at…"  chrF-MW 23.16 / chrF-FR 12.09 / judge-FR 4.538` | 09/26 | [MW protocol](https://github.com/gasyoun/kosha/blob/main/docs/DEFGEN_MW_GLOSS_EVAL_PROTOCOL.md) + [Heritage second reference](https://github.com/gasyoun/kosha/blob/main/docs/DEFGEN_HERITAGE_SECOND_REFERENCE_EVAL.md) + [RU third reference report](https://github.com/gasyoun/SanskritLexicography/blob/master/data/DEFGEN_RU_THIRD_REFERENCE_REPORT_2026-09-19.md) · [data](https://github.com/gasyoun/kosha/tree/main/data/eval/defgen) |
| 🟡 F49 | ЛЭС-1990 static dump (`les-1990`) | «Лингвистический энциклопедический словарь» (Ярцева, 1990, общелингвистический) as a harvested static HTML mirror — byte-identical to [tapemark.narod.ru/les/](https://tapemark.narod.ru/les/index.html), mirrored 23-08-2026 off samskrtam.ru by walking the `index.html` 1408-link manifest (0 failures). Two-commit history: raw dump as diff baseline, then the inlined Yandex.Metrika counter stripped from all 1,409 HTML files. Serves as the source of truth for the samskrtam.ru binding programme (build script + JSON-LD + search Phases 2–4) and the future target of BookIndex's 36 broken `les-1990/?s=` glossary links. Rights: MG accepted legal risk 10-07-2026 — do not re-raise | 1,408 articles + index.html + a.css · 26.5 MB | `009a.html` … `about.html` / `authors.html` / `recenzija.html` (article pages behind the ToC) | 08/26 | [gasyoun/les-1990](https://github.com/gasyoun/les-1990) |
| 🟡 F50 | SanskritScienceBench (SSB) pilot task pack | GeneBench-shaped verifiable-task programme (Grok 4.5, 31-07-2026): multi-stage, multi-family Sanskrit/computational-Indology problems with a **pre-known locked estimand**, graded with zero human judgment. Pilot pack of 30 tasks across four families — F1 sandhi-split (10), F2 claims-verification (10), F3 string/number extraction (5), F4 XML correction (5) — each carrying `estimand`+`grader`+adversarial `forks` (plausible-wrong-answer traps) + a `rights`/`split`/`contamination_risk` block. Repackages already-owned house gold (kosha sandhi tables, PWG gate-failure registries) rather than authoring new ground truth. Grading/eval/canary tooling lives in [`Uprava/tools/`](https://github.com/gasyoun/Uprava/blob/main/tools) (`ssb_grade.py`/`ssb_eval_harness.py`/`ssb_canary.py`) — a 161-candidate F10 holdout queue (PWG gate-failure mapping) sits `status: candidate_pending_g5`, not yet promoted | 30 pilot tasks · 4 families · ~50 KB | `ssb-f1-001: "ajarāmaravat" → split "ajara+amara"` (F1 sandhi, exact_match_split grader) | 09/26 | [Uprava/tasks/ROADMAP_VERIFIABLE_SANSKRIT_SCIENCE_BENCH_2026H2.md](https://github.com/gasyoun/Uprava/blob/main/tasks/ROADMAP_VERIFIABLE_SANSKRIT_SCIENCE_BENCH_2026H2.md) · [tasks/pilot/](https://github.com/gasyoun/Uprava/blob/main/tasks/pilot) · [tools/ssb_grade.py](https://github.com/gasyoun/Uprava/blob/main/tools/ssb_grade.py) |
| ⚪ F51 | birthday-collision baseline (MW Herfindahl) + gate | The null hypothesis for "two batch entries share a phonetic feature": Herfindahl index H = Σpᵢ² of the **actual** MW `<k1>` distribution per field (Sanskrit is skewed — uniform 1/n lies), expected colliding pairs λ = C(k,2)·H among k batch cases, Poisson p-value on observed collisions. Measured baselines (194,083 unique MW headwords): final letter m_eff = 2.6 (collision ~guaranteed), first letter 15, final-2 31, onset 81, first-2 71, first-3 304; for k=10 a field needs **m_eff ≳ 900 (P < 5%) to ever reach signal**. Verified on the 18-case mw72 dual-headword batch (`batch_20260804`, COLOGNE#178/H1523): observed 9/2/1/67/6/2 vs expected 10.2/2.1/0.5/59.7/5.0/1.9 — **every field noise (p 0.19–0.69)**; eyeballed phonetic clusters in ≤10 cases are expected noise, never a systematic-defect claim. Gate step wired into the csl-corrections drain checklist (MG ruling 26-09-2026) | 6 fields · 1 script · 12 KB | `python birthday_collision_baseline.py --mw …/mw.txt --batch …/batch_20260804/dictionaries/mw72` | 09/26 | [birthday_collision_baseline.py](https://github.com/gasyoun/SanskritLexicography/blob/master/birthday_collision_baseline.py) · [memory note](https://github.com/gasyoun/SanskritLexicography/blob/master/.claude/projects/SanskritLexicography/memory/2026-09-26-birthday-paradox-mw-phonetic-collision-baselines.md) · [ELI5 page](https://gasyoun.github.io/coincidence-paradox-sanskrit.html) |

---

## II. Dictionaries — the 44 digitised from canonical source text

Roster from [`csl-guides/src/data/dictionaries.json`](https://github.com/sanskrit-lexicon/csl-guides/blob/main/src/data/dictionaries.json),
verified against [`csl-orig/v02/`](https://github.com/sanskrit-lexicon/csl-orig/tree/main/v02).
The **code is the ID** and the **Year** column is the edition's publication year. The **Example**
column links a real sample headword (or *browse*) to that dictionary's live Cologne interface
(URL pattern `…/scans/<CODE>Scan/<YEAR>/web/index.php`, MW & AP90 verified).

**Repo column** — all 44 cells re-verified against the live
[`sanskrit-lexicon`](https://github.com/orgs/sanskrit-lexicon/repositories) org on
27-07-2026 (H1722; 3 were wrong, 41 correct). A dictionary repo here is normally an
**issue venue**, not a data repo — the text itself lives in
[csl-orig](https://github.com/sanskrit-lexicon/csl-orig) either way. So:
`csl-orig only` = no repo of any kind exists (13 such dictionaries, enumerated in the
[consolidation spike](https://github.com/gasyoun/Uprava/blob/main/CONSOLIDATION_SPIKE_REPOLESS_DICTIONARIES_THIN_VIEW_REPOS_2026Q3.md));
"— venue only" = the repo exists but holds no dictionary content beyond issues and a
Pages shell.

| Code | Dictionary | Language | Author | Year | Pages | Repo | Example |
|---|---|---|---|---:|---:|---|---|
| MW | Monier-Williams Sanskrit-English Dictionary | Skt→Eng | Monier-Williams | 1899 | 1,333 | [MWS](https://github.com/sanskrit-lexicon/MWS) | [`a` ↗](https://www.sanskrit-lexicon.uni-koeln.de/scans/MWScan/2020/web/index.php) |
| PWG | Grosses Petersburger Wörterbuch | Skt→Ger | Böhtlingk & Roth | 1855 | 4,737 | [PWG](https://github.com/sanskrit-lexicon/PWG) | [`a` ↗](https://www.sanskrit-lexicon.uni-koeln.de/scans/PWGScan/2020/web/index.php) |
| PW | Sanskrit-Wörterbuch in kürzerer Fassung | Skt→Ger | Otto Böhtlingk | 1879 | 2,141 | [PWK](https://github.com/sanskrit-lexicon/PWK) | [`a` ↗](https://www.sanskrit-lexicon.uni-koeln.de/scans/PWScan/2020/web/index.php) |
| GRA | Wörterbuch zum Rig-Veda | Skt→Ger | Hermann Grassmann | 1873 | 1,775 | [GRA](https://github.com/sanskrit-lexicon/GRA) | [`a` ↗](https://www.sanskrit-lexicon.uni-koeln.de/scans/GRAScan/2020/web/index.php) |
| AP90 | Apte Practical Sanskrit-English Dictionary | Skt→Eng | V. S. Apte | 1890 | 1,196 | [AP90](https://github.com/sanskrit-lexicon/AP90) | [`a` ↗](https://www.sanskrit-lexicon.uni-koeln.de/scans/AP90Scan/2020/web/index.php) |
| AP | Practical Sanskrit-English Dictionary (rev.) | Skt→Eng | Apte · Gode · Karve | 1957 | 1,768 | [AP](https://github.com/sanskrit-lexicon/AP) | [browse ↗](https://www.sanskrit-lexicon.uni-koeln.de/scans/APScan/2020/web/index.php) |
| MW72 | Monier-Williams Sanskrit-English (1st ed.) | Skt→Eng | Monier Williams | 1872 | 1,186 | [MW72](https://github.com/sanskrit-lexicon/MW72) | [browse ↗](https://www.sanskrit-lexicon.uni-koeln.de/scans/MW72Scan/2020/web/index.php) |
| WIL | Wilson Sanskrit-English Dictionary | Skt→Eng | H. H. Wilson | 1832 | 982 | [WIL](https://github.com/sanskrit-lexicon/WIL) | [browse ↗](https://www.sanskrit-lexicon.uni-koeln.de/scans/WILScan/2020/web/index.php) |
| YAT | Yates Sanskrit-English Dictionary | Skt→Eng | Rev. W. Yates | 1846 | 928 | csl-orig only | [browse ↗](https://www.sanskrit-lexicon.uni-koeln.de/scans/YATScan/2020/web/index.php) |
| GST | Goldstücker Sanskrit-English Dictionary | Skt→Eng | Theodor Goldstücker | 1856 | 334 | csl-orig only | [browse ↗](https://www.sanskrit-lexicon.uni-koeln.de/scans/GSTScan/2020/web/index.php) |
| BEN | Benfey Sanskrit-English Dictionary | Skt→Eng | Theodore Benfey | 1866 | 1,145 | [BEN](https://github.com/sanskrit-lexicon/BEN) | [`a` ↗](https://www.sanskrit-lexicon.uni-koeln.de/scans/BENScan/2020/web/index.php) |
| LAN | Lanman's Sanskrit Reader Vocabulary | Skt→Eng | C. R. Lanman | 1884 | 403 | csl-orig only | [browse ↗](https://www.sanskrit-lexicon.uni-koeln.de/scans/LANScan/2020/web/index.php) |
| LRV | Vaidya Sanskrit-English Dictionary | Skt→Eng | L. R. Vaidya | 1889 | 889 | [LRV](https://github.com/sanskrit-lexicon/LRV) | [browse ↗](https://www.sanskrit-lexicon.uni-koeln.de/scans/LRVScan/2022/web/index.php) |
| CAE | Cappeller Sanskrit-English Dictionary | Skt→Eng | Carl Cappeller | 1891 | 672 | [CAE](https://github.com/sanskrit-lexicon/CAE) | [`a` ↗](https://www.sanskrit-lexicon.uni-koeln.de/scans/CAEScan/2020/web/index.php) |
| MD | Macdonell Sanskrit-English Dictionary | Skt→Eng | A. A. Macdonell | 1893 | 384 | [MD](https://github.com/sanskrit-lexicon/MD) | [`a` ↗](https://www.sanskrit-lexicon.uni-koeln.de/scans/MDScan/2020/web/index.php) |
| SHS | Śabda-Sāgara Sanskrit-English Dictionary | Skt→Eng | J. Vidyasagara | 1900 | 839 | [SHS](https://github.com/sanskrit-lexicon/SHS) | [`a` ↗](https://www.sanskrit-lexicon.uni-koeln.de/scans/SHSScan/2020/web/index.php) |
| PD | Encyclopedic Dictionary of Sanskrit on Historical Principles | Skt→Eng | Katre 1948–72 → Joshi 2017– (gen. eds.) | 1976 | 6,056 (35 fascicle-vols by 2019; 10 M Scriptorium slips) | [PD](https://github.com/sanskrit-lexicon/PD) | [browse ↗](https://sanskrit-lexicon.uni-koeln.de/scans/PDScan/2020/web/index.php) |
| MWE | Monier-Williams English-Sanskrit Dictionary | Eng→Skt | Monier Williams | 1851 | 860 | csl-orig only | [`A` ↗](https://www.sanskrit-lexicon.uni-koeln.de/scans/MWEScan/2020/web/index.php) |
| BOR | Borooah English-Sanskrit Dictionary | Eng→Skt | Anundoram Borooah | 1877 | 772 | [BOR](https://github.com/sanskrit-lexicon/BOR) | [`A` ↗](https://www.sanskrit-lexicon.uni-koeln.de/scans/BORScan/2020/web/index.php) |
| AE | Apte Student's English-Sanskrit Dictionary | Eng→Skt | V. S. Apte | 1920 | 501 | [ApteES](https://github.com/sanskrit-lexicon/ApteES) | [browse ↗](https://www.sanskrit-lexicon.uni-koeln.de/scans/AEScan/2020/web/index.php) |
| BUR | Burnouf Dictionnaire Sanscrit-Français | Skt→Fr | Burnouf · Leupol · Renou | 1866 | 781 | [BUR](https://github.com/sanskrit-lexicon/BUR) | [browse ↗](https://www.sanskrit-lexicon.uni-koeln.de/scans/BURScan/2020/web/index.php) |
| STC | Stchoupak Dictionnaire Sanscrit-Français | Skt→Fr | Stchoupak · Nitti · Renou | 1932 | 904 | [STC](https://github.com/sanskrit-lexicon/STC) | [browse ↗](https://www.sanskrit-lexicon.uni-koeln.de/scans/STCScan/2020/web/index.php) |
| BOP | Bopp Glossarium Sanscritum | Skt→Lat | Franz Bopp | 1847 | 420 | [BOP](https://github.com/sanskrit-lexicon/BOP) | [`a` ↗](https://www.sanskrit-lexicon.uni-koeln.de/scans/BOPScan/2020/web/index.php) |
| SKD | Śabdakalpadruma | Skt→Skt | Rādhākānta Deva | 1886 | 3,164 | [SKD](https://github.com/sanskrit-lexicon/SKD) | [`a` ↗](https://www.sanskrit-lexicon.uni-koeln.de/scans/SKDScan/2020/web/index.php) |
| VCP | Vācaspatyam | Skt→Skt | Tāranātha Tarkavācaspati | 1873 | 5,407 | [VCP](https://github.com/sanskrit-lexicon/VCP) | [`a` ↗](https://www.sanskrit-lexicon.uni-koeln.de/scans/VCPScan/2020/web/index.php) |
| CCS | Cappeller Sanskrit Wörterbuch | Skt→Ger | Carl Cappeller | 1887 | 541 | [CCS](https://github.com/sanskrit-lexicon/CCS) | [browse ↗](https://www.sanskrit-lexicon.uni-koeln.de/scans/CCSScan/2020/web/index.php) |
| SCH | Schmidt Nachträge zum Sanskrit-Wörterbuch | Skt→Ger | Richard Schmidt | 1928 | 398 | [SCH](https://github.com/sanskrit-lexicon/SCH) | [browse ↗](https://www.sanskrit-lexicon.uni-koeln.de/scans/SCHScan/2020/web/index.php) |
| ARMH | Abhidhānaratnamālā of Halāyudha | Skt→Skt | Halāyudha · Aufrecht | 1861 | — | csl-orig only | [browse ↗](https://www.sanskrit-lexicon.uni-koeln.de/scans/ARMHScan/2020/web/index.php) |
| ABCH | Abhidhānacintāmaṇi of Hemacandra | Skt→Skt | Hemacandrācārya | 1896 | 58 | csl-orig only | [browse ↗](https://www.sanskrit-lexicon.uni-koeln.de/scans/ABCHScan/2023/web/index.php) |
| ACPH | Abhidhānacintāmaṇipariśiṣṭa | Skt→Skt | Hemacandrācārya | 1896 | 8 | csl-orig only | [browse ↗](https://www.sanskrit-lexicon.uni-koeln.de/scans/ACPHScan/2023/web/index.php) |
| ACSJ | Abhidhānacintāmaṇiśiloñcha of Jinadeva | Skt→Skt | Jinadeva | 1896 | 5 | csl-orig only | [browse ↗](https://www.sanskrit-lexicon.uni-koeln.de/scans/ACSJScan/2023/web/index.php) |
| NMMB | Nāmamālikā of Bhoja | Skt→Skt | Bhoja | 1955 | 40 | csl-orig only | [browse ↗](https://www.sanskrit-lexicon.uni-koeln.de/scans/NMMBScan/2026/web/index.php) |
| INM | Index to the Names in the Mahābhārata | Specialized | S. Sörensen | 1904 | 852 | [INM](https://github.com/sanskrit-lexicon/INM) | [`Abala` ↗](https://www.sanskrit-lexicon.uni-koeln.de/scans/INMScan/2020/web/index.php) |
| VEI | Vedic Index of Names and Subjects | Specialized | Macdonell & Keith | 1912 | 560 | [VEI](https://github.com/sanskrit-lexicon/VEI) | [`Aṃśu` ↗](https://www.sanskrit-lexicon.uni-koeln.de/scans/VEIScan/2020/web/index.php) |
| PUI | The Purāṇa Index | Specialized | V. R. R. Dikshitar | 1951 | 2,232 | [PUI](https://github.com/sanskrit-lexicon/PUI) — venue only | [browse ↗](https://www.sanskrit-lexicon.uni-koeln.de/scans/PUIScan/2020/web/index.php) |
| BHS | Buddhist Hybrid Sanskrit Dictionary | Specialized | Franklin Edgerton | 1953 | 634 | [BHS](https://github.com/sanskrit-lexicon/BHS) | [`a` ↗](https://www.sanskrit-lexicon.uni-koeln.de/scans/BHSScan/2020/web/index.php) |
| FRI | Friš Sanskrit Reader Vocabulary | Specialized | Oldřich Friš | 1956 | 349 | [FRI](https://github.com/sanskrit-lexicon/FRI) | [browse ↗](https://www.sanskrit-lexicon.uni-koeln.de/scans/FRIScan/2025/web/index.php) |
| ACC | Aufrecht's Catalogus Catalogorum | Specialized | Theodor Aufrecht | 1962 | 1,216 | [ACC](https://github.com/sanskrit-lexicon/ACC) | [browse ↗](https://www.sanskrit-lexicon.uni-koeln.de/scans/ACCScan/2020/web/index.php) |
| KRM | Kṛdantarūpamālā | Specialized | S. Ramasubba Sastri | 1965 | 1,489 | [KRM](https://github.com/sanskrit-lexicon/KRM) | [browse ↗](https://www.sanskrit-lexicon.uni-koeln.de/scans/KRMScan/2020/web/index.php) |
| IEG | Indian Epigraphical Glossary | Specialized | D. C. Sircar | 1966 | 580 | [IEG](https://github.com/sanskrit-lexicon/IEG) — venue only | [browse ↗](https://www.sanskrit-lexicon.uni-koeln.de/scans/IEGScan/2020/web/index.php) |
| SNP | Meulenbeld's Sanskrit Names of Plants | Specialized | G. J. Meulenbeld | 1974 | 94 | csl-orig only | [browse ↗](https://www.sanskrit-lexicon.uni-koeln.de/scans/SNPScan/2020/web/index.php) |
| PE | Puranic Encyclopedia | Specialized | Vettam Mani | 1975 | 922 | csl-orig only | [browse ↗](https://www.sanskrit-lexicon.uni-koeln.de/scans/PEScan/2020/web/index.php) |
| PGN | Names in the Gupta Inscriptions | Specialized | Tej Ram Sharma | 1978 | 378 | csl-orig only | [browse ↗](https://www.sanskrit-lexicon.uni-koeln.de/scans/PGNScan/2020/web/index.php) |
| MCI | Mahābhārata Cultural Index | Specialized | M. A. Mehendale | 1993 | 981 | [MCI](https://github.com/sanskrit-lexicon/MCI) | [browse ↗](https://www.sanskrit-lexicon.uni-koeln.de/scans/MCIScan/2020/web/index.php) |

**By language:** Skt→Eng 14 · Eng→Skt 3 · Skt→Ger 5 · Skt→Fr 2 · Skt→Lat 1 · Skt→Skt 6 · Specialized 12.

---

## III. Interfaces — sites, search UIs, dashboards, reader apps, APIs

The **name links** to the live interface; **Intro** is the repo's first commit (or the feature's
first appearance where the repo predates it).

### G · Dictionary web & search

| ID | Interface | What it does | Status | Try | Intro | Stack · Repo |
|---|---|---|---|---|---|---|
| G1 | [Cologne Digital Sanskrit Dictionaries (CDSL)](https://www.sanskrit-lexicon.uni-koeln.de/) | Flagship multi-dictionary search over all 43 dicts | 🟢 Live | look up देव across all 43 dictionaries | 07/18 | PHP · SQLite · [csl-websanlexicon](https://github.com/sanskrit-lexicon/csl-websanlexicon) |
| G2 | [C-SALT / Kosh API](https://github.com/sanskrit-lexicon/csl-apidev) | REST + GraphQL API over CDSL | 🟢 Live | call the `salt_entries` / `salt_graphql` endpoints over MW | 04/18 | PHP · SQLite · [csl-apidev](https://github.com/sanskrit-lexicon/csl-apidev) |
| G3 | [kosha — translator-first dictionary](https://github.com/gasyoun/kosha) | Multi-dict collapse (MW+PWG+AP90), scan-anchored crawlable `/w/{slp1}` (SSR + D4 static head N=11,148 / 10,370 pages, H1590); strict C-SALT `/dicts/*` face (six fields + `csl`, H2768) while `/api/v1` retains `kosha`; SPA twin; exit packet for live deploy checks | 🟡 Beta | collapse MW + PWG + AP90 for one headword; inspect the strict Salt face | 08/16 | FastAPI · SQLite · static HTML · [kosha](https://github.com/gasyoun/kosha) · [Salt-face decision](https://github.com/gasyoun/kosha/blob/main/docs/DECISION_H2768_SALT_FACE_EXTENSION_CONTRACT.md) · [exit packet](https://github.com/gasyoun/kosha/blob/main/docs/P5_WORD_PAGE_EXIT_PACKET.md) |

### H · Corpus & reader apps

| ID | Interface | What it does | Status | Try | Intro | Stack · Repo |
|---|---|---|---|---|---|---|
| H4 | [Samudra Manthanam](https://samskrtam.ru) | Parallel Sanskrit–Russian corpus with morphological search | 🟢 Live | regex + stem search across parallel Sa–Ru texts | 04/26 | FastAPI · SQLite FTS5 · [SamudraManthanam](https://github.com/gasyoun/SamudraManthanam) |
| H5 | [Sanskrit→Russian Glossary](https://gasyoun.github.io/SanskritRussian/) | Three-layer word-aligned glossary, fuzzy search | 🟢 Live | a form → its surface / lemma / root Russian renderings | 07/26 | Static · Fuse.js · [SanskritRussian](https://github.com/gasyoun/SanskritRussian) |
| H6 | [Russian Rāmāyaṇa portal](https://gasyoun.github.io/RussianRamayana/) | Parallel-text reader + crowdfunding portal | 🟢 Live | read Book IV with the parallel Sanskrit–Russian reader | 05/26 | Static · Leaflet · [RussianRamayana](https://github.com/gasyoun/RussianRamayana) |
| H7 | [Sanskrit Karaoke](https://gasyoun.github.io/SanskritKaraoke/) | Verse wave-diagram visualiser + karaoke exporter | 🟢 Live | wave diagram + meter detection for an anuṣṭubh verse | 04/26 | Standalone JS · Chart.js · [SanskritKaraoke](https://github.com/gasyoun/SanskritKaraoke) |
| H8 | Systema **in-cabinet reading packs** («Старт чтения») | Guided graded reading inside the LMS: a frozen pack (Hitopadeśa lesson 0) rendered per-verse with its RU gloss, listed and opened from the student cabinet | 🟡 Built, flags OFF | `/dvaram/reading{,/slug}` — gated by `features.kosha_reader` **AND** cohort entitlement, so it is 404 for everyone until the cohort launches; the public demo `/reading/kosha-demo` is a separate, unchanged surface | 08/26 | Laravel · [ReadingPackController](https://github.com/gasyoun/Systema-Sanscriticum/blob/main/app/Http/Controllers/ReadingPackController.php) · pack data vendored from kosha `cohort-start-chteniya-pack-freeze` ([Systema-Sanscriticum](https://github.com/gasyoun/Systema-Sanscriticum)) |

### I · Dashboards & data-viz

| ID | Interface | What it does | Status | Try | Intro | Stack · Repo |
|---|---|---|---|---|---|---|
| I8 | [CSL Observatory](https://sanskrit-lexicon.github.io/csl-observatory/) | Org-wide metrics + correction typology | 🟢 Live | the bus-factor and correction-typology charts | 05/26 | Observable · Python · [csl-observatory](https://github.com/sanskrit-lexicon/csl-observatory) |
| I9 | [VisualDCS — verb-form frequency](https://github.com/gasyoun/VisualDCS) | Pareto analysis of 781,616 verb examples | 🟢 Live | the Pareto curve over 781,616 verb examples | 04/26 | Standalone HTML · Chart.js · [VisualDCS](https://github.com/gasyoun/VisualDCS) |
| I10 | [VisualDCS — paradigm browser](https://github.com/gasyoun/VisualDCS) | Interactive verb-form paradigm browser | 🟢 Live | 6 roots × 9 tenses × 9 person/number cells, flashcard mode | 04/26 | Standalone HTML · Chart.js · [VisualDCS](https://github.com/gasyoun/VisualDCS) |
| I11 | [BookIndex / Zalizniakiada](https://gasyoun.github.io/BookIndex/) | Single-file PWA over Zaliznyak's legacy | 🟢 Live | the sound-law simulator + KWIC concordance | 04/26 | D3 · Leaflet · PWA · [BookIndex](https://github.com/gasyoun/BookIndex) |
| I12 | [IndologyScholars — forum archive](https://gasyoun.github.io/IndologyScholars/) | Network analysis over 1,362 talks | 🟢 Live | the network of 1,362 talks by 270 scholars | 04/26 | Static · D3 · RDF · [IndologyScholars](https://github.com/gasyoun/IndologyScholars) |
| I14 | [VisualDCS — nominal paradigm](https://github.com/gasyoun/VisualDCS/blob/main/sanskrit_nominal_dashboard.html) | Case × number grid per declension class for nouns and adjectives — the nominal twin of the verb paradigm browser (I10) | 🟡 Local | 8 cases × 3 numbers × 14 stem classes over 2,263,192 cased tokens; click a cell for endings, attested forms and corpus examples | 07/26 | Standalone HTML · [VisualDCS](https://github.com/gasyoun/VisualDCS) |
| I15 | [Кампус наглядности](https://gasyoun.github.io/campus/) | Entry hub ко всей визуальной наглядности: 67 артефактов в 4 крыльях (грамматика / учёба / имение и финансы / продукты и привлечение), собирается из каталога 58 инфографик | 🟢 Live | выбрать крыло и открыть инфографику | 09/26 | Static (campus_build.py из campus_data.json, идемпотентен) · [gasyoun.github.io](https://github.com/gasyoun/gasyoun.github.io/tree/master/scripts/campus) |
| I16 | [Карта мастерства](https://gasyoun.github.io/mastery/) | 35 517 учебных позиций × 5 drill-семей, ease-распределения и интерактивная карта из kosha mastery-слоя (H3742); [stats.html](https://gasyoun.github.io/mastery/stats.html) — лёгкий статистический вариант | 🟢 Live | открыть семью и увидеть распределение освоимости | 09/26 | Static (mastery_map_build.py; агрегат mastery_build.py) · [kosha/data/mastery](https://github.com/gasyoun/kosha/tree/main/data/mastery) |
| I13 | [vk-ors wall retrospective](https://github.com/gasyoun/IndologyScholars/tree/main/vk-ors/site) | Self-contained HTML over ORS VK wall: activity, engagement tiers, faceted search, media gallery | 🟡 Local | open `vk-ors/site/index.html` (7,608 posts, 800 gallery thumbs) | 07/26 | Static · FTS5 · [IndologyScholars/vk-ors](https://github.com/gasyoun/IndologyScholars/tree/main/vk-ors) |

### J · Docs & article sites

| ID | Interface | What it does | Status | Try | Intro | Stack · Repo |
|---|---|---|---|---|---|---|
| J13 | [CSL Guides](https://sanskrit-lexicon.github.io/csl-guides/) | Docusaurus docs: 43 deep dictionary pages, widgets | 🟢 Live | a deep dictionary page + the comparison widget | 06/26 | Docusaurus 3 · React 19 · [csl-guides](https://github.com/sanskrit-lexicon/csl-guides) |
| J14 | [CommentaryStrategies essays](https://github.com/gasyoun/CommentaryStrategies) | Comparative DH essays + TEI/CSV/JSON exports + Sundarakāṇḍa two-tier apparatus pipeline (in production; per-sarga interactive HTML + role guides, see [docs/MANUAL.md](https://github.com/gasyoun/CommentaryStrategies/blob/main/docs/MANUAL.md)) | 🟢 Live | the Mahābhārata translator-commentary comparison | 04/26 | HTML · Python · TEI P5 · [CommentaryStrategies](https://github.com/gasyoun/CommentaryStrategies) |
| J15 | [SamudraManthanam corpus-FAQ](https://samskrtam.ru/corpus-faq/) | RU knowledge base via ZettelkastenWiki | 🟢 Live | the Russian corpus knowledge base | 07/26 | ZettelkastenWiki · [ZettelkastenWiki](https://github.com/gasyoun/ZettelkastenWiki) |
| J16 | [PWG article dashboard](https://gasyoun.github.io/SanskritLexicography/) | Per-entry PWG site with live `<ls>` scan links | 🟢 Live | a PWG entry with live `<ls>` scan-page links | 07/26 | Static (build_article_site.py) · [SanskritLexicography](https://github.com/gasyoun/SanskritLexicography) |
| J17 | [Uprava articles dashboard](https://github.com/gasyoun/Uprava/tree/main/dashboard) | Private, local-only publication-pipeline board | 🟡 Beta | (local) the publication-readiness board over ARTICLES.md | 06/26 | HTML + articles.js · [Uprava](https://github.com/gasyoun/Uprava) |
| J21 | [kosha data & tools directory](https://gasyoun.github.io/kosha/directory/) | Curated Sanskrit-NLP data + tools directory: our datasets (downloadable) + external stacks, schema.org Dataset JSON-LD | 🟢 Live | download a public dataset or find the external stack to call | 07/26 | Static (build_directory.py from datasets.json + external_tools.json) · [kosha](https://github.com/gasyoun/kosha/blob/main/scripts/build_directory.py) |
| J22 | [ELI5 explainer hub](https://gasyoun.github.io/eli5/) | Picture-led explainers of the project's own pipelines, one question per page, EN/RU — flagship page is the PWG→RU translation line: the masking trick (gold may change, green must return byte-for-byte), the eight stations, the requeue/quarantine loop as an SVG, and one real store row (`āpta` sense 6, column 1-0649) shown German / taped / Russian | 🟢 Live | how the Petersburg dictionary becomes Russian, in pictures | 09/26 | Static; Artifact fragment wrapped by [`build_standalone.py`](https://github.com/gasyoun/gasyoun.github.io/blob/master/eli5/build_standalone.py) · [gasyoun.github.io](https://github.com/gasyoun/gasyoun.github.io) |

### K · Learning & platform apps

| ID | Interface | What it does | Status | Try | Intro | Stack · Repo |
|---|---|---|---|---|---|---|
| K18 | [CSL App (Flutter)](https://github.com/sanskrit-lexicon/csl-app) | Offline cross-platform dictionary, 50+ dicts | 🟢 Live | offline lookup with ITRANS / HK / SLP1 / Devanāgarī input | 03/26 | Flutter · Riverpod · sqflite · [csl-app](https://github.com/sanskrit-lexicon/csl-app) |
| K19 | [Systema Sanscriticum](https://github.com/gasyoun/Systema-Sanscriticum) | Laravel LMS for a Sanskrit school | 🟡 Beta | the student workbench + course shop | 02/26 | Laravel 10 · Filament · MySQL · [Systema-Sanscriticum](https://github.com/gasyoun/Systema-Sanscriticum) |
| K20 | [csl-santam — Tamil lexicon search](https://github.com/sanskrit-lexicon/csl-santam) | PHP/Perl search over combined Tamil SQLite | 🟡 Beta | a Harvard-Kyoto search over 321k combined entries | 06/15 | PHP · Perl · SQLite · [csl-santam](https://github.com/sanskrit-lexicon/csl-santam) |

---

## IV. Tools — import the toolkit, call the external stacks

### L · Import it — the code toolkit

| ID | Tool | What it is | Example (usage) | Intro | Reuse instead of · Home |
|---|---|---|---|---|---|
| L1 | `sanskrit-util` | Python+JS IAST ⇄ SLP1 ⇄ Devanāgarī transcode + normalization keys, parity-tested; v0.3.0 SLP1-side API | `from sanskrit_util import to_slp1; to_slp1("देव") → "deva"` | 06/26 | Re-typing the SLP1 table (62 files) · [sanskrit-util](https://github.com/sanskrit-lexicon/sanskrit-util) |
| L10 | KeySwap (in `sanskrit-util`) | Scholar IAST typing toolkit (AHK/PWA/Apple) + Cologne check; **v3 opt-in plugins** `offline_fuzzy` (V3-2) + `network_autocomplete` (V3-7 offline-first) | `python tools/KeySwap/typing_check.py --plugin network_autocomplete --hud "rAm"` | 07/26 | Rebuilding a second typing tray / always-on net autocomplete · [KeySwap](https://github.com/sanskrit-lexicon/sanskrit-util/tree/main/tools/KeySwap) · [v0.8.9](https://github.com/sanskrit-lexicon/sanskrit-util/releases/tag/v0.8.9) |
| L2 | csl-pywork correction pipeline | `updateByLine`, `parseheadline`, `diff_to_changes`, `make_xml`, `generate_dict.sh` | `python updateByLine.py mw.txt change.txt out.txt` | 07/19 | Forking `updateByLine.py` an 84th time · [csl-pywork](https://github.com/sanskrit-lexicon/csl-pywork/tree/main/v02/makotemplates/pywork) |
| L3 | web-endpoint template | makotemplates source for `getword`/`servepdf`/`serveimg`; 40+ dicts regenerate | `getword.php?key=deva&dict=mw → entry display` | 07/18 | Editing 37 drifted per-dict copies · [csl-websanlexicon](https://github.com/sanskrit-lexicon/csl-websanlexicon/tree/main/v02/makotemplates/web/webtc) |
| L4 | `kosha/app/render.py` | Python port of the PHP SAX display engine (MW/PWG/AP90), golden-snapshotted | `render(entry_xml) → IAST <s>-display HTML` | 07/26 | Re-porting Cologne entry rendering to Python · [kosha](https://github.com/gasyoun/kosha/blob/main/app/render.py) |
| L5 | `ls_resolver.py` + `nws_ls_markup.py` (H1809, H1909) | `<ls>` citation → scanned-edition page-URL resolver, plus a companion normalizer that maps the NWS-layer’s own siglum convention (Roman-numeral maṇḍala, optional `(Sā)` recension marker) into PWG’s Arabic/comma form before resolving, plus (H1909) a discriminator that tells genuine bare citations apart from author/year provenance-note fragments (929-span sample, 195 marked, 0 measured false positives) | `resolve("Spr. 1") → the boesp scan-page URL`; `nws_ls_markup.py census` → candidate spans + resolvable/residue split; `classify_general_bare_citation()` → citation vs. provenance-note verdict | 08/26 | Re-implementing citation→scan mapping, re-discovering the NWS convention mismatch, or re-deriving the bare-citation vs. provenance-note split · [RussianTranslation/src](https://github.com/gasyoun/SanskritLexicography/tree/master/RussianTranslation/src) |
| L6 | `build_vidyut_fallback.py` | Stage-C lemmatizer via the **vidyut** FST lexicon *(→ see M14 below)* | `ABAga → ABAj (noun)` — via the vidyut FST | 07/26 | Writing another lemmatization fallback · [RussianTranslation/src](https://github.com/gasyoun/SanskritLexicography/tree/master/RussianTranslation/src) |
| L7 | RU translation kit | Parameterized `mw_ru`/`pwg_ru` kit over one `build_src.py` | `1_perevod → 2_qa_sudya → 3_pereperevod → 4_korpus_proverka` | 06/26 | Cloning a third kit · [RussianTranslation](https://github.com/gasyoun/SanskritLexicography/tree/master/RussianTranslation) |
| L11 | pwg_ru headless control plane (H1618) | Offline multi-profile **cohort engine** + **max-agents starvation refuse** + **C-49 residual ledger** for PWG→RU | `python src/pilot/cohort_engine_selftest.py` (10 pins offline) + `cohort_live_dispatch_selftest.py` (6 pins); LIVE width>1 is record-gated (H4527) — `cohort_live_admission.py --width 2` prints the verdict; omit `--max-agents` on multi-key windows | 07/26 | Re-deriving multi-account barrier / re-burning known residual keys · [cohort_engine.py](https://github.com/gasyoun/SanskritLexicography/blob/master/RussianTranslation/src/pilot/cohort_engine.py) · [no_pwg_residual_ledger.py](https://github.com/gasyoun/SanskritLexicography/blob/master/RussianTranslation/src/pilot/no_pwg_residual_ledger.py) · [headless_worker.py](https://github.com/gasyoun/SanskritLexicography/blob/master/RussianTranslation/src/pilot/headless_worker.py) |
| L12 | pwg_ru TM integrity kit (H3500) | Render-time-aware defect scanner (`h3500_defect_scan.py --check` gate), keep-best store repairer (`h3500_store_repair.py`, dry-run default + ledger), canonical entry assembler (`pwg_ru_entry_join.assemble_entry` — collapses PWG-homograph duplicate blocks at join, never merges distinct senses), plus the `merge_store_rows` incoming-dup guard | `python src/h3500_defect_scan.py src/pwg_ru_translated.jsonl --check`; `assemble_entry(ru_parts)` instead of any bare per-key1 join — B090 proof: 207→103 chars on `vasin` | 08/26 | Re-deriving benchmark-vs-renderer false positives, re-introducing byte-identical dup rows via promote tails, or bare-joining homograph sections · [RussianTranslation/src](https://github.com/gasyoun/SanskritLexicography/blob/master/RussianTranslation/src) · [H3500 report](https://github.com/gasyoun/SanskritLexicography/blob/master/RussianTranslation/reports/H3500_PWGRU_TM_DEFECT_FIX_25-08-2026.md) |
| L13 | Gate-evidence contract (H3748, W1) | Every gate builds its verdict THROUGH a `GateEvidence` record — hashed inputs, predicate evaluation + hit counts, JSON sidecar; a **zero-work PASS is a hard FAIL**, and legitimate emptiness is declared by pre-registered name, never silent | `python src/pilot/gate_evidence.py --selftest` · `python src/pilot/gate_evidence_selftest.py` (12 RED pins) · `gate_evidence.py --require <gate_id>` in CI | 08/26 | Adding a tenth gate whose green line means nothing · [gate_evidence.py](https://github.com/gasyoun/SanskritLexicography/blob/master/RussianTranslation/src/pilot/gate_evidence.py) · [gate_evidence_selftest.py](https://github.com/gasyoun/SanskritLexicography/blob/master/RussianTranslation/src/pilot/gate_evidence_selftest.py) · [the spike](https://github.com/gasyoun/SanskritLexicography/blob/master/RussianTranslation/docs/SPIKE_PWG_GATE_EVIDENCE_LEGITIMATE_EMPTY_CLASSES_31-08-2026.md) |
| L14 | PWG printed-locus resolver (H3751) | `~~h<N>` in a pwg_ru sub-card key is an **`enumerate` index, not a homonym number** — [`pwg_homonym.py`](https://github.com/gasyoun/SanskritLexicography/blob/master/RussianTranslation/src/pwg_homonym.py) is the one sanctioned reading (positional resolution + printed `<h>`/`<pc>` off the record header), with a census, a ledgered store-rewrite driver and a RED-pin replay beside it | `python src/pwg_page_index.py --selftest` · `python src/h3751_homonym_census.py --report OUT.md` | 08/26 | Re-deriving a card’s printed column from `key1` alone, or comparing `~~h<N>` against the source `<h>` ([#1801](https://github.com/gasyoun/SanskritLexicography/issues/1801)) · [pwg_page_index.py](https://github.com/gasyoun/SanskritLexicography/blob/master/RussianTranslation/src/pwg_page_index.py) · [h3751_homonym_census.py](https://github.com/gasyoun/SanskritLexicography/blob/master/RussianTranslation/src/h3751_homonym_census.py) · [h3751_apply_homonym_locus.py](https://github.com/gasyoun/SanskritLexicography/blob/master/RussianTranslation/src/h3751_apply_homonym_locus.py) |
| L15 | pwg_ru provenance census (H3750) | Read-only classifier that answers, per store row, whether its pipeline provenance is **measured** (the `prompt_sha`/`glossary_sha`/`script_sha` triple), **asserted** (`backfilled: true` + version strings) or **absent** (no input identity) — plus a git-reconstruction probe that scores any proposed backfill method against the rows that already carry the truth, and a corroboration pass against the surviving `wf_output` sidecars. Live verdict: 10,773 / 737 / 9 of 11,519, reconstruction 1 of 9 stamp classes | `python src/provenance_census.py --reconstruct --corroborate` · `--json` · `--selftest` | 08/26 | Re-deriving the asserted share, or attempting a git-history backfill of the pre-04-07-2026 era ([GAPS §19](https://github.com/gasyoun/SanskritLexicography/blob/master/GAPS.md), [FINDINGS §621](https://github.com/gasyoun/SanskritLexicography/blob/master/FINDINGS.md)) · [provenance_census.py](https://github.com/gasyoun/SanskritLexicography/blob/master/RussianTranslation/src/provenance_census.py) · [census report](https://github.com/gasyoun/SanskritLexicography/blob/master/RussianTranslation/reports/PWG_RU_PROVENANCE_CENSUS_31-08-2026.md) · [backfill spec](https://github.com/gasyoun/SanskritLexicography/blob/master/RussianTranslation/docs/SPEC_PWG_RU_PROVENANCE_BACKFILL_31-08-2026.md) |
| L16 | PWG `<ab>` abbreviation bucketer (H3959) | The RU-column abbreviation policy as three **explicit, disjoint** sets in [`pwg_ab_ru.py`](https://github.com/gasyoun/SanskritLexicography/blob/master/RussianTranslation/src/pwg_ab_ru.py) — `RU_MAP` (122 Bucket-A tokens → Russian, all values Cyrillic), `BUCKET_B` (138 grammatical sigla that stay international Latin), `RESIDUE` (14 declared-undecided, each with a reason). `census` is the gate: it classifies every `<ab>` token in the store and **exits 1** on any token outside all three sets or any non-Cyrillic `RU_MAP` value. Live split over 12,194 occurrences / 272 distinct: B 53.0 % · A-mapped 46.8 % · residue 0.1 % · **A-unmapped 0.0 %**. Ruling: MG 02-09-2026, «some remain Latin, none remain German, most German become Russian and do not become Latin» | `python src/pwg_ab_ru.py census` · `lookup "v. l."` · `coverage` | 09/26 | Guessing a token's bucket, re-deriving the frequency table, or inferring "not in `RU_MAP`" = Bucket B (the defect the ruling outlawed) ([CONTRADICTIONS §4](https://github.com/gasyoun/SanskritLexicography/blob/master/CONTRADICTIONS.md)) · [pwg_ab_ru.py](https://github.com/gasyoun/SanskritLexicography/blob/master/RussianTranslation/src/pwg_ab_ru.py) · [ABBREVIATIONS_RU.md](https://github.com/gasyoun/SanskritLexicography/blob/master/RussianTranslation/ABBREVIATIONS_RU.md) |
| L17 | PWG four-tier enumeration reader + store-impact meter (H3948) | PWG numbers senses on **four** distinct printed enumeration tiers, not two; [microstructure.py](https://github.com/gasyoun/SanskritLexicography/blob/master/RussianTranslation/src/microstructure.py) is the one sanctioned reading of all four, and [pwg_four_tier_store_impact.py](https://github.com/gasyoun/SanskritLexicography/blob/master/RussianTranslation/src/pwg_four_tier_store_impact.py) measures what corrected segmentation *would* cost the existing store **without writing a row**: 3,212 of 11,462 `pwg_ru` rows affected (28.02 %) — 12 precisely resolvable · 990 unaffected · 2,210 unresolvable, i.e. a **range of 12–3,212 rows, not a figure**. Three unresolved marker classes are declared rather than guessed. | `python RussianTranslation/src/microstructure_four_tier_selftest.py` · `python RussianTranslation/src/pwg_four_tier_store_impact.py` · `python RussianTranslation/src/pwg_enum_tier_census.py` | 09/26 | Re-deriving tier rules from a marker's shape, re-counting the affected rows by hand, or bulk-re-segmenting the store on the four-tier rule without the unresolved-class filter — that last one rewrites 2,210 rows on a guess · [FINDINGS §453](https://github.com/gasyoun/SanskritLexicography/blob/master/FINDINGS.md) · [H3948_four_tier_store_impact.json](https://github.com/gasyoun/SanskritLexicography/blob/master/RussianTranslation/reports/H3948_four_tier_store_impact.json) |
| L18 | `DHĀTUP.`→Palsule coordinate concordance + sibling-source screens (H1333/H4339/H4349) | Resolves a `DHĀTUP. x,y` citation to its dhātu, artha glosses and Palsule page: **1573 of 1890 coordinates (83.2 per cent)**, built by [build_dhatup_palsule.py](https://github.com/gasyoun/SanskritLexicography/blob/master/RussianTranslation/src/build_dhatup_palsule.py) and rendered as an `<ls>` tooltip by [dhatup_palsule.py](https://github.com/gasyoun/SanskritLexicography/blob/master/RussianTranslation/src/dhatup_palsule.py). PWG is the base (1302); MW adds 271 as an **independent** witness. **H4438 retired the older 1465/1751 = 83.7 per cent: the reader saw two of PWG's three `DHĀTUP.` citation forms.** Admitting `<ls n="DHĀTUP.">4,13</ls>` (320 occurrences, 270 coordinates, 141 cited no other way) grew the denominator by 139; the two rates are over different denominators and are not comparable, and the newer table agrees with Monier-Williams — the one independent witness — **80.1 per cent against the old 77.7**. The reusable part is the screens: same-book conflict, membership in PWG's own citation set, corpus-derived coordinate ceilings, and a Böhtlingk-family variant-reading guard — any future sibling source is screened through them, and pw + PWG's dotted-id articles are measured and empty. **Two scoping facts a reuser needs before trusting any of it:** the variant-reading guard is CLAUSE-scoped, not line-scoped (a note governs a citation only when nothing but punctuation separates them — line-scoped it fires on 331 pairs and is wrong for 166), and the coordinate ceiling is built from the citation forms that repeat `DHĀTUP.` in visible text beside the numbers, because the third form does not and therefore carries no local redundancy against which a gaṇa carried over from the citation before it would show. **Since H4386 the screens are mandatory, not opt-in** (keyword-only, defaultless, and validated to be a real non-empty `set`/`frozenset` — a defaultless signature alone let a call site pass `frozenset()` and rebuild the exact row H4349 shipped wrong), the exemption is the named `NO_SAME_BOOK_CONFLICTS` sentinel, and the artifact is pinned to the builder by `_stats.builder_sha256`. Measured honestly: **2 of the 4 sibling screens change the shipped table**; the variant guard is standing, not live — it refuses 0 rows today and its port to the Böhtlingk family is a proven zero diff. The ceiling screen stopped being order-shadowed in H4438: it now refuses `6,113` and `27,71`, two coordinates the third citation form claimed above everything their gaṇa attests, one of them Böhtlingk's own Bhartṛhari locus and one a gaṇa carried forward from the citation before it (Monier-Williams reads it `xxvi, 71`, not `xxvii`). [dhatup_h4349_verify.py](https://github.com/gasyoun/SanskritLexicography/blob/master/RussianTranslation/src/pilot/dhatup_h4349_verify.py) re-derives every published number from the artifact and the raw corpora without importing the builder (35 checks), and [dhatup_h4438_scope_probe.py](https://github.com/gasyoun/SanskritLexicography/blob/master/RussianTranslation/src/pilot/dhatup_h4438_scope_probe.py) re-derives the three scoping corrections and the citation-form ruling the same way (39 checks); both exit 2 rather than 0 when the corpora are absent. | 09/26 | Re-deriving a coordinate table per session · [ABBREVIATIONS_RU.md](https://github.com/gasyoun/SanskritLexicography/blob/master/RussianTranslation/ABBREVIATIONS_RU.md) |
| L19 | `!Gasuns Concordance` Palsule-hubbed six-source dhātupāṭha crosswalk (H4478) | MG's own 2013-14 merge state, landed verbatim from yadisk `Sanskrityatina/09_Palsule/`: **5 183 rows / 3 690 Palsule root entries** side by side with the same root's location in PWG (том-кол. 2 390), PWK (1 983), Whitney Roots (1 692), Mayrhofer EWA (841) and Werba VIA I (617); 178 rows carry all six witnesses. Built by [build_dhatup_multisource_crosswalk.py](https://github.com/gasyoun/SanskritLexicography/blob/master/RussianTranslation/src/build_dhatup_multisource_crosswalk.py) → [dhatup_multisource_crosswalk.json](https://github.com/gasyoun/SanskritLexicography/blob/master/RussianTranslation/src/data/dhatup_multisource_crosswalk.json), raw gitignored under `pwg_ru/eval/palsule_yadisk/` (H1333 derived-only precedent). Joins to L18 on the Palsule root string — FINDINGS §90's homonym caveat applies; the JSON records the author's merge state, it does not complete it (empty = his build had no entry there). Full 39-workbook verdict census — `Palsule_Artha_24_01_2014.xlsx` byte-identical to the landed raw, BUOM-TNPEIH 255 k×14 src word-form concordance a separate NEW class (skip; `tmp/` b15 build supersedes the named b3), Bayarin/Panini Devanagari+IAST dhatu-index family registered as the survey §2/§3 root-join artha witness — in [PALSULE_YADISK_CORPUS_SCHEMA_AND_VERDICT_10-09-2026.md](https://github.com/gasyoun/SanskritLexicography/blob/master/RussianTranslation/docs/PALSULE_YADISK_CORPUS_SCHEMA_AND_VERDICT_10-09-2026.md). | 09/26 | Re-deriving MG's Concordance from yadisk per session · [YADISK_INVENTORY_07-09-2026](https://github.com/gasyoun/Uprava/blob/main/reports/YADISK_INVENTORY_07-09-2026.md) |
| L20 | dhātu-pāṭha XML corpus layer — Westergaard + Scharf Mādhavīya (H4538) | The source XMLs behind two dhātupāṭha witnesses, landed **byte-exact** from the emailed academic package (yadisk `Sanskrityatina/05_Sanskrit-Lexicon/Jim-Peter-emailed/`, fetched 11-09-2026 via rclone) into `data/dhp/`: **Westergaard DhP** (Funderburk 2009–10, Cologne `Lexical/Funderburk/Westergaard` lineage per the four shipped readmes) in three variants — base `westwork/WestergaardDhP.xml` (DTD-valid: 35 sections, 1 491 sūtras, 1 985 `<root>` / 1 982 distinct wsid, 1 474 senses), `WestergaardDhP1.xml` (same skeleton + per-root MW `msid` crossrefs; DTD-INVALID by exactly one class — 1 949 × `No declaration for attribute msid of element root` — landed byte-exact unrepaired, parity beats prettiness), `wdp-mw.xml` (MW-linked, DTD-valid) — plus `sutras.txt` (1 637-line sūtra index); **Scharf Mādhavīya-DhP** `ScharfMDhP/MadhaviyaDhP4.xml` (DTD-valid vs `MadhaviyaDhP3.dtd`: 2 276 entries, 2 247 roots, 2 246 lemma/fullDAtu, 1 640 sūtras, 1 700 senseterms). Every landed file SHA-256-verified against the fetched yadisk originals (`shasum -a 256 -c data/dhp/SHA256SUMS.txt`); provenance + rights note (redistribution pending rights confirmation — recorded, not blocking, MG 30-07-2026) + xmllint receipts + census in [data/dhp/README.md](https://github.com/gasyoun/SanskritLexicography/blob/master/data/dhp/README.md). `helpmorphids.html` NOT re-landed (H4477 §6 overlap verdict); cross-links L18 / L19 (this layer is the source XML behind the Westergaard and Mādhavīya witnesses of the six-source crosswalk) and H4479's SanskritGrammar PhD lane. `__MACOSX/` junk and the `Archive/` MW-roots trio (roots.xml, roots-ids.xml, Whitney.txt) recorded-but-excluded. | 09/26 | Re-fetch from yadisk + `shasum -c` per session · [YADISK_05_SANSKRIT_LEXICON_TREES_CENSUS §4](https://github.com/gasyoun/SanskritLexicography/blob/master/YADISK_05_SANSKRIT_LEXICON_TREES_CENSUS_10-09-2026.md) |
| L21 | VLM OCR for scanned books — RU body + Sanskrit in Latin (`tools/ocr_vlm`, Uprava, 24-09-2026) | PyMuPDF 300-dpi render → `qwen3-vl-plus` (DashScope) with the italics-first prompt v3 (quotations-are-roman negative rule, IAST ending anchors, `[^N]` footnotes, hyphen merge), 4 workers ≈ 4 min / 53 pp; measured on Stch.pdf (Shcherbatskoi 1988): **232 IAST diacritics + 377 italic spans** vs gemini-2.5-flash 166/393; Tesseract `rus`/`rus+eng` and the embedded Acrobat layer 0/0 | `python tools/ocr_vlm/batch_full.py` (paths edited per book) → `assemble.py` → QA 2–3 pages against the scan | 09/26 | Running Tesseract on mixed Cyrillic+IAST scans (Latin→Cyrillic lookalikes, zero diacritics) or trusting the embedded Acrobat OCR layer (zero diacritics book-wide) · [Uprava/tools/ocr_vlm](https://github.com/gasyoun/Uprava/tree/main/tools/ocr_vlm) · [RECIPES §25](https://github.com/gasyoun/Uprava/blob/main/RECIPES.md) |
| L8 | ZettelkastenWiki | Canonical static-site generator for note/FAQ/wiki collections | `zettelkastenwiki build ./notes → ./public` | 07/26 | Writing site generator #5 · [ZettelkastenWiki](https://github.com/gasyoun/ZettelkastenWiki) |
| L9 | CI & hygiene templates | CodeQL, Dependabot (+auto-merge), pre-commit, CoC, branch protection via `/cologne-*` skills | `/cologne-codeql-all · /cologne-dependabot-all` | 06/26 | Hand-writing CI per repo · [SHARED_CODE.md](https://github.com/gasyoun/github-spine/blob/main/SHARED_CODE.md) |

### M · Call it — external stacks (don't clone)

| ID | Stack | What it is | Example (usage) | Intro | Reuse rule · Home |
|---|---|---|---|---|---|
| M10 | Samsaadhanii / SCL (Amba Kulkarni, UoHyd) | Morph analyzer, sandhi/segmenter, Pāṇinian parser, Amarakośa net, Dhātupāṭha | `GET …/scl/…/morph.cgi?word=Bavati → morphology` | 12/25 † | Call the live JSON APIs; don't clone the GPL source · [SAMSAADHANII_INDEX.md](https://github.com/gasyoun/SanskritLexicography/blob/master/SAMSAADHANII_INDEX.md) |
| M11 | Sanskrit Heritage (Gérard Huet, INRIA) | Dictionary + morphology + segmenter (LGPLLR): DICO, MW-aligned pages, frequency TSVs | `DICO/1.html#akaara → Heritage gloss + morphology` | 03/25 † | Pull from the GitHub mirror (INRIA is bot-walled) · [Heritage_Resources](https://github.com/darkone23/Heritage_Resources) |
| M12 | DharmaMitra (Berkeley) | AI-translation stack; GPU morphology supplier to csl-atlas | `Translate · Deep-Research (with references) · segmentation · OCR` | 05/26 † | Reuse their MT error taxonomy; prospective Kosh-API consumer · [dharmamitra.org](https://dharmamitra.org/) |
| M13 | VedaWeb (Cologne / UZH, CC BY 4.0) | Accented Rig-Veda + per-word morphology, C-SALT-linked | `bulk-export accented RV text + per-word UZH morphology` | 10/24 † | The validation set for the Vedic accent axis — export once · [vedaweb.uni-koeln.de](https://vedaweb.uni-koeln.de/rigveda/) |
| M14 | vidyut (Ambuda) | Rust Sanskrit toolkit: kosha FST lexicon, prakriyā generator, cheda segmenter, chandas meter | `from vidyut.kosha import Kosha; k.get("Bavati")` | 01/25 † | Hand-rolling paradigm generation · [vidyut](https://github.com/ambuda-org/vidyut) |

† External stacks: **Intro** shows the **last update** (not a first-introduced date), each from a documented source of truth —
M10 [SCL site footer "Updated 25 Dec 2025"](https://sanskrit.uohyd.ac.in/scl/) ·
M11 [Heritage mirror latest commit 2025-03-02](https://github.com/darkone23/Heritage_Resources) (live INRIA site bot-walled) ·
M12 [DharmaMitra news feed — Segment View 2026-05-11](https://dharmamitra.github.io/dharmamitra-guides/news/) ·
M13 [VedaWeb Zenodo data v2, 2024-10-25](https://doi.org/10.5281/zenodo.15489124) ·
M14 [vidyut GitHub release py-0.4.0, 2025-01-22](https://github.com/ambuda-org/vidyut/releases).

*The **vidyut** engine (M14) is what `build_vidyut_fallback.py` (L6) calls, and what generates
`vidyut_form2lemma.tsv` (E29) and the Zaliznyak-index paradigms (E31) — one cluster, three entries
across two sections. The interactive artifact makes that link a clickable `#vidyut` tag.*

---

## V. Drills & practice content — learner-facing exercises

Where sections I–IV catalogue the *research* assets, this section catalogues the **learner-facing
drill content** — the practice sets a student actually works through. IDs use the `P` (pedagogy)
prefix. **~900+ fixed** authored drill items live across **7 repos**, plus several **dynamically
generated** drills (marked *dynamic*) and the 2,181-rule graded sandhi curriculum (P2) the kosha
drills are cut from. The literal word "drill" is rare in the tree — this content lives under
*exercises / quizzes / flashcards / karaoke / SRS*, which is why it went uncatalogued until now.
Drill **generators** (the `sandhi-*` workflow skills) are tooling, not content, and are excluded.

| ID | Drill (what it trains) | Count | Format | Status | Intro | Home |
|---|---|---|---|---|---|---|
| P1 | kosha **sandhi drills** — join / split / identify-class, graded over 10 lessons, corpus-attested with same-class distractors | **396** (132×3) + Anki | JSON·TSV·apkg·web | 🟢 Live | 07/26 | [sandhi_drills.json](https://github.com/gasyoun/kosha/blob/main/data/sandhi/sandhi_drills.json) |
| P2 | kosha **graded sandhi curriculum** — the syllabus behind P1, rules ranked by reading-coverage | 2,181 rules · 10 lessons | TSV·HTML | 🟢 Live | 07/26 | [sandhi_curriculum.tsv](https://github.com/gasyoun/kosha/blob/main/data/sandhi/sandhi_curriculum.tsv) |
| P3 | csl-guides **quiz suite** — sandhi · samāsa · devanāgarī · translit · MW-dictionary · which-dictionary · level-diagnostic · vocabulary | **208 Q** · 8 sets | JSON·React `<Quiz>` | 🟢 Live | 06/26 | [src/data/](https://github.com/sanskrit-lexicon/csl-guides/tree/main/src/data) |
| P4 | Systema **grammar exercise widgets** — gender-sort (24) · noun→pronoun agreement (18) · verb-root match (11) · cloze verb-fill (11) + build-your-own generator | **64** fixed · 4 sets + tool | HTML/JS widgets | 🟢 Live | 07/26 | [public/lila/](https://github.com/gasyoun/Systema-Sanscriticum/tree/main/public/lila) |
| P5 | Systema **SRS vocabulary decks** — spaced-repetition Sanskrit vocab (full FSRS engine) | 2 decks · *dynamic* cards | LMS feature | 🟢 Live | 07/26 | [SrsSanskritDeckSeeder.php](https://github.com/gasyoun/Systema-Sanscriticum/blob/main/database/seeders/SrsSanskritDeckSeeder.php) |
| P6 | Systema **Marathon diagnostic quizzes** — letters · vowel-length · real-word · IAST · frequency · sandhi | 14 steps | LMS config + Blade | 🟢 Live | 07/26 | [config/marathon.php](https://github.com/gasyoun/Systema-Sanscriticum/blob/main/config/marathon.php) |
| P7 | SanskritKaraoke **recitation & metre practice** — verse recitation + meter-ID / fill-syllable / beat-tap, with SM-2 verse recall | 13 verses + 3 quiz types (*generated*) | JSON · web player | 🟢 Live | 05/26 | [verses/data/](https://github.com/gasyoun/SanskritKaraoke/tree/main/verses/data) |
| P8 | WhitneyRoots **root↔meaning quiz** — verb-root vocabulary, 4-option MC both directions | 10/round from 935-entry pool (*generated*) | JS web feature | 🟢 Live | 05/26 | [src/core/quiz.js](https://github.com/gasyoun/WhitneyRoots/blob/main/src/core/quiz.js) |
| P9 | VisualDCS **verb-form flashcards** — surface form → root / meaning / tense-type, DCS-frequency ranked | 200 cards | Anki-compact JSON | 🟢 Live | 05/26 | [anki_compact.json](https://github.com/gasyoun/VisualDCS/blob/main/visual/anki_compact.json) |
| P10 | SanskritGrammar **interactive widgets** — SandhiCollider (vowel-sandhi, 7×11 combos) + ablaut / reduplication / heteroclisis / seṭ sandboxes | 5 widgets | React (Docusaurus) | 🟢 Live | 07/26 | [components/talmud/](https://github.com/gasyoun/SanskritGrammar/tree/main/src/components/talmud) |
| P11 | SanskritGrammar **Apte 1885 composition exercises** — Sanskrit composition/translation, digitized classic textbook (prose, not an interactive engine) | ~18 exercises + solved set | MDX textbook | ◐ Digitized | 07/26 | [Apte-Composition1885-final-lessons.mdx](https://github.com/gasyoun/SanskritGrammar/blob/main/ApteSyntax_1885/src/01_Apte/Apte-Composition1885-final-lessons.mdx) |
| P12 | samskrtam.ru **akshara crossword + bandha (citrakāvya) explorers** — [auto-generated akshara crossword](https://samskrtam.ru/crossword/) (4 word sets, IAST/deva input, MW links, shape-pinned layout engine v2) + [/crossword/bandha/](https://samskrtam.ru/crossword/bandha/) RU/EN teaching article and 4 tap-to-trace figure-verse explorers (sarvatobhadra ŚPV 19.27, gomūtrikā 19.46, cakrabandha 19.120, padmabandha new composition), reading paths gated by `verify_bandha.py` | 4 word sets (~40 words) + 4 bandha specimens (21 verified paths) | JS web app + JSON data | 🟢 Live | 08/26 | [Uprava/crossword/](https://github.com/gasyoun/Uprava/tree/main/crossword) (private source; public surface is the FTP copy) |

**Counts.** P1 (396), P3 (208), P9 (200), P4 (64), P6 (14 steps), P7 (13 verses), P11 (~18) are
**fixed** authored items, verified by reading the files. Two are **dynamic**: P5's SRS cards derive
from the runtime `DictionaryWord` table and P8 generates 10 questions/round from its 935-entry
lexicon — neither has a fixed count in-repo. P11's "~18" is a lower bound (count of "exercise"
markers in the MDX). Status: 🟢 live · ◐ digitized (not yet an interactive engine).

**Not drills (out of scope).** The `sandhi-*` workflow skills *generate* drills but hold no content;
inflection engines (csl-inflect, MWinflect, ScharfSandhi, SamudraManthanam `paradigms.py`) produce
paradigms, not learner exercises; "which course suits you" quizzes (ORS-FAQ, the Systema shop) and
BookIndex's Russian-linguistics quiz are not Sanskrit-language drills.

---

## VI. Methods & algorithms — the named procedures behind the assets

Where sections I–V catalogue *what exists*, this section catalogues **how it was computed**: the
named computational methods the project implements, adapts, or consumes — distinct from the *code
files* they live in ([`SHARED_CODE.md`](https://github.com/gasyoun/github-spine/blob/main/SHARED_CODE.md)),
the *datasets they output* (§I above · [`datasets.json`](https://github.com/gasyoun/kosha/blob/main/data/manifest/datasets.json)),
and the *reproduction recipes* ([`RECIPES.md`](https://github.com/gasyoun/SanskritLexicography/blob/master/RECIPES.md)).
IDs use the **`Q`** prefix. **Origin:** **N** ours-novel / non-textbook · **S** ours, a standard
method in an in-house implementation · **A** adapted from a named external source · **X** external,
consumed not implemented. Rows collapse tight method-families; the exhaustive ~70-method sweep behind
this section (every path verified) is recorded in
Several rows pair with a tool/stack entry above — Q2 ↔ L1 (`sanskrit-util`), Q15–Q16 ↔ M14 (`vidyut`),
Q5 ↔ Charles Li's helayo.

### Transliteration & normalization keys

| ID | Method | What it does | Origin | Home |
|---|---|---|---|---|
| Q1 | Normalization-key family (`norm` / `nfold` / `form_key` / `slp1_norm` / `slp1_simplify`) | Split lookup / compare / fuzzy-fold keys, each trading reversibility vs length- vs case-sensitivity | N | [sanskrit-util](https://github.com/sanskrit-lexicon/sanskrit-util/blob/main/py/sanskrit_util/__init__.py) |
| Q2 | FSM XML transcoder | Finite-state IAST/SLP1/Devanāgarī transcode driven by XML scheme tables (dict builds; 62+ copies) | A | [csl-apidev](https://github.com/sanskrit-lexicon/csl-apidev/blob/main/simple-search/simpleslp/transcoder.py) |
| Q3 | Longest-match roman→SLP1 | Greedy longest-prefix scheme substitution | S | [csl-apidev](https://github.com/sanskrit-lexicon/csl-apidev/blob/main/simple-search/wf1/build_wf_from_dcs.py) |

### Alignment & witness collation (Sa↔Sa)

| ID | Method | What it does | Origin | Home |
|---|---|---|---|---|
| Q4 | Gotoh affine-gap alignment + Sanskrit near-equivalence substitution matrix | Optimal edit-path verse collation scoring ā~a, ṃ~m, ś~ṣ, n~ṇ as *near*, not mismatch | S·N | [CommentaryStrategies](https://github.com/gasyoun/CommentaryStrategies/blob/main/scripts/spike_helayo_align.py) |
| Q5 | Center-Star multiple-sequence alignment | Multi-witness consensus collation for critical editions | X | [helayo](https://github.com/chchch/sanskrit-alignment) |
| Q6 | Critical-apparatus locus collapse | Aligned columns → readable `lemma ] variant` apparatus notation | N | [CommentaryStrategies](https://github.com/gasyoun/CommentaryStrategies/blob/main/scripts/build_edition_apparatus.py) |
| Q7 | difflib LCS + token-set Jaccard + asymmetric containment | Verse-similarity / parallel-recovery family (containment chosen over Jaccard for ṭīkā→verse) | S·N | [CommentaryStrategies](https://github.com/gasyoun/CommentaryStrategies/blob/main/scripts/sa_align.py) |
| Q8 | Char n-gram Jaccard + inverted index | Fuzzy MBH-census match of vulgate verses to App. I print apparatus | S | [CommentaryStrategies](https://github.com/gasyoun/CommentaryStrategies/blob/main/scripts/verify_mbh_apparatus_against_print.py) |

### Cross-language bitext alignment & translation-memory

| ID | Method | What it does | Origin | Home |
|---|---|---|---|---|
| Q9 | DeepSeek LLM word alignment | Verse-level Sa↔Ru content-word pairing (1.09 M pairs → A1) | X | [build_corpus_lexicon.py](https://github.com/gasyoun/SanskritLexicography/blob/master/RussianTranslation/src/build_corpus_lexicon.py) |
| Q10 | SimAlign mutual-argmax (mBERT cosine) | Cross-lingual word alignment from subword embeddings | A | [tm_align.py](https://github.com/gasyoun/SanskritLexicography/blob/master/RussianTranslation/src/tm_align.py) |
| Q11 | Composite A/B/C TM grader (+ ref-free QE proxy · consensus · grounding proxy) | Bespoke QE/consensus stack scoring each unit → publication grade A/B/C | N | [tm_grade.py](https://github.com/gasyoun/SanskritLexicography/blob/master/RussianTranslation/src/tm_grade.py) |

### Morphology, roots, sandhi & grammar

| ID | Method | What it does | Origin | Home |
|---|---|---|---|---|
| Q12 | Flatten-all CoNLL-U morphology ingest | Dynamic-schema SQLite build; each FEATS/MISC key → its own column | N | [import_dcs_conllu.py](https://github.com/gasyoun/VisualDCS/blob/main/src/DCS-data-2026/import_dcs_conllu.py) |
| Q13 | Three-way root triangulation | MW ↔ Whitney hub ↔ DCS join on the normalised root | N | [root_triangulation.py](https://github.com/gasyoun/WhitneyRoots/blob/main/scripts/root_triangulation.py) |
| Q14 | Homonym disambiguation (gaṇa-overlap + DCS lemma_id token-split) | Attributes corpus counts to the correct homonym via class intersection / DCS's own split | N | [dict_align.py](https://github.com/gasyoun/WhitneyRoots/blob/main/scripts/dict_align.py) · [token_disambiguate.py](https://github.com/gasyoun/WhitneyRoots/blob/main/scripts/token_disambiguate.py) |
| Q15 | vidyut it-lopa two-gate paradigm binding | Binds dhātu to homonym via it-lopa derivation history + gaṇa / present-stem corroboration gates | A·N | [vidyut_paradigms.py](https://github.com/gasyoun/WhitneyRoots/blob/main/scripts/vidyut_paradigms.py) |
| Q16 | Preverb (upasarga) segmentation + MW cross-map | Segments a headword into preverb+root, matches MW preverbs | N | [PWG verbs01](https://github.com/sanskrit-lexicon/PWG/blob/main/verbs01/preverb1.py) |
| Q17 | `<ls>` citation-reference splitting + siglum→authority difflib matcher | Splits compound citations into per-part links; fuzzy-links unlinked sigla to canonical authorities | N·S | [link_expand.py](https://github.com/sanskrit-lexicon/MWS/blob/master/mwsissues/issue182/link_expand.py) · [link_candidates.py](https://github.com/sanskrit-lexicon/MWS/blob/master/mwauthorities/link_candidates/link_candidates.py) |
| Q18 | Vowel-sandhi coalescence + ablaut-series calculators | savarṇa / guṇa / vṛddhi / yaṇ surface + grade→surface tables (Whitney/Zaliznyak) | S | [SandhiCollider.jsx](https://github.com/gasyoun/SanskritGrammar/blob/main/src/components/talmud/SandhiCollider.jsx) |

### Classifiers, register, stylometry & phonostatistics

| ID | Method | What it does | Origin | Home |
|---|---|---|---|---|
| Q19 | DCS phono segmentation engine + varga×epoch Cramér's V | IAST→SLP1 akṣara/varṇa/ligature segmentation + diachronic association statistic | N·S | [dcs_phono_engine.py](https://github.com/gasyoun/VisualDCS/blob/main/derived-data/Fonetika/regen-2026/dcs_phono_engine.py) · [varga_engine.py](https://github.com/gasyoun/VisualDCS/blob/main/derived-data/Fonetika/varga-series-diachrony/varga_engine.py) |
| Q20 | Quantifier metalanguage register "anchoredness" method | Tags gradation quantifiers ANCHORED/UNANCHORED; window-sweep + precision/recall on a hand-scored sample | N | [harvest_quantifiers.py](https://github.com/gasyoun/SanskritGrammar/blob/main/scripts/harvest_quantifiers.py) |
| Q21 | Renou era (I–V) tagger + 20-code register classifier | Multi-label diachronic + genre-register tagging of senses. ⚠ **register classifier is defective** (unanchored `Insch?r` regex spuriously tags `épig`); era tagger has a homograph-collapse caveat | N | [renou.py](https://github.com/gasyoun/SanskritLexicography/blob/master/RussianTranslation/src/renou.py) · [renou_register.py](https://github.com/gasyoun/SanskritLexicography/blob/master/RussianTranslation/src/renou_register.py) |
| Q22 | Ortho-drift transform-and-check (5 langs) + drift→year dating | Spelling-reform drift detector (Latin = negative control); regresses drift-rate to a date | N·S | [ortho_drift.py](https://github.com/drdhaval2785/SanskritSpellCheck/blob/master/detectors/ortho_drift.py) |
| Q23 | SpellCheck detector suite | Cross-lexicon error-mining over a Sanskrit confusion model: faultfinder · consensus/intra_dup/dict_vs_corpus vote · phonotactic · n-gram · noisy-channel · 3-way meter vote | N | [detectors/](https://github.com/drdhaval2785/SanskritSpellCheck/tree/master/detectors) |
| Q24 | Titov parametric core | Quantitative-lexicology core (∪ big-core / ∩ small-core of four parametric cores) | A | [titov_parametric_core.py](https://github.com/gasyoun/Uprava/blob/main/research/titov_parametric_core.py) |

### Search, ranking, OCR & ingestion

| ID | Method | What it does | Origin | Home |
|---|---|---|---|---|
| Q25 | Devanāgarī reverse-dictionary sort | Reverses akṣaras + phonological normalization, then last-letter-first collation | N | [reverse15.php](https://github.com/gasyoun/SanskritSorting/blob/master/reverse15.php) |
| Q26 | Simple-search forgiving lookup | Recursive equivalence-class variant expansion + `ngramValidate` prefix pruning + wf ranking — a recall-first Sanskrit candidate generator | N | [simple_search.php](https://github.com/sanskrit-lexicon/csl-apidev/blob/main/simple-search/v1.1/simple_search.php) |
| Q27 | Word-frequency ranking (wf0/wf1) + DCS↔CDSL xref | Orders candidates by DCS token counts; builds the DCS↔CDSL linkset (C15) | N | [build_wf_from_dcs.py](https://github.com/sanskrit-lexicon/csl-apidev/blob/main/simple-search/wf1/build_wf_from_dcs.py) · [build_xref.py](https://github.com/sanskrit-lexicon/csl-apidev/blob/main/simple-search/dcs_xref/build_xref.py) |
| Q28 | Vision-OCR pipelines (preface + commentary) | LLM vision-OCR of front-matter / translator commentaries → faithful Markdown + corpus (recognition external; orchestration + post-correction ours) | A | [CommentaryStrategies GEMINI.md](https://github.com/gasyoun/CommentaryStrategies/blob/main/docs/GEMINI.md) |
| Q29 | PPV statistical hypothesis pipeline + L1/L2 scholar classification | chi²/Fisher/Kruskal/Spearman over the scholar DB; rule-based discipline classification with uncertainty gating | S·N | [work_ppv_hypotheses.py](https://github.com/gasyoun/IndologyScholars/blob/main/article/work_ppv_hypotheses.py) · [verification.py](https://github.com/gasyoun/IndologyScholars/blob/main/pipeline/verification.py) |
| Q30 | Code-duplication census | Groups every `.py/.sh/.php` by basename + content hash to count copies / versions / drift org-wide | N | [code_duplication_census.py](https://github.com/sanskrit-lexicon/csl-observatory/blob/main/scripts/code_duplication_census.py) |

**Not catalogued here (out of scope).** Trivial glue (file I/O, config parsing, plain string concat);
one-off Python-2 issue-forensics scripts (frozen 2015–2017 correction artifacts); and the *outputs*
of these methods, which are the datasets in §I. The novelty grades are the compiling session's
judgement, not a literature audit — treat **N** as "no off-the-shelf equivalent found," not a
priority claim.

---

## Contributing — add your dataset, tool or interface

Anyone can propose an asset. Open an issue on
[`SanskritLexicography`](https://github.com/gasyoun/SanskritLexicography/issues/new?title=Add+asset+to+Features+Index&labels=features-index)
with these fields, and it gets added to this file and the interactive index:

| Field | Example |
|---|---|
| **Name** | `my_crosswalk.tsv` |
| **Category** | data / interface / tool |
| **One-line description** | what it is, in a sentence |
| **Size** | count + on-disk size (e.g. `12,946 rows · 618 KB`) |
| **Example** | one real sample row, or a usage snippet |
| **Repo / source URL** | the file or repo it lives in |
| **Tags** | `#topic` clusters + `@yoursurname` |
| **First introduced** | `MM/YY` |

New assets are appended to the **Changelog** below with the date they were added.

---

## Changelog

_Newest first. A dated line lands here whenever assets are added or retired — the same changelog
is rendered on the interactive artifact._

| When | Change |
|---|---|
| 09/26 | **F50** — SanskritScienceBench (SSB) pilot task pack registered: 30 GeneBench-shaped verifiable tasks (F1 sandhi/F2 claims/F3 extraction/F4 XML correction) plus grading (`ssb_grade.py`), N-run eval harness, and a 5-task agent-ready canary in [`Uprava/tasks/`](https://github.com/gasyoun/Uprava/blob/main/tasks) (W2.4, `/roadmap-item-exec` A09). |
| 08/26 | **P12** — samskrtam.ru akshara crossword (waves H1986/H2904/H2905/H2942) + the new [/crossword/bandha/](https://samskrtam.ru/crossword/bandha/) citrakāvya section (H2943): RU/EN teaching article (sarvatobhadra as the crossword's classical ancestor) + 4 interactive bandha explorers with mechanically verified reading paths (GRETIL Śiśupālavadha etext, paths after Chakraborty 2018); first learner-facing set living in Uprava with a public FTP surface. |
| 07/26 | **G3 refresh** — kosha P5 D4 static head + SSR exit (H1590): N=11,148 / 10,370 pages / 184.9 MB; crawlable `/w/{slp1}` + [exit packet](https://github.com/gasyoun/kosha/blob/main/docs/P5_WORD_PAGE_EXIT_PACKET.md); [kosha PR #192](https://github.com/gasyoun/kosha/pull/192) / [v0.91.0](https://github.com/gasyoun/kosha/releases/tag/v0.91.0). Live Lighthouse/walkthrough still MG deploy-gated. |
| 07/26 | **F47** — the PWG scan-index campaign registry: the 2025–26 volunteer page-indexing effort turned from a live Google Sheet into committed, cross-validated data in csl-observatory (H1706, [PR #107](https://github.com/sanskrit-lexicon/csl-observatory/pull/107), [v1.5.0](https://github.com/sanskrit-lexicon/csl-observatory/releases/tag/v1.5.0)). 55/82 works indexed = 73.7% of tracked citation mass, 28,963 pp, 8 volunteers; 37 scan repos ≈ 11.2 GB verified live. Surfaced an integrity defect in `ls_resolver` ([#826](https://github.com/gasyoun/SanskritLexicography/issues/826)). |
| 07/26 | **F45** — Laukika-nyāya (Jacob's "Handful of Popular Maxims") reaches its ≥400-record target, 404 records (H803): a 21-07-2026 `prev_is_prose()` pipeline-wide fix (adversarially verified, 50-agent ultracode workflow) recovers 27 more headword boundaries with zero records lost, closing the last open deliverable of the 2004 AIOC-Varanasi manifesto («Сентенции и афористические цитаты»). |
| 07/26 | **E48** — kosha Pāṇinian sūtra↔corpus concordance (H1390, W2b): inverts the W2a vidyut-derivation harness into one row per (sūtra, attested DCS form, corpus locus) triple — 893,482 rows from 72,764 `ok`-status forms across 221 distinct sūtras, 7/8 adhyāyas; [kosha PR #155](https://github.com/gasyoun/kosha/pull/155) merged, [v0.73.0](https://github.com/gasyoun/kosha/releases/tag/v0.73.0). Independently reviewed PASS same day. Ambiguous-status forms (86,857) parked — not yet invertible from W2a's shipped output. |
| 07/26 | **E47** — witness-independence map + union corroboration re-audit (H1363): operationalizes [FINDINGS §83/§97](https://github.com/gasyoun/SanskritLexicography/blob/master/FINDINGS.md) over the 15-dict union — derivation graph, witness-family partition ([witness_tiers.json](https://github.com/gasyoun/SanskritLexicography/blob/master/data/witness_tiers.json)), and a P0..P4 collapse ladder recomputing "in N dicts" over independent families. Corroborated share 55.9% → 34.7% when MW folds into the Petersburg witness; Apte kept independent per §83. |
| 07/26 | **F44** — INDOLOGY-L mailing-list archive atlas (62,115 messages, 24,034 threads) split out of IndologyScholars into its own citable repo, [`IndologyArchiveAtlas`](https://github.com/gasyoun/IndologyArchiveAtlas) (H460), full history preserved. |
| 07/26 | **Q1–Q30 · Section VI** — the project's **algorithms & methods** catalogued for the first time (H1202): 30 method-family rows across transliteration/keys, Sa↔Sa alignment & collation, bitext & translation-memory, morphology/roots/sandhi, classifiers/register/phonostatistics, and search/OCR/ingestion, each graded N/S/A/X (novel · standard · adapted · external) with its home file; introduces the `Q` (methods) ID prefix and flags the known-defective Renou register classifier (Q21). Answers "what methods do we use, which are novel, which are external" — previously tracked only obliquely via SHARED_CODE (code), datasets.json (outputs), and RECIPES (reproduction). |
| 07/26 | **P1–P11 · Section V** — learner-facing **drills & practice content** catalogued for the first time: 11 sets across 7 repos (~900+ fixed items), the largest being kosha's 396-item sandhi drill pack (P1), csl-guides' 208-question quiz suite (P3), and VisualDCS' 200-card verb-form deck (P9); introduces the `P` (pedagogy) ID prefix. Excludes the `sandhi-*` drill *generator* skills (tooling, not content). |
| 07/26 | **E43–E46** — H817 WS1.2 closes 3 of 5 descriptive census rows in [ROADMAP_STATISTICS_ORG_CENSUS_2026_2027.md](https://github.com/gasyoun/SanskritLexicography/blob/master/ROADMAP_STATISTICS_ORG_CENSUS_2026_2027.md) Part 0 + registers 2 already-done rows the register hadn't caught up to: code-dup census + LOC/language-mix (E43, already done H688, register was stale), POS-per-text (E44, new), sense/polysemy per dict (E45, new, ◐ partial 11/44 — mirrors the A02 paper, the other 33 dicts lack a structural sense-marking convention), paradigm-cell coverage per root (E46, new, 8,054 roots). |
| 07/26 | **Interactive view built** — the promised filterable single-file HTML artifact now exists: [`features_index.html`](https://github.com/gasyoun/SanskritLexicography/blob/master/features_index.html), generated from this Markdown by [`build_features_index_html.py`](https://github.com/gasyoun/SanskritLexicography/blob/master/build_features_index_html.py) (search + category tabs + status/tier/language filters, theme-aware, zero-dependency). Closes the 2004-manifesto «Каталог каталогов» deliverable. |
| 07/26 | **C19** — semdom ↔ Amarakosha crosswalk (H742): first SIL-semantic-domains ↔ classical-thesaurus map — Level A varga map (108 ID pairs) + 5,590-synset candidate table + 200-synset dual-annotated gold (κ 0.677); bridge measured as candidate-generator-only (top-1 17.5%, [FINDINGS §76](https://github.com/gasyoun/SanskritLexicography/blob/master/FINDINGS.md)). |
| 07/26 | **E41 · E42 · F43** — the census-named tracked-but-uncounted trio registered (H694): csl-observatory correction-event log (52,498 × 3 views, 178 MB), Kompozity `names.csv` compound splits (168,880, 90.7 MB), CORRECTIONS `allngramtxt.txt` n-gram oracle (6,656,616, 82.3 MB). |
| 07/26 | **E40** — headword pairwise-overlap matrix + unique counts over the 15-dict union (H684): 105 pairs, Jaccard, per-dict unique inventories; resolves the stale "union 94,753" figure (= MW∩PWG). |
| 07/26 | **E39** — markup-tag frequency census over all 44 csl-orig/v02 dicts (H683): 96 distinct tags, per-1,000-entry rates, under-marking verdicts ([TSV](https://github.com/gasyoun/SanskritLexicography/blob/master/data/markup_tag_census.tsv) + [report](https://github.com/gasyoun/SanskritLexicography/blob/master/data/MARKUP_TAG_CENSUS_CSLORIG_2026.md)). |
| 07/26 | **E38** — `<ls>` citation-frequency graph (csl-atlas, [PR #220](https://github.com/sanskrit-lexicon/csl-atlas/pull/220)): 828,505 canonicalized citations → 912 texts across 11 dicts. |
| 07/26 | **Initial index** — 44 dictionaries · 20 interfaces (16 live) · 38 datasets · 14 tools + 4 external stacks catalogued, each with a real example, a severity tier, a first-introduced date and a stable per-section ID. |

---

_Sources: dictionary roster from [`csl-guides/src/data/dictionaries.json`](https://github.com/sanskrit-lexicon/csl-guides/blob/main/src/data/dictionaries.json)
(verified vs [`csl-orig/v02/`](https://github.com/sanskrit-lexicon/csl-orig/tree/main/v02); Cologne
lookup URLs verified for MW & AP90); interfaces, data and tools compiled from
[`SHARED_CODE.md`](https://github.com/gasyoun/github-spine/blob/main/SHARED_CODE.md),
[`PROJECT_INTERLINKS.md`](https://github.com/gasyoun/Uprava/blob/main/PROJECT_INTERLINKS.md),
[`REUSE_INDEX.md`](https://github.com/gasyoun/Uprava/blob/main/REUSE_INDEX.md) and a repository
sweep with verbatim sample rows + git first-introduced dates (03–04-07-2026)._

## Related documents (awareness weave H1728)

- Org repo census twin: [MASTER_INDEX.md](https://github.com/gasyoun/Uprava/blob/main/MASTER_INDEX.md)
- Sanskrit analysis/parsing algorithms survey (H8049, 11-11-2026): inventory + reuse-verдикты трёх слоёв (ядро по уровням · справочный · мета), 7 спот-ранов, внешний кросс-референс (DharmaMitra/vidyut/SCL/UD/Heritage), пробелы (синтаксис = build gap №1) — [SANSKRIT_ANALYSIS_ALGORITHMS_SURVEY_2026-11-11.md](https://github.com/gasyoun/Uprava/blob/main/reports/SANSKRIT_ANALYSIS_ALGORITHMS_SURVEY_2026-11-11.md) — читать перед построением или переиспользованием любого компонента разбора санскрита


_Dr. Mārcis Gasūns_
