Saltar a contenido

ADR-054: Cuadro de clasificación público completo — procedimiento, tipos convalidados, histórico, TVD y certificado RUSD

Estado: Aceptado Fecha: 2026-10-29 Autores: Giampiero (mantenedor principal); épica «deuda del lote D», puntos 1 y 7 Relacionados: ADR-025 (la TRD como instrumento convalidado), ADR-026 (TVD), ADR-050 (cuadro público)


Contexto

El cuadro público (/api/v1/public/archive/cuadro-clasificacion/{tenant}) publicaba solo la TRD convalidada vigente, sin TVD, sin histórico y sin tres columnas que el Acuerdo AGN 001/2024 (que compila y deroga el 004/2019) pone en la TRD (arts. 5.1.3.1 y 5.1.3.2, Anexo 6): los tipos documentales, el procedimiento de la disposición final y la inscripción en el RUSD. Verificado contra el código:

  • No existía procedimiento (description es el alcance, no el procedimiento).
  • Los tipos documentales apuntan a la fila de la versión y se re-apuntan de N a N+1 al convalidar (aviso #3 de ADR-025): la versión derogada perdía los suyos, así que un histórico con tipos era imposible desde la tabla viva.
  • rusd_radicado es el número de la solicitud ante el AGN; el certificado de inscripción (número y fecha) no se modelaba.
  • valid_from es la fecha de creación de la fila, no la de entrada en vigencia; valid_to es el día en que se ejecutó la derogación, no el del acto.

Decisión

  1. trd_series.procedimiento (TRD y TVD): contenido de la versión, congelado fuera de borrador por el trigger, y obligatorio para aprobar (409 procedimiento_requerido; CHECK trd_series_procedimiento_check). Una versión migrada lo captura una sola vez al ratificarla (mismo patrón que dependencias_productoras). Se clona al abrir la versión N+1.
  2. Instantánea de tipos al convalidar — trd_serie_tipos_convalidados, append-only (UPDATE/DELETE/TRUNCATE rechazados por trigger). Se escribe en la misma transacción de convalidar, después del re-apuntado. Una hoja (serie sin subseries, o subserie) sin tipos no se convalida: 409 serie_sin_tipos_documentales y rollback. La TVD no exige tipos. Alternativas descartadas: leer los tipos vivos (muestra lo de hoy, no lo convalidado) y dejar de re-apuntar (rompe a los consumidores de trd_serie_id).
  3. Histórico: ?vigente_en=AAAA-MM-DD sobre el mismo cuadro (un solo armado) y GET …/{tenant}/historial (lista plana). La vigencia de una versión es fecha_convalidacion <= d < hasta, con hasta = LEAST(valid_to, fecha_convalidacion de la versión siguiente): dos versiones no pueden regir a la vez aunque valid_to se haya escrito el día de la derogación (precisado por ADR-059: valid_to pasa a ser el acto de la N+1 y el cuadro lo lee directo; _HASTA se retiró). Fecha futura: 422. Se publican solo versiones convalidada/derogada con fecha_convalidacion.
  4. TVD: bloque aparte fondos_acumulados (por fondo_nombre), sin secciones: un fondo acumulado no cuelga del organigrama vivo.
  5. Certificado RUSD — columnas rusd_certificado_numero/fecha en trd_series, fill-once en cualquier estado (el trigger también lo blinda en la versión derogada), solo de convalidada/derogada, fecha no anterior a la convalidación. Se captura por acto administrativo (POST /api/v1/trd/certificado-rusd y gemelo TVD): un certificado cubre el instrumento entero; registrar serie por serie sería una escritura por serie. 404 si ningún acto coincide, 409 certificado_rusd_distinto (sin escribir nada), idempotente si coincide. Se publica el certificado, no rusd_radicado.

Fuga y lista blanca

El cuadro público sigue siendo una lista blanca: no salen acta_comite, created_by, rusd_radicado ni ids. El acto administrativo y la fecha de convalidación son actos públicos.

Consecuencias

  • Migración archive-service 080 (tenant). Los datos de prueba que no cumplen el CHECK nuevo se recrean (scripts/reset-entorno.sh); no hay backfill.
  • convalidar puede responder dos 409 nuevos; la UI los muestra.
  • Las versiones convalidadas antes de esta épica no tienen instantánea: su histórico sale sin tipos hasta que se recreen (entorno de pruebas).

Residuos

La tabla de tipos publicada no distingue tipos retirados después de convalidar (la instantánea es la verdad histórica). Ver docs/es/api.md para el contrato.

Ronda de corrección (2026-10-29)

  • Citas. El Acuerdo AGN 001/2024 compila y deroga el 004/2019 y el 060/2001. Rige para el circuito del instrumento: RUSD (art. 5.1.3.1, Certificado de Inscripción), publicación de CCD/TRD/TVD (5.1.3.2), registro de cambios (5.1.4.1, par.), implementación tras el certificado (5.1.5.1) y el Anexo 6. Ya no queda ninguna marca [confirmar] en esta decisión: el certificado es público y se publica (no el rusd_radicado de la solicitud).
  • El certificado es una compuerta (5.1.5.1). Preparar una transferencia, la transferencia corta, proponer y ejecutar un lote de eliminación dan 409 trd_sin_certificado_rusd si el instrumento que gobierna al expediente no lo tiene (fail-closed; un instrumento migrada o aprobada no puede tenerlo, de modo que antes debe convalidarse y registrarse).
  • vigente_desde del historial es «convalidada el»: la fecha de convalidación, no la de entrada en aplicación (que exige el certificado y se publica aparte). El nombre se conserva por contrato con el portal.
  • Deuda B9: tipos documentales sin soporte ni formato (Anexo 6). No implementada; declarada en el cierre del lote D.