Skip to content

Stop presenting grammar as somebody's reasoning - #220

Merged
Parshkov merged 1 commit into
mainfrom
claude/no-nonsense-from-russian
Sep 7, 2026
Merged

Stop presenting grammar as somebody's reasoning#220
Parshkov merged 1 commit into
mainfrom
claude/no-nonsense-from-russian

Conversation

@Parshkov

@Parshkov Parshkov commented Sep 7, 2026

Copy link
Copy Markdown
Owner

The card said «что --causes--> ребёнок». The owner read it on his own thought and called it nonsense. He was right.

Two mistakes met

I wrote the Russian cue table by walking the English one and translating, and makes|made|make became делает|делают|сделал. That is a false friend. English "makes" is causal only in "makes X happen"; Russian «делает» is the ordinary verb "does". So «момент к тому, что делает ребёнок» — "torque added to what the child does" — was read as a causal claim.

And nothing stopped a bare complementiser from becoming a node once a cue landed beside it. PRONOUN_ONLY marks a label resolvable to an antecedent; when there is none, the label survived.

A wrong relation is worse than a missing one here. The entire promise is that what is shown is the person's own reasoning, so grammar rendered as a causal claim is the worst failure this extractor has.

Fixes

  • The false friend is dropped. «превращает» ("turns into") is genuinely causal and stays.
  • NEVER_A_NODE: an argument made only of function words no longer grounds an endpoint, so the caller abstains rather than minting a node out of grammar. Cyrillic-only on purpose — English arguments cannot reach it, so the byte-identical guarantee from ADR-0008 survives.
{"assertion_accuracy": 1.0, "cases": 22, "determinism": 1.0, "edge_f1": 0.9359,
 "edge_precision": 0.9359, "edge_recall": 0.9359, "modality_accuracy": 0.9726,
 "node_f1": 0.9333, "node_precision": 0.9297, "node_recall": 0.937,
 "nonempty_rate": 1.0, "pii_leaks": 0, "role_accuracy": 0.6218}

Identical before and after, as in #219.

A separate defect found in the same session

The composer carried maxLength: 4000, which enforces the server's limit by silently swallowing keystrokes. A 7300-character idea pasted in arrived as a 4000-character one, with nobody told which half was read — and the half dropped was the substantive one. The limit is now stated in the page's own error colour, the submit is blocked while over it, and the person chooses what to cut.

What this does NOT fix, stated plainly

Recall on real Russian prose is poor. That ~7300-character design document holds roughly fifteen explicit causal claims and yields three relations, one of which still reads the opening pleasantry rather than the idea. The misses are ordinary connectives not yet in the table («иначе», «помогает») and cross-sentence reference, which English does not do either.

ADR-0008 now says this rather than implying otherwise. The next honest step is the Russian gold set that ADR already names as missing — not more patterns added by eye, which is exactly how the false friend got in.

Evidence

python3 -m unittest discover -s tests          # Ran 725 tests ... OK (skipped=1)
python3 benchmark/extraction-v0.2/runner.py    # pass, metrics identical
python3 benchmark/r0-v0.2/runner.py            # pass
python3 ops/lexicon_check.py                   # exit 0

Three new tests pin the garbage node, the false friend, and that removing it did not cost the relations that were right.

Checklist

  • CI is green — 3/3: test suite 12m4s, benchmark gates 41s, lexicon 8s.
  • benchmark/ gold is unedited.
  • Engine behaviour changed within the extractor; ADR-0008 amended with the correction and with the recall it does not achieve.
  • No credentials, tokens or private human context committed — the idea text was used only in a scratchpad and is not in this diff.

🤖 Generated with Claude Code

The card said «что --causes--> ребёнок». The owner read it on his own
thought and called it nonsense, correctly.

Two mistakes met. The Russian cue table was written by walking the
English one and translating, and makes|made|make became
делает|делают|сделал. That is a false friend: English 'makes' is causal
only in 'makes X happen', while Russian «делает» is the ordinary verb
'does', so «момент к тому, что делает ребёнок» was read as a causal
claim. And nothing stopped a bare complementiser from becoming a node
once a cue landed beside it -- PRONOUN_ONLY marks a label resolvable to
an antecedent, and with no antecedent the label survived.

The false friend is gone and an argument made only of function words no
longer grounds an endpoint, so the caller abstains instead of minting a
node out of grammar. NEVER_A_NODE is Cyrillic-only on purpose: English
arguments cannot reach it, and the extraction gate is still
byte-identical on all twelve figures.

Separately, the composer silently swallowed every keystroke past 4000
characters, so a 7300-character idea pasted in arrived as a
4000-character one with nobody told which half was read -- and the half
dropped was the substantive one. The limit is now stated, the submit is
blocked while over it, and the person chooses what to cut.

Recall on real Russian prose remains poor and ADR-0008 now says so
rather than implying otherwise.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@Parshkov
Parshkov merged commit e9c7ca8 into main Sep 7, 2026
3 checks passed
@Parshkov
Parshkov deleted the claude/no-nonsense-from-russian branch September 7, 2026 08:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant