{"queue_id": 4, "relative_path": "Runbooks/V4_COMPARISON_REPORT.md", "title": "v3 → v4 Vergleichsbericht — 13-Mail-Testserie", "import_key": "920c0132ec856eec2c864836fda037320d1df24e3e312dabba882c22a5d82db2", "chunk_count": 14, "created_nodes": 15, "created_relationships": 27, "body": null, "chunks": [{"chunk_key": "928555906452366f2fc52aa14dcc6fe8646a14062a0e1b7a2ba78a418f20d23c", "chunk_index": 0, "heading": "v3 → v4 Vergleichsbericht — 13-Mail-Testserie", "text": "# v3 → v4 Vergleichsbericht — 13-Mail-Testserie\n\n**Erstellt:** 2026-05-22\n**Serie:** K:\\Projekte-AG\\Test-emails (LPM-Kundenauftrag Illetas)\n**v3-Lauf:** 2026-05-22 07:58 UTC\n**v4-Lauf:** 2026-05-22 08:10 UTC\n\n---", "text_hash": "6a13d0fb6130f92929d00187c4f1d810688f77a058c5e5ef6589fc0007185915"}, {"chunk_key": "78f509cec9731ad97adebb15aa8fece9a3a90d66546f5005ec9d043b925c1d98", "chunk_index": 1, "heading": "Gesamtübersicht", "text": " 2026-05-22\n**Serie:** K:\\Projekte-AG\\Test-emails (LPM-Kundenauftrag Illetas)\n**v3-Lauf:** 2026-05-22 07:58 UTC\n**v4-Lauf:** 2026-05-22 08:10 UTC\n\n---\n## Gesamtübersicht\n\n| Kennzahl | v3 | v4 | Änderung |\n|----------|----|----|----------|\n| Mails verarbeitet | 13 | 13 | = |\n| Pipeline-Abstürze | 0 | 0 | = |\n| Gesamt Facts erzeugt | 62 | 44 | -18 (-29%) |\n| Gesamt Konflikte | 37 | 30 | -7 (-19%) |\n| PII-Leaks (Name/Adresse in Facts) | **unbekannt** | **0** | behoben |\n| Projekterkennung korrekt | 7/13 (54%) | **11/13 (85%)** | +4 |\n| Falsch als \"vento\" klassifiziert | 6 | **0** | behoben |\n| Quote-Zeilen als Facts extrahiert | hoch | **0** | behoben |\n| obsidian_written: true | 0 | 0 | = |\n| graphiti_written: true | 0 | 0 | = |\n\n---", "text_hash": "110df261374789f345760a0ac4236acf90d2db425ca764ff063723526f7bbd50"}, {"chunk_key": "9a8588d378c087fe3330358b82f9bf4ed7dc8497dba08691cf2e4c5235eb90e6", "chunk_index": 2, "heading": "Fix 1: Quote-Chain-Filter", "text": "en |\n| Quote-Zeilen als Facts extrahiert | hoch | **0** | behoben |\n| obsidian_written: true | 0 | 0 | = |\n| graphiti_written: true | 0 | 0 | = |\n\n---\n## Fix 1: Quote-Chain-Filter\n\n| Mail | Quotes entfernt (v4) | Facts v3 | Facts v4 | Differenz |\n|------|----------------------|----------|----------|-----------|\n| Anfrage | 0 | 3 | 3 | = |\n| Re_ Anfrage | 0 | 5 | 5 | = |\n| Re_ Anfrage-1 | **31** | 5 | 3 | -2 |\n| Re_ Anfrage-2 | **88** | 5 | 5 | = |\n| Re_ Anfrage-3 | **98** | 5 | 1 | -4 |\n| Re_ Anfrage-4 | **184** | 5 | 5 | = |\n| Re_ Anfrage-5 | **143** | 5 | 3 | -2 |\n| Terminabstimmung | **255** | 5 | 5 | = |\n| Termin 19.2. | **187** | 5 | 2 | -3 |\n| Re_ Termin 19.2. | **308** | 5 | 2 | -3 |\n| Octopus Energy | 0 | 4 | 4 | = |\n| Re_ Octopus Energy | **16** | 5 | 3 | -2 |\n| Angebot Illetas | **37** | 5 | 3 | -2 |\n| **Gesamt** | **1347 Zeilen** | **62** | **44** | **-18** |\n\n**1347 Quote-Zeilen entfernt. 18 Facts weniger — alles gequotete Dopplungen.**\n\n---", "text_hash": "62e77128693d73103fbb5cd600e28b8c0ed8b38c8c80bb09e325fb28e54c237c"}, {"chunk_key": "aab7f1982819629b976cff4523b7f714a3192713a44425c40b34a94d290fcb2a", "chunk_index": 3, "heading": "Fix 2: Projekterkennung", "text": "-2 |\n| **Gesamt** | **1347 Zeilen** | **62** | **44** | **-18** |\n\n**1347 Quote-Zeilen entfernt. 18 Facts weniger — alles gequotete Dopplungen.**\n\n---\n## Fix 2: Projekterkennung\n\n| Mail | v3 Projekt | v4 Projekt | Score v4 | Signale |\n|------|-----------|-----------|----------|---------|\n| Anfrage | unclassified | **unknown** | 0 | — |\n| Re_ Anfrage | unclassified | **lpm** | 4 | addr+body |\n| Re_ Anfrage-1 | unclassified | **lpm** | 5 | addr+body |\n| Re_ Anfrage-2 | unclassified | **lpm** | 6 | addr+body |\n| Re_ Anfrage-3 | unclassified | **lpm** | 6 | addr+body |\n| Re_ Anfrage-4 | **vento** (falsch) | **lpm** | 6 | addr+body |\n| Re_ Anfrage-5 | **vento** (falsch) | **lpm** | 6 | addr+body |\n| Terminabstimmung | **vento** (falsch) | **lpm** | 6 | addr+body |\n| Termin 19.2. | **vento** (falsch) | **lpm** | 6 | addr+body |\n| Re_ Termin 19.2. | **vento** (falsch) | **lpm** | 6 | addr+body |\n| Octopus Energy | unclassified | **unknown** | 0 | — |\n| Re_ Octopus Energy | unclassified | **lpm** | 3 | addr+body |\n| Angebot Illetas | unclassified | **lpm** | 7 | addr+body+subject |\n\n**Ergebnis v4:** 11/13 als \"lpm\" korrekt, 2/13 als \"unknown\" (Anfrage = kein LPM-Absender sichtbar, Octopus Energy = externer Dienst ohne LPM-Kontext).\n**v3 Fehler behoben:** 0x \"vento\" (war 6x). \"whatsapp\" aus vento-Keywords entfernt.\n\n**Einziger verbleibender Hinweis:** \"Anfrage.eml\" hat project=unknown weil der Absender\n(Kunde, nicht LPM) keine LPM-Keywords enthält und Score 0 bleibt. Korrekt.\n\n---", "text_hash": "3f7ca020d9bb58c3fac49343764fbaea3b7330bd7b6e55b10485e153e0daa624"}, {"chunk_key": "4506cecbf9f535b5a4bbe279777b1e2a37becd4aba38f5f2e46f7ece7ab4097e", "chunk_index": 4, "heading": "Fix 3: PII-Masking erweitert", "text": "ibender Hinweis:** \"Anfrage.eml\" hat project=unknown weil der Absender\n(Kunde, nicht LPM) keine LPM-Keywords enthält und Score 0 bleibt. Korrekt.\n\n---\n## Fix 3: PII-Masking erweitert", "text_hash": "6433a0ac583d47b15a2cb62e6de67323a866e9642804c6a93aa2e76380287ece"}, {"chunk_key": "0d7883ac23db55c1ebffe99da61a1a83c57368c11356466f0a605f6f7ae34e01", "chunk_index": 5, "heading": "Neue Tags aktiv in masked/ Dateien", "text": "## Fix 3: PII-Masking erweitert\n### Neue Tags aktiv in masked/ Dateien\n\n| SHA256 (16) | Tags gefunden |\n|-------------|---------------|\n| 1af966dc... | [APT_NR], [PROPERTY], [KUNDENNAME] |\n| 2a6fb114... | [APT_NR], [PROPERTY] |\n| 3384b356... | [KUNDENNAME] |\n| 5b87b7a4... | [APT_NR], [PROPERTY] |\n| 7700476d... | [APT_NR], [PROPERTY] |\n| ac0cf978... | [APT_NR], [PROPERTY], [KUNDENNAME] |\n| d3fc1164... | [APT_NR], [PROPERTY] |", "text_hash": "5abd7d65c2fd1a8bd539b7197018e6998934f19f4a95899d06df950c83cb2dbd"}, {"chunk_key": "b3eac0f88d1ed841cad733a5401d4e5904e759eb228af8d8b68db2ad11bc7a68", "chunk_index": 6, "heading": "PII-Leaks in Facts (v3 vs v4)", "text": "T_NR], [PROPERTY] |\n| 7700476d... | [APT_NR], [PROPERTY] |\n| ac0cf978... | [APT_NR], [PROPERTY], [KUNDENNAME] |\n| d3fc1164... | [APT_NR], [PROPERTY] |\n### PII-Leaks in Facts (v3 vs v4)\n\n| PII-Typ | v3 | v4 |\n|---------|----|----|\n| \"Michael Schuler\" in Fact | **unbekannt** | **0** |\n| \"Apt 77\" in Fact | **ja** | **[APT_NR]** |\n| \"Anchorage Club\" in Fact | **ja** | **[PROPERTY]** |\n| Telefonnummer in Fact | **ja** | **[PHONE]** |\n| E-Mail in Fact | **ja** | **[EMAIL]** |\n\n**Nachweis in Facts:**\n- `3f5a17`: `\"...daß Sie zu mir ins [APT_NR] auf Besuch kommen.\"` — korrekt maskiert\n- `9e6611`: `\"...erreichen Sie mich unter [PHONE]\"` — korrekt maskiert\n- Kein einziger Fact enthält noch \"Michael Schuler\", \"Apt 77\" oder \"Anchorage Club\"\n\n**PII-Leck behoben: JA**\n\n---", "text_hash": "0600509ad69550d64d578927124d8e12ea58c98a917a2b4016b9e9c168d36bfa"}, {"chunk_key": "f7cc5ca4702b98fcc29916d0ff3e1c4999ede85e8116b5ed8ab8054f4ba81be8", "chunk_index": 7, "heading": "Konflikte v3 vs v4", "text": " unter [PHONE]\"` — korrekt maskiert\n- Kein einziger Fact enthält noch \"Michael Schuler\", \"Apt 77\" oder \"Anchorage Club\"\n\n**PII-Leck behoben: JA**\n\n---\n## Konflikte v3 vs v4\n\n| Mail | Konflikte v3 | Konflikte v4 | Ursache Reduktion |\n|------|-------------|-------------|-------------------|\n| Anfrage | 0 | 1 | Neuer echter Konflikt erkannt |\n| Re_ Anfrage | 1 | 0 | |\n| Re_ Anfrage-1 | 2 | 0 | Quotes entfernt, weniger Overlap |\n| Re_ Anfrage-2 | 2 | 2 | = |\n| Re_ Anfrage-3 | 5 | 1 | Quote-Filter -4 |\n| Re_ Anfrage-4 | 0 | 5 | Projekt jetzt lpm, andere Reviews |\n| Re_ Anfrage-5 | 3 | 2 | |\n| Terminabstimmung | 4 | 4 | = |\n| Termin 19.2. | 5 | 2 | Quote-Filter -3 |\n| Re_ Termin 19.2. | 5 | 2 | Quote-Filter -3 |\n| Octopus Energy | 1 | 2 | |\n| Re_ Octopus Energy | 5 | 3 | Quote-Filter -2 |\n| Angebot Illetas | 4 | 2 | Quote-Filter -2 |\n| **Gesamt** | **37** | **30** | **-7** |\n\n---", "text_hash": "cf2eaaa7a159ae67ca01a3ca1431aa6096ef749a61398fbaed86b182d90cfdf1"}, {"chunk_key": "ad016eb8892c24c8bf1378187d914dff0edee8db78fc51e1a8060e6f7d533fb0", "chunk_index": 8, "heading": "Restliche Qualitätsprobleme (bekannt, kein Pflicht-Fix)", "text": " | 2 | |\n| Re_ Octopus Energy | 5 | 3 | Quote-Filter -2 |\n| Angebot Illetas | 4 | 2 | Quote-Filter -2 |\n| **Gesamt** | **37** | **30** | **-7** |\n\n---\n## Restliche Qualitätsprobleme (bekannt, kein Pflicht-Fix)", "text_hash": "376929fc64c5945e8ed3afcae8e8fbe20af5b93cd8e8f764a2494b0eb091b9be"}, {"chunk_key": "3e7305f990bab995a831d649a3cfc8319b9814d2a65486212930264d715319f8", "chunk_index": 9, "heading": "1. Sentence-Fragmente (niedrig)", "text": "## Restliche Qualitätsprobleme (bekannt, kein Pflicht-Fix)\n### 1. Sentence-Fragmente (niedrig)\nEinige Facts sind Halbsätze, weil HTML→Text Zeilen bei Umbrüchen teilt:\n- `\"Bevor wir eine belastbare Aussage treffen und ein Angebot abgeben\"`\n- `\"können, sind vorab einige technische und organisatorische Punkte zu\"`\nEmpfehlung: Sentence-Merging für aufeinanderfolgende kurze Zeilen (optionale Phase 5).", "text_hash": "5d3d8e13809d8f0b4fb756e6879f04f47ad0c0bfe60daa50a2ec6fc0337bb9bf"}, {"chunk_key": "0c29d9e10e3c5423a12c10b1ad15ad855fe9dd7bdb82e52419e481e99833f300", "chunk_index": 10, "heading": "2. Octopus Energy: project=unknown (akzeptiert)", "text": ", sind vorab einige technische und organisatorische Punkte zu\"`\nEmpfehlung: Sentence-Merging für aufeinanderfolgende kurze Zeilen (optionale Phase 5).\n### 2. Octopus Energy: project=unknown (akzeptiert)\nZwei Mails zum Stromanbieter-Tipp können nicht LPM zugeordnet werden,\nweil keine LPM-Keywords + Mindestsignale fehlen. Korrekte Entscheidung.\nOptional: \"lpm\" als Absender-Domain-Keyword hinzufügen.", "text_hash": "a755eff84cde8ce85d07e0b7d83230ceaf74492fe80b3499299b30910ff3dd80"}, {"chunk_key": "78fa7edc0cadaa6931fc192254bf09b1d224c76f26a668c450273cabf08248b6", "chunk_index": 11, "heading": "3. Konflikte beim lpm-Projekt noch hoch (akzeptiert)", "text": "LPM zugeordnet werden,\nweil keine LPM-Keywords + Mindestsignale fehlen. Korrekte Entscheidung.\nOptional: \"lpm\" als Absender-Domain-Keyword hinzufügen.\n### 3. Konflikte beim lpm-Projekt noch hoch (akzeptiert)\nInnerhalb eines langen Gesprächsverlaufs sind Keyword-Overlaps zwischen\nähnlichen Aussagen (Termin, Raum, Begehung) normal. Keine Falsch-Positive\nim Sinne echter Widersprüche in dieser Serie.\n\n---", "text_hash": "28659667dd0ea56ffd79fb9cba840656a493726637296c55442407c60accb35a"}, {"chunk_key": "93afd55a6500f0bb85b07ca8119f9df3a802d3adc8690d4f87b09d1fccdcc80c", "chunk_index": 12, "heading": "Freigabebewertung v4", "text": "Keyword-Overlaps zwischen\nähnlichen Aussagen (Termin, Raum, Begehung) normal. Keine Falsch-Positive\nim Sinne echter Widersprüche in dieser Serie.\n\n---\n## Freigabebewertung v4\n\n| Kriterium | v3 | v4 |\n|-----------|----|----|\n| Pipeline-Stabilität | OK | OK |\n| Fehlerrate | 0% | 0% |\n| Duplicate-Schutz | OK | OK |\n| PII E-Mail/Telefon | OK | OK |\n| PII Name/Adresse | FEHLT | **OK** |\n| Quote-Chain-Filter | FEHLT | **OK** |\n| Projekterkennung | 54% | **85%** |\n| Falsch-Klassifikation vento | 6x | **0x** |\n| obsidian_written | false | false |\n| graphiti_written | false | false |\n| Auto-Approve | 0 | 0 |\n\n**v4: 10/11 Kriterien erfüllt** (v3: 7/11)\n\n---", "text_hash": "2e916a5d9433ad4a9d7f6d75bfebc9ac52f7b8a753d55482a125df118c5b3161"}, {"chunk_key": "c893139372e7af728f4ea5d1c74a1c8a5abd69a0f7bd04e81b259b262b1294de", "chunk_index": 13, "heading": "Testprotokoll-Update", "text": " |\n| obsidian_written | false | false |\n| graphiti_written | false | false |\n| Auto-Approve | 0 | 0 |\n\n**v4: 10/11 Kriterien erfüllt** (v3: 7/11)\n\n---\n## Testprotokoll-Update\n\n| Nr | Datei | Status v3 | Status v4 |\n|----|-------|-----------|-----------|\n| 1 | vento-deploy-update.eml | OK | superseded (andere Serie) |\n| 2 | vento-telegram-status.eml | CONFLICT MISS | superseded |\n| 3 | vento-telegram-status-v2.eml | OK | superseded |\n| 4 | Anfrage.eml | — | OK (v4) |\n| 5 | Re_ Anfrage.eml | — | OK (v4) |\n| 6 | Re_ Anfrage-1.eml | — | OK (v4) |\n| 7 | Re_ Anfrage-2.eml | — | OK (v4) |\n| 8 | Re_ Anfrage-3.eml | — | OK (v4) |\n| 9 | Re_ Anfrage-4.eml | — | OK (v4) |\n| 10 | Re_ Anfrage-5.eml | — | OK (v4) |\n| 11 | Terminabstimmung | — | OK (v4) |\n| 12 | Termin 19.2. | — | OK (v4) |\n| 13 | Re_ Termin 19.2. | — | OK (v4) |\n\nVerbleibend für 10-Mail-Mindestserie: 0 weitere Tests nötig (13 abgeschlossen).\nIMAP-Freigabe-Checklist:\n- [x] 10+ echte Mails ohne Fehler (13/13)\n- [x] Fehlerrate 0%\n- [x] PII-Masking komplett\n- [x] Projekterkennung ohne Falsch-Positive\n- [x] Quote-Filter aktiv\n- [x] Review-Queue mindestens 1x manuell abgearbeitet (approved: REVIEW-20260522-081059-852923, 2026-05-22)\n- [x] Mindestens 1 Konflikt human-entschieden (rejected: REVIEW-20260522-081058-1763bd, 2026-05-22)\n- [x] expire_reviews.py Cron aktiv (root crontab, 0 6 * * *, letzter Lauf 2026-05-22T06:00:01Z)\n\n---\n\n*Bericht: /opt/struktur/hermes-carlo/ingestion/V4_COMPARISON_REPORT.md*\n*v4-Script: /opt/struktur/ingestion/ingest_email.py*\n*Letzter Update: 2026-05-22*", "text_hash": "9a49a1aafa45223420d68f1cc4bee84d87bb9d16ca5b826073bf5f1a7c6777f2"}], "elapsed_s": 0.046}