Saltar al contenido principal

Conocimiento negativo

La mayor parte de lo que daimon recuerda es positivo: esto es cierto, esto pasó, esto sigue abierto. Una refutación es el tipo de hecho opuesto. Registra que un enfoque se probó y se rechazó, que una afirmación resultó falsa, o que no hay que volver a tomar cierto camino, y nombra la evidencia que resolvió la pregunta.

daimon refute add --subject "diseño original del recibo de #502" \
--scope "niveles de recibo de ítems arrastrados" --anchor issue:502 \
--evidence "measurement:566/623 origin misses" --ratify

(la bandera que lleva el texto mismo de la afirmación rechazada va entre --subject y --scope; mirá la referencia de CLI para la sintaxis exacta.)

Las refutaciones viven en el mismo ledger que las reglas vigentes: un solo stream append-only, un solo espacio de ids, un solo camino de borrado. Una regla es una restricción positiva que un humano puso en vigencia. Una refutación es una negativa: qué ya no vale, y por qué.

La evidencia se cita, no se verifica​

Cada fuente de --evidence tiene que ser una referencia tipada: message:<id>, transcript:<session>, artifact:<ruta>, issue:<número>, measurement:<recibo>, receipt:<id>, o url:<fuente>. daimon revisa la forma de esa referencia y nada más. Nunca resuelve el issue, nunca vuelve a correr la medición, nunca confirma que el artefacto todavía existe en esa ruta. La cita queda registrada exactamente como se dio, para siempre, así que cualquiera que lea la refutación después sabe con precisión qué se chequeó cuando se resolvió la pregunta, y puede ir a chequearlo por su cuenta.

Por eso también la propia afirmación de un agente nunca activa nada por sí sola. Citar evidencia no es la misma afirmación que esta evidencia de verdad respalda la conclusión, y daimon no decide esa segunda pregunta por vos.

Candidata, después activa​

daimon refute add --subject "…" --scope "…" \
--evidence issue:502 --by agent
daimon refute ratify r-1a2b3c4d5e6f
daimon refute revise r-1a2b3c4d5e6f --evidence issue:530
daimon refute overturn r-1a2b3c4d5e6f --evidence "measurement:new-result"

Un add de agente registra una candidata: escrita, buscable, pero todavía no en vigencia, y nunca se renderiza como guardia activa hasta que un humano la ratifica. La vía humana es ratify desde una terminal interactiva; no hay forma de que un agente se autopromueva de candidata. revise agrega una versión nueva, citada con evidencia, que a su vez necesita ratificarse antes de reemplazar a la anterior. overturn cita evidencia contra una refutación activa: el overturn de un agente queda registrado como propuesta y la guardia sigue en vigencia; el overturn de un humano la desactiva de inmediato.

Leer el ledger​

daimon refute list
daimon refute show r-1a2b3c4d5e6f
daimon refute search verificación de recibos
daimon refute guard "¿deberíamos revisar el #502?"

list y show leen las refutaciones propias de este proyecto. show sobre un registro da sus citas de evidencia completas, su alcance y sus anclas, y quién la escribió y quién la activó, todo en un solo lugar, porque nada en este ledger decae ni se vuelve a extraer: el registro que leés es toda la historia que importa. search es el camino de búsqueda por tema, y a propósito devuelve las dos polaridades etiquetadas, refutaciones y reglas juntas, porque en medio de una sesión, después de que el briefing ya pasó de largo, cualquiera de los dos tipos de registro puede ser el que vale la pena mostrar. guard compara las anclas o la frase de sujeto de una acción propuesta contra las refutaciones activas por coincidencia exacta nada más, consultivo y nunca bloquea un comando por sí solo; existe para que un agente revise su propio próximo movimiento antes de hacerlo.

Los comandos daimon why, daimon diff y daimon blame (mirá el ciclo de vida del ítem y la referencia de CLI) responden una pregunta distinta: inspeccionan ítems de checkpoint a través de las generaciones que daimon conserva. Una refutación no es un ítem de checkpoint y no pasa a una generación más vieja, así que ahí no hay nada para que esos tres comparen o rastreen. refute show ya es el equivalente: el registro completo y sin decaer para un id.

El límite con .scars/​

Un repositorio también puede llevar su propio conocimiento negativo, en un directorio .scars/ versionado dentro del repo mismo: un callejón sin salida que se probó y se abandonó, un pedazo de código que parece mal a propósito, una trampa que rompe algo no obvio. Los scars viajan con el código que protegen. Se mueven con el repositorio, son visibles para cualquiera que lo clone, y responden "qué pasó acá, en este archivo, que la próxima persona que lo toque necesita saber antes de tocarlo."

El ledger de refutaciones de daimon responde una pregunta distinta, en una capa distinta. Es memoria por proyecto que vive completamente afuera del repositorio, acotada a lo que una persona o un agente que trabajó en ese proyecto de verdad probó y rechazó, y existe exista o no un .scars/ en ese proyecto. Las dos cosas son complementarias, no compiten: un scar documenta una trampa en el código; una refutación documenta una conclusión a la que alguien llegó mientras trabajaba en él.

Anclar un scar al código que protege, guardar candidatas y promover una a estado activo es trabajo de su propia herramienta: Scar es donde vive esa revisión y esa promoción, no daimon.

daimon trae un solo puente entre las dos capas. Con DAIMON_SCAR_HARVEST=1, redacta candidatas de conocimiento negativo de cada sesión hacia .scars/candidates/ para que una persona las revise: cero LLM, ancladas a una ruta, y activo solo en repos que ya tienen un directorio .scars/. Escribe candidatas para que alguien las revise con Scar; nunca promueve ninguna por sí solo.