Read Russian prose, because the engine already matched it - #219
Merged
Conversation
Resonance matched Russian thoughts and could not accept one. The matching side has been bilingual for two releases -- lexicon 0.3.0 gave all 90 concept classes Russian forms, ADR-0006 put a multilingual encoder behind the semantic layer -- and extraction was never touched. The same reasoning written twice gave 5 nodes and 3 relations in English, 0 and 0 in Russian, and the person was then shown an error addressed to a language model. Four subsystems were English-only and the cue table was the least of them. WORD matched no Cyrillic token at all, so a matched cue still produced empty arguments. SENTENCE_END wanted a capital Latin letter, so Russian prose was one unbroken sentence and clause segmentation never ran. Then the connectives, and the stopword, negation, modality and conditional sets. stems() already handled Cyrillic, which is what made this look smaller than it was. Russian cues live in their own table appended after the English one. The alphabets do not overlap, so English is byte-identical rather than merely still-passing: the gate reports the same twelve figures before and after. Two things Russian needs that English does not. Modal plus infinitive is the ordinary hedged register, and without infinitive forms the whole register was invisible. Russian orthography requires a comma before 'что' and a comma is a clause break, so 'показывают, что X' lost X -- the comma is written into those cues, and bare 'что' is not a clause boundary even though English 'that' is, because English recovers via AUX_AFTER_THAT and Russian drops the copula. The web page also stopped showing the agent-facing failure text. It already had a human sentence for this; it was only ever reached when the server said nothing at all. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
4 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Found by the owner using his own product in his own language, in the browser.
The asymmetry
Resonance matched Russian thoughts and could not accept one. The matching side has been bilingual for two releases — lexicon 0.3.0 gave all 90 concept classes Russian forms, ADR-0006 put
multilingual-e5-smallbehind the semantic layer. The extraction side was never touched.The same reasoning, written twice:
The person was then shown
validation_failed: … Extract the causal structure yourself and call again with \thought`: nodes with roles [...]` — correct guidance for a model calling the tool, unusable for a human, rendered verbatim on the page.Four subsystems were English-only, and the cue table was the least of them
Adding connectives alone would have changed nothing:
WORDmatched[A-Za-z0-9]…— no Cyrillic token at all, so a matched cue still produced empty arguments. The deepest one.SENTENCE_ENDrequired[A-Z"'(\[]after the period, so Russian prose was one unbroken sentence and clause segmentation never ran.stems()already handled Cyrillic, which is exactly what made this look smaller than it was.Why English cannot have moved
Russian cues live in
_CUE_TABLE_RU, appended after the English table. The alphabets do not overlap, so no Russian pattern can match English prose or the reverse. English is byte-identical, not merely still-passing — the gate reports the same twelve figures before and after:Two things Russian needs that English does not
thatis, because English recovers viaAUX_AFTER_THATand Russian drops the copula.Deliberately not fixed
Both languages misread the same convoluted sentence the same way — the left argument of a final cue comes from a distant clause rather than the adjacent one. Verified by translating it: English gets the same wrong shape. That is a pre-existing limit of clause selection, not a Russian fault, and fixing it would move frozen English figures. Pinned in a test so the parity is on record rather than rediscovered later as a Russian-only bug.
Evidence
Six of seven relation types parse correctly on Russian test sentences, including reversed direction on «потому что» and a two-link causal chain. The seventh («Это противоречит…») correctly yields nothing: a pronoun with no antecedent, and the extractor does not guess.
Checklist
benchmark/gold is unedited.0.2.0→0.3.0; ADR-0008 records why. Neither gate is keyed to that version, so no recorded report needed regenerating.ROADMAP§5 corrected — including that it warned against closing this "with more regular expressions", which is what was done, and what narrower argument justifies it. There is still no Russian gold set.🤖 Generated with Claude Code