_Created: 01-08-2026 · Last updated: 29-10-2026_
_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 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.
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 (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.
SHARED_CODE.md.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, > 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 (>10 MB) · 🟡 medium (1–10 MB) · ⚪ small (<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.
Size tier: 🟢 large (>10 MB) · 🟡 medium (1–10 MB) · ⚪ small (<1 MB). Examples are verbatim sample rows from the actual files (⚪-tier / *schema*-marked = gitignored / binary / too large, so the shape is shown).
| 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 |
| 🟢 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 |
| 🟢 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 |
| 🟢 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 |
| 🟢 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 |
| 🟢 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 |
| ⚪ 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 |
| 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 |
| 🟡 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 |
| 🟡 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 |
| ⚪ 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 |
| ⚪ 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 |
| ⚪ 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 |
| ⚪ 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 |
| ⚪ 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 |
| 🟡 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 |
| 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 |
| 🟡 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 |
| ⚪ 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 |
| ⚪ C16 | union coverage_additions.tsv | Headwords found beyond the core CDSL dictionaries | union · 711 KB | 5 nominal enad enad | 06/26 | 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 |
| 🟢 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 |
| 🟢 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); + the grammatical-annex symmetry counted by 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); 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 |
| 🟢 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; builder 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 |
|---|
| ⚪ 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 |
|---|
| 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 |
| 🟡 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 |
| 🟡 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 |
| 🟢 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 |
| 🟢 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 |
| 🟢 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 |
| 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 |
| 🟡 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 |
| 🟡 E27 | dcs_form2lemma.tsv | DCS form→lemma alignment, SLP1-keyed | 408k · 9.4 MB | ''jYAya AjYA VERB 1 | 07/26 | SanskritRussian |
| ⚪ E28 | dcs_lemma2root.tsv | DCS lemma → root mapping | 244 KB | ABA BA suffix | 07/26 | 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 |
| 🟡 E30 | surface_dcs_misses.tsv | DCS resolution-gap analysis — forms that failed DCS lookup | 6.5 MB | 'maratejasi 'maratejasi 1 … | 07/26 | 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 |
| 🟢 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 |
| 🟡 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 |
| ⚪ 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) | 671 rows · 18 KB | sch 29125 <ab> 2 0.07 (an abbreviation-tagging start that never happened) | 07/26 | 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; 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 |
| ⚪ E47 | witness-independence map + corroboration re-audit | Derivation-graph over the 15-dict union operationalizing FINDINGS §83/§97: per-edge ruling + witness-family partition + a 5-rung collapse ladder (P0..P4) recomputing the union "in N dicts" corroboration over independent families (report; machine map 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): 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 + consumer contract 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 |
| 🟢 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/ |
| 🟢 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 |
| 🟡 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 |
| ⚪ 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 + script |
| ⚪ 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 + report |
| ⚪ 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 + report |
| ⚪ 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 + report |
| ⚪ 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 · TSV · script |
| 🟡 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) | 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 · ramayana_gorresio_inventory.tsv · gorresio_etext.jsonl · builder |
| 🟡 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 + viewer |
| ⚪ 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/ |
| ⚪ 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 — 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 (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 · memo · gate |
| 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 |
| ⚪ 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 |
| ⚪ 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 |
| 🟢 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 |
| ⚪ 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 |
| 🟢 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) | 6,656,616 n-grams · 82.3 MB | aBisaMboD (one SLP1 n-gram per line) | 06/26 | CORRECTIONS/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 |
| 🟡 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 |
| 🟢 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 |
| ⚪ 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 |
| 🟢 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 + Heritage second reference + RU third reference report · data |
| 🟡 F49 | ЛЭС-1990 static dump (les-1990) | «Лингвистический энциклопедический словарь» (Ярцева, 1990, общелингвистический) as a harvested static HTML mirror — byte-identical to tapemark.narod.ru/les/, 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 |
| 🟡 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/ (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 · tasks/pilot/ · 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 · memory note · ELI5 page |
Roster from csl-guides/src/data/dictionaries.json, verified against csl-orig/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 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 either way. So: csl-orig only = no repo of any kind exists (13 such dictionaries, enumerated in the consolidation spike); "— 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 | a ↗ |
| PWG | Grosses Petersburger Wörterbuch | Skt→Ger | Böhtlingk & Roth | 1855 | 4,737 | PWG | a ↗ |
| PW | Sanskrit-Wörterbuch in kürzerer Fassung | Skt→Ger | Otto Böhtlingk | 1879 | 2,141 | PWK | a ↗ |
| GRA | Wörterbuch zum Rig-Veda | Skt→Ger | Hermann Grassmann | 1873 | 1,775 | GRA | a ↗ |
| AP90 | Apte Practical Sanskrit-English Dictionary | Skt→Eng | V. S. Apte | 1890 | 1,196 | AP90 | a ↗ |
| AP | Practical Sanskrit-English Dictionary (rev.) | Skt→Eng | Apte · Gode · Karve | 1957 | 1,768 | AP | browse ↗ |
| MW72 | Monier-Williams Sanskrit-English (1st ed.) | Skt→Eng | Monier Williams | 1872 | 1,186 | MW72 | browse ↗ |
| WIL | Wilson Sanskrit-English Dictionary | Skt→Eng | H. H. Wilson | 1832 | 982 | WIL | browse ↗ |
| YAT | Yates Sanskrit-English Dictionary | Skt→Eng | Rev. W. Yates | 1846 | 928 | csl-orig only | browse ↗ |
| GST | Goldstücker Sanskrit-English Dictionary | Skt→Eng | Theodor Goldstücker | 1856 | 334 | csl-orig only | browse ↗ |
| BEN | Benfey Sanskrit-English Dictionary | Skt→Eng | Theodore Benfey | 1866 | 1,145 | BEN | a ↗ |
| LAN | Lanman's Sanskrit Reader Vocabulary | Skt→Eng | C. R. Lanman | 1884 | 403 | csl-orig only | browse ↗ |
| LRV | Vaidya Sanskrit-English Dictionary | Skt→Eng | L. R. Vaidya | 1889 | 889 | LRV | browse ↗ |
| CAE | Cappeller Sanskrit-English Dictionary | Skt→Eng | Carl Cappeller | 1891 | 672 | CAE | a ↗ |
| MD | Macdonell Sanskrit-English Dictionary | Skt→Eng | A. A. Macdonell | 1893 | 384 | MD | a ↗ |
| SHS | Śabda-Sāgara Sanskrit-English Dictionary | Skt→Eng | J. Vidyasagara | 1900 | 839 | SHS | a ↗ |
| 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 | browse ↗ |
| MWE | Monier-Williams English-Sanskrit Dictionary | Eng→Skt | Monier Williams | 1851 | 860 | csl-orig only | A ↗ |
| BOR | Borooah English-Sanskrit Dictionary | Eng→Skt | Anundoram Borooah | 1877 | 772 | BOR | A ↗ |
| AE | Apte Student's English-Sanskrit Dictionary | Eng→Skt | V. S. Apte | 1920 | 501 | ApteES | browse ↗ |
| BUR | Burnouf Dictionnaire Sanscrit-Français | Skt→Fr | Burnouf · Leupol · Renou | 1866 | 781 | BUR | browse ↗ |
| STC | Stchoupak Dictionnaire Sanscrit-Français | Skt→Fr | Stchoupak · Nitti · Renou | 1932 | 904 | STC | browse ↗ |
| BOP | Bopp Glossarium Sanscritum | Skt→Lat | Franz Bopp | 1847 | 420 | BOP | a ↗ |
| SKD | Śabdakalpadruma | Skt→Skt | Rādhākānta Deva | 1886 | 3,164 | SKD | a ↗ |
| VCP | Vācaspatyam | Skt→Skt | Tāranātha Tarkavācaspati | 1873 | 5,407 | VCP | a ↗ |
| CCS | Cappeller Sanskrit Wörterbuch | Skt→Ger | Carl Cappeller | 1887 | 541 | CCS | browse ↗ |
| SCH | Schmidt Nachträge zum Sanskrit-Wörterbuch | Skt→Ger | Richard Schmidt | 1928 | 398 | SCH | browse ↗ |
| ARMH | Abhidhānaratnamālā of Halāyudha | Skt→Skt | Halāyudha · Aufrecht | 1861 | — | csl-orig only | browse ↗ |
| ABCH | Abhidhānacintāmaṇi of Hemacandra | Skt→Skt | Hemacandrācārya | 1896 | 58 | csl-orig only | browse ↗ |
| ACPH | Abhidhānacintāmaṇipariśiṣṭa | Skt→Skt | Hemacandrācārya | 1896 | 8 | csl-orig only | browse ↗ |
| ACSJ | Abhidhānacintāmaṇiśiloñcha of Jinadeva | Skt→Skt | Jinadeva | 1896 | 5 | csl-orig only | browse ↗ |
| NMMB | Nāmamālikā of Bhoja | Skt→Skt | Bhoja | 1955 | 40 | csl-orig only | browse ↗ |
| INM | Index to the Names in the Mahābhārata | Specialized | S. Sörensen | 1904 | 852 | INM | Abala ↗ |
| VEI | Vedic Index of Names and Subjects | Specialized | Macdonell & Keith | 1912 | 560 | VEI | Aṃśu ↗ |
| PUI | The Purāṇa Index | Specialized | V. R. R. Dikshitar | 1951 | 2,232 | PUI — venue only | browse ↗ |
| BHS | Buddhist Hybrid Sanskrit Dictionary | Specialized | Franklin Edgerton | 1953 | 634 | BHS | a ↗ |
| FRI | Friš Sanskrit Reader Vocabulary | Specialized | Oldřich Friš | 1956 | 349 | FRI | browse ↗ |
| ACC | Aufrecht's Catalogus Catalogorum | Specialized | Theodor Aufrecht | 1962 | 1,216 | ACC | browse ↗ |
| KRM | Kṛdantarūpamālā | Specialized | S. Ramasubba Sastri | 1965 | 1,489 | KRM | browse ↗ |
| IEG | Indian Epigraphical Glossary | Specialized | D. C. Sircar | 1966 | 580 | IEG — venue only | browse ↗ |
| SNP | Meulenbeld's Sanskrit Names of Plants | Specialized | G. J. Meulenbeld | 1974 | 94 | csl-orig only | browse ↗ |
| PE | Puranic Encyclopedia | Specialized | Vettam Mani | 1975 | 922 | csl-orig only | browse ↗ |
| PGN | Names in the Gupta Inscriptions | Specialized | Tej Ram Sharma | 1978 | 378 | csl-orig only | browse ↗ |
| MCI | Mahābhārata Cultural Index | Specialized | M. A. Mehendale | 1993 | 981 | MCI | browse ↗ |
By language: Skt→Eng 14 · Eng→Skt 3 · Skt→Ger 5 · Skt→Fr 2 · Skt→Lat 1 · Skt→Skt 6 · Specialized 12.
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).
| ID | Interface | What it does | Status | Try | Intro | Stack · Repo |
|---|---|---|---|---|---|---|
| G1 | Cologne Digital Sanskrit Dictionaries (CDSL) | Flagship multi-dictionary search over all 43 dicts | 🟢 Live | look up देव across all 43 dictionaries | 07/18 | PHP · SQLite · csl-websanlexicon |
| G2 | C-SALT / Kosh API | REST + GraphQL API over CDSL | 🟢 Live | call the salt_entries / salt_graphql endpoints over MW | 04/18 | PHP · SQLite · csl-apidev |
| G3 | kosha — translator-first dictionary | 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 · Salt-face decision · exit packet |
| ID | Interface | What it does | Status | Try | Intro | Stack · Repo |
|---|---|---|---|---|---|---|
| H4 | Samudra Manthanam | Parallel Sanskrit–Russian corpus with morphological search | 🟢 Live | regex + stem search across parallel Sa–Ru texts | 04/26 | FastAPI · SQLite FTS5 · SamudraManthanam |
| H5 | Sanskrit→Russian Glossary | Three-layer word-aligned glossary, fuzzy search | 🟢 Live | a form → its surface / lemma / root Russian renderings | 07/26 | Static · Fuse.js · SanskritRussian |
| H6 | Russian Rāmāyaṇa portal | Parallel-text reader + crowdfunding portal | 🟢 Live | read Book IV with the parallel Sanskrit–Russian reader | 05/26 | Static · Leaflet · RussianRamayana |
| H7 | Sanskrit Karaoke | Verse wave-diagram visualiser + karaoke exporter | 🟢 Live | wave diagram + meter detection for an anuṣṭubh verse | 04/26 | Standalone JS · Chart.js · 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 · pack data vendored from kosha cohort-start-chteniya-pack-freeze (Systema-Sanscriticum) |
| ID | Interface | What it does | Status | Try | Intro | Stack · Repo |
|---|---|---|---|---|---|---|
| I8 | CSL Observatory | Org-wide metrics + correction typology | 🟢 Live | the bus-factor and correction-typology charts | 05/26 | Observable · Python · csl-observatory |
| I9 | VisualDCS — verb-form frequency | Pareto analysis of 781,616 verb examples | 🟢 Live | the Pareto curve over 781,616 verb examples | 04/26 | Standalone HTML · Chart.js · VisualDCS |
| I10 | VisualDCS — paradigm browser | Interactive verb-form paradigm browser | 🟢 Live | 6 roots × 9 tenses × 9 person/number cells, flashcard mode | 04/26 | Standalone HTML · Chart.js · VisualDCS |
| I11 | BookIndex / Zalizniakiada | Single-file PWA over Zaliznyak's legacy | 🟢 Live | the sound-law simulator + KWIC concordance | 04/26 | D3 · Leaflet · PWA · BookIndex |
| I12 | IndologyScholars — forum archive | Network analysis over 1,362 talks | 🟢 Live | the network of 1,362 talks by 270 scholars | 04/26 | Static · D3 · RDF · IndologyScholars |
| I14 | VisualDCS — nominal paradigm | 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 |
| I15 | Кампус наглядности | Entry hub ко всей визуальной наглядности: 67 артефактов в 4 крыльях (грамматика / учёба / имение и финансы / продукты и привлечение), собирается из каталога 58 инфографик | 🟢 Live | выбрать крыло и открыть инфографику | 09/26 | Static (campus_build.py из campus_data.json, идемпотентен) · gasyoun.github.io |
| I16 | Карта мастерства | 35 517 учебных позиций × 5 drill-семей, ease-распределения и интерактивная карта из kosha mastery-слоя (H3742); stats.html — лёгкий статистический вариант | 🟢 Live | открыть семью и увидеть распределение освоимости | 09/26 | Static (mastery_map_build.py; агрегат mastery_build.py) · kosha/data/mastery |
| I13 | vk-ors wall retrospective | 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 |
| ID | Interface | What it does | Status | Try | Intro | Stack · Repo |
|---|---|---|---|---|---|---|
| J13 | 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 |
| J14 | CommentaryStrategies essays | 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) | 🟢 Live | the Mahābhārata translator-commentary comparison | 04/26 | HTML · Python · TEI P5 · CommentaryStrategies |
| J15 | SamudraManthanam corpus-FAQ | RU knowledge base via ZettelkastenWiki | 🟢 Live | the Russian corpus knowledge base | 07/26 | ZettelkastenWiki · ZettelkastenWiki |
| J16 | PWG article dashboard | 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 |
| J17 | Uprava articles dashboard | Private, local-only publication-pipeline board | 🟡 Beta | (local) the publication-readiness board over ARTICLES.md | 06/26 | HTML + articles.js · Uprava |
| J21 | kosha data & tools 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 |
| J22 | ELI5 explainer hub | 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 · gasyoun.github.io |
| ID | Interface | What it does | Status | Try | Intro | Stack · Repo |
|---|---|---|---|---|---|---|
| K18 | CSL App (Flutter) | Offline cross-platform dictionary, 50+ dicts | 🟢 Live | offline lookup with ITRANS / HK / SLP1 / Devanāgarī input | 03/26 | Flutter · Riverpod · sqflite · csl-app |
| K19 | Systema Sanscriticum | Laravel LMS for a Sanskrit school | 🟡 Beta | the student workbench + course shop | 02/26 | Laravel 10 · Filament · MySQL · Systema-Sanscriticum |
| K20 | csl-santam — Tamil lexicon search | PHP/Perl search over combined Tamil SQLite | 🟡 Beta | a Harvard-Kyoto search over 321k combined entries | 06/15 | PHP · Perl · SQLite · csl-santam |
| 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 |
| 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 · 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 |
| 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 |
| 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 |
| 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 |
| 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 |
| 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 |
| 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 · no_pwg_residual_ledger.py · 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 · H3500 report |
| 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 · gate_evidence_selftest.py · the spike |
| 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 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) · pwg_page_index.py · h3751_homonym_census.py · 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, FINDINGS §621) · provenance_census.py · census report · backfill spec |
| L16 | PWG <ab> abbreviation bucketer (H3959) | The RU-column abbreviation policy as three explicit, disjoint sets in 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) · pwg_ab_ru.py · 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 is the one sanctioned reading of all four, and 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 · 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 and rendered as an <ls> tooltip by 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 re-derives every published number from the artifact and the raw corpora without importing the builder (35 checks), and 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 | |
| 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 → 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. | 09/26 | Re-deriving MG's Concordance from yadisk per session · YADISK_INVENTORY_07-09-2026 | |
| 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. 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 | |
| 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 · RECIPES §25 |
| L8 | ZettelkastenWiki | Canonical static-site generator for note/FAQ/wiki collections | zettelkastenwiki build ./notes → ./public | 07/26 | Writing site generator #5 · 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 |
| 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 |
| 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 |
| 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 |
| 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 |
| 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 |
† 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" · M11 Heritage mirror latest commit 2025-03-02 (live INRIA site bot-walled) · M12 DharmaMitra news feed — Segment View 2026-05-11 · M13 VedaWeb Zenodo data v2, 2024-10-25 · M14 vidyut GitHub release py-0.4.0, 2025-01-22.
*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.*
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 |
| 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 |
| 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/ |
| 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/ |
| P5 | Systema SRS vocabulary decks — spaced-repetition Sanskrit vocab (full FSRS engine) | 2 decks · *dynamic* cards | LMS feature | 🟢 Live | 07/26 | 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 |
| 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/ |
| 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 |
| 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 |
| P10 | SanskritGrammar interactive widgets — SandhiCollider (vowel-sandhi, 7×11 combos) + ablaut / reduplication / heteroclisis / seṭ sandboxes | 5 widgets | React (Docusaurus) | 🟢 Live | 07/26 | 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 |
| P12 | samskrtam.ru akshara crossword + bandha (citrakāvya) explorers — auto-generated akshara crossword (4 word sets, IAST/deva input, MW links, shape-pinned layout engine v2) + /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/ (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.
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), the *datasets they output* (§I above · datasets.json), and the *reproduction recipes* (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.
| 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 |
| Q2 | FSM XML transcoder | Finite-state IAST/SLP1/Devanāgarī transcode driven by XML scheme tables (dict builds; 62+ copies) | A | csl-apidev |
| Q3 | Longest-match roman→SLP1 | Greedy longest-prefix scheme substitution | S | csl-apidev |
| 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 |
| Q5 | Center-Star multiple-sequence alignment | Multi-witness consensus collation for critical editions | X | helayo |
| Q6 | Critical-apparatus locus collapse | Aligned columns → readable lemma ] variant apparatus notation | N | CommentaryStrategies |
| Q7 | difflib LCS + token-set Jaccard + asymmetric containment | Verse-similarity / parallel-recovery family (containment chosen over Jaccard for ṭīkā→verse) | S·N | CommentaryStrategies |
| Q8 | Char n-gram Jaccard + inverted index | Fuzzy MBH-census match of vulgate verses to App. I print apparatus | S | CommentaryStrategies |
| 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 |
| Q10 | SimAlign mutual-argmax (mBERT cosine) | Cross-lingual word alignment from subword embeddings | A | 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 |
| 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 |
| Q13 | Three-way root triangulation | MW ↔ Whitney hub ↔ DCS join on the normalised root | N | 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 · 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 |
| Q16 | Preverb (upasarga) segmentation + MW cross-map | Segments a headword into preverb+root, matches MW preverbs | N | PWG verbs01 |
| 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 · 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 |
| 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 · 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 |
| 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 · 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 |
| 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/ |
| Q24 | Titov parametric core | Quantitative-lexicology core (∪ big-core / ∩ small-core of four parametric cores) | A | titov_parametric_core.py |
| 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 |
| 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 |
| 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 · 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 |
| 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 · 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 |
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.
Anyone can propose an asset. Open an issue on SanskritLexicography 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.
_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/ (W2.4, /roadmap-item-exec A09). |
| 08/26 | P12 — samskrtam.ru akshara crossword (waves H1986/H2904/H2905/H2942) + the new /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; kosha PR #192 / 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, 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). |
| 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 merged, 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 over the 15-dict union — derivation graph, witness-family partition (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 (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 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, generated from this Markdown by 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). |
| 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 + report). |
| 07/26 | E38 — <ls> citation-frequency graph (csl-atlas, PR #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 (verified vs csl-orig/v02/; Cologne lookup URLs verified for MW & AP90); interfaces, data and tools compiled from SHARED_CODE.md, PROJECT_INTERLINKS.md, REUSE_INDEX.md and a repository sweep with verbatim sample rows + git first-introduced dates (03–04-07-2026)._
_Dr. Mārcis Gasūns_
Generated by Uprava tools/build_public_site.py from an explicit three-hub allowlist under a deny-rail leak guard (E031 wave 4 / H8046, 11-11-2026). Private paths are withheld by construction, never by review after publication.