Skip to content

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

Description

@derek73

Rationale

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

  1. 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.
  2. 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.
  3. 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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Projects

No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions