Repository navigation
An example name asserted outside the format it exemplifies pins nothing (Nguyen Thi Van is pinned under FAMILY_FIRST) #470
Description
Activity
- addeddocsDocumentation fixes and updatesDocumentation fixes and updates
on Aug 30, 2026 Closing: no notation is needed. The
Accepted:clause is already the
right home for this, and both halves of the issue turn out not to hold.Measured against master at c1a98a9, 2026-09-02.
The example is stale in both halves. #467 deleted the FAMILY_FIRST
line from P6 and left anAccepted:clause saying why. And the output
this issue quoted is no longer what the parser produces:family-first family='Van Nguyen' given='Thi' middle='' family-first-given-last family='Nguyen' given='Van' middle='Thi'So the FF reading is not
middle="Van"— it is P6's own particle
attachment firing, foldingVaninto the family. That is the behavior
P6's earlierAccepted:clause already documents, in as many words: the
ASCII spelling collides with the tussenvoegsel reading and the name
loses its given name. The out-of-format reading is a consequence of a
documented rule, not an unrecorded premise, and"Nguyen, Thi Van" → family="Van Nguyen"is already asserted three clauses above.No live instance, and no recurrence. Across all 240 example inputs
in rules.md, six are asserted under more than one order —Jong Anke de,Juan de la Vega,Ménil Christophe de,Sheik abdul salam,de Mesnil Jean,de la Cruz Juan Carlos. Every one is deliberate: each
asserts a different field or a different value, showing how the reading
changes with the order. None is the shape this issue describes. A
format:declaration would need explicit opt-ins on all six to catch
nothing, andnot-an-example-of:would enforce a convention that has
been violated once and was fixed. mechanisms.md#MAKE-WRONG-STATES-UNREPRESENTABLE
is for a convention that keeps being violated however clearly it is
written down; this is not that.The coverage half is already answered, and declined. The numbers
have moved and the shape holds: of the 37 ambiguous particles in the
shipped vocabulary, 4 stand alone in an example (van26,abu3,do
3,del1 — 33 occurrences, sovanis 26 of 33, not the 12 of 18
filed here),von/le/la/freiherrappear only inside chains, and
29 of the 37 appear in no example at all. But that is per-entry
coverage, which rules.md's Not-in-scope already declines: "what the
tests owe is one exercise per behavioral fork rather than one per entry"
(mechanisms.md#VOCABULARY-EXERCISES-FORKS). The lone-ambiguous-particle
fork has 33 exercises. They are avanmonoculture — a real fragility,
since a change to that word's membership moves 26 examples at once — but
the fork is exercised, and a row pins a fork, not a wordlist entry.Recompute: parse
Nguyen Thi Vanunder both orders through
Parser(policy=...)with the policies intests/v2/rules_doc.py; for
the other two, walkparse_rules_doc(RULES_DOC.read_text())and group
example inputs by order-bearing annotation, and intersect the example
words againstLexicon.default().particles_ambiguous.P6's
Accepted:clause keeps its(#470)citation — it points at where
the question was raised, and this comment is the answer.- added a commit that references this issue
on Sep 8, 2026 - added a commit that references this issue
on Oct 8, 2026
rules.md#P6pinsNguyen Thi Vanunder both family-first orders:It is an FFGL-format name. Its FF reading is wrong by construction, so the second line asserts an output nobody wants and nothing should depend on — and freezes a value that a future fix would have to be described as "breaking". The same shape, reversed, applies to
Beethoven Ludwig vanasserted under FFGL.An example name carries a format. Asserting it outside that format tests the parser against a premise the name never had.
rules.mdhas nowhere to record this today: an example line carries an input, an optional policy annotation, a field and a value, but nothing that says which format the name is written in — so there is no way to distinguish "this is the answer for this name" from "this is what falls out if you parse it under a format it was never written in".Why this bites now, measured
rules.md's ambiguous-particle coverage is one word deep. Of the 37 ambiguous particles in the shipped vocabulary, only 4 appear in an example where the particle stands alone:abu,del,do,van— andvanis 12 of those 18 occurrences.von,le,laandfreiherrappear only inside chains (Freiherr von Berg,de la Vega).So a rule about a lone ambiguous particle is effectively tested through one word, and that word drags a second particle (
van der) behind it. A format label would make it visible that the coverage is one name deep rather than eight.Questions
Not-an-example-of:note, so the FF line forNguyen Thi Vancan be deleted with a reason rather than silently?