Skip to content

fix: Stage-B-Sibling-Linking semantisch — related-Lücke bei lexikalisch disjunkten Titeln#82

Open
TillQuandel wants to merge 1 commit into
masterfrom
fix/sibling-semantic-linking
Open

fix: Stage-B-Sibling-Linking semantisch — related-Lücke bei lexikalisch disjunkten Titeln#82
TillQuandel wants to merge 1 commit into
masterfrom
fix/sibling-semantic-linking

Conversation

@TillQuandel

Copy link
Copy Markdown
Owner

Problem

cross_reference Stage B nahm Pipeline-Geschwister (Notes desselben Laufs) nur als related-Kandidat, wenn ihr Titel/Alias-Token-Overlap ≥ 1 war. Zwei semantisch fast identische Notes mit lexikalisch disjunkten Titeln fielen durch:

  • „Wissensorganisation" ↔ „Semantisches Retrieval mit Assoziationsnetz" — Body-cos 0,97, aber 0 gemeinsame Titel-Tokens → kein Kandidat → beide related: [] + „0 sinnvolle related-Links".

Frühere Läufe klappten nur, weil Geschwister-Titel Stamm-Tokens teilten („ISP Stage …", „ADKAR …", „… Phase (Merrill FPI)"). Es war keine Regression, sondern ein blinder Fleck der Oberflächen-Token-Heuristik (verschärft durch dt. Komposita: „Wissens-"/„Informations-organisation" = gleiches Konzept, 0 Tokens).

Fix (additiv, kein Regressionsrisiko)

_rank_sibling_candidates: Geschwister wird Kandidat bei Token-Overlap ODER Body-Embedding-Cosine ≥ Schwelle.

  • Token-Pfad unverändert — lexikalische Treffer ranken via 1.0 + overlap strikt vor semantischen.
  • Embeddings nur für token-disjunkte Geschwister (Draft-Embedding einmal gecacht).
  • LLM bleibt finaler Arbiter über den tatsächlichen Link (Stage B liefert nur Kandidaten).

Schwelle 0,85 empirisch kalibriert (nicht geraten): verwandte Geschwister 0,97–0,985, fremde Paare 0,73–0,76 → klare Trennung mit Marge. ENV-überschreibbar (ATOMIC_AGENT_SIBLING_SEMANTIC_COSINE).

Verifikation

  • Real-Sanity: die zwei echten Notes werden mit dem Fix gegenseitig Kandidat (vorher beide leer).
  • Cross-Model: Qwen (Root-Cause bestätigt, Token-vs-Embedding-Asymmetrie, diesen Ansatz empfohlen — Qwens „0,94 = Duplikat/Echo-Chamber"-Warnung gegen die Repo-Schwellen widerlegt: Merge-Gate ist 0,985, 0,90 ist explizit „distinkt→flag"); Codex (Implementierung, 0 Bugs: Ordering/None/Cache/Schwelle korrekt).
  • TDD (7 neue Tests), cross_reference-Suite (42) grün.

🤖 Generated with Claude Code

…n Titeln

Problem: cross_reference Stage B nahm Pipeline-Geschwister (Notes desselben
Laufs) nur bei Titel-/Alias-Token-Overlap >= 1 als related-Kandidat. Zwei
semantisch fast identische Notes mit lexikalisch disjunkten Titeln
("Wissensorganisation" ↔ "Semantisches Retrieval mit Assoziationsnetz",
Body-cos 0,97) teilten 0 Tokens → kein Kandidat → beide related: []. Frühere
Läufe klappten nur, weil Geschwister-Titel Stamm-Tokens teilten (ISP/ADKAR/Phase).

Fix ADDITIV (_rank_sibling_candidates): Token-Overlap ODER Body-Embedding-Cosine
>= Schwelle. Token-Pfad unverändert (kein Regressionsrisiko, lexikalische Treffer
ranken via 1.0+overlap strikt vor semantischen). Embeddings nur für token-disjunkte
Geschwister (Draft-Embedding einmal gecacht). LLM bleibt finaler Arbiter über den Link.

Schwelle 0,85 EMPIRISCH kalibriert (nicht geraten): verwandte Geschwister 0,97-0,985,
fremde Paare 0,73-0,76 → klare Trennung. Fixt nebenbei das dt.-Komposita-Problem
(Wissens-/Informations-organisation: gleiches Konzept, 0 gemeinsame Tokens).

Diagnose cross-model verifiziert (Qwen: Root-Cause bestätigt, Ansatz empfohlen;
Codex: Implementierung 0 Bugs). Real-Sanity: die zwei echten Notes werden jetzt
gegenseitig Kandidat. TDD (7 Tests), cross_reference-Suite (42) grün.
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.

2 participants