Expediente 23/3: la confesión que sobrevivió a su hueco

El campo con el que una restricción declara que nada la verifica, sin que nada verifique que sigue sin verificarse

Jesús Pérez
`gateable = false` obliga a nombrar en `gate_source` qué verificaría la afirmación, para que la ausencia sea visible en vez de olvidada. El corpus afirmaba veintitrés veces que un grupo de comandos «no existía en el CLI»; los tres grupos existían en ese mismo árbol. Ninguna frase estaba corrompida: cada autor escribió la verdad y el sistema la conservó intacta hasta que dejó de serlo. El órgano que falló es el que ontoref construyó para impedir exactamente esta clase.
Caso 23/3: la confesión que sobrevivió a su hueco

🩺 Mostrar historia clínica → 📋 Protocolo de sesión →

Historia clínica · Patología del Software

El paciente declaraba su propia dolencia con exactitud. Nombraba el órgano que le faltaba, y lo nombraba bien. El órgano llevaba semanas en su sitio.

Historia Nº 23/3Diagnóstico: ANTI-PAP · EL CAMPO QUE DECLARA LO NO VERIFICADO, SIN VERIFICAR QUE SIGA SIN VERIFICARSEEstado: CERRADO
El paciente no llegó con síntomas. Llegó con una pregunta del acompañante: «no sabemos qué hacer con los 22». No pedía tratamiento — declaraba un no-saber sobre veintidós restricciones que ni se verificaban ni se podían direccionar.
Mostrar cuadro
gateable = false
Confesión tipada: la afirmación obliga y nada la verifica. No es una vía de escape — el contrato exige nombrar en gate_source qué la verificaría.
gate_source
El campo donde una restricción no verificable nombra su verificador ausente. Prosa dentro de un fichero gobernado, que por eso se lee como gobernada.
carrier
Superficie que sostiene una copia de un hecho gobernado en vez de invocarlo. ADR-074 los nombra fuera del corpus; este caso los encuentra dentro.

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

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

Tras el tratamiento, el órgano vigila 13 confesiones descriptivas y detecta las caducadas. No alcanza a 23 de 36: las que no nombran ninguna superficie sondeable. El mecanismo no puede decir nada de ellas — ni que estén vigentes ni que estén caducadas.

Lo que costó el crimen

  • Afirmaciones de que el grupo de comandos no existía 23
  • Grupos que sí existían en ese mismo árbol 3
  • ADRs que sostenían la negación 7
  • Veces que un solo fichero la repetía 5
  • Falsos positivos de la primera sonda 3 de 5
  • Confesiones que la sonda aún no puede juzgar 23 de 36

Lo que el caso dejó

    </ul>
    

Y la sonda misma no está en ninguna cadena automática: la invoca un solo modo. La lección alcanza a quien ya adoptó el modo, que es la misma forma que este caso diagnostica, un piso más arriba.

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

Lo que dejó de vigilarse no fue la restricción: fue la confesión. gateable = false obliga a nombrar el verificador ausente para que la ausencia sea visible. Ninguna regla obliga a comprobar que la ausencia siga siendo ausencia, y el corpus no tiene forma de notar que un verbo nació mientras tanto.

Diagnóstico diferencial — lo que se descartó

Preguntar si el verbo existe, en vez de si la confesión afirma que no existe“Descartado leyendo los cinco gate_source a mano: adr-073 nombra su validador por diseño, adr-074 acota un hueco residual declarado, adr-088 advierte de una recursión. Tres falsos positivos de cinco.”Falso positivo
Detectar la ausencia con una expresión regular“Descartado porque rompió el comando entero y la traza señalaba al cargador de ADRs. El dato ignorado estaba delante: había funcionado antes de esa edición.”Yatrogenia
«Arreglar» el cargador de ADRs con do {…} | complete“Descartado en el acto: complete captura el stdout de un externo, no el valor de un def de nu. Rompió el informe que estaba sano y se revirtió.”Yatrogenia
Tratar 22 restricciones confesadas como un hallazgo“Descartado leyendo el comentario del esquema: no eran un hallazgo, estaban confesadas una a una y con su verificador nombrado.”Lectura
Datar la deriva en días“Descartado por comando: fef21f4 es un init de 874 ficheros, así que ninguna duración es derivable de esta historia.”No trazable

Etiología — la causa — El patógeno, verbatim

gate_source = "the `criteria` command group: this constraint invokes
              `ontoref criteria validate --check <id>`
              and the CLI has no `criteria` group at all"

Un gate_source es prosa dentro de un fichero gobernado, y prosa en un fichero gobernado se lee como gobernada. Por eso aguantó más que si hubiera estado en un README.

Tratamiento — La terapia

onre governs confessions

  resolved     el verbo EXISTE y la confesión afirma que no
  stale        el grupo existe; «no X group at all» ya no es cierto
  descriptive  nombra un verbo SIN afirmar su ausencia — no puede caducar
  unnamed      no nombra superficie sondeable — la sonda calla

La primera versión preguntaba lo otro y daba tres falsos positivos de cinco. La corrección no fue afinar el umbral: fue cambiar la pregunta.

Pronóstico

El diagnóstico incómodo es que no hay patógeno externo. Cada autor escribió una frase verdadera, el contrato la obligó a nombrar su verificador ausente y todos lo hicieron. La dolencia es estructural: el registro guarda mediciones y el lector las trata como hechos. Ontoref no contuvo esto — lo produjo, con un mecanismo cuyo propósito declarado era impedir precisamente esta clase.

La confesión se comprueba, no sólo se escribegoverns confessions lee cada gate_source y pregunta si la ausencia sigue ausente. Antes sólo se leía como prosa.
La afirmación, no la existenciaSólo se sondea lo que AFIRMA una ausencia. Preguntar si el verbo existe daba tres falsos positivos de cinco: un gate_source puede nombrar un verbo vivo para describirlo, para acotar un hueco residual o para advertir de una recursión.
El mantenimiento pertenece al acto que lo causóEl paso close-with-destinations de ordinary-act no cierra mientras una confesión quede stale o resolved — observado fallando sobre una configuración de prueba antes de confiarse.

La pauta — la sesión, repetida con protocolo

Lo que se pidió — reconstruido de refs:sessions/2026-08-17-la-confesion-y-su-hueco — extracto acotado en custodia: el prompt verbatim con su número de línea, los tres comandos que establecen la simultaneidad sin necesitar fechas, el número descartado por no ser trazable y la advertencia de poblaciones que separa las tres cifras que se mezclaron una vez.

no sabemos qué hacer con los 22

Lo que había que pedir

Antes de decidir qué hacer con ellas: cada una debería declarar en `gate_source` qué la
verificaría. Léelas y dime cuántas afirman una ausencia que ya no es cierta — comprobando el
verbo que nombran contra el dispatcher, no contra tu recuerdo.
MicrotareaVerificable
Leer qué significa gateable = false en el esquema, no en la memoriarg -n 'CONFESSION' .ontoref/adrs/adr-schema.ncl
Extraer el gate_source de cada restricción confesadaontoref adr show <id> --fmt json | jq -r '.. | objects | select(.gateable? == false) | .gate_source'
Clasificar por AFIRMACIÓN de ausencia, nunca por existencia del verbogoverns confessions --fmt json | jq '.detail[] | select(.state=="resolved") | .adr' — no debe contener adr-073, adr-074 ni adr-088
Probar el clasificador contra una configuración de prueba deliberada antes de confiarloinyectar «which does not exist» sobre un verbo existente → aparece state=="resolved"; revertir → desaparece

La puerta antes de delegar: La regla de clasificación —ausencia AFIRMADA, no superficie nombrada— escrita y observada FALLANDO sobre una configuración de prueba antes de barrer el corpus. Sin ella el barrido produce una lista con tres falsos positivos de cada cinco que se lee como hallazgos.

El disparador de ADR: El momento en que esa regla dejó de ser heurística y pasó a decidir qué confesión se toca y cuál no. Es una restricción que otros heredan, y habría disparado adr? ahí — no tres pasos después.

La profilaxis — qué exige hoy la lección

  • Un acto no cierra mientras una confesión quede caducada.ontoref/reflection/modes/ordinary-act.ncl — verify de close-with-destinations
  • La sonda que pregunta si la ausencia sigue ausente.ontoref/reflection/modules/routing.nu — governs confessions
  • El límite declarado: no distingue «construido» de «construido y vacío».ontoref/ontology/core.ncl — nodo constraint-routing

Deuda declarada: La sonda no está en ninguna cadena automática: cero ocurrencias en .pre-commit-config.yaml, y el único modo que la invoca es ordinary-act. Un acto que nunca se abre nunca la corre, así que la lección alcanza justo a quien ya adoptó el modo — la misma forma que este caso denuncia, un piso más arriba. Y 23 de 36 confesiones siguen unnamed: su gate_source no nombra superficie sondeable, así que el mecanismo no puede decir nada sobre ellas, ni que estén vigentes ni que estén caducadas. Y el conjunto CRECE POR CONSTRUCCIÓN: cada ADR nuevo que confiese algo sin nombrar superficie sondeable lo aumenta. Ocurrió el mismo día de este expediente — al aceptarse adr-095, su restricción a-new-refusal-is-conditional-on-the-act entró directa en unnamed y el reparto pasó de 22+13 a 23+13. Sin una puerta que lo cuente, ese crecimiento sólo se ve si alguien corre la sonda a mano, que es esta misma deuda en bucle.

Del vocabulario del proyecto (3)
adr?
Procedimiento de evaluación que se invoca al final de una sesión o feature.
onre
Alias de shell para el CLI `ontoref`.
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 →

¿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.