Repository navigation
Description
The suggester's capitals signal reads a word written wholly in capitals, in a mixed-case name, as the family name. In a byline written initials first, the capitals word is the initials (AM for a given and a middle name), so each such name votes family-first, and a list of them is turned the wrong way. decisions/group-suggestion lists this under Open: "with no issue yet"; that line should be given this issue's link.
Measured on master 670b349, 2026-11-12:
>>> Parser().suggest(["AM Hoy", "JK Larsen", "RP Huntley", "MT Okafor", "GH Yoon", "SL Perrin"])
name_order FAMILY_FIRST 5 for, 0 against, 1 contested, 0 no evidence
capitals FAMILY_FIRST 6
surname GIVEN_FIRST 1
| List (six names) | Suggested order | Votes | The suggested parser reads AM Hoy |
|---|---|---|---|
AM Hoy, JK Larsen, … |
FAMILY_FIRST |
capitals 6 (family-first), surname 1 (given-first) | given Hoy, family AM |
A M Hoy, J K Larsen, … |
unchanged (given-first) | surname 1 | given A, middle M, family Hoy |
A.M. Hoy, J.K. Larsen, … |
unchanged (given-first) | surname 1 | given A., middle M., family Hoy |
Only the bare joined capitals are affected. The base parser reads AM Hoy as given AM, family Hoy, which has the family right; the suggestion makes it wrong.
How often: uv run python tools/differential/suggest_measure.py --wrong-words 12 (2026-11-12, 300 trials a cell, seed 20261110). Its orcid-byline population is 2,215 ORCID credit names written as a byline, the holder's own boxes confirming which word is the family. Share of groups suggested right, at 2 / 3 / 4 / 5 / 10 / 20 / 50 / 200 names:
| written | base | 2 | 3 | 4 | 5 | 10 | 20 | 50 | 200 |
|---|---|---|---|---|---|---|---|---|---|
| given-first | given-first (the anti-goal row) | 96% | 85% | 76% | 67% | 27% | 9% | 0% | 0% |
| given-first | family-first | 0% | 0% | 0% | 0% | 0% | 0% | 0% | 0% |
| family-first | given-first | 0% | 35% | 68% | 84% | 83% | 91% | 98% | 100% |
| family-first | family-first | 100% | 100% | 100% | 100% | 100% | 100% | 100% | 100% |
Every other population's same-order rows stay at 95% or more at every size; this is the one row the anti-goal fails, and decisions/group-suggestion's 2026-11-11 TRAILING INITIAL entry records that it failed the same way before PR #1345's gate.
Per name, written given-first: 42 names vote right, 535 wrong, 44 contested, 1,594 cast no vote. By signal: capitals 0 right, 566 wrong; surname 82 right, 73 wrong; given-name 4 right, 9 wrong.
What the capitals words are. Of the population's 2,215 names, the given part is written as one word of two or three bare capitals in 644 (AM), one letter in 954, a joined dotted run in 408 (A.M.), spaced letters in 202, other in 7. The capitals signal's wrong votes are the 644 group. The commonest words in a wrong capitals vote are pairs of initials: MA 30, JM 13, MM 10, MC 8, AA 7, AP 7. Some also spell a romanized surname, so the surname signal votes wrong on the same word (MA 30, MI 5, NA 5).
Why it is not simply dropped. The same shape, a two- or three-letter capitals word, is a real surname in lists that write the family in capitals: Zhi LI, Jason NG, Ali KAYA. A 2026-11-11 working note (scripts outside the repository, a dated snapshot) measured the two together: counting bare capitals as initials read byline lists 95–100% right but made 34–76% of Zhi LI-style groups worse.
#659 and how it interacts. #659's last comment (decided 2026-11-11) makes family-in-capitals an opt-in Policy switch, which the suggester turns on "for a list that writes its families in capitals consistently", with capitals words of two or three letters counting as the family under the switch and staying "out of the suggester's evidence, as today". Two things follow:
- As measured here, two- and three-letter capitals words are not out of the order vote today:
AM Hoycasts a capitals vote. Should an ALL-CAPS word in a mixed-case name mark the family name?DUPONT Jeangives givenDUPONT#659's 2026-11-12 amendment corrects that sentence. - If a given-first byline list turned Should an ALL-CAPS word in a mixed-case name mark the family name?
DUPONT Jeangives givenDUPONT#659's switch on, every name would read familyAM, the same wrong reading as today'sFAMILY_FIRSTsuggestion. So the switch must not be decided from short capitals words alone.
Options:
- (A) A capitals word of two or three letters casts no order vote.
- When: the only capitals word of a mixed-case name is two or three letters with no full stop.
- Then: the capitals signal does not vote on that name; the other signals still do.
- Because: the shape is a pair of initials or a short surname, and nothing in the word says which.
- Accepted: a list of short capitals surnames (
Zhi LI,Wei WU) loses its capitals votes and is decided by the surname table or not at all.suggest_measure.pywould show the cost on PatentsView's and PSC's Chinese, Korean and Vietnamese rows.
- (B) Position decides the short word. A two- or three-letter capitals word opening a name whose other word is mixed case is initials (no vote, or a given-first vote); ending it, it is a surname as today. This reads
AM Hoyright and keepsZhi LI; it gives upLI Zhi, which the surname table still votes on. - (C) Ask the group. The short word votes only where the list also holds a longer capitals word in the same position (
Jean DUPONTbesideZhi LI), i.e. where the list shows the family-in-capitals convention independently. - (D) Leave it, documented as it is in
Parser.suggest's docstring and docs/suggest.rst, and tell callers with byline lists to set the order themselves.
Open:
- Which option, and should it be measured with
--set-style variants on a scratch tree first, as Gate the suggester's trailing-initial vote on the group's share; fix a title-only name's crash #1345's gate was? - Does Should an ALL-CAPS word in a mixed-case name mark the family name?
DUPONT Jeangives givenDUPONT#659's item 7 mean two- and three-letter words cast no order vote? Today they do. - Should the surname table's two-letter entries (
MA,MI,NA) vote on a word written in capitals that could be initials? - If the row cannot be brought to 95%, does the anti-goal's exception stay recorded as now?
🤖 Generated with Claude Code
Activity