ADR-064: Alcance de la destrucción por disposición final¶
Estado: Derogado por ADR-065, salvo D11 y el asiento de envío de D10 Fecha: 2026-11-04 Autores: Giampiero (mantenedor principal) Relacionados: ADR-010, ADR-043, ADR-061, ADR-063
Contexto¶
La purga por disposición destruía los anexos y las filas del radicado. Un censo de lo que apunta a un archivo o copia contenido del documento mostró más:
- Un expediente con AIP o re-amarrado no se podía destruir.
expediente_aip_version,expediente_trd_resolucionesyexpediente_worm_extensionreferenciaban sin acción: el borrado de la fase 3 fallaba después de destruir los radicados, y el expediente quedaba sin lápida. - El AIP sobrevivía entero, con los bytes de todos los documentos, aunque su retención hubiera vencido. Ningún código borraba del bucket de preservación.
- Sobrevivían las copias en otro formato, el
.emlde un correo, el borrador del radicado, el índice firmado y sus renovaciones, y el texto copiado en flujo, firma, conocimiento y lotes. - Un radicado vinculado a dos expedientes se destruía aunque el otro siguiera vivo, y el gate WORM no corría si el expediente no tenía archivos que purgar.
El art. 4.3.2.5 del Ac. AGN 001/2024 ordena eliminar lo electrónico que cumplió su retención y no es de conservación permanente. El art. 4.5.4 num. 7 ordena conservar las actas e inventarios de lo eliminado.
Decisiones¶
D1. La disposición alcanza toda copia, en cualquier formato, bucket o sistema. Hay tres clases:
| Clase | Qué es | Destino |
|---|---|---|
| Documento y copia | Bytes o texto del documento | Destruir (art. 4.3.2.5) |
| Traza del acto | Quién hizo qué y cuándo, sin contenido | Conservar y quitar el texto libre |
| Instrumento | Acta, inventario, lápida, FUID, decisión del Comité | Conservar intacto (art. 4.5.4 num. 7; resolución de revisión: arts. 4.4.3 par. 1 y 4.5.4 par. 1) |
D2. Orden: comprobar, preservación, documentos, lápida. Por expediente: (0) sin tocar nada, retención WORM, hold, copia de preservación no destruible y radicado en otro expediente vivo omiten, con constancia en el addendum; (1) intención con inventario; (2a) verificación previa en document, lectura de los artefactos de firma, destrucción en storage bajo su gate y, solo si el gate pasó, retiro de los sellos; (2b) documentos; (3) lápida. Antes de 2a y de 2b se repite la comprobación del radicado compartido. Con una intención registrada, un bloqueo es fallo reintentable, no omisión.
D3. El inventario de artefactos cuenta, pero no bloquea. A diferencia de anexo_ids (ADR-063), una renovación LTA puede añadir un objeto tras la intención. Storage destruye la unión de inventario y filas vivas de contenido, y declara los extras, que quedan en artefactos_extra. La lápida los cuenta en artefactos_preservacion_eliminados.
D4. Destrucción por lista permitida. TIPOS_QUE_SE_DESTRUYEN (aip, indice, firma_lta_renovada). Un tipo fuera de contenido e instrumento falla con tipo_worm_desconocido, nunca se borra. Se borra por version_id: en este almacén, borrar sin versión deja una marca y el objeto sigue vivo. Probado contra RustFS: la retención COMPLIANCE vigente y el legal hold rechazan el borrado; vencida, lo admite.
D5. El texto derivado converge por evento. document.radicado.purged pasa a outbox, atómico con la destrucción. Flujo, firma, conocimiento y notificación limpian lo suyo y fallan sin acuse si el radicado sigue vivo. La lápida da fe de documentos y bytes, que son síncronos; no afirma nada sobre las copias derivadas.
D6. Los registros inmutables admiten solo vaciar su texto, con el objeto ya destruido. flow_events y expediente_eventos lo comprueban en el motor (NOT EXISTS), no con una bandera de sesión.
D7. Barrido de temporales por marca. files.origen (ventanilla, render_borrador) y una ventana de 60 minutos: se descartó una cola durable porque pierde justo el caso del proceso muerto. Sin marca no se barre nada: los artefactos firmados no están en REFERENCIAS_DE_ARCHIVO. Quien adjunta toma FOR SHARE y el barrido decide bajo FOR UPDATE.
D8. Una versión pública retirada no retiene bytes contra la disposición de otro radicado. Su huella, causa y asientos son la prueba de lo publicado. La aprobada o elaborada sí retiene.
D9. Correo: se destruye el .eml y se anonimiza la fila. Se conservan message_id y número: sin ellos, un correo aún presente en el buzón se ofrecería de nuevo para radicar.
D10. Notificaciones: retención de 180 días con constancia. La purga asienta recuento y fecha de corte, y cada envío deja un asiento sin contenido. Esta tabla no es prueba de notificación de un acto administrativo: una futura notificación del art. 56 del CPACA debe vincularse al expediente (Ac. 001/2024 art. 4.2.10).
D11. Los asientos de eventos fallidos ya no copian el sobre. evento.dead_letter lleva identificadores y motivo. El sobre completo vive en evento_dead_letter, que sí se depura.
Pendiente: decisiones del usuario¶
audit_logcon contenido.document.radicado_actualizadoy los comentarios de flujo y visto bueno guardan antes y después del texto, y son inmutables. Hoy sobreviven a la disposición. Propuesta: dejar el nombre del campo y mover los valores a una tabla que cae con el radicado. Un SHA-256 de un asunto corto se revierte por fuerza bruta, así que no basta con la huella.- Índice firmado. Se destruye por defecto (
TIPOS_QUE_SE_DESTRUYEN); conservarlo es quitar dos valores. - Radicado compartido por dos expedientes. Hoy ambos se omiten y, si los dos siguen vinculados, ninguno se destruye nunca. Propuesta: destruir el expediente vencido y conservar el radicado por el vínculo del otro, con constancia.
Deuda declarada¶
- Respaldos. El borrado es lógico, sin sobrescribir el medio, y no alcanza los respaldos vigentes.
infra/restore.shno reaplica las destrucciones: restaurar resucita lo destruido.metodo_borradodebe decirlo. - Convergencia sin cota. Un consumidor caído más de los 30 días de retención del stream pierde el evento y conserva el texto. Falta un barrido periódico que no dependa de eventos.
- Omisión tras la intención. Un hold que llega después de la intención da fallo reintentable y no genera addendum mientras dure. Si llega entre la comprobación y la fase 2b, la preservación puede estar ya destruida.
- Bloqueo por un vínculo tardío. Un vínculo en la ventana entre la comprobación y 2a puede dejar la preservación destruida y el expediente fallido hasta desvincular el radicado.
- Alerta previa al Administrador Funcional por documentos compartidos y metadato de copia en el otro expediente (Modelo de Requisitos SGDEA §6.2.2.7).
- Fuera del sistema: buzón externo, webhooks, descargas y proveedor externo de lenguaje.
knowledge.ingest_malformed_eventaún copia el evento alaudit_log.- Acuse de recibo opcional por omisión (CPACA art. 61): anterior a este ADR, por revisar.
Consecuencias¶
- Migraciones: archive
090, storage028, signature028, document062, workflow022. - Desplegar document, storage y signature antes que archive: sus llamadas nuevas fallan cerradas (503, sin destruir nada) si los endpoints faltan.
- Una suspensión de la entidad a mitad de ejecución deja el expediente fallido y reintentable.