docs / decisions / 0006

Decision records are written in Spanish.

ADR 0006. Protocolo de bifurcación e invariantes I1–I5#

  • Estado: aceptada
  • Fecha: 2026-09-01 (SPEC 1.0); registro retrospectivo del 2026-09-16
  • Especificación: SPEC.md §10; guía en FORKING.md

Contexto y problema#

Cada dominio cerrado necesita su propio contrato. Si cada contrato nuevo exigiera escribir un parser, o si un contrato derivado pudiera alterar libremente los campos de su padre, se perdería la interoperabilidad entre familias y la garantía de que todo documento es analizable.

Alternativas consideradas#

  1. Formato único y extensible con campos opcionales para todos los dominios.
  2. Contratos independientes sin relación declarada.
  3. Familias derivadas por bifurcación bajo invariantes verificables por máquina, interpretadas por un parser genérico.

Decisión#

Se adopta la alternativa 3. Una familia es un contrato de datos (contract.json, README.md, fixtures/) que cumple cinco invariantes: I1 línea local, I2 cabecera con prefijo y n, I3 núcleo heredado estable, I4 extensión solo al final e I5 ida y vuelta de los fixtures. mini check-forks verifica I3/I4 (E21) e I5 sobre el registro de familias. Un cambio incompatible exige un prefijo nuevo.

Consecuencias#

  • Una familia nueva no requiere código: el parser interpreta el contrato y el bloque de especificación del prompt se deriva de él.
  • Reordenar, retipificar o eliminar un campo heredado se rechaza (E21).
  • Los fixtures publicados alimentan la suite de conformidad (categoría fixtures).

Evidencia#