feat: assert i18n text shape and chant/audio hooks (#56) #357

Merged
manlycucumber merged 1 commit from feature/56-i18n-text-hooks into develop 2026-07-02 04:50:09 +00:00
manlycucumber commented 2026-07-02 04:49:11 +00:00 (Migrated from github.com)

Closes #56.

Locks the office's i18n text shape and the reserved content hooks (emitted since #53) with tests and documentation.

  • names is a locale-keyed map with the invariant la always present and no baked vernacular in v1.0; the engine hard-codes no language text — every name comes from the corpus data.
  • text (Missal propers), chant (GABC), audio, and citations are present, nullable hooks the v1.1 text pipelines fill without reshaping the contract.
  • titulars are present for a sanctoral office and [] for a temporal one.

Test

OfficeI18nTest asserts, for a sanctoral and a temporal office: names is keyed with la present and is Latin-only (no vernacular), the four content hooks are present and null, and titulars are correct per office type. docs/design/output-contract.md gains an i18n-and-content-hooks note.

Local gate: composer lint (0), composer analyse ([OK]), composer test (489 tests / 30,451 assertions).

Closes #56. Locks the office's **i18n text shape** and the reserved **content hooks** (emitted since #53) with tests and documentation. - `names` is a locale-keyed map with the invariant `la` always present and **no baked vernacular** in v1.0; the engine hard-codes no language text — every name comes from the corpus data. - `text` (Missal propers), `chant` (GABC), `audio`, and `citations` are present, **nullable** hooks the v1.1 text pipelines fill without reshaping the contract. - `titulars` are present for a sanctoral office and `[]` for a temporal one. ## Test `OfficeI18nTest` asserts, for a sanctoral and a temporal office: `names` is keyed with `la` present and is Latin-only (no vernacular), the four content hooks are present and null, and titulars are correct per office type. `docs/design/output-contract.md` gains an i18n-and-content-hooks note. Local gate: `composer lint` (0), `composer analyse` ([OK]), `composer test` (489 tests / 30,451 assertions).
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Directorium/Core!357
No description provided.