Explorer
/tmp/fast-one-6.json
← Zurück ↓ Download
{"queue_id": 6, "relative_path": "Runbooks/SESSION_MEMORY_ARCHITECTURE.md", "title": "Session Memory Architecture — Hermes Agent", "import_key": "2e1d92c7d9fb26c7579b2033b90b2eba6ae00a96cfc6034902218d819fecd6dc", "chunk_count": 32, "created_nodes": 33, "created_relationships": 63, "body": null, "chunks": [{"chunk_key": "fc761c4eca5289d874c1d65bcf2b516557130965e94ff5ab28bc3afc584434e3", "chunk_index": 0, "heading": "Session Memory Architecture — Hermes Agent", "text": "# Session Memory Architecture — Hermes Agent\n\n**Version:** 1.0\n**Status:** Entwurf — Human-Review erforderlich vor Implementierung\n**Erstellt:** 2026-05-21\n**Autor:** AG (Anthropic/Claude)\n**Gilt für:** hermes-carlo, hermes-mari\n\n---", "text_hash": "ecbe32c46a4630f233b325fb9b069ace6d734441917f595b9dfe251ad32ea3aa"}, {"chunk_key": "04837b217c19f0aadf6cb629a5ccb673affae3158b41b2de1492ca9256eb2a8d", "chunk_index": 1, "heading": "Grundprinzip", "text": "— Human-Review erforderlich vor Implementierung\n**Erstellt:** 2026-05-21\n**Autor:** AG (Anthropic/Claude)\n**Gilt für:** hermes-carlo, hermes-mari\n\n---\n## Grundprinzip\n\nMemory ist Unterstützung — nicht Wahrheit.\nObsidian bleibt kanonische Wissensquelle.\nGraphiti bleibt Langzeit-Knowledge-Graph.\nSession-Memory ist flüchtiger Arbeitsraum.\n\n```\n┌─────────────────────────────────────────────────────────┐\n│  USER-FRAGE                                             │\n│       │                                                 │\n│       ▼                                                 │\n│  [1] Retrieval: POST /retrieval/context                 │\n│       │                                                 │\n│       ▼                                                 │\n│  [2] Session-Memory laden (falls Session aktiv)         │\n│       │                                                 │\n│       ▼                                                 │\n│  [3] Antwort generieren                                 │\n│       │                                                 │\n│       ▼                                                 │\n│  [4] Session-Memory schreiben (temporär, lokal)         │\n│       │                                                 │\n│       ▼                                                 │\n│  [5] Human-Review-Queue (falls neue Fakten erkannt)     │\n└─────────────────────────────────────────────────────────┘\n```\n\nKein automatischer Schreibweg zu Obsidian oder Graphiti.\n\n---", "text_hash": "1391eced32f373d08510746fd8c57404e0260d445aa57ccab753ac5e365993ff"}, {"chunk_key": "8cf978938a6c1b7b86ad43c44402c00e85ff1d0ce1c9d9a903d9dd04d7955ee6", "chunk_index": 2, "heading": "Session-ID Modell", "text": "e Fakten erkannt)     │\n└─────────────────────────────────────────────────────────┘\n```\n\nKein automatischer Schreibweg zu Obsidian oder Graphiti.\n\n---\n## Session-ID Modell", "text_hash": "687510c495bc55544e8d2291fc0b4541933486be7fc8947a5bfbed7ed149058a"}, {"chunk_key": "235b2e392d2dbffe7a42c96a92beef5f4802aa6b80f7bcb90728fbcd00dd5eb8", "chunk_index": 3, "heading": "Format", "text": "## Session-ID Modell\n### Format\n```\nSESSION-{AGENT_ID}-{DATUM}-{UUID4_SHORT}\nBeispiel: SESSION-carlo-20260521-a3f7b2\n```", "text_hash": "b21b7e2d6b5f5bed38928fef0cb9beaeaaa70ab8bf84568b5f425f67a3d3cf33"}, {"chunk_key": "460c8440349c2b82ef46301b6f289a28596563b4c647be421d8f2c925017a7ad", "chunk_index": 4, "heading": "Lebenszeit", "text": "### Format\n```\nSESSION-{AGENT_ID}-{DATUM}-{UUID4_SHORT}\nBeispiel: SESSION-carlo-20260521-a3f7b2\n```\n### Lebenszeit\n| Zustand | Definition |\n|---------|-----------|\n| `active` | Letzte Interaktion < 30 Minuten |\n| `idle` | Letzte Interaktion 30–120 Minuten |\n| `closed` | Manuell geschlossen oder > 2 Stunden idle |\n| `archived` | Nach 7 Tagen automatisch |", "text_hash": "2c3469fd4d6b9b06935a2dfbf0456b489d4cef167379166471f653d34a39fddd"}, {"chunk_key": "34d0b6085ce3e50ababbeb1f402b720ab61645922c248eff6acc746262c5cd2f", "chunk_index": 5, "heading": "Session-Start", "text": "en |\n| `idle` | Letzte Interaktion 30–120 Minuten |\n| `closed` | Manuell geschlossen oder > 2 Stunden idle |\n| `archived` | Nach 7 Tagen automatisch |\n### Session-Start\n- Neue Session bei: erstem Kontakt nach `closed`-Status\n- Fortsetzung bei: `active` oder `idle` (selbe Session-ID)\n- User kann explizit neue Session erzwingen: `\"neue session starten\"`\n\n---", "text_hash": "22165cc745e2207b03ceedec68630efdfe33c6da41826c9cf18f86f3ca8921b0"}, {"chunk_key": "8239d3a4fa8b25511e7b54bd77ff06fe997b1c223906de36b8352bd501907962", "chunk_index": 6, "heading": "Speicherort", "text": " `closed`-Status\n- Fortsetzung bei: `active` oder `idle` (selbe Session-ID)\n- User kann explizit neue Session erzwingen: `\"neue session starten\"`\n\n---\n## Speicherort\n\n```\n/opt/struktur/memory/\n├── sessions/\n│   ├── active/\n│   │   └── SESSION-carlo-20260521-a3f7b2.json\n│   ├── idle/\n│   └── archived/\n│       └── SESSION-carlo-20260520-*.json.gz  (komprimiert)\n└── review-queue/\n    └── REVIEW-20260521-143022-vento-telegram.json\n```\n\n**Zugriff:** READ von Agent erlaubt. WRITE nur über kontrollierten Memory-Endpunkt (noch zu bauen).\n**Backup:** Täglich via Cron nach `/opt/backup/memory/`.\n\n---", "text_hash": "2c40407d5756478b5388a347763aa78e2e49c6e18f3482d25cb051ba87d0a1fb"}, {"chunk_key": "b645205f69e49287c77a2019a7e2a22697f2d5312951ff63f766ebe62a630f48", "chunk_index": 7, "heading": "Datenmodell: Session-Datei", "text": "* READ von Agent erlaubt. WRITE nur über kontrollierten Memory-Endpunkt (noch zu bauen).\n**Backup:** Täglich via Cron nach `/opt/backup/memory/`.\n\n---\n## Datenmodell: Session-Datei\n\n```json\n{\n  \"session_id\": \"SESSION-carlo-20260521-a3f7b2\",\n  \"agent_id\": \"hermes-carlo\",\n  \"created_at\": \"2026-05-21T14:30:00Z\",\n  \"last_active\": \"2026-05-21T15:12:00Z\",\n  \"status\": \"active\",\n  \"turns\": [\n    {\n      \"turn_id\": 1,\n      \"timestamp\": \"2026-05-21T14:30:05Z\",\n      \"user_input\": \"Was ist der Status von Vento?\",\n      \"retrieval\": {\n        \"query\": \"Was ist der Status von Vento?\",\n        \"project\": \"Vento\",\n        \"obsidian_sources\": 1,\n        \"graphiti_facts\": 10,\n        \"confidence\": \"medium\",\n        \"source_paths\": [\"03-Projekte/LP-VENTO.md\"]\n      },\n      \"agent_response_summary\": \"Vento 90% fertig, nicht live. Blocker: Mario (VPS-Deployment). 4 offene Dialogfehler.\",\n      \"new_facts_detected\": [],\n      \"decisions\": [],\n      \"open_tasks\": []\n    }\n  ],\n  \"accumulated_context\": {\n    \"active_projects\": [\"Vento\"],\n    \"open_tasks\": [],\n    \"decisions_this_session\": [],\n    \"user_stated_facts\": []\n  },\n  \"review_queue\": []\n}\n```\n\n---", "text_hash": "bb4ae45cc75b0c39a68895df6243e6257eef83c430455de5e3ebe8d20e1ba1b4"}, {"chunk_key": "0570bd2ea0207150eb57458e3d70d5683aa0ef94ef7b7a4f71928983fa844ce9", "chunk_index": 8, "heading": "Was wird gespeichert (und wie)", "text": "\"active_projects\": [\"Vento\"],\n    \"open_tasks\": [],\n    \"decisions_this_session\": [],\n    \"user_stated_facts\": []\n  },\n  \"review_queue\": []\n}\n```\n\n---\n## Was wird gespeichert (und wie)", "text_hash": "4c5a139180f2ca1e75477b223f4689caf845205386a142525b981bb2eedb4968"}, {"chunk_key": "73eee56975e0e3e74258fff4ea668a011d6985c78f8a0587bdec9c2d9a1e9e40", "chunk_index": 9, "heading": "Kurzfristiger Session-Kontext (in Session-Datei)", "text": "## Was wird gespeichert (und wie)\n### Kurzfristiger Session-Kontext (in Session-Datei)\n| Typ | Gespeichert | Automatisch | Retention |\n|-----|-------------|-------------|-----------|\n| User-Input (vollständig) | ✅ | ✅ | 7 Tage |\n| Retrieval-Metadaten | ✅ | ✅ | 7 Tage |\n| Agent-Antwort (Zusammenfassung, max. 500 Zeichen) | ✅ | ✅ | 7 Tage |\n| Erkannte Entscheidungen | ✅ | ✅ | 30 Tage |\n| Offene Aufgaben (aus Gespräch) | ✅ | ✅ | 30 Tage |\n| Vollständige Agent-Antwort (Rohtext) | ❌ | — | — |\n| PII (Namen, Telefonnummern, Adressen) | ❌ | — | — |", "text_hash": "fba4b99aaa64d0910eaef93db289cb3c547f2b9b3409349657e111f343632635"}, {"chunk_key": "264cec5426178e35ff8cccf18331984acdcad9b33d3db2d8fe847b9c5d4cb86d", "chunk_index": 10, "heading": "Langfristiges Wissen (Obsidian / Graphiti)", "text": "Aufgaben (aus Gespräch) | ✅ | ✅ | 30 Tage |\n| Vollständige Agent-Antwort (Rohtext) | ❌ | — | — |\n| PII (Namen, Telefonnummern, Adressen) | ❌ | — | — |\n### Langfristiges Wissen (Obsidian / Graphiti)\n| Typ | Erlaubt | Bedingung |\n|-----|---------|-----------|\n| Verifizierbarer Projektfakt | ✅ nach Review | Human-Freigabe + Quellennachweis |\n| Entscheidung mit Konsequenz | ✅ nach Review | Human-Freigabe |\n| Vermutung / \"User hat gesagt\" | ❌ | Niemals automatisch |\n| Gesprächsinhalte | ❌ | Niemals |\n\n---", "text_hash": "6fe169357c5f4d838cfefacd0d522a2c80947a71bb2fa71f8ecdd1b4fb01ae87"}, {"chunk_key": "7f8631dc7293fbcf0ec8d66a6ce0125f4feadf4c554181ababd37ac34c045145", "chunk_index": 11, "heading": "Trennung: Session-Kontext vs. Langzeit-Wissen", "text": " mit Konsequenz | ✅ nach Review | Human-Freigabe |\n| Vermutung / \"User hat gesagt\" | ❌ | Niemals automatisch |\n| Gesprächsinhalte | ❌ | Niemals |\n\n---\n## Trennung: Session-Kontext vs. Langzeit-Wissen\n\n```\nSESSION-KONTEXT (flüchtig, 7-30 Tage)\n  → Was wurde in diesem Gespräch besprochen?\n  → Welche Projekte waren aktiv?\n  → Welche Aufgaben wurden erwähnt?\n  → Kontext für nächste Antwort\n\nLANGZEIT-WISSEN (permanent, manuell kuratiert)\n  → Obsidian: Dokumentation, Status, Entscheidungen\n  → Graphiti: Fakten, Beziehungen, Entities\n  → Nur nach Human-Review\n```\n\n**Wichtig:** Der Agent liest Session-Kontext um kohärente Gespräche zu führen.\nEr schreibt nie direkt in Langzeit-Wissen.\n\n---", "text_hash": "8e0d327c031cacfc6901f547c6f51286d88b2dfd2caab0a12aa82be8c08503bd"}, {"chunk_key": "c1de5017922423237fa35dd442d26cffdb7209c462d549fa2b45bfe4074ad917", "chunk_index": 12, "heading": "Wann darf Information nach Obsidian?", "text": " nach Human-Review\n```\n\n**Wichtig:** Der Agent liest Session-Kontext um kohärente Gespräche zu führen.\nEr schreibt nie direkt in Langzeit-Wissen.\n\n---\n## Wann darf Information nach Obsidian?", "text_hash": "7d27dab137ad3cecebc0facf36a944439c96bdc012ac517420eb46716e6c40a5"}, {"chunk_key": "9cf4ce4c1c1847adf26941b8deb5ab4c2d82c73165d2fdf30ab39219183f78d5", "chunk_index": 13, "heading": "Darf übernommen werden (nach Human-Review):", "text": "## Wann darf Information nach Obsidian?\n### Darf übernommen werden (nach Human-Review):\n- Faktischer Projektstatus der vom User explizit bestätigt wurde\n- Entscheidungen mit klarem Datum und Konsequenz\n- Neue Systemkonfigurationen die schriftlich fixiert wurden\n- Erledigte Aufgaben", "text_hash": "f7ff97a53c54a740ddd1857dad216462aa736f2cfcffddf99e1b6939359935c1"}, {"chunk_key": "733a4d0765ca3645adac025cf48577563293d2495628edf2f42613f4052fe791", "chunk_index": 14, "heading": "Darf NICHT übernommen werden:", "text": "izit bestätigt wurde\n- Entscheidungen mit klarem Datum und Konsequenz\n- Neue Systemkonfigurationen die schriftlich fixiert wurden\n- Erledigte Aufgaben\n### Darf NICHT übernommen werden:\n- Informationen die nur mündlich / im Chat erwähnt wurden ohne Bestätigung\n- Widersprüche zu bestehenden Obsidian-Dokumenten (erst klären)\n- Vermutungen, Pläne, Absichten ohne Commitment\n- Inhalte aus laufenden, unabgeschlossenen Gesprächen\n- Jede Information die PII enthält", "text_hash": "27c00d222b5050b7ca274840281ee52fbe9ca97365f02eaa40c3796f81aafa62"}, {"chunk_key": "45669213a31750df6f86a269b30f3e08740a17c5789a4b2cc9d558ca2b795f57", "chunk_index": 15, "heading": "Review-Prozess:", "text": "(erst klären)\n- Vermutungen, Pläne, Absichten ohne Commitment\n- Inhalte aus laufenden, unabgeschlossenen Gesprächen\n- Jede Information die PII enthält\n### Review-Prozess:\n```\n1. Agent erkennt potenziell persistierbare Information\n2. Agent legt REVIEW-Datei in /opt/struktur/memory/review-queue/ ab\n3. Review-Datei enthält: Quellturn, Fakt, Vorgeschlagene Obsidian-Seite, Konfidenz\n4. Human prüft und entscheidet (Freigabe / Ablehnung / Änderung)\n5. Nach Freigabe: manuelle Übertragung nach Obsidian\n6. Review-Datei wird in /archived/ verschoben\n```\n\n---", "text_hash": "5dda6bfa429f70603638535d480d969571aa467894f8a46872939b38615d4bcd"}, {"chunk_key": "c0948c1da4ab7143b6f17a634a71d47fb0bb64756c82c66dd8528cb09577f3b5", "chunk_index": 16, "heading": "Dublettenstrategie", "text": "scheidet (Freigabe / Ablehnung / Änderung)\n5. Nach Freigabe: manuelle Übertragung nach Obsidian\n6. Review-Datei wird in /archived/ verschoben\n```\n\n---\n## Dublettenstrategie", "text_hash": "c648562a6f4a1a417839219b62b2585977766396046e85b82b2c635268abf29b"}, {"chunk_key": "ffb22c46a2b476eefd50136a532431123fa3a3973853cd8f5b0913d5c3bb8167", "chunk_index": 17, "heading": "Innerhalb einer Session:", "text": "## Dublettenstrategie\n### Innerhalb einer Session:\n- Gleiche Userfrage innerhalb 5 Minuten → Retrieval-Cache nutzen, kein Neu-Aufruf\n- Gleiche Entscheidung mehrfach erwähnt → nur einmal speichern (Deduplizierung via Hash)", "text_hash": "047786fa62ae83abc4855854a39088cf8574eb8d5f0789cf1855488bcd0d84d1"}, {"chunk_key": "bf7a22cf28b74accf5f3f9943232bbe877fe9049211102db0a9c66ce1be09cb3", "chunk_index": 18, "heading": "Über Sessions hinweg:", "text": "innerhalb 5 Minuten → Retrieval-Cache nutzen, kein Neu-Aufruf\n- Gleiche Entscheidung mehrfach erwähnt → nur einmal speichern (Deduplizierung via Hash)\n### Über Sessions hinweg:\n- Kein automatischer Abgleich zwischen Sessions\n- Review-Queue prüft vor Eintrag: Existiert dieser Fakt bereits in Obsidian?\n  - Wenn ja und identisch → Review-Datei verwerfen\n  - Wenn ja und widersprüchlich → Konflikt-Flag setzen, eskalieren\n\n---", "text_hash": "ff974c685ee732c4f77a91487b53e2c288d6e039ed7824c47829effa50b29066"}, {"chunk_key": "de16253bd21840d329b86b267557138215665e19b919db3d9ba2f45941d8ebf6", "chunk_index": 19, "heading": "Retention-Regeln", "text": "r Fakt bereits in Obsidian?\n  - Wenn ja und identisch → Review-Datei verwerfen\n  - Wenn ja und widersprüchlich → Konflikt-Flag setzen, eskalieren\n\n---\n## Retention-Regeln\n\n| Datei-Typ | Aufbewahrung | Danach |\n|-----------|-------------|--------|\n| Aktive Session | Bis `closed` + 7 Tage | Komprimierung → archived/ |\n| Archived Session | 30 Tage | Löschung |\n| Review-Queue (offen) | Bis Human-Review (max. 14 Tage) | Automatische Ablehnung mit Log |\n| Review-Queue (erledigt) | 90 Tage | Löschung |\n| Backup | 7 Tage Rolling | Überschreiben |\n\n---", "text_hash": "77b6ab0c443c3a18a47cf5980c5a7a76e7932449a21a783aac853200c39919c4"}, {"chunk_key": "016940d47ab1248b122d6e98113e575eef724267015ed123a876f738aae2d374", "chunk_index": 20, "heading": "Datenschutz / PII-Regeln", "text": "ew (max. 14 Tage) | Automatische Ablehnung mit Log |\n| Review-Queue (erledigt) | 90 Tage | Löschung |\n| Backup | 7 Tage Rolling | Überschreiben |\n\n---\n## Datenschutz / PII-Regeln", "text_hash": "c07a64e3d2a2978e1abdaecdb0c006334f8e020fd01bde1d7694e01500351786"}, {"chunk_key": "eaed4d2af9d434b02326bfe7c86340058cce1da88cd4809a49903dd287d08581", "chunk_index": 21, "heading": "Was ist PII in diesem Kontext:", "text": "## Datenschutz / PII-Regeln\n### Was ist PII in diesem Kontext:\n- Vollständige Namen von Personen (außer öffentlich bekannte Projektnamen)\n- Telefonnummern, E-Mail-Adressen\n- Kundendaten, Buchungsdetails\n- Adressen, Koordinaten\n- Passwörter, API-Keys, Tokens (niemals speichern)", "text_hash": "99d1fc06eddae0323b9d238836f5f7a29c2ea271ed16730c5bd2012a469586d5"}, {"chunk_key": "16eef0eb7e6e98594c2fa1b45c8b2b5902790ae53d9da502aa4fb5d4fea06dfe", "chunk_index": 22, "heading": "Regeln:", "text": "jektnamen)\n- Telefonnummern, E-Mail-Adressen\n- Kundendaten, Buchungsdetails\n- Adressen, Koordinaten\n- Passwörter, API-Keys, Tokens (niemals speichern)\n### Regeln:\n1. **Keine PII** in Session-Dateien — User-Input wird gespeichert, aber PII vor Speicherung maskieren (`[PHONE]`, `[EMAIL]`, `[NAME]`)\n2. **Keine PII** in Review-Queue\n3. **Kein Session-Inhalt** enthält API-Keys oder Credentials — bei Erkennung sofort löschen + Warnung\n4. Session-Dateien landen nicht in Graphiti oder Obsidian-Sync\n5. Backups verschlüsselt (AES-256, Key separat)\n\n---", "text_hash": "8fc0902fb47cafcb7414c5f9b20908d8040c08d0a0f6ec916ae6c9874757e1fb"}, {"chunk_key": "7a6be5b1228b7776ad112bcca3e25ce6f8799a44fe9bcd5c4dbaad737386f787", "chunk_index": 23, "heading": "Test-Szenario: „Projekt Vento hat jetzt zusätzlich Telegram-Support\"", "text": "Erkennung sofort löschen + Warnung\n4. Session-Dateien landen nicht in Graphiti oder Obsidian-Sync\n5. Backups verschlüsselt (AES-256, Key separat)\n\n---\n## Test-Szenario: „Projekt Vento hat jetzt zusätzlich Telegram-Support\"", "text_hash": "0fbe4e54004304bf40340d5ccb3d358c71adbd34d2f365d8d985b71b0704507c"}, {"chunk_key": "88ff45c5c79ab0a018789b4fcf4feb2006c2eeb85e64fc75befd55136085e5e1", "chunk_index": 24, "heading": "Was der Agent hört:", "text": "## Test-Szenario: „Projekt Vento hat jetzt zusätzlich Telegram-Support\"\n### Was der Agent hört:\nUser-Aussage ohne Beleg, kein Commit, kein Dokument.", "text_hash": "65a7c0a3ddc0a29db7299fbcd89b8c763a61193281634c933ee9916224fcfc4c"}, {"chunk_key": "e1610aba785cc6a9acc3a61fe3d3d20f9bd214f92fe058b899c606841a586700", "chunk_index": 25, "heading": "Was temporär gespeichert wird (Session-Kontext):", "text": "### Was der Agent hört:\nUser-Aussage ohne Beleg, kein Commit, kein Dokument.\n### Was temporär gespeichert wird (Session-Kontext):\n```json\n{\n  \"turn_id\": 3,\n  \"user_input\": \"Projekt Vento hat jetzt zusätzlich Telegram-Support.\",\n  \"new_facts_detected\": [\n    {\n      \"fact\": \"Vento unterstützt jetzt Telegram\",\n      \"source\": \"user_stated\",\n      \"confidence\": \"unverified\",\n      \"action\": \"review_queue\"\n    }\n  ]\n}\n```\n→ Für dieses Gespräch: Agent weiß, dass Telegram erwähnt wurde und kann darauf referenzieren.\n→ Nicht persistiert über Session-Ende hinaus ohne Review.", "text_hash": "c3775095c556191be97fe6e9746eadd110dc49a53556e1a8064dec72379ca3ba"}, {"chunk_key": "7ab44153c3c440452bfde754f42bb3bc64abed1ee9699bf67ba981e2d3377847", "chunk_index": 26, "heading": "Was in die Review-Queue geht:", "text": " Für dieses Gespräch: Agent weiß, dass Telegram erwähnt wurde und kann darauf referenzieren.\n→ Nicht persistiert über Session-Ende hinaus ohne Review.\n### Was in die Review-Queue geht:\n```json\n{\n  \"review_id\": \"REVIEW-20260521-143022-vento-telegram\",\n  \"source_session\": \"SESSION-carlo-20260521-a3f7b2\",\n  \"source_turn\": 3,\n  \"proposed_fact\": \"Vento unterstützt Telegram als Kanal (zusätzlich zu WhatsApp)\",\n  \"proposed_obsidian_page\": \"03-Projekte/LP-VENTO.md\",\n  \"proposed_change\": \"Technik-Sektion: Telegram-Integration ergänzen\",\n  \"confidence\": \"unverified\",\n  \"requires\": \"Technische Bestätigung + Quellcode-Nachweis\",\n  \"created_at\": \"2026-05-21T14:30:22Z\",\n  \"status\": \"pending\"\n}\n```", "text_hash": "b91725ca90bff2fd592260e1a8ca59f7ff986c81168343b314d408a2a113f0cd"}, {"chunk_key": "2a912809fb60ef4bf1d61cb53f67b25a15b1bf2830630129fc7766a7d52bb7c9", "chunk_index": 27, "heading": "Was dauerhaft gespeichert werden dürfte (nach Review):", "text": "dence\": \"unverified\",\n  \"requires\": \"Technische Bestätigung + Quellcode-Nachweis\",\n  \"created_at\": \"2026-05-21T14:30:22Z\",\n  \"status\": \"pending\"\n}\n```\n### Was dauerhaft gespeichert werden dürfte (nach Review):\nErst wenn:\n1. Technische Bestätigung vorliegt (Code, Deployment, Test)\n2. Human (Carlo) explizit freigibt\n3. Obsidian-Seite `LP-VENTO.md` manuell aktualisiert wird", "text_hash": "6253de60632af6a869710ca40cf4a837c23cb7637ff6581b847ffccbb553f5fc"}, {"chunk_key": "bbd935437ab1359a1c722952ab3cbe76f743d7fac51052237e106164383c9207", "chunk_index": 28, "heading": "Wann Human-Review nötig ist:", "text": " Technische Bestätigung vorliegt (Code, Deployment, Test)\n2. Human (Carlo) explizit freigibt\n3. Obsidian-Seite `LP-VENTO.md` manuell aktualisiert wird\n### Wann Human-Review nötig ist:\n- Immer wenn User einen neuen Fakt behauptet der Obsidian widerspricht oder ergänzt\n- Immer wenn eine Entscheidung mit Konsequenz für das System getroffen wird\n- Immer wenn ein Fakt persistiert werden soll", "text_hash": "d50b98111c1c4927a1d210feb2a4753836432519c33b8b5e11c32670f7c619ae"}, {"chunk_key": "26cb11d8566a687dde6b33684e4ce8ffe6795794710ba94d5f98f15c4408ffd4", "chunk_index": 29, "heading": "Agent-Antwort auf das Szenario (korrekt):", "text": "an widerspricht oder ergänzt\n- Immer wenn eine Entscheidung mit Konsequenz für das System getroffen wird\n- Immer wenn ein Fakt persistiert werden soll\n### Agent-Antwort auf das Szenario (korrekt):\n> „Ich habe notiert, dass du Telegram-Support für Vento erwähnt hast. Das wird für diese Session als unverifizierten Kontext gespeichert. Damit dieser Fakt dauerhaft in das System übernommen wird, brauche ich entweder einen technischen Nachweis (Code, Deployment-Bestätigung) oder deine explizite Freigabe nach Prüfung. Soll ich eine Review-Anfrage erstellen?\"\n\n---", "text_hash": "ae85f5c986d142092159305c3aaa0df32f52c9c108d294b6f930a6088f3aab7b"}, {"chunk_key": "6c333320b945930f938c849fe5f1331232bf6e9ad26b273f69b61e87e5773725", "chunk_index": 30, "heading": "Risiken", "text": "er einen technischen Nachweis (Code, Deployment-Bestätigung) oder deine explizite Freigabe nach Prüfung. Soll ich eine Review-Anfrage erstellen?\"\n\n---\n## Risiken\n\n| Risiko | Wahrscheinlichkeit | Impact | Mitigation |\n|--------|--------------------|--------|-----------|\n| Agent persistiert unverifizierte Fakten | Mittel | Hoch | Kein direkter Write-Zugang zu Obsidian/Graphiti |\n| PII landet in Session-Datei | Mittel | Hoch | PII-Masking vor Speicherung (Implementierung nötig) |\n| Review-Queue wird nicht abgearbeitet | Hoch | Mittel | Auto-Ablehnung nach 14 Tagen, wöchentliche Erinnerung |\n| Session-Dateien wachsen unkontrolliert | Mittel | Niedrig | Retention-Regeln + Komprimierung |\n| Widersprüche zwischen Session und Obsidian | Niedrig | Hoch | Konflikt-Flag in Review-Queue |\n| API-Key im User-Input | Niedrig | Kritisch | Credential-Erkennung + sofortige Maskierung |\n\n---", "text_hash": "5418c18be19d708ea9aa52152c64ee5a4976ff1894ab033e603d111db3ae06aa"}, {"chunk_key": "7b43afb7f10f2d735de17b38c55efce9951d0114747e830b421da0430040287f", "chunk_index": 31, "heading": "Empfohlener nächster Schritt", "text": "n | Niedrig | Hoch | Konflikt-Flag in Review-Queue |\n| API-Key im User-Input | Niedrig | Kritisch | Credential-Erkennung + sofortige Maskierung |\n\n---\n## Empfohlener nächster Schritt\n\n**Phase 1 (minimale Implementierung):**\n1. Verzeichnisstruktur anlegen: `/opt/struktur/memory/sessions/` + `review-queue/`\n2. Memory-Writer als Gateway-Endpunkt: `POST /memory/session/append` (READ-only für Agent, WRITE nur intern)\n3. Session-Loader: `GET /memory/session/{session_id}` (Agent kann aktive Session lesen)\n4. PII-Masking-Funktion vor jedem Write\n\n**Phase 2 (Review-Queue):**\n5. Review-Queue-Writer: `POST /memory/review/create`\n6. Review-Queue-Reader: `GET /memory/review/pending` (für Human-Dashboard)\n7. Manueller Approve/Reject-Endpunkt\n\n**Nicht jetzt:**\n- Automatische Graphiti-Integration\n- LLM-basierte Fakten-Extraktion\n- Automatische Obsidian-Updates\n\n---\n\n*Architekturpfad: `/opt/struktur/hermes-carlo/memory/SESSION_MEMORY_ARCHITECTURE.md`*\n*Implementierungsbeginn: Nach expliziter Freigabe durch Carlo*\n*Abhängigkeiten: Gateway läuft (✅), Obsidian aktiv (✅), Graphiti aktiv (✅)*", "text_hash": "fcca309755b5fa54b2598bd70ee02a82714ca05bf70dde5a1c217322fcf52b71"}], "elapsed_s": 0.076}