You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
A v1 Constants entry that is only a CJK full stop raises ValueError at the first parse: c.titles.add('。') then HumanName('john smith', c) #582
A v1 Constants set entry or capitalization_exceptions key that consists only of a CJK full stop (。, . or 。) raises at the first parse from 2.3.0 on. 1.4.0 through 2.2.0 accept it. This breaks the shim's contract that it never raises on a config v1 accepted (AGENTS.md, "The shim TRANSLATES").
>>>c=Constants()
>>>c.titles.add("。")
>>>HumanName("john smith", c)
ValueError: Lexicon.titlesentry'。'normalizestoempty ...
Cause.#322/#323 (2.3.0) made Lexicon._normalize strip edge FULL_STOPS (..。。), where it had stripped only the ASCII period. v1's lc(), which SetManager stores, still strips only .. So the shim hands Lexicon an entry that folds to empty, and _normset rejects it. This is the same two-folds gap as #541, on a different character class.
Measured (adding the entry, then parsing a text it acts on):
inert: only ever subtracted or intersected, never handed to Lexicon
. and 。 behave the same.
Reach. Only a config that names a full stop by itself as vocabulary. 1.4.0 honored such an entry only on a name token that is nothing but that full stop.
Note, related but not in scope: since 2.3.0, a titles entry 'dean。' also matches a bare dean, which 1.4.0 did not (1.4.0 through 2.2.0: dean john smith gives no title; 2.3.0: title dean). Same cause, the CJK full stops in _normalize's fold. The behavior widens and nothing raises. Decide when fixing this issue whether to accept it as a widening, as decisions.md#R4's #541 entry does for capitalized keys, or to drop the entry the same way.
Found in the #581 review (decisions.md#R4, 2026-10-02 #541 bullet).
Activity
fix(derek73#582): drop v1 Constants entries Lexicon folds to empty
docs(derek73#582): record the full-stop entry drop
fix(derek73#582): fold entries before the shim's set algebra
docs(derek73#582): date the fold to 2.3.0 and record the edge-full-st…
fix(derek73#582): fold only the two cross-set collisions Lexicon re-c…
docs(derek73#582): describe the narrowed fold and record the declined…
test(derek73#582): pin both sides of each folded collision
Merge pull request derek73#583 from derek73/fix/issue-582-cjk-full-st…