fix: cross-lingualer Recall + typ-bewusste Dedup + Body-Redundanz-Flag#66
Merged
Merged
Conversation
Drei gekoppelte Fixes aus dem Ebner-Live-Lauf (englische Meta-Analyse durch die generative Pipe), je TDD + Mistral-Cross-Review: #1 planner.filter_hallucinated war sprachblind: der reine Token-Coverage-Filter gegen den Volltext verwarf deutsche (paraphrasierte) Konzept-Titel einer englischen Quelle mit null Overlap -- inkl. des Paper-Kernbefunds "Lern-Zufriedenheits-Dissoziation". Neu: cross-lingualer semantischer OR-Rettungsanker (max-cosine Titel-vs-Saetze, multilinguales MiniLM; Schwelle 0.50 gemessen: echte Konzepte 0.575-0.825 vs. Halluzinationen 0.357/0.358). Reiner OR-Kanal -- kann nur retten, nie zusaetzlich verwerfen. #2a typ-bewusstes Dedup-Blocking: literature/moc/merge-stub koexistieren per Vault-Design mit Konzept-Notes und sind keine Dup-/Merge-Kandidaten. Verhindert den False Positive "Konzept-Note ist Duplikat ihrer eigenen Lit-Note". related-Links ueber Typgrenzen bleiben erlaubt (Konzept soll auf Quelle linken). #2b write_note honoriert extend_path jetzt typ-sicher als Merge-Ziel (Konzept-Dup mit abweichendem Titel -> Merge-Stub statt Dublette; bisher verpufftes cross_reference-Signal). Review-Haertung: Stem-Kollision in resolve_vault_relpath (mehrdeutig -> None); _SENT_EMB_CACHE-Deckel gegen unbounded growth (GUI/Batch). Bekannte Grenze: fail-open bei kaputtem type-Frontmatter (= bisheriges Verhalten). 15 neue Tests, kanonische Suite 621 passed.
…ter-Notes
flag_redundant_siblings() markiert nach den Dedup-Stages (resolve_sibling_dups +
dedup_hub_subconcepts) und vor dem Writer zwei DISTINKTE create-Notes EINES Laufs mit
Body-Cosine >= REDUNDANT_SIBLING_COSINE_THRESHOLD (Default 0.90) per quality_flag auf
beide ("hohe Ueberlappung mit [[Sibling]] — beim Review Kontext kuerzen/verlinken").
Zwei empirische Gates (Ebner-Audit) zeigten: solche Geschwister sind weder mergebar
(distinkte Konzepte) noch satz-strippbar (Redundanz paraphrasiert: exakt 0/10, fuzzy>=0.93
nur 1/10 Saetze). Der einzige verlustfreie nachgelagerte Umgang ist ein seiteneffekt-freier
Review-Hinweis — kein Merge, kein Strip, kein Body-Eingriff.
- generative/config.py: REDUNDANT_SIBLING_COSINE_THRESHOLD (ENV-ueberschreibbar)
- generative/orchestrator.py: flag_redundant_siblings() + Einhaengen in die Pipeline
- generative/tests/test_redundant_sibling_flag.py: 7 Tests (6 deterministisch via
body_cosine_fn-Injection, 1 slow mit echtem Modell)
Cross-Model-Review (Codex): Empty-Body-Guard + slow-Marker uebernommen; pytest.ini-Befund
als CI-False-Positive verifiziert (CI uebergibt 'generative' positional, ueberschreibt
testpaths).
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.
Funde aus dem Ebner/Gegenfurtner-2019-Schwachstellen-Audit (englische Meta-Analyse durch die generative Pipeline). Zwei Commits, vier Befunde — alle deterministisch, TDD, CI-äquivalente Vollsuite grün (4695 passed).
#1 — Sprachblinder Halluzinations-Filter (commit 31a4cb4)
filter_hallucinatedverwarf Konzepte über wörtlichen Token-Overlap zwischen Titel und Volltext. Deutscher Prompt/Vault + englische Quelle → der Kernbefund ("Lern-Zufriedenheits-Dissoziation") hatte Coverage 0 und wurde still gelöscht. Fix: cross-lingualer OR-Rettungsanker über multilinguale Satz-Embeddings (MAX-Cosine, fail-open, ENV-SchwelleATOMIC_AGENT_TITLE_PRESENCE_COSINE=0.50). Greift nur wenn der lexikalische Check ablehnt — kann retten, nie zusätzlich verwerfen.#2a — Typ-blinder Dedup-Pool (commit 31a4cb4)
build_existing_conceptsindexierte alle Note-Typen → eine Konzept-Note wurde als Duplikat ihrer eigenentype: literature-Note geflaggt (koexistieren per Vault-Design). Fix:is_dedup_eligible(literature/moc/merge-stub) gated den Dup-Entscheid + Merge-Lookup. related-Links über Typgrenzen bleiben erlaubt.#2b —
extend_pathungelesen bei Vault-Dup mit abweichendem Titel (commit 31a4cb4)write_notematchte nur Titel/Alias gegen den Vault-Index, nieextend_path. Fix:write_notehonoriertextend_pathjetzt als Merge-Ziel (typ-sicher viaresolve_vault_relpath+is_dedup_eligible).#8 — Body-Redundanz zwischen distinkten Geschwister-Notes (commit cfaf4fa)
Zwei distinkte Konzept-Notes eines Laufs können Body-Cosine 0.967 haben (Extractor re-deriviert geteilten Kontext paraphrasiert). Zwei empirische Gates zeigten: weder mergebar (distinkte Konzepte) noch satz-strippbar (exakt 0/10 gemeinsame Sätze, fuzzy≥0.93 nur 1/10). Lösung:
flag_redundant_siblings()markiert nach den Dedup-Stages und vor dem Writer beide Notes mit einem seiteneffekt-freien quality_flag (Review-Hinweis) bei Body-Cosine ≥ATOMIC_AGENT_REDUNDANT_SIBLING_COSINE(Default 0.90). Kein Merge, kein Strip.Tests
test_planner_hallucination_filter.py,test_typeaware_dedup.py,test_redundant_sibling_flag.pypytest generative lib/decision_engine/tests): 4695 passed, 3 skipped, 0 failures🤖 Generated with Claude Code