Skip to content

Bring the user docs in line with 3.0's readings, views and language choices - #1146

Merged
derek73 merged 4 commits into
masterfrom
docs/3-0-fresh-read
Nov 8, 2026
Merged

derek73 merged 4 commits into
masterfrom
docs/3-0-fresh-read

Conversation

@derek73

@derek73 derek73 commented Nov 8, 2026 •

Copy link
Copy Markdown
Owner

A fresh read of the user docs (usage, customize, concepts, locales, index, README.rst) and the autodoc docstrings against what 3.0 shipped. The pages had already dropped the compiled-constant names. What was left: one stale claim, the surname views missing from the locales page, and recipes that never said whether a language choice was the better lever. Every reading below was run on master (e793b1b).

The finding that decides the recipes

A choice of languages keeps every name reading, and switches off other languages' vocabulary readings of a word its own language lists as vocabulary. So:

  • It leaves the fork where the chosen file holds both readings. parser_for(nl, strict=True) still reads Van Buren as given Van and reports it, and strict en still reports JOHN SMITH MA. The Lexicon recipes for van, ma, dean and neto stay the advice there.
  • It ends the fork where it drops another language's reading. JOSE SILVA DO reports suffix-or-name by default; under locales.PT the English credential reading is off and DO is a family-name word, with nothing reported.

The docs now recommend a choice first where the data's language is known: for those clashes, and for the conventions a pack carries (two family names, Vietnamese order, a given-name reading held off by default: Lady under es, Hon under a zh choice, Guru under ne).

(The first commit stated this too broadly, as "no choice settles a word with a name reading", and said pt reads a trailing DO as a particle. The comment-analyzer review caught both; the fix commit corrects them.)

Changes

usage.rst

  • The "Words that attach" table gains a row for titles that are also particles (Jan Freiherr von Berg → family Freiherr von Berg, while Freiherr Hans von Berg is a title), with a doctest. Its Titles row now notes that a title which is also a given name is a title only inside a title phrase.
  • The "other way round" paragraph names the glued honorifics (words(kind="honorific", attached="after")) beside the Korean surnames.
  • New subsection, "Inspecting the vocabulary": readings_of (what a word may be) beside Token.reading (what it was read as). It also notes that a lexicon answers only for readings it has on: Lady's given reading shows only on parser_for(locales.ES).lexicon.
  • surname2 names the es, es_ar, cs and sk packs that fill it.
  • Token.reading is described as having "the same parts" rather than "three".

customize.rst

  • Removed the stale "there is no vn locale pack" and pointed to locales.VI (also for Nguyen Van Minh, which VI reads as middle Van, given Minh).
  • The vocabulary section now opens with a language choice as the first lever, cross-linking plain and strict choices. strict=True was never mentioned on this page before.
  • "Words that are also ordinary names" states the limit above.
  • Cross-links for the DO/do clash and for the given-name readings a language turns on.

concepts.rst

  • The Lexicon bullet describes readings instead of "word lists".
  • New paragraph on what a Locale and a choice of languages are.

locales.rst

  • The pre-existing "under any choice" sentence on name readings is scoped to a plain choice, with the strict case beside it.
  • The Spanish section shows surname1, surname2 and surname1_base under es, with a doctest. The Czech/Slovak section and the packs table name the views.
  • New vietnamese-names label.

Docstrings

  • surname1: its two-family example now names its switch. By default Juan de la Vega del Valle has surname1 del Valle.
  • initials(): states what spec, delimiter and separator do, instead of v1 history.
  • Token.reading: mentions Reading.languages.
  • ParsedName: lists its derived views.

docs/AGENTS.md gains the language-choice check above.

No release-log bullet: these are doc corrections plus one new subsection.

Checks

  • sphinx-build -b doctest and -b html print nothing.
  • python -m doctest README.rst passes.
  • uv run pytest: 40,185 passed.
  • ruff check is clean.

Reviews

  • pr-review-toolkit:comment-analyzer (prose and docstrings): 9 findings, all confirmed by running them and fixed in 6eea91f. The choice claim and the DO paragraph were wrong; the rank/saint row, Hon under zh, the vi sentence, the Token.reading wording and a vacuous surname1_base example were overbroad.
  • code-reviewer: 2 findings (the saint words in the rank row, Hon under the zh pack), both fixed in 6eea91f.
  • second round (comment-analyzer) on 6eea91f: a strict choice drops name readings too, so a strict nl choice reads JOHN SMITH MA family MA, unreported. The fix's paragraph and a pre-existing locales.rst sentence ("under any choice") now say plain choice. The vi syllable lists read as complete and became examples; first_surname is set under middle_as_family too. Fixed in 9205054.
  • third round (comment-analyzer) on 9205054: the strict clause was scoped to a word no chosen file holds, but strict pt also drops Do's English given reading (Do Smith → family Do Smith, unreported). It is now stated reading by reading, in 9828fd1. Every example in that commit was run before it was pushed: strict en MA reported, strict nl MA family, strict pt Do Smith family, plain pt Do given and reported.

The trap that cost two rounds is recorded in docs/AGENTS.md (Claims): test a claim about what a language choice settles on a word of each reading layout, under both a plain and a strict choice.

(design-docs-reviewer is not needed: nothing under docs/design/ changes.)

🤖 Generated with Claude Code

…hoices

A fresh read of usage, customize, concepts and locales and the autodoc
docstrings against what 3.0 shipped, every reading run on master.

- usage: the attach table gains titles that are also particles
  (Freiherr, Graf, St, joining the surname inside a name) and the
  title-phrase limit on gated titles; the "other way round" paragraph
  names the glued honorifics beside the Korean surnames; a new
  "Inspecting the vocabulary" subsection pairs readings_of with
  Token.reading and shows a reading held off until its language is
  chosen (Lady under es); surname2 names the packs that fill it.
- customize: drop the stale "there is no vn locale pack" and point at
  locales.VI (also for Nguyen Van Minh); open the vocabulary section
  with a language choice as the first lever, cross-linking plain and
  strict choices; state that no choice settles a word with a name
  reading, so the van/ma/dean/neto recipes stay; note the DO/do clash
  as a choice's job and the given-name readings a language turns on.
- concepts: the Lexicon holds readings, not word lists; a paragraph on
  what a Locale and a choice of languages are.
- locales: the surname views under es, cs and sk, and a label for the
  Vietnamese section.
- docstrings: surname1's two-family example names its switch,
  initials() states its contract instead of v1 history, Token.reading
  mentions Reading.languages, ParsedName lists its derived views.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@derek73 derek73 added this to the 3.0 milestone Nov 8, 2026
@derek73 derek73 added the docs Documentation fixes and updates label Nov 8, 2026
@derek73 derek73 self-assigned this Nov 8, 2026
derek73 and others added 3 commits November 7, 2026 19:30
Review of #1146 found claims broader than the tree:

- A choice keeps every name reading, so it leaves a fork whose chosen
  file holds both readings (MA under en, van under nl) but ends one
  where it switches off another language's reading: DO under pt loses
  the English credential and reads as a name word, unreported. The
  customize paragraphs said no choice settles such a word, and that pt
  reads trailing DO as a particle; both are rewritten, with a doctest.
- The attach table's row named the saint kind, whose words but St hold
  no title reading, and called every rank a title opening a name,
  which Freiherrin is not; the row is ranks, the prose names the
  exceptions and St.
- Hon is a given name under a choice of zh, which the zh pack does not
  make; the sentence says so.
- The vi pack keeps a named set of syllables, not every particle
  (Bin, De still join); name them.
- Token.reading's languages are the files whose reading is on in the
  parse's lexicon; surname1_base gets a non-vacuous example and a
  :ref: to a new aggregate-views label; Token.reading's surname flags
  are named.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Second review of #1146's fix: a strict choice drops every reading of a
word no chosen file holds, name readings too, so a strict nl choice
reads JOHN SMITH MA family MA, unreported. customize's paragraph and
locales' pre-existing "under any choice" now say plain choice and name
the strict case. The vi syllable lists read as examples, since the
pack keeps La, Du, Y and others too; Token.reading's first_surname flag
is also set under middle_as_family.

docs/AGENTS.md gains the check that would have caught both rounds: test
a claim about a language choice on a word whose readings sit in
different files, under a plain and a strict choice.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Third review of #1146: the second fix scoped strict's effect to a word
no chosen file holds, but a strict choice keeps only the readings its
chosen files hold (beside the shared and native-script ones), so it
also drops a name reading another file holds of a word the chosen file
lists: strict pt reads Do Smith family Do Smith, unreported, where plain
pt keeps Do given and reports it. customize, locales and docs/AGENTS.md
now say a plain choice keeps every name reading and a strict one the
chosen files' readings, with the Do case beside MA.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@derek73
derek73 merged commit 83e499d into master Nov 8, 2026
13 checks passed
@derek73
derek73 deleted the docs/3-0-fresh-read branch November 8, 2026 04:53
derek73 added a commit that referenced this pull request Nov 8, 2026
* Say what a strict choice keeps of a native-script word

A strict choice keeps a native-script word's readings, name readings
included, exactly as a plain choice of the same languages keeps them:
a reading written default = false stays off unless its file is chosen
(strict pt reads गुरु प्रसाद शर्मा title गुरु). Seven sites said
"native-script vocabulary", leaving the name readings unsaid
(Lexicon.strict, parser_for and its refusal, the UNCHOOSABLE comment,
AGENTS.md, mechanisms.md, decisions/vocabulary-model's Standing
summary, the RFC), and #1146/#1147's customize.rst and docs/AGENTS.md
said a word in another script keeps "every file's" readings.

Also from the post-merge review of af7431c: the README's first-build
cost of a choice includes the reading index only unless a parse has
already loaded it.

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

* Record the native-script clarification, and fix the review findings

A dated decisions entry (2026-11-07 #1148) states what a strict choice
keeps of a native-script word, with head notes on the 2026-10-30
file-strict and 2026-11-02 #1005 entries and the Standing lines
pointing at it, so a Standing line no longer says what no entry says.

The RFC's overview, its strict-hu and strict-ko sentences, its
no-language refusal sentence and its operations-table row now say
native-script words' readings; its File-strict paragraph's verb agrees
again. The README's first-build sentence loads, not compiles, the
reading index.

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

* Write the native-script entry as a partial supersession

decisions/README.md allows four kinds of edit to an entry, and
"clarified by" is none of them; the 2026-10-30 entry's item 1 also
says name readings leave. So the new entry SUPERSEDES both clauses in
part, and the two heads say so in the sanctioned form. The entry names
the filter as it was at 3j (strict_pool's) and since #1001
(strict_kept). The RFC's Status paragraph and phasing row get the same
parenthetical as its overview, and strict hu's readings are the
default's, a plain hu choice being refused.

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

* Mark the 3j head's native-script wording superseded by #1148 too

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

* Restore the comma in the #1148 entry's SUPERSEDES list

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

docs Documentation fixes and updates

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant