Entity forms carry a ruled pronunciation; lower --ipa emits it #13

Merged
weksa merged 1 commit from weksa-lowering/entity-pronunciation into main 2026-11-07 12:05:56 +00:00
Member

What it does

  • LanguageForms.pronunciation: Option<Pronunciation>: bare stress-marked IPA for the citation form, plus ruled_by, date, source, and an optional rejected list. Old stores read unchanged (serde(default)).
  • Store door: IPA is NFC, no / [ ], no control/edge whitespace; date is YYYY-MM-DD; rejected variants are well-formed, unique, and differ from the ruled one. Once set a ruling is frozen (changing it is EntityNotAppendOnly); an unruled entity can gain one.
  • lower::pronounce and weksa lower <store> <key> --ipa: print the stored IPA of each entity referent, one per line. NoPronunciation { entity } if the entity has no en-US ruling, NoEntityReferent if the packet cites none. Rejected variants are never read.
  • weksa entity put --pronunciation en-US=IPA --ruled-by --ruled-on --ruling-source [--rejected IPA]....
  • Seed: entity:nibu = ˈnibu (tense vowel, two syllables, stress on first), ruled by Nibu 2026-11-07, rejected ˈnɪbu.
  • Published entity schema regenerated; short section in docs/english-pronunciation-lowering.md.

What it does not do

  • No timing, length, pitch contour or any other prosody, and no PhoneticIntent type.
  • No English G2P or lexicon: an unruled name has no IPA, and the lowerer refuses instead of guessing.
  • Lowered text is unchanged; pronunciation is a separate output.
  • No change to the per-language pronunciation plan contract.

Tests

cargo test -p weksa: 156 passed, 0 failed, 1 ignored (pre-existing). New: Nibu round-trips from the committed seed; rejected variant never emitted; missing pronunciation refused (and other-language ruling not used); no entity referent refused; store add-once/frozen and malformed refusals; CLI refuse-then-emit.

🤖 Generated with Claude Code

## What it does - `LanguageForms.pronunciation: Option<Pronunciation>`: bare stress-marked IPA for the citation form, plus `ruled_by`, `date`, `source`, and an optional `rejected` list. Old stores read unchanged (`serde(default)`). - Store door: IPA is NFC, no `/` `[ ]`, no control/edge whitespace; date is `YYYY-MM-DD`; rejected variants are well-formed, unique, and differ from the ruled one. Once set a ruling is frozen (changing it is `EntityNotAppendOnly`); an unruled entity can gain one. - `lower::pronounce` and `weksa lower <store> <key> --ipa`: print the stored IPA of each entity referent, one per line. `NoPronunciation { entity }` if the entity has no en-US ruling, `NoEntityReferent` if the packet cites none. Rejected variants are never read. - `weksa entity put --pronunciation en-US=IPA --ruled-by --ruled-on --ruling-source [--rejected IPA]...`. - Seed: `entity:nibu` = `ˈnibu` (tense vowel, two syllables, stress on first), ruled by Nibu 2026-11-07, rejected `ˈnɪbu`. - Published entity schema regenerated; short section in `docs/english-pronunciation-lowering.md`. ## What it does not do - No timing, length, pitch contour or any other prosody, and no `PhoneticIntent` type. - No English G2P or lexicon: an unruled name has no IPA, and the lowerer refuses instead of guessing. - Lowered text is unchanged; pronunciation is a separate output. - No change to the per-language pronunciation plan contract. ## Tests `cargo test -p weksa`: 156 passed, 0 failed, 1 ignored (pre-existing). New: Nibu round-trips from the committed seed; rejected variant never emitted; missing pronunciation refused (and other-language ruling not used); no entity referent refused; store add-once/frozen and malformed refusals; CLI refuse-then-emit. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
LanguageForms gains an optional Pronunciation: bare stress-marked IPA, ruled_by,
date, source and a rejected list. The store checks its shape and freezes a
ruling once set. pronounce() and `weksa lower --ipa` print the stored IPA of each
cited entity and refuse with NoPronunciation / NoEntityReferent; rejected
variants are never read. Nibu is the first entry: ˈnibu, rejected ˈnɪbu.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
weksa merged commit 73ce2de07f into main 2026-11-07 12:05:56 +00:00
Sign in to join this conversation.
No reviewers
No labels
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
GameCult/Weksa!13
No description provided.