Slot Speaker, weksa.speaker and weksa.scene append-only revisions in one
store, V16, feature_refusals as the one feature check, speaker_scene_revision
(Speaker features 22-24), schemas, docs and map lines. Part 1 of map cut 4b.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
with_scene is removed until it takes a Scene document (next commit); V13 goes
with it. Slot exclusivity becomes a rule of InventoryEntry::well_formed, so
FEAT_ALL leaves Stance and its stance duplicate case goes (ANGER pins V11 in
Stance). tests/scene.rs is deleted and rewritten on Scene documents later.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
FormError and StoreRefusal display no caller identifiers; clap value errors name the flag and reason only. One is_calendar_date serves admitted_on and the pronunciation date. A text with no base letter or digit (Lm or M only) is refused beside the no-alphanumeric refusal; modifier_letters.txt is the Lm table its test walks.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Main's proof revision owns concept:6 and frame:3; Dao ids renumbered to
start at concept:7 and frame:4 (daodejing.rs, lower.rs rows).
data/daodejing inventory.cc and packets.cc regenerated with weksa inventory
seed/proof/dao and weksa packet dao.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Soul scorer s3 Lows. words.rs no longer lists separators (_ and .) or defers to UAX #29, which splits Han, kana and Thai per character and made honest single-word glosses read as an n>=2 leak. A word is a run of letters, digits, marks and ZWNJ/ZWJ; a run of Han, kana, Thai, Lao, Khmer or Burmese is one word. Tests pin separators, marks, joiners, NFC, every range edge, and five sacrebleu 2.4.3 near-miss pairs (Ko, Tr, Fi, Th vowel-strip, Ja). 40 hand mutants killed.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
data/phonology/en-US.phones.tsv lists the phones (tense/lax a column); the
segmenter splits ruled IPA into {ipa, stress} by longest inventory match and
refuses a symbol it does not list (LowerError::UnknownPhone) or a stress mark
with no vowel (DanglingStress). No durations, pitch or acoustics.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
The expected `weksa lower --phones` output for the proof packet, committed
before the code that must produce it.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Discourse.addressee_consent names the predication the addressee asked for or
agreed to. V4 checks it resolves, V14 needs an addressee and a predication,
V15 allows only Authored or GameTelemetry sources. The English lowerer renders
no consent and refuses a packet carrying one.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
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>
Nibu ruled "Nibu will prevent that to protect you." is not her voice. The
intervention row is now "{agent} will stop {patient}" and the proof packet no
longer fills the beneficiary role; a packet that does is refused as a role the
frame does not name, so a purpose is never silently dropped.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
lower() takes an EntityForms port (one entity by id; EntityStore implements it).
A referent with an entity renders as the first form stored under en-US, verbatim
and never re-cased at a clause start; the addressee stays "you". An entity the
port lacks, one with no en-US form, or a port read fault is refused by name.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Source::PublicDomain now requires licence, jurisdiction, translator and
edition_year; the store refuses an item missing any. data/daodejing holds
five Legge items (Gutenberg 216, no Gutenberg matter stored), inventory
revision 3, five packets with stance, and the lowerer rows to render them.
docs/targets/dao-de-jing-test-bed.md reports the first closeness number and
what the scorer cannot see.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>