Expediente 9/0: el valor que nadie podía desmentir

La puerta era nueva, estaba probada por mutación y dio el visto bueno. Medía el artefacto; el problema era de dónde venía el valor.

Jesús Pérez
La puerta se había construido esa misma mañana: quince unitarios, seis controles con ficheros reales y cinco mutaciones vistas ponerse rojas. Aprobó un PDF que componía el libro en la tipografía equivocada, y tenía razón al aprobarlo: ninguna de sus cinco reglas pregunta de dónde salió un valor.
Caso 9/0: el valor que nadie podía desmentir

🕵️ Mostrar expediente completo → 📋 Protocolo de sesión →

Expediente · Servicio de Deriva

La puerta se había construido esa misma mañana: quince unitarios, seis controles con ficheros reales y cinco mutaciones vistas ponerse rojas. Aprobó un PDF que componía el libro en la tipografía equivocada, y tenía razón al aprobarlo: ninguna de sus cinco reglas pregunta de dónde salió un valor.

Caso Nº 9/0Clasificación: ANTI-PAP · CONFORMIDAD LEÍDA COMO PROCEDENCIA: LA PUERTA MEDÍA EL ARTEFACTO, NUNCA DE DÓNDE SALÍA EL VALOREstado: RESUELTO · CON DEUDA DECLARADA
Mostrar glosario
conformidad
La pregunta de una puerta como opus-pdf-check: ¿el artefacto cumple lo que el perfil declara? Se contesta midiendo el artefacto — espacio de color, incrustación, ppp, caja.
procedencia
La otra pregunta, y no la contesta ninguna medida del artefacto: ¿este valor salió de la casa que lo declara? Una tipografía incrustada correctamente cumple la conformidad sea la tipografía que sea.
casa de un valor
El único sitio versionado donde un valor se declara. La familia tipográfica del libro vive en la marca por su PAPEL —reading, display, ui—; el perfil de la obra nombra el papel y nunca la familia.
deuda enumerada
Una lista de excepciones dentro de la propia puerta, cada una con su motivo y la orden que la termina. Una excepción que nombra un fichero inexistente hace FALLAR la puerta: la lista no puede podrirse en silencio.
control negativo
Ver la puerta ponerse ROJA antes de creerle un verde. Cinco mutaciones del código de reglas, rojas las cinco, verde al restaurar.

Protocolo para declarar, versionar y verificar esto → ontoref.dev

El doble balance — lo que costó, y lo que dejó

Tras la intervención no queda ninguna plantilla de impresión escrita a mano — cuatro retiradas, cero supervivientes — y el preámbulo se emite del perfil y de la marca. El validador nuevo compara siete valores contra su casa y se vio ponerse rojo cuatro veces: un .tex plantado, un typst invocado, una familia a mano y un margen que no era el del perfil. El corpus entero pasó por la cadena: 55 de 59 documentos componen y pasan el perfil, tres los rechaza la puerta de conformidad del ODT por deriva anterior, y uno falla por un recuadro más largo que una página, que es una decisión de maqueta que le toca a una persona.

Lo que costó el crimen

  • Reglas de la puerta que podían ver la familia equivocada 0 de 5
  • Mutaciones que la puerta ya había pasado, roja cada una 5
  • Valores del perfil transcritos a mano en la plantilla 9
  • De ellos, comprobados contra su casa 0
  • Días desde que una ADR gobernó esa misma deriva 0 · el mismo día
  • Familias en juego para el mismo destino, medidas la víspera 6
  • Lo que lo cazó una excepción obsoleta

Lo que quedó al cambiar de clase de comprobación

  • Valores de composición escritos a mano, después 0
  • Plantillas retiradas — ninguna sobrevive a mano 4
  • Comprobaciones de procedencia, valor a valor 7
  • Mutaciones del validador nuevo, rojas todas 4
  • Excepciones obsoletas retiradas de la deuda enumerada 4
  • Documentos que componen y pasan el perfil 55 de 59

El caso se archiva RESUELTO, y con una cifra que conviene no suavizar: cero días entre la ADR que gobernó esta deriva y su reproducción. Gobernar dónde vive un valor no impide que alguien tenga una copia; lo que lo impide es que no haya sitio donde copiarlo.

El punto de abandono — lo que no sale en la tabla

Lo que dejó de vigilarse no fue la tipografía: fue la pregunta «¿de dónde salió este valor?». El proyecto la tenía contestada para las FAMILIAS, con su casa y su biop, y la había contestado la víspera en una ADR. Lo que no tenía era un mecanismo que la hiciera al COMPONER, que es el momento en que un valor se transcribe.

Los sospechosos — las pistas falsas

«El espacio de color se mide con gs -sDEVICE=inkcov»“Descartado midiendo: inkcov da los MISMOS cuatro números, a cinco decimales, sobre el original RGB y sobre su conversión a CMYK. Renderiza sobre un dispositivo CMYK y mide tinta, así que contesta sobre el render y no sobre el documento.”Instrumento equivocado
«El TrimBox está bien: lo dice pdfinfo»“Descartado midiendo: poppler SINTETIZA el TrimBox cuando el fichero no declara ninguno. «Recortado justo en el pliego» y «sin recortar» se leían igual, y un override roto que borró todas las cajas de una salida real pasó la puerta.”Testigo sintetizado
«La puerta salió con 1, así que la fuente no es conforme»“Descartado leyendo el informe: la puerta había salido con 1 por no encontrar su contrato —cuya ruta por defecto es relativa al CWD—, no por el documento. Un informe que no se puede analizar es una puerta que NO CORRIÓ.”Exit code leído como veredicto
«Este documento pierde doce figuras»“Descartado abriendo el paquete: las doce imágenes son HUÉRFANAS, content.xml no referencia ninguna, y el único string parecido a la etiqueta es draw:image-opacity, que es un atributo. De 59 documentos, uno solo muestra figuras.”Paquete confundido con cuerpo
«La plantilla lleva los valores del perfil: lo dice su cabecera»“Descartado preguntando a la casa: la marca declara reading = Literata y Georgia como su FALLBACK. La cabecera decía la verdad sobre ocho valores y mentía sobre el noveno, que es exactamente lo que hace inútil una afirmación de procedencia sin comprobador.”Cabecera sin comprobador

El arma — El arma, verbatim

% templates/latex/book-template.tex  — retirada el 2026-09-20
% CADA VALOR VIENE DEL PERFIL, ninguno es una opinión de esta plantilla.
%   TextBlock 16 x 24.7 cm · Margins 2.5cm · BodySize 12pt · ...
%   families  reading   (la marca dice quién es)
...
\setmainfont{Georgia}          % <- la marca dice Literata; Georgia es su FALLBACK

La copia no vino de la nada: Georgia estaba en las dos plantillas retiradas esa misma mañana, y yo las tenía abiertas para elegir el MOTOR. La tipografía era ruido para lo que medía, y por eso viajó sin que nadie la mirara.

El giro — La reparación

# scripts/nu/latex-preamble.nu — el preámbulo se genera, no se guarda
let family = (brand-family ($profile.families | first).brand)
...
$"\\setmainfont{($family.family)}"

# y la comprobación que faltaba NO mide el PDF: compara el preámbulo emitido
# con su casa, valor a valor
$ nu scripts/nu/adr-check-print-route.nu
  ruta de impresión: preámbulo generado del perfil y de la marca, sin plantilla
  versionada y sin typst                                            EXIT=0

La pregunta que lo desencadenó no fue mía: «¿no tendría sentido generar la plantilla usando los settings configurados en los ncl?». El precedente estaba en el repo desde antes —la plantilla ODT se emite de su contrato— y yo había leído, esa misma sesión, la cabecera del perfil que dice «quién es cada familia lo declara la marca». Seguí la plantilla en vez de seguir el puntero.

El veredicto

Lo incómodo es que todo lo que se hizo bien esa mañana siguió estando bien: la puerta medía lo que decía medir, las cinco mutaciones la habían puesto roja, y el PDF cumplía el perfil. El defecto entró por el único sitio donde no había pregunta posible. Y lo cazó un mecanismo que vigilaba otra cosa: al borrar tres plantillas, una excepción de la deuda enumerada quedó nombrando un fichero inexistente, la puerta se negó POR DISEÑO, y su propio caso —seis familias para un mismo destino, medidas la víspera— nombraba la confusión que yo estaba repitiendo en ese momento. Una ADR había gobernado esa deriva el mismo día; gobernaba dónde vive un valor, no el acto de copiarlo. Por eso la reparación no fue otra comprobación: fue retirar el destino.

Un valor copiado no tiene quien lo desmientaEl preámbulo se GENERA del perfil y de la marca (latex-preamble.nu), y nada queda escrito a mano. Comprobar estrecha la clase de error; generar la suprime — un preámbulo sin valores propios no puede equivocarse de familia.
La puerta medía el artefacto, no la procedenciaLas dos preguntas quedan separadas y las dos tienen mecanismo: opus-pdf-check sigue midiendo el artefacto contra el perfil, y adr-check-print-route.nu compara el preámbulo emitido con el perfil y la marca VALOR A VALOR. La restricción de ADR-029 es la que ejecuta la segunda.
La cabecera afirmaba una procedencia que nadie comprobabaEl fichero generado se abre con GENERADO … no se edita, se regenera y lista de dónde sale cada valor. Una afirmación de procedencia en un fichero escrito a mano es folklore; en un derivado es su registro de generación.
Lo cazó una excepción obsoleta, y de refilónEsto SOSTUVO, y es el mecanismo que hizo el trabajo: composition-values-defined-once enumera su deriva con el motivo de cada excepción, y se NIEGA cuando una de ellas nombra un fichero que ya no existe. Al borrar tres plantillas la lista quedó rancia, la puerta falló por diseño, y su propio caso —«Georgia en las dos plantillas, Literata en el contrato»— nombraba la confusión que se estaba repitiendo en ese momento.
Una ADR gobernó esa deriva el mismo día y no impidió reproducirlaPorque gobernaba DÓNDE vive un valor, no el acto de copiarlo a otro sitio. ADR-029 retira el destino: no hay plantilla versionada donde transcribirlo, y el validador refuta el preámbulo que no venga de su casa. Una ADR que declara la casa necesita, además, que nada pueda tener una copia.

La reconstrucción — la sesión, repetida con protocolo

Lo que se pidió — reconstruido de .coder/2026-09-20-16-interfaz-editorial.plan.md:535 — la fila de la tarea, verbatim, con su número de línea. El mismo plan añade en :548 que «6.3 es bl-015 … graduates_to = 'Adr», y el arranque de la sesión (.coder/2026-09-20-17-bloques-6-7.prompt.md:9) ordena empezar por el bloque 6.

| 6.3 | Decidir la ruta única de impresión. **La decide 6.2 midiendo, no una opinión** | moderate |

Lo que había que pedir

Decide la ruta midiendo, y entrega la decisión como GENERADOR, no como plantilla: ningún valor
de composición escrito a mano en ningún fichero. Antes de componer nada, pide cada valor a su
casa —el perfil de la obra, la marca por su papel— y escribe el comprobador que compara lo
emitido con esa casa valor a valor. Si transcribes un valor, la sesión ha fallado aunque el PDF
pase la puerta.
MicrotareaVerificable
Medir los motores candidatos antes de opinar, con la puerta como árbitrogs -q -dBATCH -dNOPAUSE -o - -sDEVICE=inkcov <typst>.pdf y <xelatex>.pdf → C=0.00211 frente a C=0.00000 sobre el mismo texto
Comprobar que el motor puede emitir el estándar que la ADR exige, antes de elegirlotypst compile --help | grep -i pdf-standard → PDF/A y PDF/UA, ningún PDF/X
Pedir la familia a la marca por su papel, nunca copiarla de una plantillanu -c 'use scripts/nu/lib.nu *; brand-family "reading"' → family = Literata, fallbacks = [Georgia, serif]
Escribir el comprobador de PROCEDENCIA y verlo fallar antes de generar nadaplantar \setmainfont{Georgia} en el generador → nu scripts/nu/adr-check-print-route.nu EXIT 1 nombrando la familia; restaurar → EXIT 0
No dar por bueno un exit code como veredicto de una puertaopus-odt-check <odt> sin --contract desde la raíz de la constelación → falla por no encontrar el contrato, no por el documento; con --contract absoluto → 1/1 conformes

La puerta antes de delegar: El comprobador de procedencia —adr-check-print-route.nu, comparando el preámbulo emitido contra el perfil y la marca— escrito y visto FALLAR antes de componer el primer PDF. Sin él, la única puerta disponible era la de conformidad, que aprueba cualquier familia con tal de que viaje incrustada, y por eso el verde no distinguía «compuesto con lo declarado» de «compuesto con su fallback».

El disparador de ADR: El momento en que se decidió que el preámbulo se GENERA y no se guarda. No es una preferencia: decide que ningún fichero versionado pueda llevar una copia de un valor de composición, y de eso hereda cualquier destino futuro. Ahí habría disparado adr?, y no al final de la sesión.

La jurisprudencia — qué exige hoy la lección

  • ✓
    La ruta de impresión y su preámbulo generado, con las alternativas rechazadas por medidaadr:029/print-preamble-is-generated-from-the-profile
  • ✓
    La puerta que refuta el PDF sigue siendo independiente del productoradr:029/the-print-pdf-is-refused-by-its-profile
  • ✓
    El validador compara el preámbulo emitido con el perfil y la marca, valor a valortest:code/scripts/nu/adr-check-print-route.nu
  • ✓
    La familia se pide a la marca por su papel, nunca se escribecode/scripts/nu/lib.nu — brand · brand-family · expression-profile
  • ✓
    Ninguna familia tipográfica fuera de su casa, con la deuda enumerada y su caducidadcontract:.ontoref/biop/composition-values-defined-once.ncl#nucleus.cmd
  • ✓
    La dirección del perfil, una vez por lenguaje, con el patrón afinado al FICHEROadr:017/toolchain-paths-defined-once

⊘Deuda declarada: Queda un límite declarado, no una tarea: la clase «procedencia» sólo está cubierta donde hay un generador que comparar. Un valor de composición que alguien escriba a mano en un fichero que ningún generador emite —una guía en prosa, un ODT de referencia— sigue siendo invisible para esta clase de comprobación, y lo único que hay para él es la deuda enumerada del biop, que vigila familias y no cuerpos, ni interlineados, ni cajas. Lo settle una orden que declare esas tres como la familia ya está declarada, con su patrón y su prueba.

Del vocabulario del proyecto (3)
Núcleo
El `.ncl` de una célula: afirmación, evaluación e interfaz, más la identidad y el linaje que la hacen ser la misma célula en tejidos distintos.
adr?
Procedimiento de evaluación que se invoca al final de una sesión o feature.
ontoref
El protocolo en sí: una superficie tipada y consultable en la que un proyecto declara LO QUE ES (ontología) y CÓMO ACTÚA (reflexión), de modo que una afirmación sobre el proyecto pueda ser contradicha por una máquina y no sólo por un lector.

Vocabulario completo del proyecto →

Perspectivas
¿Te ha resultado útil? Valóralo
¿Tienes algo que aportar? Cuéntame qué opinas, qué sugieres, o si seguimos explorando este tema.
· lecturas

Usamos cookies para que este sitio funcione, entender el uso del servicio y apoyar acciones de marketing. Política de cookies para más información.