docs / decisiones / 0004decisions / 0004
ADR 0004. Clave de conteo n y count_key#
- Estado: aceptada
- Fecha: 2026-09-01 (SPEC 1.0); registro retrospectivo del 2026-09-16
- Especificación: SPEC.md §5 y §8 (E03, E04, E07)
Contexto y problema#
Una salida generada puede truncarse (límite de tokens) o sufrir colisiones de delimitador dentro de una lista (ADR 0002). Sin información redundante, un documento truncado en un límite de línea y una lista con un elemento de más son textos sintácticamente válidos: la corrupción pasa inadvertida.
Alternativas consideradas#
- Sin recuento: confiar en la sintaxis.
- Marcador de fin de documento.
- Recuento declarado en la cabecera (
n) y, para listas de longitud fija, una clave de cabecera que fija la aridad exacta (count_key).
Decisión#
Se adopta la alternativa 3. n es obligatorio (E03 si falta) y debe coincidir con el
número de líneas de registro (E04). Un campo de lista puede declarar
count_key: "k"; cada registro debe tener exactamente k elementos (E07).
Consecuencias#
- El truncamiento en límite de línea se detecta (E04) y el diagnóstico informa de los
registros faltantes (
missing_records). - Una colisión de delimitador en una lista con
count_keyse convierte en un error de aridad detectable en lugar de una corrupción silenciosa. - El modelo debe emitir
ncoherente; los reparadores no reescribennpara no ocultar truncamientos.
Evidencia#
- generative/results/ablation.csv: las 5 muestras inválidas del borrador solo con barra invertida se detectan precisamente por la clave de conteo («E07 line 12 [options]: list has 5 elements but header k=4»).
- tests/test_lenient.py: una cabecera con 5 de 12 registros
informa
missing_records == 7. - experiments/generativo/README.md: la reparación
por fusión «nunca reescribe
n», de modo que la advertencia E04 de un truncamiento sigue visible. - FORKING.md: recomienda la clave de conteo para toda lista de longitud fija porque convierte las colisiones de delimitador en errores detectables.
- Casos de conformidad:
list-count-key-*,trunc-*yhdr-e03-*/hdr-e04-*en conformance/cases/.
Decision records are written in Spanish.
ADR 0004. Clave de conteo n y count_key#
- Estado: aceptada
- Fecha: 2026-09-01 (SPEC 1.0); registro retrospectivo del 2026-09-16
- Especificación: SPEC.md §5 y §8 (E03, E04, E07)
Contexto y problema#
Una salida generada puede truncarse (límite de tokens) o sufrir colisiones de delimitador dentro de una lista (ADR 0002). Sin información redundante, un documento truncado en un límite de línea y una lista con un elemento de más son textos sintácticamente válidos: la corrupción pasa inadvertida.
Alternativas consideradas#
- Sin recuento: confiar en la sintaxis.
- Marcador de fin de documento.
- Recuento declarado en la cabecera (
n) y, para listas de longitud fija, una clave de cabecera que fija la aridad exacta (count_key).
Decisión#
Se adopta la alternativa 3. n es obligatorio (E03 si falta) y debe coincidir con el
número de líneas de registro (E04). Un campo de lista puede declarar
count_key: "k"; cada registro debe tener exactamente k elementos (E07).
Consecuencias#
- El truncamiento en límite de línea se detecta (E04) y el diagnóstico informa de los
registros faltantes (
missing_records). - Una colisión de delimitador en una lista con
count_keyse convierte en un error de aridad detectable en lugar de una corrupción silenciosa. - El modelo debe emitir
ncoherente; los reparadores no reescribennpara no ocultar truncamientos.
Evidencia#
- generative/results/ablation.csv: las 5 muestras inválidas del borrador solo con barra invertida se detectan precisamente por la clave de conteo («E07 line 12 [options]: list has 5 elements but header k=4»).
- tests/test_lenient.py: una cabecera con 5 de 12 registros
informa
missing_records == 7. - experiments/generativo/README.md: la reparación
por fusión «nunca reescribe
n», de modo que la advertencia E04 de un truncamiento sigue visible. - FORKING.md: recomienda la clave de conteo para toda lista de longitud fija porque convierte las colisiones de delimitador en errores detectables.
- Casos de conformidad:
list-count-key-*,trunc-*yhdr-e03-*/hdr-e04-*en conformance/cases/.