docs: language model + liturgical content policies, fix ru/services drift
- .ai-specs/PROJECT_CONTEXT.md: new 'Language Model (UI vs. Content)' section (serviceLang ru->cu, fallback chain, scripture, Bible tab independence, fonts, calendar authority) + content-policy pointer in Critical Invariants. - .ai-specs/WORKING_POLICIES.md: new 'Liturgical Content Policies' — never translate service/Bible texts (sourced only), cu texts verbatim (no normalisation/latinisation), service assembly follows the Typicon. - DATA_EN.md/DATA_RUS.md: ru/ holds enriched lives only; services fall back to cu; cu is the authoritative calendar + service texts.
This commit is contained in:
1 parent
69f3533c41
commit
f534fe6006
4 files changed
+41
-4
No files matched your search
@@ -16,6 +16,19 @@
|
||||
- **Bundle system**: menaion-bundles, lives bundles (month-prefixed + misc split), service templates
|
||||
- **File routing**: CIds with `01`-`12` prefix → month files, else `misc/{first-digit}.json`
|
||||
|
||||
### Language Model (UI vs. Content)
|
||||
- **UI strings**: en/ru/cu via `getTranslations()`; completeness checked by `validate-i18n.ts`
|
||||
- **Service language** (`serviceLang` in `service-view.ts`): `en → en`, `cu → cu`, **`ru → cu`** —
|
||||
a Russian interface intentionally renders services in Church Slavonic
|
||||
- **Service content fallback chain**: `serviceLang → cu → shared` (texts, prayers, headers,
|
||||
lives, octoechos, templates); `ru/services/` carries only `var/`
|
||||
- **Scripture inside services** follows the service language: en → `en/bible/kjv`,
|
||||
cu (and ru) → `cu/bible/elis`
|
||||
- **Bible reader tab** is independent: 13 translations (incl. `ru/bible/synod`), any UI language
|
||||
- **Fonts**: the Slavonic font setting applies to liturgical text for cu **and** ru
|
||||
(`getFontClass()`)
|
||||
- **Calendar authority**: `cu/menaion-bundle.json`; `{lang}-menaion-bundle.json` overrides
|
||||
|
||||
### Core Scripts
|
||||
- `convert-services.ts` — Service XML to JSON conversion
|
||||
- `enrich-lives.ts` — Fuzzy matching and enrichment pipeline (Chetyi-Minei + Bulgakov)
|
||||
@@ -44,6 +57,9 @@
|
||||
- **Bundle CIds must exist**: Menaion CIds require corresponding lives entries
|
||||
- **Static data is tracked**: `static/data/` in git (except `scripts/output/minei.json`)
|
||||
- **Validation must pass**: Changes must pass `tsc --noEmit`, `npm run build`
|
||||
- **Content policies**: service/Bible texts are sourced (never translated), cu text is
|
||||
verbatim (no normalisation/latinisation), service assembly follows the Typicon — see
|
||||
`.ai-specs/WORKING_POLICIES.md` ("Liturgical Content Policies")
|
||||
|
||||
## Key Script Quick Reference
|
||||
|
||||
|
||||
@@ -16,6 +16,27 @@
|
||||
- **Forbidden**: Deleting or renaming CIds without proper validation
|
||||
- **Forbidden**: Changing JSON structure without updating related code
|
||||
|
||||
## Liturgical Content Policies
|
||||
|
||||
### Never Translate Service or Bible Texts
|
||||
- All liturgical and scriptural texts must be **sourced** through the data pipeline
|
||||
(original-language conversions, Chetyi-Minei, Bulgakov, EPUB/PDF imports, etc.)
|
||||
- Never machine-translate, paraphrase or invent text — not even "just one line"
|
||||
- Missing text stays empty (the app falls back `serviceLang → cu → shared`) until its
|
||||
source is converted
|
||||
|
||||
### Church Slavonic Texts Are Presented Verbatim
|
||||
- Never "normalise", latinise, transliterate or strip diacritics/accents/titla from cu texts
|
||||
- Render the text exactly as stored in the source data; display-layer transformations
|
||||
are forbidden
|
||||
- Orthography fixes belong in the conversion pipeline and must preserve the source
|
||||
|
||||
### Service Assembly Follows the Typicon
|
||||
- Service-building logic (templates, ordering, conditional rules, canons) must reproduce
|
||||
the Typicon
|
||||
- Whenever service building logic is changed, check the expected structure against the
|
||||
Typicon (and the pinned service data) before and after the change
|
||||
|
||||
## Validation Requirements
|
||||
|
||||
### Pre-Commit Checklist
|
||||
|
||||
+2
-2
@@ -51,8 +51,8 @@ static/data/
|
||||
│ ├── menaion/ # Daily menaion entries (366 days)
|
||||
│ ├── calendar/ # Calendar metadata
|
||||
│ └── services/ # Service templates
|
||||
├── cu/ # Church Slavonic (similar structure)
|
||||
├── ru/ # Russian (lives, services)
|
||||
├── cu/ # Church Slavonic (authoritative calendar + service texts)
|
||||
├── ru/ # Russian (enriched lives; services fall back to cu)
|
||||
├── el/ # Greek (includes mono/)
|
||||
├── fr/ # French
|
||||
├── zh/ # Chinese (includes Hans/, Hant/)
|
||||
|
||||
+2
-2
@@ -51,8 +51,8 @@ static/data/
|
||||
│ ├── menaion/ # Ежедневные записи минеи (366 дней)
|
||||
│ ├── calendar/ # Метаданные календаря
|
||||
│ └── services/ # Шаблоны богослужений
|
||||
├── cu/ # Церковнославянский (аналогичная структура)
|
||||
├── ru/ # Русский (жития, богослужения)
|
||||
├── cu/ # Церковнославянский (авторитетный календарь и богослужебные тексты)
|
||||
├── ru/ # Русский (обогащённые жития; богослужения берутся из cu)
|
||||
├── el/ # Греческий (включает mono/)
|
||||
├── fr/ # Французский
|
||||
├── zh/ # Китайский (включает Hans/, Hant/)
|
||||
|
||||
Reference in new issue
Block a user