Skip to content

C-i needs a positional qualifier, and the never-given particles get evidence records - #392

Merged
derek73 merged 2 commits into
masterfrom
docs/particle-evidence-records
Aug 17, 2026
Merged

C-i needs a positional qualifier, and the never-given particles get evidence records#392
derek73 merged 2 commits into
masterfrom
docs/particle-evidence-records

Conversation

@derek73

@derek73 derek73 commented Aug 17, 2026

Copy link
Copy Markdown
Owner

Two commits. Comments and one criterion correction — membership is
byte-identical
, 28 never-given members before and after, 3459 tests
green.

C-i was wrong on de

C-i as recorded yesterday asked whether a word is borne as an ordinary
name in some tradition
. Applied to this set's most load-bearing member
it self-destructs:

parse("Bimal De").family == "De"       ← borne Bengali/Odia surname

So C-i said mark de ambiguous, which would break de la Vega and
every leading-particle reading.

The missing qualifier is position, and the existing set was already
obeying it. P1 acts on the leading position or a lone particle in the
given role, so what matters is whether the naming use occupies that
position:

van   Vietnamese Văn in given position    collides    ambiguous  ✓
bar   Bar Refaeli, given position         collides    ambiguous  ✓
do    Đỗ leads a surname                  collides    ambiguous  ✓
de    "De" is a TRAILING surname          no clash    never-given ✓

It reverses a verdict, and the old reading would have declined a fix

das was called ambiguous on #360 under the old reading. Measured:

Anjali Das        unchanged by never-given `das`
Bimal Das         unchanged
Maria das Neves   family='Neves' today  →  family='das Neves'   ← a fix

The surname is trailing, the rule acts leading. #360's table is
corrected in a comment there, since it was public.

The records

The never-given side is the falsifiable claim — one attested bearer in
the acting position overturns it — so it is the side worth recording.
"Ambiguous" is the safe default and needs no argument.

Each entry now states what the word is (article, preposition,
patronymic marker), because that is the only form a never-given record
can take: one bearer settles the ambiguous side, no amount of searching
settles absence.

A bare entry means nobody has examined it. Absence of a comment is
the audit record, so #360's remaining work is visible at a glance
without a separate ledger. Style follows the #269 Arabic/Hebrew blocks,
which already did this for their own members.

Deliberately not included: the ambiguous members #360 lists as
candidates to move (mc, ste, aan, aen, heer, te, tho,
thoe, vel, vande). Their records are their judgments, and #360
hasn't made them — a comment now would pre-judge the issue. They stay
bare.

How the flaw was caught

Writing a per-word record for de is what falsified the criterion. A
verdict alone hides its reasoning; a record has to state why, which
forces the collision question. C-i had survived three review agents and
a merge because nothing tested it against de — and the error pointed
at the safe side, so it could never have surfaced as a misparse.

That is the argument for the records existing, one word into writing
them.

Verification

uv run --frozen pytest — 3459 passed, 20 skipped, 11 xfailed. ruff
clean. len(particles - particles_ambiguous) == 28 before and after.

Note these are plain # comments, not #: doc-comments, so they are
internal and do not reach the rendered API reference.

🤖 Generated with Claude Code

derek73 and others added 2 commits August 16, 2026 23:23
C-i as first recorded asked whether a word is borne as an ordinary name
in some tradition. Applied to this set's most load-bearing member it
self-destructs: "De" is a borne Bengali and Odia surname
(parse("Bimal De").family == "De"), so the criterion said mark `de`
AMBIGUOUS -- which would break "de la Vega" and every leading-particle
reading.

The qualifier the existing set was already obeying: P1 acts on the
LEADING position, or a lone particle in the GIVEN role, so what matters
is whether the naming use occupies THAT position. van/bar/do collide
there and are ambiguous; "De" is a trailing surname and never reaches
the rule.

Consequence rather than tidying: `das` was called ambiguous on #360
under the old reading. Measured, "Anjali Das" and "Bimal Das" are
unchanged by never-given `das`, while "Maria das Neves" GAINS its
particle -- family="Neves" today, family="das Neves" with it. The old
reading would have declined a fix. Corrected on #360, which carried the
wrong table publicly.

Caught by writing a per-word evidence record for `de`. A verdict alone
hides its reasoning; a record has to state why, which forces the
collision question. The criterion had survived three review agents and
a merge because nothing tested it against `de`, and the error pointed
at the safe side so it could never surface as a misparse.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Comments only -- membership is byte-identical, 28 never-given members
before and after, 3459 tests green.

#360's grievance is that only 9 of the 39 ambiguous members were ever
individually justified. The never-given side had the same gap and is
the side that matters: it is the falsifiable claim, since one attested
bearer in the acting position overturns it, while "ambiguous" is the
safe default and needs no argument.

Each entry now states what the word IS -- article, preposition, or
patronymic marker -- because that is the only form a never-given record
can take. One bearer settles the ambiguous side; no amount of searching
settles absence.

The convention, and the reason it costs nothing: a BARE entry means
nobody has examined it. Absence of a comment is the audit record, so
#360's remaining work is visible at a glance rather than needing a
ledger. Following the #269 Arabic/Hebrew blocks' style, which already
did this for their own members.

Two entries carry the interesting cases. `de` records that "De" is a
borne Bengali/Odia surname but a trailing one, which is what forced
C-i's positional qualifier. `vd` records that both its readings are
non-names, so C-ii decides it on frequency.

Not included: the ambiguous members #360 lists as candidates to move
(mc, ste, aan, aen, heer, te, tho, thoe, vel, vande). Their records are
their judgments, and #360 has not made them -- writing a comment now
would pre-judge the issue. They stay bare, which the convention already
reads as unexamined.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@derek73 derek73 added the docs Documentation fixes and updates label Aug 17, 2026
@derek73 derek73 self-assigned this Aug 17, 2026
@codecov

codecov Bot commented Aug 17, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 98.51%. Comparing base (7e8c8f5) to head (558ff4c).

Additional details and impacted files
@@           Coverage Diff           @@
##           master     #392   +/-   ##
=======================================
  Coverage   98.51%   98.51%           
=======================================
  Files          44       44           
  Lines        2895     2895           
=======================================
  Hits         2852     2852           
  Misses         43       43           

☔ 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
derek73 merged commit 2023af1 into master Aug 17, 2026
11 checks passed
@derek73
derek73 deleted the docs/particle-evidence-records branch August 17, 2026 06:46
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