Skip to content

Take sa out of the vocabulary, so Maria de Sa keeps its surname (#857) - #879

Merged
derek73 merged 6 commits into
masterfrom
claude/mark-sa-possible-name-857-698236
Oct 25, 2026
Merged

derek73 merged 6 commits into
masterfrom
claude/mark-sa-possible-name-857-698236

Conversation

@derek73

@derek73 derek73 commented Oct 25, 2026 •

Copy link
Copy Markdown
Owner

Closes #857.

sa leaves the vocabulary: its military reading (Seaman Apprentice, a title) and its credential reading are both refused on the word (excluded), so it reads as any name word does. The Portuguese surname Sá written without its accent is the one bearer the corpora show.

How it got here: marking sa ambiguous fixed Maria de Sa but left all 255 SÁ / SA pairs in tse-donors (#843) parting (a one-case name ending in SA still read a suffix, S6), and sa's title reading took the slot in front of a name and alone after a family comma (Smith, Sa → title, where Smith, Ma → given). Neither reading has a bearer in the corpora: every name read with Sa as a title is a person named Sa (Sa Liu, Sa ad Hariri), and every SA / S.A. suffix is a company, the South African qualifier FCP(SA), or initials typed without stops. The 167 NPPES providers who write it have not been read by item.

Readings that change

  • Maria de Sa, MARIA DE SA, maria de sa → family de Sa / DE SA / de sa (was family de, suffix Sa); Joao Sa, ANA SA, ANA SILVA SA → family Sa / SA.
  • Mrs Sa Li → title Mrs, given Sa (the second title is gone); SA Smith → given SA.
  • Costs, accepted: John Smith SA → middle Smith, family SA (was suffix SA); Smith, SA → given SA (was suffix, Should parse("Smith, Jr.") put "Jr." in title rather than suffix? #296's audit row); John Smith, SA → given SA, family John Smith (the name merged into the family, the reading any unlisted two-letter caps word gets; 1.4.0 through 2.5.0 read suffix SA), Smith, John SA → middle SA, , SA → given SA (about 25 after-comma names across ctgov-officials and fec-individuals; NPPES's 167 providers who write it have not been read by item); John Smith S.A. and Smith, S.A. go through the unlisted-dotted rule and report suffix-or-name; a parenthesised FCP (SA) is a nickname SA (25 names in ctgov-officials). A caller who needs SA as a credential adds it to their own lexicon; the exclusions are removable if corpus evidence turns up.

Local corpora (snapshot.py --local, against base 8c965d7, 2026-10-25)

  • tse-donors: 1,613 of 848,351 names move, about 700 gaining the SA as part of the family name (ADAO DE SA FERREIRA → family DE SA FERREIRA, was family DE, suffix SA FERREIRA). local_corpora.py pairs tse-donors --agreement reads 0 accent-only pairs with two surnames where the base read 255 SÁ / SA.
  • ctgov-officials: 54 of 352,104 (25 the (SA) nickname); psc-individuals: 40 of 1,034,888; ukec-individuals: 0.

Docs and records

  • decisions/C8 entry dated 2026-10-25, with supersession pointers in suffix-acronym-collisions, comma-suffix-arc, vocabulary-exclusions and AGENTS.md; release-log bullet.
  • tests/v2/rules_budget.json re-recorded (rules/C8 back to its old size); snapshot and rules corpus re-recorded; field-sweep count 1403 → 1406; the pairs-view test now uses RÁ / RA.
  • Release checklist: the bullet says "1.4.0 through 2.5.0", so migrate.rst needs a "Changed in" entry at release.

🤖 Generated with Claude Code

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@derek73 derek73 added bug vocabulary Per-word vocabulary model and language packs labels Oct 25, 2026
@derek73 derek73 self-assigned this Oct 25, 2026
@codecov

codecov Bot commented Oct 25, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 99.07%. Comparing base (8c965d7) to head (68f2797).

Additional details and impacted files
@@           Coverage Diff           @@
##           master     #879   +/-   ##
=======================================
  Coverage   99.07%   99.07%           
=======================================
  Files          47       47           
  Lines        4781     4781           
=======================================
  Hits         4737     4737           
  Misses         44       44           

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

derek73 and others added 3 commits October 24, 2026 23:29
…, one-case wording (#857)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…ies (#857)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@derek73 derek73 added this to the 2.6 milestone Oct 25, 2026
…adings (#857)

Marking sa ambiguous left the SA / SA pairs in tse-donors parting and its
title reading took the slots ma does not. No corpus shows a rank or a
person writing it as a credential.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@derek73 derek73 changed the title Mark sa as a possible name, so Maria de Sa keeps its surname (#857) Take sa out of the vocabulary, so Maria de Sa keeps its surname (#857) Oct 25, 2026
…labels, stale prose (#857)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@derek73
derek73 merged commit 632685c into master Oct 25, 2026
12 checks passed
@derek73
derek73 deleted the claude/mark-sa-possible-name-857-698236 branch October 25, 2026 07:28
derek73 added a commit that referenced this pull request Oct 25, 2026
* Prepare the 2.6.0 release notes, README and migrate guide

Write the 2.6 release-log summary, name Dott.ssa and Sig.na (not Sig.ra,
already a title in 2.5.0) in the Italian-salutations bullet and drop its
SIG.RA case example, which 2.5.0 already repaired the same way. Add the
2.6 shapes to migrate.rst's "Changed in" list, each checked against the
1.4.0 wheel, and lead README.rst with 2.6.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Fix stale code-side prose found by the 2.6.0 release sweep

- CAPITALIZATION_EXCEPTIONS' docstring used dphil as an unlisted
  acronym; #797 listed it, so use dclinpsy as docs/customize.rst does.
- Reads: lines: _post_rules reads Policy.name_order (O6, #875) and
  _comma reads Policy.unlisted_dotted_suffixes (#872); _assign's
  Implements line omitted H8 (#835).
- Three tests/v2/cases.py notes still called md title vocabulary,
  which #853 removed.
- config/__init__ says the data modules re-export the TOML-compiled
  sets (#737).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Fix stale design-doc and AGENTS.md prose found by the 2.6.0 sweep

- AGENTS.md's TITLES/suffix dual list counted ten words plus a "twelfth"
  md after #879 took sa out; name both md and sa as former duals.
- The CAPITALIZATION_EXCEPTIONS split-default demo (AGENTS.md and
  migrate.rst) used dphil, a shipped mask since #797, so setting it
  showed nothing. Use dclinpsy, re-measured 2026-10-25: the edit reaches
  only a freshly built Constants.
- decisions/vocabulary-model and decisions/C13 head notes record that
  #853 superseded md's title reading.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Fix stale user docs found by the 2.6.0 sweep; record the pickle break

- A Lexicon, Policy or Parser pickled by 2.5.0 raises ValueError on load
  (after_given_titles, #835; two_family_names, #754, unmentioned until
  now). Give it its own release-log bullet and a line in migrate.rst's
  list of 2.x breaks; measured, 2.5.0 ParsedName and HumanName pickles
  still load.
- usage.rst's input-shapes paragraph now names H8's trailing salutation
  after a family comma (#835).
- locales.rst points default vocabulary at nameparser/vocab/*.toml;
  migrate.rst says nameparser.config exposes the compiled sets.
- concepts.rst names two_family_names beside name_order.
- customize.rst's two-family-names section gives decisions/O6's PSC
  figure for Portuguese filers instead of an unmeasured comparison.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Release 2.6.0

Clear PRE_RELEASE, set CITATION.cff to 2.6.0, and stamp the release log.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Fix the review findings on the 2.6.0 release sweep

- decisions/S7's (10) argued from md as a title/suffix dual and C13's
  head note left Smith, MD PhD Ma off its superseded list; both note
  #853 now.
- config/__init__ and migrate.rst: the Korean surname list is not
  compiled from TOML.
- migrate.rst's j.r.r. entry: repair writes the capital, it does not
  keep one.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Bump certifi to 2026.10.23 in uv.lock

Closes Dependabot alert 6: certifi 2026.5.20 bundles emSign root CAs
with compromised intermediate keys. certifi reaches only the dev group
(sphinx -> requests); nameparser has no runtime dependencies.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Lead the 2.6.0 highlights with two family names; make each lead a sentence

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug vocabulary Per-word vocabulary model and language packs

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Should Maria de Sa keep its surname, as Maria de Sá does?

1 participant