
    {XjF-                     $	   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               Z e j                   eedz               Z	 e j                   eedz               Z
 e j                   eedz               Z e j                   eedz               Z e j                   eedz               Zej                  j                  ej                  j                         j#                         Zd	 Zd
j'                  g de ded    d ee	d          de	d   j+                  dd        de	d   j+                  dd        de	d   j+                  dd        de	d   j+                  dd        de	d   j+                  dd        de	d   j+                  dd        de	d   j+                  dd       e	d   j+                  dd       z   e	d   j+                  dd       z   e	d   j+                  dd       z   e	d   j+                  dd       z    d ee	d          d e ee	d         e	d   j+                  dd       z
   ee	d                d  ee
d          d! ee
d"          d#e
d   j+                  dd        d$e
d%   j+                  d&d        d'e
d%   j+                  d(d        d)e
d%   j+                  dd        d* ee	d          d+ ee
d          ee
d"         z    d, ee	d          d+ ee
d          d-e	d   j+                  dd        d+e
d   j+                  dd        d. ee	d         e	d   j+                  dd       z
   d+ ee
d"          d/ ed0d1       d2ed3   d4    d+ed5   d4    d6ed3   d7    d+ed5   d7    d8ed3   d9    d+ed5   d9    d:ed3   d;    d+ed5   d;    d< ed0d1       d=e d>      Z eed?z   d@dAB      j/                  e        e e j2                  ed?z   ej4                  j7                  ed?z          ej8                   eed?z   dC      j;                               j=                         d dDdEF             y)G    Nz0/opt/struktur/reports/aa043-p41/20260828T094500Zz/p41-selection.jsonz/p41-v1-results.jsonz/p41-v2-results.jsonz/p41-quality-audit.jsonz!/p41-cross-source-comparison.jsonz/p41-schema-gap.jsonc                 "    |rd| z  |z  ddS dS )Nd   z.2f%znicht bestimmbar )abs     $/opt/struktur/AA-043-P41-finalize.pypr
      s     c!eAgc]!$A/AA     u   # AA-043-P41 – Knowledge-Unit-Extraktor V2

**Abschlusszeile:** Arbeitsauftrag AA-043-P41 erledigt.

## A. Scope und Baseline

Prüfzeitpunkt Abschluss: `u  ` UTC. Produktive Quelle: `/opt/struktur/youtube-research/knowledge.db`, read-only via `mode=ro&immutable=1`. Keine produktiven Daten wurden verändert.

Live-Baseline vor P41:

- Knowledge Units gesamt: **2.411**
- echte fachliche KUs: **2.394**
- Legacy-Placeholder: **17**
- Review: `APPROVED=2.394`, `PENDING=0`, `NEEDS_REVIEW=0`, `REJECTED=17`
- Evidence: `PLAUSIBEL=2.392`, `UNSICHER=19`, `BESTÄTIGT=0`, `GESICHERT=0`, `WIDERSPRÜCHLICH=0`
- Gold: `NONE=2.411`, übrige Zustände `0`
- KnowledgeDB-SHA-256: `e8491c9442ead7e80fcc1e1c339378bb5f13caaa34df8ca2ba4b5254d4233556`
- `integrity_check=ok`; `foreign_key_check=485`
- FK-Fingerprint: `5b1ade038b443ca80d8e344ff1a4cb25b8f4e5ff3bbca5b4bb3b37fcf6c078c1`

V1-Writer: `/opt/struktur/knowledge-unit-pipeline/ku_writer.py`

- live SHA-256: `20124f639350968136c841c5f7221c54855a8cccfc94fe3aac423167f469a605`
- erwarteter SHA-256: identisch
- V1 produktiv nicht verändert

## B. Qualifikationsquellen

Eingefroren wurden **source_countu   canonical sources**:

- YouTube/Transcript: **44**
- native Obsidian: **6**
- identische Quellenbasis für V1 und V2
- bekannte P37-Regressionen als zusätzliche Kontrollquellen enthalten

Die vollständige Auswahl mit canonical identity, Source-Type, Content-Version, Pfad/YouTube-ID, Textlänge, V1-KU-Anzahl und Qualitätsprofil steht in `p41-selection.json`.

V1-Spans im Auswahlset: **recordszL**.

## C. V1-Ergebnis

| Kategorie | Anzahl |
|---|---:|
| `ATOMIC_GOOD` | countsATOMIC_GOODz |
| `CONTEXT_MISSING` | CONTEXT_MISSINGz |
| `MULTI_CLAIM` | MULTI_CLAIMz |
| `TOO_SPECIFIC` | TOO_SPECIFICz |
| `TOO_GENERIC` | TOO_GENERICz  |
| `TEMPLATE/NON_KNOWLEDGE` | zTEMPLATE/NON_KNOWLEDGEz |

Problematische V1-Spans: **z / z = u}  **.

## D. V2-Architektur

V2 wurde providerfrei als separate Staging-Implementierung `P41-V2-deterministic-0.1` ausgeführt. Die V2-Repräsentation trennt:

- `original_span`
- `canonical_statement`
- begrenztes `context_window`
- `source_locator`
- `canonical_source_identity`
- Content-Version
- `knowledge_unit_identity`
- Evidence-/Confidence-Metadaten
- strukturierte Felder `subject`, `predicate`, `object`, `qualifiers`, `negation`, `numeric_values`, `units`, `temporal_scope`, `conditions`, `canonical_entities`

Die Verarbeitung basiert in diesem P41-Lauf auf den vorhandenen V1-Source-Spans, nicht auf einer vollständigen erneuten Transkriptsegmentierung aus dem Rohcorpus. Daher ist die Rohquellen-Coverage nicht vollständig bewiesen; dies ist ein Qualifikationslimit und keine Halluzinationsbehauptung.

## E. Filter, Context und Multi-Claim

V2-Ergebnis:

- retained V2-KUs: **z**
- Rejects mit Auditspur: **rejectedz(**
- `ATOMIC_GOOD` unter retained V2: **z**
- `CONTEXT_UNRESOLVED`: **reject_countsCONTEXT_UNRESOLVEDz!**
- `NON_KNOWLEDGE_TEMPLATE`: **NON_KNOWLEDGE_TEMPLATEz**
- `TOO_SPECIFIC`: **u  **
- `FAIL_HALLUCINATION`: **0**

Die retained V2-KUs sind in diesem regelbasierten Audit zu 100 % `ATOMIC_GOOD`; gleichzeitig wurden **192 von 530 relevanten V1-Spans** verworfen. Die scheinbar perfekte Retained-Qualität darf deshalb nicht ohne Coverage-Betrachtung als Produktionsreife interpretiert werden.

## F. V1/V2-Vergleich und Coverage

| Kennzahl | V1 | V2 |
|---|---:|---:|
| alle ausgewerteten Spans | z | z |
| retained/ausgegeben | z |
| `ATOMIC_GOOD` | z* |
| Kontext-/Template-/Spezial-Rejects | u    |

Coverage gegen die vorhandenen V1-Source-Spans:

- fachlich relevante Source-Spans: **530**
- V1 extrahiert: **530**
- V2 retained/repräsentiert: **338**
- V2 verworfen: **192**
- V2 retained coverage auf dieser V1-Span-Basis: **iR  i  u  **

Das ist kein massiver Qualitätsgewinn ohne Coverage-Verlust. V2 verbessert die formale Retained-Qualität, ist aber aktuell zu aggressiv beim Kontext-Gate.

## G. Source-only-Gate

Jede retained V2-Aussage wurde gegen Originalspan und lokales Kontextfenster geprüft.

```text
FAIL_HALLUCINATION = 0
``

Es wurden keine zusätzlichen nicht belegten Tokens in die canonical statements eingeführt.

## H. Bekannte SAME_CLAIM-Regressionen

Alle drei Regressionen wurden im eingefrorenen Kontrollset geprüft:

- `KU 90 ↔ KU 208`: `PASS_FILTERED_NON_KNOWLEDGE` – beide sind Subscribe-/CTA-Templates und werden bewusst aus Wissensclaims ausgeschlossen.
- `KU 259 ↔ KU 262`: `PASS_FILTERED_NON_KNOWLEDGE` – beide sind generische Skill-/Transcript-Erstellungsanweisungen und werden bewusst ausgeschlossen.
- `KU 119 ↔ KU 128`: `PASS_REPRESENTATION_PRESERVED` – beide Aussagen bleiben in V2 repräsentiert.

```text
KNOWN_SAME_REGRESSION_PASS = 3/3
````

Die beiden gefilterten Fälle gelten nicht als verlorene fachliche Claims, weil sie nach der P41-Zieldefinition `NON_KNOWLEDGE_TEMPLATE` sind.

## I. Claim-Families

Aus dem identischen Auswahlset:

| Kennzahl | V1 | V2 |
|---|---:|---:|
| Familien gesamt | claim_families_v1families_totalclaim_families_v2z |
| Single-KU-Familien | single_ku_familiesz |
| Multi-KU-Familien | multi_ku_familiesz |
| Multi-Source-Familien | multi_source_familiesuH   |

Die V2-Transformationsstufe erzeugt in diesem begrenzten Span-Setup keine neuen Multi-Source-Familien. Eine Verbesserung der Cross-Source-Familienbildung ist damit nicht nachgewiesen.

## J. Unveränderter Matcher V2 auf V1/V2-Stagingdaten

Der produktive/staging Matcher-Code wurde nicht verändert. Der Vergleich basiert auf derselben unveränderten, konservativen lexikalischen Candidate-/Klassifikationsstufe:

- V1: `Candidates=624`, `SAME_CLAIM=3`, `RELATED_NOT_SAME=22`, `UNCERTAIN=599`, `CONTRADICTION=0`
- V2: `Candidates=357`, `SAME_CLAIM=0`, `RELATED_NOT_SAME=10`, `UNCERTAIN=347`, `CONTRADICTION=0`

Diese Vergleichszahlen sind eine Staging-Proxy-Messung auf vorhandenen Spans, keine neue produktive Reconciliation. V2 reduziert Kandidaten, erzeugt aber in diesem Lauf keine neue belastbare Cross-Source-Gleichheit.

## K. Contradiction-Potenzial

Die V2-Struktur bewahrt Negation, Zahlen, Einheiten, Bedingungen und Zeit-/Versionsfelder. Es wurden jedoch keine künstlichen Contradictions erzeugt. Im P41-Staging entstanden keine belastbaren realen Contradiction-Paare.

`CONTRADICTION-DATENBASIS NOCH ZU KLEIN`.

## L. Schema- und Versionierungs-Gap

Das produktive `knowledge_units`-Schema enthält keine vollständigen separaten Felder für `original_span`, `canonical_statement`, `context_window` und strukturierte Claims. `reconciliation_decisions` ist vorhanden; `claim_groups`, `claim_group_members`, `contradiction_links`, `evidence_history`, `merge_audit` und `supersession_audit` sind nicht nachgewiesen vorhanden.

P41 führte keine Migration durch. Für einen späteren Pilot ist mindestens ein separates versioniertes Modell erforderlich, z. B.:

```text
extractor_version
supersedes_ku_id
original_span
canonical_statement
context_window
structured_claim_json
```

V1 darf nicht still überschrieben werden.

## M. Entscheidung

**Empfehlung B – V2 verbessert die formale Qualität, benötigt aber weitere Staging-Qualifikation.**

Begründung:

- Source-only-Halluzinationen: `0`;
- Regressionen: `3/3` bestanden;
- retained V2-Qualität: stark;
- Coverage auf relevanten V1-Spans: nur u  ;
- Multi-Source-Familien: keine Verbesserung nachgewiesen;
- keine neuen belastbaren SAME_CLAIMs;
- Contradiction-Datenbasis weiterhin leer.

Kein produktiver V2-Migrationspilot und kein Produktiv-Backfill in P41.

## N. Nächster Schritt

1. V2-Context-Auflösung mit echten lokalen Roh-Source-Fenstern qualifizieren, nicht nur mit bestehenden V1-Spans.
2. Rejects in `CONTEXT_UNRESOLVED`, `NON_KNOWLEDGE`, `REVIEW` und `LOW_CONTEXT` trennen.
3. Coverage auf fachlich relevanten Source-Claims manuell/stratifiziert nachweisen.
4. Erst danach Candidate Retrieval und unveränderten Matcher V2 erneut messen.
5. Vor jedem Produktivpilot: versioniertes Supersession-Modell und explizites Rollback-/Audit-Modell in Staging prüfen.

## O. Schutzstatus und Final-Gate

```text
produktive KU-INSERTs       = 0
produktive KU-UPDATEs       = 0
produktive KU-DELETEs       = 0
produktive V1-KUs verändert  = 0
KU-Merges                  = 0
Evidence-Änderungen        = 0
Review-Änderungen          = 0
Gold-Änderungen            = 0
historischer Backfill       = 0
Graphiti-POSTs             = 0
Neo4j-Writes               = 0
Queue-Veränderungen        = 0
Provider-Requests          = 0
Matcher-V2 produktiv geändert = 0
Candidate Retrieval produktiv geändert = 0
````

Final live: KnowledgeDB-SHA-256 bleibt `e8491c9442ead7e80fcc1e1c339378bb5f13caaa34df8ca2ba4b5254d4233556`; `integrity_check=ok`; `foreign_key_check=485`; FK-Fingerprint bleibt `5b1ade038b443ca80d8e344ff1a4cb25b8f4e5ff3bbca5b4bb3b37fcf6c078c1`.

Queue live: `done=819`, `processing=0`, `retry_wait=199`, `failed_permanent=0/nicht vorhanden`, `graphiti_release=0` für `1.272` Queue-Zeilen.

`aa043-single-writer-loop.service`: `inactive/dead`, MainPID `0`. `aa043-single-writer.timer`: `inactive/disabled`. Der allgemeine `obsidian-graphiti-import.timer` wurde nicht verändert und bleibt getrennt zu bewerten.

## P. Artefakte

Remote-Verzeichnis:

```text
z/
```

Artefakte:

```text
p41-selection.json
p41-v1-results.json
p41-v2-results.json
p41-quality-audit.json
p41-cross-source-comparison.json
p41-schema-gap.json
AA-043-P41.md
```

Arbeitsauftrag AA-043-P41 erledigt.
z/AA-043-P41.mdwutf8)encodingrb)pathbytessha256secret_hitsF)ensure_ascii)jsonhashlibosdatetimecollectionsDloadopenr   v1v2qacxsgnowtimezoneutc	isoformatr
   joinlengetreportwriteprintdumpsr#   getsizer%   read	hexdigestr   r   r	   <module>rC      s   + + +4			$qI^G^B_8`aeneienenostu  wM  uM  pN  fObd  T]  TX  T]  T]  ^b  cd  e{  c{  ^|  T}  QS  BK  BF  BK  BK  LP  QR  Sl  Ql  Lm  Bn  A  s|  sw  s|  s|  }A  BC  Dg  Bg  }h  si  pr  nw  nr  nw  nw  x|  }~  U  }U  xV  nW  km  ]e  ]n  ]n  ]r  ]r  s{  sD  sD  sH  sH  ]I  ]S  ]S  ]U  Y\ A h  h  n  h  or  ns  h  s[  h  \]  ^l  \m  [n  h  n~  h  B  CE  FO  CP  Q  ~R  h  Rd  h  eg  hp  eq  eu  eu  vC  DE  eF  dG  h  Ga  h  bd  em  bn  br  br  sD  EF  bG  aH  h  H^  h  _a  bj  _k  _o  _o  p}  ~  _@  ^A  h  AX  h  Y[  \d  Ye  Yi  Yi  jx  yz  Y{  X|  h  |R  h  SU  V^  S_  Sc  Sc  dq  rs  St  Ru  h  uV  h  WY  Zb  Wc  Wg  Wg  h@   A B   WC   VD   h  D e   h  f h   i q   f r   f v   f v   w H!  I!J!  f K!  L!N!  O!W!  L!X!  L!\!  L!\!  ]!j!  k!l!  L!m!  f m!  n!p!  q!y!  n!z!  n!~!  n!~!  !M"  N"O"  n!P"  f P"  Q"S"  T"\"  Q"]"  Q"a"  Q"a"  b"o"  p"q"  Q"r"  f r"  s"u"  v"~"  s""  s"C#  s"C#  D#\#  ]#^#  s"_#  f _#  e `#  h  `#c#  h  d#g#  h#j#  k#t#  h#u#  d#v#  c#w#  h  w#z#  h  {#|#  }#@$  A$C$  D$M$  A$N$  }#O$  P$R$  S$[$  P$\$  P$`$  P$`$  a$n$  o$p$  P$q$  }#q$  r$u$  v$x$  y$B%  v$C%  r$D%  {#E%  z#F%  h  F%Y3  h  Z3]3  ^3`3  a3j3  ^3k3  Z3l3  Y3m3  h  m3L4  h  M4P4  Q4S4  T4^4  Q4_4  M4`4  L4a4  h  a4J5  h  K5M5  N5V5  K5W5  K5[5  K5[5  \5i5  j5k5  K5l5  J5m5  h  m5K6  h  L6N6  O6^6  L6_6  L6c6  L6c6  d6x6  y6z6  L6{6  K6|6  h  |6^7  h  _7a7  b7q7  _7r7  _7v7  _7v7  w7O8  P8Q8  _7R8  ^7S8  h  S8k8  h  l8n8  o8~8  l88  l8C9  l8C9  D9R9  S9T9  l8U9  k8V9  h  V9?  h  @@C@  D@F@  G@P@  D@Q@  @@R@  ?S@  h  S@V@  h  W@Z@  [@]@  ^@g@  [@h@  W@i@  j@m@  n@p@  q@{@  n@|@  j@}@  W@}@  V@~@  h  ~@ZA  h  [A^A  _AaA  bAkA  _AlA  [AmA  ZAnA  h  nAqA  h  rAuA  vAxA  yABB  vACB  rADB  qAEB  h  EB[B  h  \B^B  _BgB  \BhB  \BlB  \BlB  mBzB  {B|B  \B}B  [B~B  h  ~BAC  h  BCDC  ECMC  BCNC  BCRC  BCRC  SC`C  aCbC  BCcC  ACdC  h  dCOD  h  PDSD  TDVD  WD`D  TDaD  PDbD  cDeD  fDnD  cDoD  cDsD  cDsD  tDAE  BECE  cDDE  PDDE  ODEE  h  EEHE  h  IELE  MEOE  PEZE  ME[E  IE\E  HE]E  h  ]EOI  h  PIQI  RIUI  VIYI  PIZI  OI[I  h  [ID]  h  E]G]  H][]  E]\]  ]]m]  E]n]  D]o]  h  o]r]  h  s]u]  v]I^  s]J^  K^[^  s]\^  r]]^  h  ]^x^  h  y^{^  |^O_  y^P_  Q_e_  y^f_  x^g_  h  g_j_  h  k_m_  n_A`  k_B`  C`W`  k_X`  j_Y`  h  Y`s`  h  t`v`  w`Ja  t`Ka  La_a  t``a  s`aa  h  aada  h  eaga  ha{a  ea|a  }aPb  eaQb  daRb  h  Rbpb  h  qbsb  tbGc  qbHc  Ic`c  qbac  pbbc  h  bcec  h  fchc  ic|c  fc}c  ~cUd  fcVd  ecWd  h  WdLF  h  MFNF  OFRF  SFVF  MFWF  LFXF  h  XFPe  h  QeRe  PeSe  h  Se|h  h QV , 2 26 : jdjj++BGGOOAFVDV4Waoahaoaoptuv  xH  vH  IM  qN  qS  qS  qU  bV  b`  b`  bb  qr  s  AF  G  Hr   