docs / decisiones / 0005decisions / 0005
ADR 0005. Modo tolerante y recuperación parcial#
- Estado: aceptada
- Fecha: 2026-09-01 (SPEC 1.0); registro retrospectivo del 2026-09-16
- Especificación: SPEC.md §8
Contexto y problema#
En salidas largas, un único registro defectuoso o un corte al final invalida el documento completo si el análisis es todo o nada. Regenerar el documento entero multiplica el coste; lo deseable es conservar los registros válidos y regenerar solo las líneas rechazadas.
Alternativas consideradas#
- Solo análisis estricto: rechazar el documento ante cualquier error.
- Reparación heurística del texto (completar, reinterpretar) antes de validar.
- Modo tolerante: la validación es local por línea; el parser devuelve los registros válidos junto con la lista completa de errores y un diagnóstico de las líneas que deben regenerarse.
Decisión#
Se adopta la alternativa 3 como complemento del modo estricto. El modo tolerante
aplica exactamente las mismas reglas que el estricto (incluidos los escapes, E09) y
descarta solo los registros inválidos; una línea rechazada no reserva su valor
unique. El diagnóstico expone invalid_lines y missing_records.
Consecuencias#
- Los registros devueltos en modo tolerante son los que el modo estricto aceptaría.
- La regeneración puede limitarse a las líneas indicadas.
- Los formatos con estructura envolvente (JSON, XML) no admiten esta recuperación sin reparación del texto.
Evidencia#
- generative/results/e5_truncation.csv (200 cortes
por dominio): eficiencia de recuperación de .mini 99,6 (
a), 99,0 (tc) y 99,4 (log); JSON y XML 0,0 con 100,0 % de cortes sin recuperación; YAML 78,8 (a) con 22,5 % sin recuperación. - generative/results/e2_summary.csv:
mean_recovered_pct100,0 en las seis combinaciones de modelo y familia. - tests/test_lenient.py: último registro truncado → 11 registros recuperados y E05 en la línea 13.
- Las cifras de recuperación de experiments/generativo/README.md (V3) provienen de un adaptador simulado y ese documento indica que no deben citarse como evidencia; no se usan aquí.
- Casos de conformidad: categorías
lenientytruncationen conformance/cases/.
Decision records are written in Spanish.
ADR 0005. Modo tolerante y recuperación parcial#
- Estado: aceptada
- Fecha: 2026-09-01 (SPEC 1.0); registro retrospectivo del 2026-09-16
- Especificación: SPEC.md §8
Contexto y problema#
En salidas largas, un único registro defectuoso o un corte al final invalida el documento completo si el análisis es todo o nada. Regenerar el documento entero multiplica el coste; lo deseable es conservar los registros válidos y regenerar solo las líneas rechazadas.
Alternativas consideradas#
- Solo análisis estricto: rechazar el documento ante cualquier error.
- Reparación heurística del texto (completar, reinterpretar) antes de validar.
- Modo tolerante: la validación es local por línea; el parser devuelve los registros válidos junto con la lista completa de errores y un diagnóstico de las líneas que deben regenerarse.
Decisión#
Se adopta la alternativa 3 como complemento del modo estricto. El modo tolerante
aplica exactamente las mismas reglas que el estricto (incluidos los escapes, E09) y
descarta solo los registros inválidos; una línea rechazada no reserva su valor
unique. El diagnóstico expone invalid_lines y missing_records.
Consecuencias#
- Los registros devueltos en modo tolerante son los que el modo estricto aceptaría.
- La regeneración puede limitarse a las líneas indicadas.
- Los formatos con estructura envolvente (JSON, XML) no admiten esta recuperación sin reparación del texto.
Evidencia#
- generative/results/e5_truncation.csv (200 cortes
por dominio): eficiencia de recuperación de .mini 99,6 (
a), 99,0 (tc) y 99,4 (log); JSON y XML 0,0 con 100,0 % de cortes sin recuperación; YAML 78,8 (a) con 22,5 % sin recuperación. - generative/results/e2_summary.csv:
mean_recovered_pct100,0 en las seis combinaciones de modelo y familia. - tests/test_lenient.py: último registro truncado → 11 registros recuperados y E05 en la línea 13.
- Las cifras de recuperación de experiments/generativo/README.md (V3) provienen de un adaptador simulado y ese documento indica que no deben citarse como evidencia; no se usan aquí.
- Casos de conformidad: categorías
lenientytruncationen conformance/cases/.