Saltar al contenido principal

Receipts y verificación offline

Los receipts son la respuesta de daimon a una pregunta que la mayoría de los sistemas de memoria no puede tomarse en serio: ¿cómo sabes que el archivo de memoria no fue editado después de escribirse?

Qué es un receipt

Con DAIMON_RECEIPTS=1, cada checkpoint se empareja con un receipt de vitni — una declaración firmada con Ed25519, escrita en un archivo lateral <session>.receipt, que vincula:

  • los bytes exactos en disco del checkpoint (outputs_hash), con
  • su transcript de origen (inputs_hash).

Si alguien edita el archivo del checkpoint después — a mano, con un script, con un job de limpieza bienintencionado — los bytes ya no coinciden con la firma, y la edición es detectable.

Todo ocurre localmente. Los receipts se firman offline, se verifican offline, y nada sale de la máquina. No hay servicio, ni autoridad de sellado de tiempo, ni llamada de red.

Verificar

daimon verify-receipt # el último checkpoint de este proyecto
daimon verify-receipt <session-id> # uno específico

La verificación también está tejida en el camino del briefing: cuando a un checkpoint de la era de receipts le falta el receipt, o el receipt ya no coincide con los bytes del archivo, el briefing no le cree en silencio — las etiquetas ✓ verbatim afectadas se degradan con una nota visible. Una afirmación verbatim vale lo que vale la integridad de los bytes que la respaldan, y el briefing lo dice cuando esa integridad no puede demostrarse (mira clases de confianza).

Fail-open por diseño

Los receipts nunca bloquean la memoria. Un CLI de vitni ausente, un timeout o un paso de firma fallido registran una línea en el log y la serialización continúa sin receipt — una falla de receipts no puede costarte un checkpoint ni un briefing. Las llaves de firma se crean automáticamente en el primer minteo bajo ~/.daimon/keys (modo 0600).

Los receipts están apagados por defecto (cada minteo lanza un subproceso); la lista completa de perillas — DAIMON_RECEIPTS, DAIMON_VITNI_CLI, DAIMON_KEYS_DIR — está en la referencia de configuración.

Receipts y borrado

El borrado se compone con los receipts en lugar de pelear contra ellos. daimon forget elimina un ítem y re-mintea el receipt sobre el checkpoint posterior a la eliminación, mientras un evento tombstone de solo-anexado registra que hubo una eliminación — por hash del contenido, nunca por el contenido. Editar un checkpoint a mano rompe su receipt; olvidar a través del CLI deja un rastro firmado y demostrable. La página del ciclo de vida de los ítems cubre la mecánica.