Sensibilidad y privacidad
Desde 0.7.0 la capa easy aplica la sensitivity policy
de punta a punta (ADR-005 §6). Declara el nivel de tu corpus en
karajan.config.json:
{ "easy": { "sensitivity": "internal", "sensitivityRules": [ { "prefix": "docs/public/", "level": "public" }, { "prefix": "finanzas/", "level": "confidential" } ] }}- Niveles:
public|internal|confidential. Sin declarar nada, todo cuenta comointernal(default seguro: nunca se asume público). Las reglas por prefijo son excepciones; gana la primera que matchea. - Al indexar, cada documento queda marcado con su nivel y los chunks lo heredan en el store.
- En
query --answer, el nivel efectivo es el máximo de los chunks recuperados: un solo chunkconfidentialen el contexto hace confidential a toda la respuesta. La policy por defecto permite:confidential → ollama(local),internal → ollama y nubes privadas,public → cualquier proveedor.--adapterexplícito no permitido para el nivel → error con la lista de permitidos (nunca se degrada en silencio lo que pediste).- Adapter de config/default no permitido → se enruta al primer proveedor permitido, avisando por stderr.
- En
eval --judges, declara el nivel con--sensitivity(defaultinternal); los jueces no permitidos se rechazan antes de enviar nada. - Defensa en profundidad: todo lo que sale hacia un LLM va además por
redactPII(emails, teléfonos, NIF/NIE, tarjetas, IBAN). - Índices creados antes de 0.7.0 no tienen marca: sus chunks cuentan como
internal. Reindexa para aplicar tus reglas.