Explorer
/tmp/fast-repeat-7.json
← Zurück ↓ Download
{"queue_id": 7, "relative_path": "Runbooks/EMAIL_MANUAL_TEST_PROTOCOL.md", "title": "Email Ingestion — Manuelles Testprotokoll", "import_key": "162b118cd57dd15dec809bc0ec6f8e05c03c4921e5db13ef9f240039bb2e0134", "chunk_count": 15, "created_nodes": 0, "created_relationships": 0, "body": null, "chunks": [{"chunk_key": "5b4134b1e6f9479a1389db02ec7fd4920cf920340219c1ae67223bb6c4c93722", "chunk_index": 0, "heading": "Email Ingestion — Manuelles Testprotokoll", "text": "# Email Ingestion — Manuelles Testprotokoll\n\n**Version:** 1.0\n**Phase:** Pre-IMAP — Manuelle Testserie\n**Ziel:** 10 reale Projekt-E-Mails vor IMAP-Freigabe\n\n---", "text_hash": "8b817da5f0732866d5ace0dc133c32c81fef236a7edfdba6070e0b94e1af5db7"}, {"chunk_key": "405894251305b31cf816847a5bf0dd776ad3768a5f38c400f30f9eef0f590d6f", "chunk_index": 1, "heading": "Testziel", "text": "gestion — Manuelles Testprotokoll\n\n**Version:** 1.0\n**Phase:** Pre-IMAP — Manuelle Testserie\n**Ziel:** 10 reale Projekt-E-Mails vor IMAP-Freigabe\n\n---\n## Testziel\n\nBevor IMAP/Gmail automatisch angebunden wird, muss die Pipeline unter realen Bedingungen\nstabil laufen. Synthetic Tests reichen nicht. Echte E-Mails zeigen:\n- unerwartete Zeichensätze / Encodings\n- HTML-only Mails (kein text/plain)\n- Mails mit Anhängen\n- Unerwartete PII-Muster\n- Edge Cases in Projekterkennung\n\n---", "text_hash": "e6ea84f1415833a971d3111acb55eddccf4eb5ab8ff01b71da0d4699d90d2136"}, {"chunk_key": "bc12c068ba57bfb1560c27c22925e2c7d08390f25c6e7334f5070b5817e41cc0", "chunk_index": 2, "heading": "Erfolgsgrenzen (alle müssen erfüllt sein)", "text": "rtete Zeichensätze / Encodings\n- HTML-only Mails (kein text/plain)\n- Mails mit Anhängen\n- Unerwartete PII-Muster\n- Edge Cases in Projekterkennung\n\n---\n## Erfolgsgrenzen (alle müssen erfüllt sein)\n\n| Kriterium | Grenzwert |\n|-----------|-----------|\n| Pipeline-Abstürze | **0** — keine Exception darf die Pipeline beenden |\n| Technische Fehlerrate (`failed/`) | **< 5%** = max. 0 bei 10 Tests |\n| Duplicate-Erkennung | **100%** — jede Wiederholung → DUPLICATE |\n| PII-Masking (E-Mail, Telefon) | **100%** — kein Leck im masked/ Output |\n| Obsidian-Writes | **0** — `obsidian_written: false` immer |\n| Graphiti-Writes | **0** — `graphiti_written: false` immer |\n| Review-Queue-Einträge | **100%** der proposed_facts landen in Review-Queue |\n| Konflikte markiert, nicht entschieden | **100%** — kein `status: approved` automatisch |\n\n---", "text_hash": "625efd326b1b2825b21675b3a430280fd7d6e24cdf98a9e75c7a4bc4c293d4c9"}, {"chunk_key": "a5bf7d3770ee0e6a1a38fc32f811fa5d2f3a6df6eb274f9f6c2521c1d7444dd3", "chunk_index": 3, "heading": "Freigabeentscheidung", "text": "| **100%** der proposed_facts landen in Review-Queue |\n| Konflikte markiert, nicht entschieden | **100%** — kein `status: approved` automatisch |\n\n---\n## Freigabeentscheidung\n\nIMAP-Freigabe erst wenn:\n- [ ] Alle 10 Tests abgeschlossen\n- [ ] Alle Erfolgsgrenzen erfüllt\n- [ ] Review-Queue wurde mindestens 1x manuell abgearbeitet\n- [ ] Mindestens 1 echter Konflikt aufgelöst (human decision documented)\n- [ ] `expire_reviews.py` lief ohne Fehler\n\n---", "text_hash": "366c58322a1bcd24c56c34948abce4fbfde2dedb458007b2a7e7a6be7a7d3cf3"}, {"chunk_key": "17ba79ca7681ee141476986fab26e42fcaaf357d7f50ecb16fe801899a386115", "chunk_index": 4, "heading": "Testtabelle", "text": "stens 1x manuell abgearbeitet\n- [ ] Mindestens 1 echter Konflikt aufgelöst (human decision documented)\n- [ ] `expire_reviews.py` lief ohne Fehler\n\n---\n## Testtabelle\n\n| Nr | Datei | SHA256 (16) | Projekt | Facts | PII | Konflikte | Dup-Test | Review-IDs | Status | Bemerkung |\n|----|-------|-------------|---------|-------|-----|-----------|----------|------------|--------|-----------|\n| 1 | vento-deploy-update.eml | 66254c5014f0e278 | vento | 3 | 0 | 0 | OK | 220432-a265f0, ae24a5, 69712b | OK | Erster echter EML-Test |\n| 2 | vento-telegram-status.eml | 0589af376b6ca6a4 | vento | 1 | 0 | 0 | OK | 072856-22adbc | CONFLICT MISS | Vor Bugfix — conflict=0 |\n| 3 | vento-telegram-status-v2.eml | a9ead3ee9bc51712 | vento | 2 | 0 | 2 | OK | 073234-f27ffe, 58f5c7 | OK | Nach Fix — conflicts korrekt |\n| 4 | | | | | | | | | offen | |\n| 5 | | | | | | | | | offen | |\n| 6 | | | | | | | | | offen | |\n| 7 | | | | | | | | | offen | |\n| 8 | | | | | | | | | offen | |\n| 9 | | | | | | | | | offen | |\n| 10 | | | | | | | | | offen | |\n\n**Hinweis:** Tests 1-3 waren Entwicklungs-/Fixlaeufe. Test 2 ist wegen Bug ungueltig.\nVerbleibend: 7 echte Projekt-E-Mails (Tests 4-10).\n\n---", "text_hash": "bfc8bb8b9e992141facf2d8ea43b9b096d396f799882fdf47645a3756b4a6468"}, {"chunk_key": "74580078041ba6884d26d6a4a99504f2a78b423e92415dc263b96feaba0bae03", "chunk_index": 5, "heading": "Pruefschritte nach jeder Ingestion", "text": "fen | |\n\n**Hinweis:** Tests 1-3 waren Entwicklungs-/Fixlaeufe. Test 2 ist wegen Bug ungueltig.\nVerbleibend: 7 echte Projekt-E-Mails (Tests 4-10).\n\n---\n## Pruefschritte nach jeder Ingestion\n\nNach jedem Lauf diese Punkte abhaken:\n\n```\n[ ] last_ingestion_result.json gelesen\n[ ] status: \"processed\" (nicht \"error\" oder \"duplicate\")\n[ ] obsidian_written: false\n[ ] graphiti_written: false\n[ ] Review-Datei in review-queue/ vorhanden\n[ ] masked/ Datei enthaelt keine sichtbaren E-Mail-Adressen / Telefonnummern\n[ ] Duplikattest: gleiche Datei nochmals → DUPLICATE\n[ ] Audit-Log: alle Schritte sichtbar\n```\n\n---", "text_hash": "0d9c2434596b47ad5a4df99786001be2521861e90526c8d8ee5666c55e98f04a"}, {"chunk_key": "a7ba5dc10059b6eddd66acc2b37fb546315fd037ce14c945f60b6bdbb105e7be", "chunk_index": 6, "heading": "Testdurchfuehrung", "text": " keine sichtbaren E-Mail-Adressen / Telefonnummern\n[ ] Duplikattest: gleiche Datei nochmals → DUPLICATE\n[ ] Audit-Log: alle Schritte sichtbar\n```\n\n---\n## Testdurchfuehrung", "text_hash": "277fc0710e115d0327f4d082e49333e5e0274430faf7dffcb0016dc5e4812476"}, {"chunk_key": "a7c319112f55ed8215f1d082152f05e578d103c395aaa958c79b79bd8e703557", "chunk_index": 7, "heading": "Schritt 1: .eml exportieren", "text": "## Testdurchfuehrung\n### Schritt 1: .eml exportieren\nE-Mail in Thunderbird/Apple Mail/Outlook als .eml speichern.", "text_hash": "f7c5c53453e1406771cfd2bfdf95033d1b16ebc0c9337a8081869db48a0fdfc8"}, {"chunk_key": "786e791322e32ca76dad3ed845877d89c5fe5ad16b54db0409cfe9a3ebcfa62d", "chunk_index": 8, "heading": "Schritt 2: Auf VPS uebertragen", "text": "### Schritt 1: .eml exportieren\nE-Mail in Thunderbird/Apple Mail/Outlook als .eml speichern.\n### Schritt 2: Auf VPS uebertragen\n```bash\nscp -i ~/.ssh/vps_key email.eml root@31.70.68.228:/opt/struktur/ingestion/email/inbox/\n```", "text_hash": "24db73414b2900146006434654e843c418a1145ac2646ddd7a41f04e01372cf4"}, {"chunk_key": "b17ef7b396bc6ffdee8b4cf1ca57d85b660810901d4a653874bc967ed7a13ba7", "chunk_index": 9, "heading": "Schritt 3: Ingestion", "text": "### Schritt 2: Auf VPS uebertragen\n```bash\nscp -i ~/.ssh/vps_key email.eml root@31.70.68.228:/opt/struktur/ingestion/email/inbox/\n```\n### Schritt 3: Ingestion\n```bash\nssh -i ~/.ssh/vps_key root@31.70.68.228\npython3 /opt/struktur/ingestion/ingest_email.py \\\n  /opt/struktur/ingestion/email/inbox/email.eml\n```", "text_hash": "8b840cb1c723727243faf09d0bec826504295160b33fb6afd0ef36e3f44d360b"}, {"chunk_key": "8b0c8e27ac84f4ab95a2cfcd522a3f1df6d702d34cf7cb96be26cdb5b01a2037", "chunk_index": 10, "heading": "Schritt 4: Ergebnis pruefen", "text": "\n```bash\nssh -i ~/.ssh/vps_key root@31.70.68.228\npython3 /opt/struktur/ingestion/ingest_email.py \\\n  /opt/struktur/ingestion/email/inbox/email.eml\n```\n### Schritt 4: Ergebnis pruefen\n```bash\ncat /opt/struktur/ingestion/email/last_ingestion_result.json\ntail -20 /opt/struktur/ingestion/email/ingestion_audit.jsonl\nls /opt/struktur/memory/review-queue/ | tail -5\n```", "text_hash": "84641ea9c13d111604eb5f778f5de5add0713bb4a5ef59ac6a5c97346a6928eb"}, {"chunk_key": "5d41ccf2a7c4bf66e0ab537f295facdfbb5dfd50d34c1b27158edbee1ee2359f", "chunk_index": 11, "heading": "Schritt 5: Duplikattest", "text": "tion/email/last_ingestion_result.json\ntail -20 /opt/struktur/ingestion/email/ingestion_audit.jsonl\nls /opt/struktur/memory/review-queue/ | tail -5\n```\n### Schritt 5: Duplikattest\n```bash\ncp /opt/struktur/ingestion/email/processed/email.eml \\\n   /opt/struktur/ingestion/email/inbox/email-dup.eml\npython3 /opt/struktur/ingestion/ingest_email.py \\\n  /opt/struktur/ingestion/email/inbox/email-dup.eml", "text_hash": "41bb1455c1cbd16e0d4e5ef2556f2a7d25300c79f7f3f37f7e8ff14c1ab9a4e1"}, {"chunk_key": "907cb32d0de545a3f5495214b12844588bb830fd4fa2d6faeb90a9c933887225", "chunk_index": 12, "heading": "Erwartung: status: \"duplicate\"", "text": "opt/struktur/ingestion/email/inbox/email-dup.eml\npython3 /opt/struktur/ingestion/ingest_email.py \\\n  /opt/struktur/ingestion/email/inbox/email-dup.eml\n# Erwartung: status: \"duplicate\"\n```", "text_hash": "00fdaf0fb953a892e45bb6a566015b3884478e3dc22049429ed1b136a866451c"}, {"chunk_key": "e443ad85010c32706ecd1c3f562775f4376e722cf7f9c6af2d0bc4eb6d37a80a", "chunk_index": 13, "heading": "Schritt 6: Tabelle ausfuellen", "text": "# Erwartung: status: \"duplicate\"\n```\n### Schritt 6: Tabelle ausfuellen\nZeile in dieser Datei erganzen.\n\n---", "text_hash": "b039f5ab3c4210e2f3777618bb423eaf33ad1f56d61c582899e6e1e1f0806180"}, {"chunk_key": "44fcb6f95cd0f63cc33bde2fc7086f84831a19f483b7d636273d854faef61746", "chunk_index": 14, "heading": "Bekannte Edge Cases (beobachten)", "text": "### Schritt 6: Tabelle ausfuellen\nZeile in dieser Datei erganzen.\n\n---\n## Bekannte Edge Cases (beobachten)\n\n| Edge Case | Erwartetes Verhalten |\n|-----------|---------------------|\n| HTML-only Mail (kein text/plain) | body=\"\" Fallback auf Subject-Fact |\n| Mail mit Anhang | Anhang ignoriert, nur Text-Body |\n| UTF-8 mit Sonderzeichen | Korrekt dekodiert (ae, oe, ue) |\n| Multipart-Mail | Nur text/plain Part verwendet |\n| Sehr langer Body (>10.000 Zeichen) | Max 5 Facts trotzdem |\n| Mail ohne Message-ID | SHA256 aus no-id-filename |\n| Mail mit API-Key im Body | [API_KEY] im masked/ Output |\n| Projekt nicht erkennbar | project: unclassified |\n\n---\n\n*Protokoll: /opt/struktur/hermes-carlo/ingestion/EMAIL_MANUAL_TEST_PROTOCOL.md*\n*Script: /opt/struktur/ingestion/ingest_email.py*\n*Letzter Update: 2026-05-22*", "text_hash": "c35210dda82c67bb83c8abded4aac34aa18bdb3ae9ebd91bfe827e32464b1840"}], "elapsed_s": 0.029}