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

  1. added this to the v2.3 milestone on Sep 2, 2026
  2. self-assigned this
    on Sep 2, 2026
  3. derek73 commented on Sep 3, 2026

    @derek73
    OwnerAuthor

    Closing as no — the family-side twin should not be added.

    The measurement that settles it

    Every name that would need the rule is radar tier. Checked against
    compare._CORPUS_TIERS (read from the roster, not rebuilt by hand):

    name file tier
    王先生, V. corpus_cjk_tolerated.jsonl radar
    田中さん, V. corpus_cjk_tolerated.jsonl radar
    김민준씨, V. corpus_cjk_tolerated.jsonl radar

    So is 김, 민준씨, the name #382 was filed about, and every other name in the
    compound/peel contest — 17 of 17. On the radar tier an unmatched diff is
    reported and never fatal, so nothing can demand a rule for any of them.
    corpus_cjk_tolerated.jsonl is the file #488 created by demoting the composed
    comma/Latin-wrapper CJK forms to tolerated input, precisely because they are not
    arrangements the writing systems produce.

    The one contract-tier name in this neighbourhood is 马丁·路德·金씨
    (corpus_rules.jsonl), and it belongs to fix(#272/#308), the nakaguro rule —
    a different pair, unaffected by this question.

    Why that is decisive rather than merely permissive

    #495 asks whether the radar-only rules already in the ledger still earn their
    place, and records that fix(cjk-comma-compound) has zero contract-tier reach.
    This issue proposed adding a second rule for the same radar names. The two
    point in opposite directions, and #495's is the coherent one: the open question
    about this corner is whether it needs fewer rules, not more.

    Adding one would buy a _CORPUS_CLAIMS entry, a _CROSS_RULE_WINNERS shuffle
    and a new hand-copied honorific alternation — all to relabel names no gate
    answers for.

    What stays true, and where it is written

    The finding that prompted this is real and is not being discarded: on
    王先生, V., 田中さん, V. and 김민준씨, V. the holding rule's label is wider
    than the name is. Their whole diff is the glued peel — no comma routing, no order
    flip — and they sit on fix(cjk-comma-compound) because its criterion is "the
    diff includes family", with family moving only because the peel took the
    honorific off it.

    That is recorded in two places that survive this issue closing:

    • the precedes_narrower block on fix(cjk-comma-compound) in
      expected_since_1.4.0.toml, which states outright that for these three the
      winner is the least wrong reading available rather than the right one;
    • decisions.md#differential-ledger (the rule-order arc), under "One exemption
      says 'least wrong reading available', and that is a finding about the ledger's
      vocabulary."

    Both now cite this issue as weighed-and-declined rather than as an open gap.

    Reopen this if a pre-comma glued-honorific name is ever promoted to a contract
    corpus — that is the fact that would change the answer, and it is one line to
    check.

    Recompute: read compare._CORPUS_TIERS, walk corpus*.jsonl, and take the tier
    of each name (a name held by both tiers reads contract, matching main()'s
    dedup). Do not rebuild the file→tier map by hand — corpus.jsonl is the largest
    corpus and it is RADAR, which is the mistake this arc already made once (#497).

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

Metadata

Metadata

Assignees

Projects

No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions