From bb80ec115a2885dbde79729e72580cc8e30e2f37 Mon Sep 17 00:00:00 2001 From: Ubuntu Date: Sun, 3 May 2026 20:38:20 +0000 Subject: [PATCH] =?UTF-8?q?docs(spec):=20fix=20F2-A=20graph=20isolation=20?= =?UTF-8?q?=E2=80=94=20ReportAgent=20queries=20graph=5Fid=5Fsimulation=20o?= =?UTF-8?q?nly?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Sonnet 4.6 --- ...05-03-f2a-agent-edit-regen-clone-design.md | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/docs/superpowers/specs/2026-05-03-f2a-agent-edit-regen-clone-design.md b/docs/superpowers/specs/2026-05-03-f2a-agent-edit-regen-clone-design.md index 3883eaf4..95bdb59e 100644 --- a/docs/superpowers/specs/2026-05-03-f2a-agent-edit-regen-clone-design.md +++ b/docs/superpowers/specs/2026-05-03-f2a-agent-edit-regen-clone-design.md @@ -284,8 +284,12 @@ sim2 inclou converses de sim1. ### Solució Cada simulació té el seu propi `group_id` Neo4j (`graph_id_simulation`), creat -per clonatge APOC del `graph_document` just abans de llançar la simulació. -El ReportAgent consulta `[graph_id_document, graph_id_simulation]`. +per clonatge APOC de `graph_id_document` just abans de llançar la simulació. +`graph_id_simulation` conté una còpia exacta del document original, i és on els +agents escriuen les seves converses. `graph_id_document` queda immutable i serveix +de font per a futurs clonatges. + +El ReportAgent consulta **únicament** `graph_id_simulation`. ### Flux @@ -313,20 +317,17 @@ await session.run(""" Neo4j Aura Cloud inclou APOC de sèrie, per tant no cal cap dependència addicional. -2. **Llançament de simulació**: `enable_graph_memory_update: true` usant `graph_id_simulation` - (no el `graph_id_document`) +2. **Llançament de simulació**: `enable_graph_memory_update: true` usant `graph_id_simulation`. + Els agents escriuen converses a `graph_id_simulation`, que ja conté el contingut del document. -3. **Report**: `ReportAgent` rep `graph_ids=[graph_id_document, graph_id_simulation]`. - `ZepToolsService.search_graph_multi()` fa dues queries i fusiona resultats. +3. **Report**: `ReportAgent` rep i consulta únicament `graph_id_simulation`. + No cal fusionar grafs ni canviar `ZepToolsService`. ### Canvis al backend **`graphiti_backend.py`** — nova funció `clone_graph(src_group_id, dst_group_id)` que executa les dues queries APOC via `execute_query()`. -**`ZepToolsService`** — nova funció `search_graph_multi(graph_ids: list, query, limit)` -que fa N queries i fusiona + deduplicar resultats. - **`POST /api/simulation/start`** — si `enable_graph_memory_update: true`: 1. Genera `graph_id_simulation = f"mirofish_{sim_id}_sim"` @@ -334,9 +335,8 @@ que fa N queries i fusiona + deduplicar resultats. 3. Desa `graph_id_simulation` a la BD 4. Llança la simulació usant `graph_id_simulation` -**`POST /api/report/generate`** — passa `[graph_id_document, graph_id_simulation]` -al `ReportAgent` si `graph_id_simulation` existeix; si no (simulació sense -graph update), passa només `[graph_id_document]` com ara. +**`POST /api/report/generate`** — passa `graph_id_simulation` al `ReportAgent` +si existeix; si no (simulació sense graph update), passa `graph_id_document` com ara. ### Canvis al frontend (Step 3)