
    ^Uj4                     	   d dl Z d dlZd dlZd dlZd dlZd dlZdZ e j                   eedz   d            Z	ej                  j                  ej                  j                        j                         Z
d Zdj                  d e	d	   D              Ze	d
   Zej%                  ej'                  dd       ej'                  dd       ej'                  dd       d        ej(                  d e	d   D              Ze	d   d   Ze	d   Ze	d   Ze	d   Zdj                  g de
 de de	d   dz   dde	d   dde	d    d e	d!    d"e	d#    d$e	d%    d&e d'ed(    d)ed*    d+ed,    d- eed(   d.       d/ eed(   ed*   z   d.       d0e	d    d1ej'                  d2d        d3ej'                  d4d        d5ej'                  d6d        d7ej'                  d8d        d9ej'                  d:d        d;ej'                  d<d        d=ej'                  d4d       ej'                  d6d       z   ej'                  d<d       z   ej'                  d:d       z   ej'                  d8d       z    d>e	d    d? eej'                  d4d       ej'                  d6d       z   ej'                  d<d       z   ej'                  d:d       z   ej'                  d8d       z   e	d          d@edA    dBe	d    dCedD    dEedF    dGedH    dIedJ   dK    dLedM   dK    dNedO    dPedQ    dRedS    dTedU    dVedW    dX eedO   e	d          dYej'                  dZd        d[ej'                  dd        d\ej'                  dd        d]ej'                  dd        d^ ee	d_   j7                                d`e	da   db    dce	da   dd    dee	da   df    dge	d!    dhe	d#    die	d    dje dke dle dme dne do      Z eedpz   dqd      j;                  e        e e j>                  edpz   ej@                  jC                  edpz          ejD                   eedpz   dr      jG                               jI                          eds dtD              dudvw             y)x    Nz0/opt/struktur/reports/aa043-p40/20260828T091800Zz/p40-root-cause.jsonutf8)encodingc                 "    |rd| z  |z  ddS dS )Nd   .2f%znicht bestimmbar )abs     $/opt/struktur/AA-043-P40-finalize.pypctr      s     !Aa}A&C1CC    z, c           	   #   R   K   | ]  }|d     d|d    d|d    d|d   dd ! y	w)

cluster_idz (sourcesz	 Quellen/kusu	    KUs; Ø avg_kus_per_sourcer   )Nr	   .0zs     r   	<genexpr>r      sI       Ovwao&b9i%zSTUiSjknRoopq  Os   %'fine_clustersqueue
processing
retry_waitfailed_permanent)r   r   r   c              #   &   K   | ]	  }|d      yw)expected_overlapNr	   r   s     r   r   r      s     WQ1/0Ws   expected_overlap_sampleretrieval_auditmethodsall_ku_quality_proxydimension_coverageclaim_families u   # AA-043-P40 – Root-Cause-Audit

**Abschluss:** Arbeitsauftrag AA-043-P40 erledigt.

## Prüfzeitpunkt und Scope

Prüfzeitpunkt: `u   ` UTC.
Produktionsdaten wurden ausschließlich read-only über `file:/opt/struktur/youtube-research/knowledge.db?mode=ro&immutable=1` gelesen. Staging-Ausgabe: `a1  `. Keine LLM-Adjudikation, keine Provider-Requests (`0`), keine produktiven Writes. Legacy-Placeholder (`17`) wurden aus der fachlichen Analyse ausgeschlossen.

## A. Live-Baseline

| Kennzahl | Datenquelle / Abfrage | Live-Wert |
|---|---|---:|
| Knowledge Units gesamt | `knowledge_units`, `COUNT(*)` | ku_total   ,z@ |
| echte KUs | `knowledge_units WHERE legacy_placeholder=0` | u&   |
| Legacy-Placeholder | `knowledge_units WHERE legacy_placeholder=1` | 17 |
| Review APPROVED | `knowledge_units GROUP BY review_state` | 2.394 |
| Review PENDING / NEEDS_REVIEW | gleiche Abfrage | 0 / 0 |
| Review REJECTED | gleiche Abfrage | 17 |
| Evidence PLAUSIBEL | `GROUP BY evidence_class` | 2.392 |
| Evidence UNSICHER | gleiche Abfrage | 19 |
| Evidence BESTÄTIGT / GESICHERT / WIDERSPRÜCHLICH | gleiche Abfrage | 0 / 0 / 0 |
| Gold gesamt | `GROUP BY gold_state` | `NONE=2.411`; CANDIDATE/GOLD/REVOKED=0 |
| DB-SHA-256 | Datei-Hash | `	db_sha256z4` |
| integrity_check | `PRAGMA integrity_check` | `integrity_checkz5` |
| FK-Verletzungen | `PRAGMA foreign_key_check` | fk_countuY    |

## B. Source-Overlap und enge Cluster

Analysierte kanonische Source-Identitäten: **source_totalu[  **. Titel wurden, wo vorhanden, read-only aus `videos.youtube_id/title` ergänzt; Obsidian-/YouTube-Repräsentationen wurden über `source_identity` getrennt und nicht als unabhängige Evidence gleichgesetzt.

Es wurden **17** enge, regelbasiert aus Source-Titel, Source-Identity und KU-Text gebildete Cluster gefunden (Mindestziel 10 erfüllt):

u   

Der unabhängige Expected-Overlap-Sample umfasst **30 source-seitig ausgewählte Paare**, nicht aus dem V2-Kandidatenoutput gezogen:

- `YES`: YESz
- `UNCLEAR`: UNCLEARz	
- `NO`: NOz#
- `EXPECTED_SOURCE_OVERLAP_RATE`:    z  (`YES` allein); `YES+UNCLEAR`: u  

Die Auswahl basiert auf engem Cluster sowie gemeinsamen Title-/Entity-Signalen. Die Klassifikation ist ein begrenztes, reproduzierbares Staging-Audit anhand der zugehörigen KU-Texte; sie ist keine unabhängige menschliche Doppelannotation. Deshalb werden die Werte als Diagnose-Sample und nicht als allgemeine Corpus-Wahrheit interpretiert.

**Befund:** Source-Level-Overlap ist in diesem Sample niedrig. Hypothese A wird gestützt, aber nicht allein als vollständige Ursache bewiesen.

## C. Source → KU Coverage

Für die `YES`-Paare wurde geprüft, ob mindestens ein korrespondierendes KU-Paar in beiden Source-Identitäten vorhanden ist. Die zwei `YES`-Paare hatten jeweils extrahierbare KUs auf beiden Seiten (`BOTH_EXTRACTED=2`); `ONLY_SOURCE_A_EXTRACTED=0`, `ONLY_SOURCE_B_EXTRACTED=0`, `NEITHER_EXTRACTED=0`. Für `UNCLEAR`/`NO` ist eine Coverage-Aussage fachlich nicht sinnvoll.

Damit ist für diesen kleinen unabhängigen Sample kein primäres „gemeinsame Information fehlt auf einer Seite“-Muster nachgewiesen.

## D. KU-Granularität und Non-Knowledge

Deterministisches, stratifiziertes Sample: **100 echte KUs**. Kategorien:

| Kategorie | Anzahl | Anteil |
|---|---:|---:|
| `ATOMIC_GOOD` | 50 | 50,00 % |
| `CONTEXT_MISSING` | 18 | 18,00 % |
| `MULTI_CLAIM` | 22 | 22,00 % |
| `TOO_SPECIFIC` | 1 | 1,00 % |
| `TOO_GENERIC` | 3 | 3,00 % |
| `TEMPLATE/NON_KNOWLEDGE` | 5 | 5,00 % |

Corpusweiter regelbasierter Proxy-Audit über z echte KUs:

- `ATOMIC_GOOD`: ATOMIC_GOODz
- `CONTEXT_MISSING`: CONTEXT_MISSINGz
- `MULTI_CLAIM`: MULTI_CLAIMz
- `TOO_SPECIFIC`: TOO_SPECIFICz
- `TOO_GENERIC`: TOO_GENERICz
- `TEMPLATE/NON_KNOWLEDGE`: zTEMPLATE/NON_KNOWLEDGEzf

Der Proxy ist eine Diagnoseklassifikation, keine menschliche Faktvalidierung. Er zeigt jedoch, dass z von z KUs (u   ) nicht als sauberer `ATOMIC_GOOD`-Proxy klassifiziert wurden. Das ist ein starker Kandidat für fehlende quellenübergreifende Vergleichbarkeit.

## E. Claim-Families

Die reproduzierbare normalisierte Familien-Signatur erzeugt families_totalu    Familien für z KUs:

- Single-KU-Familien: single_ku_familiesz
- Familien mit mehreren KUs: multi_ku_familiesz.
- Familien mit mehreren canonical sources: **multi_source_familiesu  **

Das ist der stärkste technische Befund gegen die These „nur Matcher V2 ist schuld“: Fast jede Familie ist isoliert; nur zwei Familien verbinden mehrere canonical sources. Die aktuelle Claim-Family-Repräsentation ist damit stark quellenspezifisch bzw. normalisierungsarm.

## F. Retrieval- und Matcher-Audit

Der P40-Expected-Sample wurde nicht aus V2-Kandidaten ausgewählt. Für die zwei `YES`-Paare gilt im Staging-Sample:

- aktuelle V2-nahe Retrievalvariante A: `2/2` retrieved, Recall **100 %**; zugleich A_V2$false_candidate_pairs_on_expected_nou    Fehlkandidaten unter 24 `NO`-Paaren.
- Variante B `Entity + Predicate + Family`: `0/2` retrieved, Recall **0 %**; zu streng für die vorhandenen Repräsentationen.
- Variante D lexical: `2/2` retrieved, Recall **100 %**; zugleich 	D_lexicalu   Fehlkandidaten unter 24 `NO`-Paaren.

Die positive Stichprobe ist mit zwei `YES`-Paaren zu klein für eine belastbare allgemeine Recall-Schätzung. `Matcher Recall GIVEN RETRIEVAL` ist für diesen P40-Sample **nicht belastbar bestimmbar**, weil die Original-V2-Adjudikationsausgabe für genau diese unabhängig ausgewählten Paare nicht als eigene Messreihe vorliegt. Die 22 P39-neuen V2-SAME-Kandidaten wurden separat auditiert; P39 weist `0` neue fachlich echte SAME_CLAIM aus.

**Interpretation:** Retrieval ist nicht als primärer Verlustkanal bewiesen; es ist aber stark verrauscht. Die Variante B wäre nachweislich zu restriktiv. Matcher V2 ist nicht als Produktionslösung qualifiziert, aber P40 liefert keinen Beleg, dass seine Adjudikation die Hauptursache der 0 neuen echten Matches ist.

## G. Negation, Zahlen und Contradiction

Im echten KU-Bestand wurden gezählt: explizite Negation `explicit_negationz`, Zahlen `numericz`, Versionsbezug `versionz`, zeitlicher Bezug `temporalz`, Bedingungen/Quantifier `
conditionsu!   `.

Der Negationsanteil beträgt ur  ; ein negativer/kontrastiver Claim ist somit eine Minderheitsrepräsentation. Das erklärt plausibel, warum Contradictions selten gefunden werden, beweist aber nicht, dass der Extraktor negative Aussagen systematisch verliert. Belastbare reale Contradictions bleiben **0**; CONTRADICTION-DATENBASIS NOCH ZU KLEIN.

## H. P35/P39-Dichte

P39-Dichte: Median 7,227 und Mittelwert 14,673 KUs/1.000 Wörter. P35-Werte (Median 37,981; Mittelwert 43,259) sind ein **historischer Teilstand, nicht live verifiziert**. Die Differenz ist durch die live gemessene Source-Mix-/Contenttyp-Verteilung plausibel, aber die P40-Auswertung enthält keine vollständige Wortzählung je P35-Quelle; eine exakte kausale Zuschreibung ist daher **Ursache noch nicht nachgewiesen**. Die niedrigere Dichte senkt die erwartete Zahl fachlicher Cross-Source-Treffer, erklärt allein aber nicht die extreme Claim-Family-Isolation.

## I. Architektur-Gap

Produktiv vorhanden: `reconciliation_decisions` (read-only geprüft). Nicht vorhanden: `claim_groups`, `claim_group_members`, `contradiction_links`, `evidence_history`, `merge_audit`, `supersession_audit`. Damit existiert produktiv keine nachgewiesene persistente Claim-Link-/Contradiction-/Evidence-Historie. Die P40-Auswertung blieb deshalb vollständig in JSON-Staging.

## J. Root-Cause-Ranking

1. **BEWIESEN – Claim-/KU-Repräsentation ist stark fragmentiert.** Nur 2 Multi-Source-Claim-Familien bei 2.394 echten KUs; 1.502 `ATOMIC_GOOD`-Proxy-KUs, aber hoher Kontext-/Multi-Claim-/Template-Anteil.
2. **BEWIESEN für den Sample – Source-Corpus ist überwiegend heterogen.** Nur 2 von 30 source-seitig ausgewählten Paaren wurden als fachlich gleich bewertet; der Sample ist klein und rubric-basiert.
3. **BEWIESEN – Candidate Retrieval ist verrauscht und eine Entity+Predicate+Family-Variante wäre zu restriktiv.** V2-nahe A findet beide YES, erzeugt aber viele NO-Kandidaten.
4. **PLAUSIBEL – KU-Extraktion verliert Kontext/Atomicität und erzeugt Templates/Meta-Inhalt.** Der 100er-Sample und Corpus-Proxy stützen dies; eine vollständige manuelle Faktprüfung fehlt.
5. **PLAUSIBEL – geringe Negationsabdeckung reduziert Contradiction-Chancen.** Die Datenlage zeigt wenige Negationen, aber keinen vollständigen Extraktor-Verlustnachweis.
6. **NICHT ALS HAUPTURSACHE BEWIESEN – Matcher-V2-Adjudikation.** P39 auditierte 22 neue Kandidaten ohne neuen echten SAME_CLAIM; P40 kann den allgemeinen Matcher-Recall wegen zu kleiner unabhängiger YES-Menge nicht sicher quantifizieren.

## K. Primäre technische Richtung

**E – Kombination, klare Reihenfolge:**

1. zuerst KU-Extraktor/-Kontext und atomare Claim-Repräsentation verbessern; Templates, Navigation, CTA, Begrüßungen und unresolved references als Review-/Ausschlussklassen markieren;
2. danach Candidate Retrieval mit Entity-/Synonym-/Compound-/OCR-/Versionssignalen erweitern, ohne die zu restriktive Variante B zu verwenden;
3. erst danach Matcher V2 auf einem neuen, unabhängig auditierten Set mit ausreichend echten SAME_CLAIM- und Contradiction-Fällen nachmessen.

Keine dieser Änderungen wurde in P40 produktiv vorgenommen.

## L. Abschlussentscheidungen

| Frage | Entscheidung | Begründung |
|---|---|---|
| Weiterer KU-Backfill aktuell sinnvoll? | **NEIN** | Mehr KUs vergrößern bei aktueller Fragmentierung vor allem Rauschen; zuerst Repräsentation/Qualität verbessern. |
| Muss zuerst der KU-Extraktor verändert werden? | **JA** | Kontext-/Multi-Claim-/Template-Befund und Multi-Source-Family-Isolation. |
| Muss zuerst Candidate Retrieval verändert werden? | **JA, nach Extraktor** | V2-nahe Retrievalvariante findet YES, ist aber verrauscht; B ist zu streng. |
| Muss zuerst Matcher V2 verändert werden? | **NEIN** | Hauptursache nicht nachgewiesen; P39 liefert 0 neue fachliche SAME_CLAIM trotz Kandidaten. |
| Ist der Corpus selbst die Hauptursache? | **TEILWEISE** | niedriger erwarteter Source-Overlap, aber Repräsentations-/Retrievalbefunde sind zusätzlich stark. |

## M. Schutzstatus / Final-Gate

- produktive KU-INSERT/UPDATE/MERGE: `0`
- Evidence-/Review-/Gold-Änderungen: `0`
- historischer Backfill: `0`
- Queue-Veränderung durch P40: `0`
- Queue live: `done=donez, processing=z, retry_wait=z, failed_permanent=z; graphiti_release=0: releasezU`
- Graphiti-POSTs: `0`; Neo4j-Writes: `0`; Provider-Requests: `0`
- Single Writer: `writeractive/substatez`, MainPID `pidz"`
- FK-Baseline: `integrity_check=z`, `foreign_key_check=u   `; die historische Tuple-Verteilung `chapters→videos=279`, `video_links→videos=206`, fehlende Parent-IDs `=27` und Fingerprint `5b1ade038b443ca80d8e344ff1a4cb25b8f4e5ff3bbca5b4bb3b37fcf6c078c1` wurden nicht verändert.
- Finaler DB-Hash bleibt `z`.

## N. Artefakte

- `z/p40-root-cause.json`
- `z/p40-source-overlap.json`
- `z /p40-ku-quality-sample.json`
- `z/p40-retrieval-audit.json`
- `u   /AA-043-P40.md`

Die JSON-Artefakte enthalten die vollständigen Source-/Cluster-/Sample-Listen. Der Bericht wird nach dem Schreiben gehasht und auf Secret-Marker geprüft.

Arbeitsauftrag AA-043-P40 erledigt.
z/AA-043-P40.mdwrbc              #   ,   K   | ]  }|t         v   y w)N)report)r   ss     r   r   r   	   s0       vY  GH  wx  |B  wB  vYs   )api_keyzAuthorization: Bearerrefresh_tokenz	password=z
token.json)rM   bytessha256secret_hitsF)ensure_ascii)%jsonhashlibosdatetime
subprocesscollectionsDloadopenxnowtimezoneutc	isoformatr   joinclustersqupdategetCounterlabelsmaqcovfamsumvaluesrM   writeprintdumpspathgetsizerR   read	hexdigestr	   r   r   <module>rw      s   6 6 64			$qI_G_ioBp8qaw  xI  xI  xM  xM  NV  N_  N_  Nc  Nc  xd  xn  xn  xpsv C	  O{|  ~M  |N  O  
OG*ahhQUU<%:l[\H]qrqvqv  xJ  KL  rM  N  O{W!<U:VWW[\]n[opy[zYZ  @A  BX  @Y|~  _`  au  _v  [^  |}  ~N  |O  x{ KA  KA  W  KA  X[  W\  KA  \~  KA  @  ~A  KA  Ax	  KA  y	z	  {	E
  y	F
  G
I
  y	I
  J
K
  x	L
  KA  L
M  KA  NO  PZ  N[  \]  M^  KA  ^M  KA  NO  P[  N\  M]  KA  ]R  KA  ST  Uf  Sg  Rh  KA  h^  KA  _`  ak  _l  ^m  KA  mJ  KA  KL  M[  K\  J]  KA  ]|  KA  }E  |F  KA  F[   KA  \ b   c h   \ i   [ j   KA  j y   KA  z @!  A!J!  z K!  y L!  KA  L!V!  KA  W!]!  ^!b!  W!c!  V!d!  KA  d!H"  KA  I"L"  M"S"  T"Y"  M"Z"  ["]"  I"^"  H"_"  KA  _""  KA  @#C#  D#J#  K#P#  D#Q#  R#X#  Y#b#  R#c#  D#c#  d#f#  @#g#  "h#  KA  h#o:  KA  p:q:  r:|:  p:}:  o:~:  KA  ~:^;  KA  _;a;  _;e;  _;e;  f;s;  t;u;  _;v;  ^;w;  KA  w;N<  KA  O<Q<  O<U<  O<U<  V<g<  h<i<  O<j<  N<k<  KA  k<~<  KA  <A=  <E=  <E=  F=S=  T=U=  <V=  ~<W=  KA  W=k=  KA  l=n=  l=r=  l=r=  s=A>  B>C>  l=D>  k=E>  KA  E>X>  KA  Y>[>  Y>_>  Y>_>  `>m>  n>o>  Y>p>  X>q>  KA  q>O?  KA  P?R?  P?V?  P?V?  W?o?  p?q?  P?r?  O?s?  KA  s?[A  KA  \A^A  \AbA  \AbA  cAtA  uAvA  \AwA  xAzA  xA~A  xA~A  ALB  MBNB  xAOB  \AOB  PBRB  PBVB  PBVB  WBoB  pBqB  PBrB  \ArB  sBuB  sByB  sByB  zBGC  HCIC  sBJC  \AJC  KCMC  KCQC  KCQC  RC`C  aCbC  KCcC  \AcC  [AdC  KA  dCiC  KA  jCkC  lCvC  jCwC  iCxC  KA  xC~C  KA  CBD  CDED  CDID  CDID  JD[D  \D]D  CD^D  _DaD  _DeD  _DeD  fDsD  tDuD  _DvD  CDvD  wDyD  wD}D  wD}D  ~DVE  WEXE  wDYE  CDYE  ZE\E  ZE`E  ZE`E  aEnE  oEpE  ZEqE  CDqE  rEtE  rExE  rExE  yEGF  HFIF  rEJF  CDJF  KFLF  MFWF  KFXF  CYF  ~CZF  KA  ZFCJ  KA  DJGJ  HJXJ  DJYJ  CJZJ  KA  ZJiJ  KA  jJkJ  lJvJ  jJwJ  iJxJ  KA  xJWK  KA  XK[K  \KpK  XKqK  WKrK  KA  rKQL  KA  RLUL  VLiL  RLjL  QLkL  KA  kLZM  KA  [M^M  _MvM  [MwM  ZMxM  KA  xMHV  KA  IVJV  KVQV  IVRV  SVyV  IVzV  HV{V  KA  {VdZ  KA  eZfZ  gZrZ  eZsZ  tZZ[  eZ[[  dZ\[  KA  \[ii  KA  jimi  niAj  jiBj  iiCj  KA  CjNj  KA  OjRj  Sj\j  Oj]j  Nj^j  KA  ^jpj  KA  qjtj  uj~j  qjj  pj@k  KA  @kUk  KA  VkYk  Zkdk  Vkek  Ukfk  KA  fkAl  KA  BlEl  FlRl  BlSl  AlTl  KA  Tlwl  KA  xl{l  |ll  @mSm  |lTm  UmVm  Wmam  Umbm  xlcm  wldm  KA  dmCp  KA  DpEp  DpIp  DpIp  JpPp  QpRp  DpSp  CpTp  KA  Tpap  KA  bpcp  bpgp  bpgp  hptp  upvp  bpwp  apxp  KA  xpEq  KA  FqGq  FqKq  FqKq  LqXq  YqZq  Fq[q  Eq\q  KA  \qoq  KA  pqqq  pquq  pquq  vqHr  IrJr  pqKr  oqLr  KA  Lrbr  KA  crfr  grhr  irrr  grsr  grzr  grzr  gr|r  cr}r  br~r  KA  ~rUt  KA  VtWt  Xt`t  Vtat  btjt  Vtkt  Utlt  KA  ltmt  KA  ntot  ptxt  ntyt  ztDu  ntEu  mtFu  KA  FuRu  KA  SuTu  Uu]u  Su^u  _udu  Sueu  Rufu  KA  fuIv  KA  JvKv  Lv]v  Jv^v  Iv_v  KA  _vuv  KA  vvwv  xvBw  vvCw  uvDw  KA  Dw~z  KA  z@{  A{L{  zM{  ~zN{  KA  N{j{  KA  k{l{  j{m{  KA  m{G|  KA  H|I|  G|J|  KA  J|h|  KA  i|j|  h|k|  KA  k|L}  KA  M}N}  L}O}  KA  O}n}  KA  o}p}  n}q}  KA  q}HA  KA QV , 2 26 : jdjj1--bggooaHXFX6Ycqcjcqcqrvwx  zJ  xJ  KO  sP  sU  sU  sW  dX  db  db  dd  sv  vY  LX  vY  sY  Z  hm  n  or   