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
Should a glued honorific peeling off a pre-comma family name have its own rule? (王先生, V. is claimed by a rule describing a compound that never happens to it) #496
fix(cjk-comma-honorific-peel) in expected_since_1.4.0.toml covers a glued
honorific peeling off the post-comma given name — 김, 민준씨 → given 민준, suffix 씨, family byte-identical. Its comment is explicit that this
is the whole of what happens: "the comma already fixes family/given order on
both sides, so NO order flip happens -- family is byte-identical. The only
change is #312's peel."
There is no family-side twin. So the mirror shape — a glued honorific peeling
off the pre-comma family name — has no rule of its own, and falls to fix(cjk-comma-compound) comma routing compounds with the CJK order flip,
which describes neither thing that happens to it.
Measurement (2026-09-02, c1a98a9 + the #382 branch)
Three names reach fix(cjk-comma-compound) with no comma routing and no order
flip. Measured against the 1.4.0 wheel, the entire diff is the peel:
name
1.4.0
HEAD
王先生, V.
first V., last 王先生
given V., family 王, suffix 先生
田中さん, V.
first V., last 田中さん
given V., family 田中, suffix さん
김민준씨, V.
first V., last 김민준씨
given V., family 김민준, suffix 씨
The post-comma piece is the given name on BOTH sides — no routing change — and
the remaining family is unsegmented, so nothing flipped. Two more names
(Dr 田中さん, V., 田中さん, Ph. D.) are the peel plus a first→last movement,
so the compound rule's order-flip half carries them while its comma-routing
half does not.
They land on the compound rule because its stated criterion is "#312 sends
only the glued-honorific comma rows whose diff includes family" — and family moves here only because the peel took the honorific off it. The
criterion selects them; the prose does not describe them.
Recompute: run tools/differential/compare.py --baseline 1.4.0 and read which
rule classifies each name, or parse each string at HEAD and against the 1.4.0
wheel and compare the field moves.
Why this surfaced now
The #382 rule-order work added a check for pairs whose winner file order alone
decides. fix(cjk-comma-compound) sitting ahead of fix(cjk-glued-honorific-peel) is one of them, and writing its precedes_narrower reason is what exposed that the honest justification is not "the earlier rule describes a compound". It is "the later rule's prose
disclaims comma names, so a reorder would mislabel the genuine compounds
(田中さん, 様., 김민준씨, J.씨) that also sit here". The exemption in #382
says exactly that rather than papering over it.
This is the #372 failure mode in miniature — a rule claiming a diff it does not
describe — and it survived because every one of these names is radar tier
since #488, where an unmatched diff is reported and never fatal. Nothing forced
anyone to look.
Options
Add the family-side twin, fix(cjk-comma-honorific-peel-family) or
similar, written narrow-first ahead of the compound rule, claiming the three
pure peels. Cost: a new rule and a _CORPUS_CLAIMS entry; the compound
rule's reach and any _CROSS_RULE_WINNERS rows for those names move, and Should file order be allowed to separate ledger rules within a tier? (김, 민준씨 is claimed by whichever of two rules comes first) #382's precedes_narrower reason for the pair would then be rewritable as
the plain compound story it was supposed to be.
Narrow the compound rule's criterion from "diff includes family" to
something that names the routing or the flip, and let the pure peels fall
where they land. Cost: they may become UNCLASSIFIED — harmless on radar, but
it is a report nobody reads rather than a rule nobody wrote.
Leave it, and keep the caveat in the exemption reason. Cost: the ledger
carries a rule whose label is untrue of three of the nine names its position
wins, with the reason recorded only in a why block.
Not in scope
Rule ORDER. #382 settles that: the pair is declared and the order stays,
because a reorder would mislabel the true compounds. This issue is only about
whether the pure-peel shape deserves its own rule.
Blocked by
#382 — its exemption reason is where the caveat currently lives, and option 1
would rewrite it.
Rationale
fix(cjk-comma-honorific-peel)inexpected_since_1.4.0.tomlcovers a gluedhonorific peeling off the post-comma given name —
김, 민준씨→ given민준, suffix씨, family byte-identical. Its comment is explicit that thisis the whole of what happens: "the comma already fixes family/given order on
both sides, so NO order flip happens --
familyis byte-identical. The onlychange is #312's peel."
There is no family-side twin. So the mirror shape — a glued honorific peeling
off the pre-comma family name — has no rule of its own, and falls to
fix(cjk-comma-compound) comma routing compounds with the CJK order flip,which describes neither thing that happens to it.
Measurement (2026-09-02, c1a98a9 + the #382 branch)
Three names reach
fix(cjk-comma-compound)with no comma routing and no orderflip. Measured against the 1.4.0 wheel, the entire diff is the peel:
王先生, V.V., last王先生V., family王, suffix先生田中さん, V.V., last田中さんV., family田中, suffixさん김민준씨, V.V., last김민준씨V., family김민준, suffix씨The post-comma piece is the given name on BOTH sides — no routing change — and
the remaining family is unsegmented, so nothing flipped. Two more names
(
Dr 田中さん, V.,田中さん, Ph. D.) are the peel plus a first→last movement,so the compound rule's order-flip half carries them while its comma-routing
half does not.
They land on the compound rule because its stated criterion is "#312 sends
only the glued-honorific comma rows whose diff includes
family" — andfamilymoves here only because the peel took the honorific off it. Thecriterion selects them; the prose does not describe them.
Recompute: run
tools/differential/compare.py --baseline 1.4.0and read whichrule classifies each name, or parse each string at HEAD and against the 1.4.0
wheel and compare the field moves.
Why this surfaced now
The #382 rule-order work added a check for pairs whose winner file order alone
decides.
fix(cjk-comma-compound)sitting ahead offix(cjk-glued-honorific-peel)is one of them, and writing itsprecedes_narrowerreason is what exposed that the honest justification isnot "the earlier rule describes a compound". It is "the later rule's prose
disclaims comma names, so a reorder would mislabel the genuine compounds
(
田中さん, 様.,김민준씨, J.씨) that also sit here". The exemption in #382says exactly that rather than papering over it.
This is the #372 failure mode in miniature — a rule claiming a diff it does not
describe — and it survived because every one of these names is radar tier
since #488, where an unmatched diff is reported and never fatal. Nothing forced
anyone to look.
Options
fix(cjk-comma-honorific-peel-family)orsimilar, written narrow-first ahead of the compound rule, claiming the three
pure peels. Cost: a new rule and a
_CORPUS_CLAIMSentry; the compoundrule's reach and any
_CROSS_RULE_WINNERSrows for those names move, andShould file order be allowed to separate ledger rules within a tier? (
김, 민준씨is claimed by whichever of two rules comes first) #382'sprecedes_narrowerreason for the pair would then be rewritable asthe plain compound story it was supposed to be.
family" tosomething that names the routing or the flip, and let the pure peels fall
where they land. Cost: they may become UNCLASSIFIED — harmless on radar, but
it is a report nobody reads rather than a rule nobody wrote.
carries a rule whose label is untrue of three of the nine names its position
wins, with the reason recorded only in a
whyblock.Not in scope
Rule ORDER. #382 settles that: the pair is declared and the order stays,
because a reorder would mislabel the true compounds. This issue is only about
whether the pure-peel shape deserves its own rule.
Blocked by
#382 — its exemption reason is where the caveat currently lives, and option 1
would rewrite it.