Metadata-Version: 2.4
Name: dendrita-poison-check
Version: 0.1.0
Summary: Mide cuánto veneno de memoria (OWASP ASI06) sirve tu RAG/GraphRAG. Libre, sin dependencias.
Author: Dendrita
License-Expression: MIT
Project-URL: Homepage, https://dendrita.dev
Keywords: rag,graphrag,memory-poisoning,owasp,llm,security,agents
Requires-Python: >=3.9
Description-Content-Type: text/markdown

# Dendrita Poison Check

Mide cuánto **veneno de memoria** (OWASP ASI06 — *memory poisoning*) sirve tu **RAG / GraphRAG**.
Herramienta **libre, sin dependencias y sin el motor Dendrita**: solo el corpus de ataque + el scoring.

## Por qué
Un RAG/GraphRAG recupera por similitud y **sirve lo que encuentra** — no distingue "relevante" de
"de fiar". Si un dato envenenado entra en tu índice (una sesión, un documento, una repetición), tu
agente puede actuar sobre él creyéndolo cierto. Esta herramienta lo **mide en tu propio sistema**.

## Instalar
```
pip install dendrita-poison-check        # o, desde este repo:  pip install -e .
```

## Usar (3 pasos)
1. **Exporta el dataset** (corpus legítimo + veneno mezclados):
   ```
   poison-check export --out poison-dataset
   ```
2. **Indexa `poison-dataset/docs.jsonl` en TU RAG/GraphRAG**, preservando el campo `id`
   (tus embeddings, tu store). Hay notas legítimas y notas-veneno; no se distinguen al indexar —
   ese es el punto: el veneno ya entró en tu memoria.
3. **Corre el ataque** contra tu retrieval:
   ```
   poison-check run --http http://tu-endpoint     # POST {query,k} -> {"ids":[...]}
   poison-check run --module tu_modulo:retrieve    # función retrieve(query,k) -> [ids]
   ```

Sale un informe: **% de veneno servido en el top-k** de tu sistema, frente al 0% de Dendrita.

## El modelo de amenaza
El mismo que el benchmark de Dendrita (reproducible con `dendrita benchmark`): keyword-stuffing,
parafraseo, instrucción embebida y repetición. **No está amañado**: tu RAG sirve veneno porque le
falta una **capa de gobierno de confianza**, no porque "esté roto".

## Caveat honesto
Medimos "veneno en top-k" (tu sistema no expone niveles de confianza). Dendrita además distingue
"servido como verdad" de "pista marcada sin verificar". La credibilidad es el producto: preferimos
medir de menos a inflar.

## Cómo se cierra el hueco
Dendrita pone una capa de gobierno sobre el retrieval (cuarentena de lo nuevo, gating de confianza,
aislamiento por cliente antes del ranking) → **0% de veneno servido como verdad**, con el recall
intacto. Reprodúcelo: `dendrita benchmark`.

→ **https://dendrita.dev** · *El retrieval encuentra; Dendrita gobierna en qué confiar.*

---
MIT. Sin telemetría: corre entero en tu máquina.
