Explorer
/tmp/fast-one-5.json
← Zurück ↓ Download
{"queue_id": 5, "relative_path": "Runbooks/AGENT_ORCHESTRATION_PROTOCOL.md", "title": "Agent Orchestration Protocol — Hermes", "import_key": "75b7a75e14ae6c1dd45d19f54322cb744ea18a9a2cf5f366667f24b9db6a0030", "chunk_count": 31, "created_nodes": 32, "created_relationships": 61, "body": null, "chunks": [{"chunk_key": "629298003912aa70957c29c97a08e3aae67ce3a9ede01d3ef1a4b8e9a9abac07", "chunk_index": 0, "heading": "Agent Orchestration Protocol — Hermes", "text": "# Agent Orchestration Protocol — Hermes\n\n**Version:** 1.0\n**Status:** Verbindlich\n**Erstellt:** 2026-05-21\n**Gilt für:** hermes-carlo, hermes-mari\n**Abhängigkeiten:** Tool-Gateway (Port 8645), Session-Memory Layer\n\n---", "text_hash": "8de3742f2db3ceaa48d4ff609b59e1767b1caed48c91e531cbf57092e1d53f1e"}, {"chunk_key": "34a7ab1e5919fa7f4c7b9ec049395a2cfc8e34832d38ce5e05b8d7f336ae274f", "chunk_index": 1, "heading": "Grundsatz", "text": "* Verbindlich\n**Erstellt:** 2026-05-21\n**Gilt für:** hermes-carlo, hermes-mari\n**Abhängigkeiten:** Tool-Gateway (Port 8645), Session-Memory Layer\n\n---\n## Grundsatz\n\nJede Agenten-Antwort mit fachlichem Inhalt folgt exakt diesem Ablauf.\nKeine Ausnahmen. Keine Abkürzungen.\n\n```\nUSER-FRAGE\n    │\n    ▼\n[1] RETRIEVAL          → POST /retrieval/context\n    │\n    ▼\n[2] SESSION-MEMORY     → GET  /memory/session/{session_id}\n    │\n    ▼\n[3] ANTWORT ERZEUGEN   → auf Basis von Retrieval + Memory\n    │\n    ▼\n[4] MEMORY SCHREIBEN   → POST /memory/session/append\n    │                     (nur: summary, retrieval_meta, pending_tasks, proposed_facts)\n    ▼\n[5] AUSGABE            → Antwort + Retrieval-Nachweis\n```\n\nObsidian und Graphiti werden in diesem Ablauf **niemals** geschrieben.\n\n---", "text_hash": "475c2050d70aa102e66bcfb8622161300be5e742e446b8de43cd3ddd3a31ce92"}, {"chunk_key": "2b0e2e4170b15a04439cd39e6ee7064e0848fb85b92a14e31cce35665735ead9", "chunk_index": 2, "heading": "Schritt 1 — Retrieval (`POST /retrieval/context`)", "text": "ed_facts)\n    ▼\n[5] AUSGABE            → Antwort + Retrieval-Nachweis\n```\n\nObsidian und Graphiti werden in diesem Ablauf **niemals** geschrieben.\n\n---\n## Schritt 1 — Retrieval (`POST /retrieval/context`)", "text_hash": "70ab1fbd710b4cb825e31789594157e0425d72d37d00e4b054eec713f4990bd6"}, {"chunk_key": "ddc59b98d7139dbb9df99715c5dae2b6b13e19d15ff4292bc92e0d66344c953d", "chunk_index": 3, "heading": "Wann:", "text": "## Schritt 1 — Retrieval (`POST /retrieval/context`)\n### Wann:\nVor jeder Antwort die Projekt-, System-, Code-, Infrastruktur- oder Wissensbezug hat.\nPflicht. Nicht optional. Auch wenn der Agent \"sicher zu wissen glaubt\".", "text_hash": "31b204535af0b97caca64e448cd1e756443aa1a5e4386e587765e5dfff75a65c"}, {"chunk_key": "80fb747ee6eb62e631546ab8e297f499753e2a816e0561906dd52bd40cf319ec", "chunk_index": 4, "heading": "Wie:", "text": "er Antwort die Projekt-, System-, Code-, Infrastruktur- oder Wissensbezug hat.\nPflicht. Nicht optional. Auch wenn der Agent \"sicher zu wissen glaubt\".\n### Wie:\n```json\nPOST /retrieval/context\n{\n  \"query\": \"<Userfrage oder Kernthema>\",\n  \"project\": \"<Projektname | null>\"\n}\n```", "text_hash": "b7d97bfab6065cfd146c0511da04eed0a4c6cdc81b4f9b39e6ae99441f495082"}, {"chunk_key": "f30685785e53f0ac435bf0ba519d70f47b11c640919de6f6fab22b9eef8dbb8a", "chunk_index": 5, "heading": "Auswertung:", "text": "### Wie:\n```json\nPOST /retrieval/context\n{\n  \"query\": \"<Userfrage oder Kernthema>\",\n  \"project\": \"<Projektname | null>\"\n}\n```\n### Auswertung:\n| `confidence` | Vorgehen |\n|-------------|---------|\n| `high` | Antwort direkt auf Basis des Kontextpakets |\n| `medium` | Antwort auf Basis des Kontextpakets, Hinweis auf mögliche Lücken |\n| `low` | Zusätzlich `POST /obsidian/search` oder `POST /graphiti/query` |", "text_hash": "af512021b54a23763b5b1541353c3a83c2e029059740f91dcbedf62a0fa5ea73"}, {"chunk_key": "631fb7431e8f348ba430449a5f5fb50e879d8f897a6ccff29aec8e1b6b55588e", "chunk_index": 6, "heading": "Bei Retrieval-Ausfall (HTTP 5xx / Timeout):", "text": "edium` | Antwort auf Basis des Kontextpakets, Hinweis auf mögliche Lücken |\n| `low` | Zusätzlich `POST /obsidian/search` oder `POST /graphiti/query` |\n### Bei Retrieval-Ausfall (HTTP 5xx / Timeout):\n1. **Keine fachliche Antwort** auf Basis von internem Modell-Wissen\n2. Melden: `\"Retrieval nicht verfügbar. Antwort kann nicht garantiert werden.\"`\n3. Optional: Session-Memory aus vorheriger Session laden (`GET /memory/session/...`)\n4. Benutzer informieren und auf manuelle Prüfung verweisen\n\n---", "text_hash": "e4df110dc8f553bbf63fefe356276a2abdf78463d11b057278ec5270bb0f3924"}, {"chunk_key": "b7403b7111114380df97abdd67d7ac447ee5db7ee12201293c1077696e353828", "chunk_index": 7, "heading": "Schritt 2 — Session-Memory lesen (`GET /memory/session/{session_id}`)", "text": "`\n3. Optional: Session-Memory aus vorheriger Session laden (`GET /memory/session/...`)\n4. Benutzer informieren und auf manuelle Prüfung verweisen\n\n---\n## Schritt 2 — Session-Memory lesen (`GET /memory/session/{session_id}`)", "text_hash": "2e346d2c70e7f2847a38410d18b71b0e165d320f6004b5324d82055df593863c"}, {"chunk_key": "d312956ebc17268786d61b9460de7dd7e9eb9007af9b1ff58f8e1317986b012f", "chunk_index": 8, "heading": "Wann:", "text": "## Schritt 2 — Session-Memory lesen (`GET /memory/session/{session_id}`)\n### Wann:\nNach Retrieval, vor Antwort-Erzeugung — falls eine aktive Session existiert.", "text_hash": "19ae4df77d11ff260b428a79ff73a83cc6510072377601f34207a3f72a9eda28"}, {"chunk_key": "1b43ed01bd81ad805aace5e0d97a32a7beb3bef67dfd865d585590412140fee7", "chunk_index": 9, "heading": "Zweck:", "text": "### Wann:\nNach Retrieval, vor Antwort-Erzeugung — falls eine aktive Session existiert.\n### Zweck:\n- Gesprächskontinuität: Was wurde in diesem Gespräch bereits besprochen?\n- Offene Aufgaben aus vorherigen Turns kennen\n- Bereits erfasste `proposed_facts` nicht doppelt anlegen", "text_hash": "1eb9ea616e65c8774cb323ebeacbbbae4193b382a693e5a17edb187a2e8df834"}, {"chunk_key": "57b20ab3580446ccffb98a0d74b81d37dd1434801cbac502364115a89089315a", "chunk_index": 10, "heading": "Wie:", "text": "s wurde in diesem Gespräch bereits besprochen?\n- Offene Aufgaben aus vorherigen Turns kennen\n- Bereits erfasste `proposed_facts` nicht doppelt anlegen\n### Wie:\n```\nGET /memory/session/SESSION-{agent}-{datum}-{uuid}\nHeader: x-api-key, x-agent\n```", "text_hash": "f4eacf7b6df4d5a98d061701c98cc8eb0d0c5468bc9c75a7e4d69cfbbfff1f80"}, {"chunk_key": "5aed2872b2283a3872f11436d02043a160c0b56e388adc0d014819da004a82d3", "chunk_index": 11, "heading": "Bei Memory-Ausfall (HTTP 5xx / Session nicht gefunden):", "text": "### Wie:\n```\nGET /memory/session/SESSION-{agent}-{datum}-{uuid}\nHeader: x-api-key, x-agent\n```\n### Bei Memory-Ausfall (HTTP 5xx / Session nicht gefunden):\n1. Antwort trotzdem erzeugen — nur auf Basis des Retrieval-Kontexts\n2. Session gilt als neu (kein Kontext aus vorherigen Turns)\n3. Memory-Fehler im Retrieval-Nachweis vermerken\n4. `POST /memory/session/append` trotzdem versuchen (neuer Turn)", "text_hash": "e2b5098bdcedbd7b45db37601f06a0b7b0a7cde4e15ff196c01ee80bdd8b9dcc"}, {"chunk_key": "ea61f3690b285976cf03fa57ca2025341d91ebedb891112686e20244e721de93", "chunk_index": 12, "heading": "Was Memory NICHT liefert:", "text": " (kein Kontext aus vorherigen Turns)\n3. Memory-Fehler im Retrieval-Nachweis vermerken\n4. `POST /memory/session/append` trotzdem versuchen (neuer Turn)\n### Was Memory NICHT liefert:\n- Keine kanonischen Fakten (Obsidian ist Wahrheit)\n- Keine verifizierten Entscheidungen (nur was in diesem Gespräch besprochen wurde)\n- Kein Ersatz für Retrieval\n\n---", "text_hash": "c114b349653527e2abafc210da2bc3bcf71194c94c16599531e411ecc00df345"}, {"chunk_key": "30ce74af1bb28ae66e6774082a534861ad3d1752373aba5a76cad914c6f3732f", "chunk_index": 13, "heading": "Schritt 3 — Antwort erzeugen", "text": "hen Fakten (Obsidian ist Wahrheit)\n- Keine verifizierten Entscheidungen (nur was in diesem Gespräch besprochen wurde)\n- Kein Ersatz für Retrieval\n\n---\n## Schritt 3 — Antwort erzeugen", "text_hash": "89a635820c1a25f23d7ed74eb0a2c57ac50dd6c45b55592c181b4fbd06b8b1ce"}, {"chunk_key": "e74f24a550a2d927fb786bfd81fa066af596ef9dc65c1bdda70913c5a6d11ec6", "chunk_index": 14, "heading": "Quellenhierarchie (strikt):", "text": "## Schritt 3 — Antwort erzeugen\n### Quellenhierarchie (strikt):\n```\n1. Obsidian-Quellen (aus Retrieval)     ← höchste Priorität\n2. Graphiti-Facts (aus Retrieval)\n3. Session-Memory (aktuelles Gespräch)\n4. Modell-Wissen                        ← nur für Formulierung, nie für Fakten\n```", "text_hash": "c30ff979d324b4825dcd5884403b542b19373cc5d3d6b786c9fc977a157c9833"}, {"chunk_key": "5d46e32c50feb559ae132ddce58371febe128fc918cf0c5e447ba8994286d8eb", "chunk_index": 15, "heading": "Regeln:", "text": "aphiti-Facts (aus Retrieval)\n3. Session-Memory (aktuelles Gespräch)\n4. Modell-Wissen                        ← nur für Formulierung, nie für Fakten\n```\n### Regeln:\n- Fakten immer mit Quelle verknüpfen\n- User-Aussagen die Obsidian widersprechen → explizit als Widerspruch markieren\n- User-Aussagen die Obsidian ergänzen → als `user_stated / unverified` kennzeichnen\n- Keine Formulierungen wie \"ich weiß\" oder \"das stimmt\" für unverified facts", "text_hash": "477315d6a83f32a7441b93f4c671313a32f54872dbeaaa547c7a85aee227a287"}, {"chunk_key": "63ed65975702158762233f7e893f582c77c4e818c53313df1c39d80a6a542294", "chunk_index": 16, "heading": "Kennzeichnung neuer User-Angaben in der Antwort:", "text": "sagen die Obsidian ergänzen → als `user_stated / unverified` kennzeichnen\n- Keine Formulierungen wie \"ich weiß\" oder \"das stimmt\" für unverified facts\n### Kennzeichnung neuer User-Angaben in der Antwort:\n> ⚠️ Du hast [FAKT] erwähnt. Das ist noch nicht im System dokumentiert und wird als unbestätigte Angabe behandelt. Für eine dauerhafte Aufnahme ist Human-Review nötig.\n\n---", "text_hash": "de1f82f409bd700bf0933bce3371c1f356114624e6996a28faea0713ea82a216"}, {"chunk_key": "9faaf68bf3d7e6f0aca8b52196edc1b10224124dffe69d6dc9d29c92d58b5034", "chunk_index": 17, "heading": "Schritt 4 — Memory schreiben (`POST /memory/session/append`)", "text": "wähnt. Das ist noch nicht im System dokumentiert und wird als unbestätigte Angabe behandelt. Für eine dauerhafte Aufnahme ist Human-Review nötig.\n\n---\n## Schritt 4 — Memory schreiben (`POST /memory/session/append`)", "text_hash": "528c836df69ac204c005ed8134c4936c7a68295baaf405ad4a9efbc8d380f052"}, {"chunk_key": "05ff93110e6006f83d3e29337a797fb284f03ce955e27f420079b607d3bf25c7", "chunk_index": 18, "heading": "Wann:", "text": "## Schritt 4 — Memory schreiben (`POST /memory/session/append`)\n### Wann:\nNach jeder Antwort — immer.", "text_hash": "074ef8170b3ea2a135c1359a7d6635749a4aabaa7201a09c954f6ceafd751d7d"}, {"chunk_key": "973bb36abd5692b66af848ff8c45afc3f923c258d9943c09d96f8a3ab14a25a7", "chunk_index": 19, "heading": "Erlaubte Felder:", "text": "### Wann:\nNach jeder Antwort — immer.\n### Erlaubte Felder:\n| Feld | Inhalt | Max. Länge |\n|------|--------|------------|\n| `user_input_summary` | Gekürzte Userfrage (kein Rohtext) | 500 Zeichen |\n| `retrieval_meta` | Query, Projekt, Anzahl Quellen, Confidence | — |\n| `conversation_summary` | Kern der Antwort | 1000 Zeichen |\n| `pending_tasks` | Offene Aufgaben aus dem Gespräch | Liste |\n| `proposed_facts` | Neue Fakten mit Status | — |", "text_hash": "00c4227d8842740c81c21ede5a480c21e350eb44e2d441b027111cc426e4ce60"}, {"chunk_key": "47ac957f9dacd6f1416bd666b281e6f45850f70fae6e5be3b947dfcaa3032d55", "chunk_index": 20, "heading": "Verboten im Memory-Write:", "text": "` | Kern der Antwort | 1000 Zeichen |\n| `pending_tasks` | Offene Aufgaben aus dem Gespräch | Liste |\n| `proposed_facts` | Neue Fakten mit Status | — |\n### Verboten im Memory-Write:\n- Rohdialoge (vollständiger Wortlaut)\n- API-Keys, Tokens, Passwörter\n- PII (wird automatisch maskiert, aber Agent soll es erst gar nicht senden)\n- Fakten mit Status `verified` (nur Human kann verifizieren)\n- Direkte Obsidian-Pfade als Schreibziel", "text_hash": "eb4131e134b7ed01229a89c734bbe701de0abd65af46d39dcabb024d924d9630"}, {"chunk_key": "10d8a70c3dbed0888ea586e8d8f71046ff655d53abdcb49a95b10c39bcb8fc68", "chunk_index": 21, "heading": "`proposed_facts` — Fact-Status:", "text": "kiert, aber Agent soll es erst gar nicht senden)\n- Fakten mit Status `verified` (nur Human kann verifizieren)\n- Direkte Obsidian-Pfade als Schreibziel\n### `proposed_facts` — Fact-Status:\n| Status | Bedeutung | Wer setzt es |\n|--------|-----------|-------------|\n| `user_stated` | User hat es behauptet, kein Nachweis | Agent automatisch |\n| `inferred` | Agent hat es aus Kontext abgeleitet | Agent automatisch |\n| `verified` | Technisch oder dokumentarisch bestätigt | **Nur Human** |\n| `rejected` | Widerlegt oder abgelehnt | Human oder Agent nach Prüfung |\n\n**`verified` wird vom System automatisch auf `inferred` zurückgestuft wenn kein Human-Review stattgefunden hat.**", "text_hash": "81e3fc1ce4ced4b2cb57baa2c3fe0c2c35ebfe9a39a236fc9a098ce5459742a0"}, {"chunk_key": "619e82ee0e6b68f322bba8ae1aebf512fb3ef5db83aaf9c8e00fbfefab088e64", "chunk_index": 22, "heading": "Review-Queue:", "text": "t | Human oder Agent nach Prüfung |\n\n**`verified` wird vom System automatisch auf `inferred` zurückgestuft wenn kein Human-Review stattgefunden hat.**\n### Review-Queue:\n- Jeder `proposed_fact` mit Status `user_stated` oder `inferred` erzeugt automatisch eine Review-Datei\n- Review-Datei enthält: `obsidian_write_allowed: false`, `graphiti_write_allowed: false`\n- Review läuft ab nach 14 Tagen → automatische Ablehnung\n\n---", "text_hash": "a092411bad1b6264ca262d227f78e1ec64cbf9be12754570541d95e31fad5433"}, {"chunk_key": "6a498bf82ca767298adcb44410e44b0c928ed4e41c4e697e401c74df259137f0", "chunk_index": 23, "heading": "Schritt 5 — Ausgabe", "text": "- Review-Datei enthält: `obsidian_write_allowed: false`, `graphiti_write_allowed: false`\n- Review läuft ab nach 14 Tagen → automatische Ablehnung\n\n---\n## Schritt 5 — Ausgabe", "text_hash": "207266461e23277d61b4bb86bdeaa3681cebab29bcf120b6ac59aaf179de7a01"}, {"chunk_key": "164ea79b66bf4b18c3ef454b47f322e25b25ed77cb36b8a35babe99a45e49ef9", "chunk_index": 24, "heading": "Pflicht-Nachweis am Ende jeder Antwort:", "text": "## Schritt 5 — Ausgabe\n### Pflicht-Nachweis am Ende jeder Antwort:\n```\n📦 Retrieval: [N] Obsidian-Quellen, [N] Graphiti-Facts — Confidence: [high|medium|low]\n💾 Memory: Turn [N] gespeichert | [N] proposed_facts | [N] Reviews erstellt\n```\n\nBei Memory-Ausfall:\n```\n📦 Retrieval: [N] Obsidian-Quellen, [N] Graphiti-Facts — Confidence: [medium]\n⚠️ Memory: nicht verfügbar — Session-Kontext nicht gespeichert\n```\n\n---", "text_hash": "9aa310841033edbf4bdc369ab5ee808efa37557331d047339e814c1e89cd0149"}, {"chunk_key": "31ce73947fd264b5f0a7bd6a992e0f5c3e48b09d834749b68505334e0f723b71", "chunk_index": 25, "heading": "Verbotene Aktionen (absolut)", "text": "`\n📦 Retrieval: [N] Obsidian-Quellen, [N] Graphiti-Facts — Confidence: [medium]\n⚠️ Memory: nicht verfügbar — Session-Kontext nicht gespeichert\n```\n\n---\n## Verbotene Aktionen (absolut)\n\n| Aktion | Grund |\n|--------|-------|\n| Direkt in Obsidian schreiben | Obsidian ist kanonisch, nur Human darf schreiben |\n| Direkt in Graphiti schreiben | Graphiti ist Langzeit-KG, nur geprüfte Fakten |\n| Fakten als `verified` setzen ohne Human | Falsche Gewissheit erzeugt Folgefehler |\n| Antwort ohne Retrieval bei Wissensfrage | Modell-Wissen ist unzuverlässig für Projektfakten |\n| PII in Memory-Write senden | Datenschutz, auch wenn Masking aktiv ist |\n| Mehr als 10 Tool-Aufrufe ohne Zusammenfassung | Ressourcenkontrolle |\n| `shell/exec`, `filesystem/write`, `docker/restart` | WRITE/EXECUTE gesperrt |\n\n---", "text_hash": "3bff9bc5d58129d57b5cac16b560cd31c0a66e1a716b4420a53478bc557f18b9"}, {"chunk_key": "086de10e6bf4cd471161f14e9c1fddc8d16f24fe08d28d4c3c57ed69cfe0f11f", "chunk_index": 26, "heading": "Test-Szenario: „Was ist der aktuelle Stand von Vento? Außerdem: Vento unterstützt jetzt Telegram.\"", "text": " als 10 Tool-Aufrufe ohne Zusammenfassung | Ressourcenkontrolle |\n| `shell/exec`, `filesystem/write`, `docker/restart` | WRITE/EXECUTE gesperrt |\n\n---\n## Test-Szenario: „Was ist der aktuelle Stand von Vento? Außerdem: Vento unterstützt jetzt Telegram.\"", "text_hash": "82fce07732f30f61ff069658f4521a56e1113803633d56ff205ae28a128960e8"}, {"chunk_key": "9992f975e52b88390855757cee8b434d1099452f69c4b33a6a91518c2fe0259b", "chunk_index": 27, "heading": "Erwarteter Ablauf:", "text": "## Test-Szenario: „Was ist der aktuelle Stand von Vento? Außerdem: Vento unterstützt jetzt Telegram.\"\n### Erwarteter Ablauf:\n\n```\n[1] POST /retrieval/context\n    query: \"Aktueller Stand Vento Telegram\"\n    project: \"Vento\"\n    → obsidian_sources: 1 (LP-VENTO.md)\n    → graphiti_facts: 10\n    → confidence: medium\n    → kein Telegram im Inhalt\n\n[2] GET /memory/session/{session_id}\n    → vorherige Turns laden (falls vorhanden)\n    → accumulated_context prüfen: Telegram schon erfasst?\n\n[3] ANTWORT ERZEUGEN\n    Aus Retrieval:\n    - Status: 90% fertig, nicht live (Stand 2026-03-31)\n    - Blocker: VPS-Deployment (Mario), 4 Dialogfehler\n    - Technik: FastAPI, n8n, WhatsApp Business API\n\nZu Telegram:\n    ⚠️ \"Du hast erwähnt, dass Vento jetzt Telegram unterstützt.\n       Das ist in keinem Systemdokument belegt (LP-VENTO.md kennt nur WhatsApp).\n       Ich speichere das als unbestätigte Angabe (user_stated).\n       Für Aufnahme in Obsidian ist technischer Nachweis + Human-Review nötig.\"", "text_hash": "15253a4bdc5ef4c86a4897279e16a28d9dca10a12cb6466bfe4c6eaab52006be"}, {"chunk_key": "d80fd8b44ab1c743340e8af81d226f42139920069478761c31019407e2e9cd71", "chunk_index": 28, "heading": "Erwarteter Ablauf:", "text": "sApp).\n       Ich speichere das als unbestätigte Angabe (user_stated).\n       Für Aufnahme in Obsidian ist technischer Nachweis + Human-Review nötig.\"\n[4] POST /memory/session/append\n    user_input_summary: \"User fragt Status Vento + behauptet Telegram-Support\"\n    retrieval_meta: {obsidian_sources: 1, graphiti_facts: 10, confidence: medium}\n    conversation_summary: \"Vento 90% fertig, nicht live. Telegram unbestätigt.\"\n    pending_tasks: [\"Telegram-Integration in Vento technisch prüfen\"]\n    proposed_facts: [\n      {\n        \"fact\": \"Vento unterstützt Telegram als zusätzlichen Kanal\",\n        \"status\": \"user_stated\",\n        \"confidence\": \"unverified\",\n        \"proposed_obsidian_page\": \"03-Projekte/LP-VENTO.md\"\n      }\n    ]\n    → Review-Datei wird automatisch erzeugt\n    → obsidian_write_allowed: false\n    → graphiti_write_allowed: false\n\n[5] AUSGABE\n    [Antwort zum Vento-Status]\n    ⚠️ Telegram: user_stated, unverified\n    📦 Retrieval: 1 Obsidian-Quellen, 10 Graphiti-Facts — Confidence: medium\n    💾 Memory: Turn N gespeichert | 1 proposed_fact | 1 Review erstellt\n```", "text_hash": "b6d3f40020440aef9d9d7d895f796097ebaf8c8752e2c80197e9e498cd643faa"}, {"chunk_key": "20ec0df41491e2853a854266c40a366948c85c5859ab64ef3d64369866580f89", "chunk_index": 29, "heading": "Was NICHT passiert:", "text": "    📦 Retrieval: 1 Obsidian-Quellen, 10 Graphiti-Facts — Confidence: medium\n    💾 Memory: Turn N gespeichert | 1 proposed_fact | 1 Review erstellt\n```\n### Was NICHT passiert:\n- Kein Write zu LP-VENTO.md\n- Kein Write zu Graphiti\n- Kein `\"verified\"` Status für Telegram\n- Kein Verlass auf Modell-Wissen statt Retrieval\n\n---", "text_hash": "74faf0360d05aa503afcc84fca54c691af6aea6fdb70fa302d2e1699aed63725"}, {"chunk_key": "17ace5d5ecb51088daf8f02d6b5336c7f62cf8477afb1a0160442069071f9f7e", "chunk_index": 30, "heading": "Sicherheitsstatus", "text": "rt:\n- Kein Write zu LP-VENTO.md\n- Kein Write zu Graphiti\n- Kein `\"verified\"` Status für Telegram\n- Kein Verlass auf Modell-Wissen statt Retrieval\n\n---\n## Sicherheitsstatus\n\n| Komponente | Status |\n|------------|--------|\n| READ-only Phase | Aktiv seit 2026-05-21 |\n| WRITE/EXECUTE | Gesperrt |\n| Session-Memory | Aktiv (Phase 1) |\n| PII-Masking | Aktiv (automatisch) |\n| Audit-Logging | Jede Operation geloggt |\n| Obsidian-Write | Verboten (kein Endpunkt freigegeben) |\n| Graphiti-Write | Verboten (kein Endpunkt freigegeben) |\n| Human-Review | Pflicht für alle proposed_facts |\n| Review-Ablauf | 14 Tage, dann auto-rejected |\n\n---\n\n*Protokollpfad: `/opt/struktur/hermes-carlo/agent/AGENT_ORCHESTRATION_PROTOCOL.md`*\n*Abhängige Dateien:*\n- *`/opt/struktur/hermes-carlo/gateway-docs/AGENT_TOOL_PROMPT_READONLY.md`*\n- *`/opt/struktur/hermes-carlo/memory/SESSION_MEMORY_ARCHITECTURE.md`*", "text_hash": "11b83bdfb1087bd94a3ae2fe2b970f54bc81ea67ae84ac981aab48c9e018e72a"}], "elapsed_s": 0.074}