Una regla sin disparador es un cartel

Ocho afirmaciones falsas en cuatro horas. Cuatro mecanismos que ya las prohibían por escrito. Ninguna alarma.

Jesús Pérez
No faltaban reglas. Había cuatro, escritas, canónicas y consultables — y ninguna se ejecutó. La distancia entre una regla escrita y una regla que se aplica tiene nombre, y es lo único que separa la disciplina de la documentación.
Una regla sin disparador es un cartel

Una sesión de agente de cuatro horas y siete minutos dijo ocho cosas falsas con total aplomo. Ninguna llegó a disco. Todas murieron en la conversación, y siete de ellas las tuvo que matar el humano señalándolas con el dedo.

Lo interesante no es que las dijera. Es que había cuatro mecanismos escritos que las prohibían, los cuatro anteriores a la primera frase, los cuatro correctos, los cuatro consultables en un segundo. Ninguno disparó.

Este es el caso, y por qué la lección no es «hay que tener más cuidado».

El arma: la afirmación negativa

Las ocho frases, literales y con hora, sacadas del log de la sesión:

14:06  «las glosas inglesas no están escritas»      → había 20; se leyó un comentario del generador
14:06  «el esquema no tiene dónde colgar una glosa» → term.ncl: definition | i18n_str, bilingüe
14:16  «no hay tal comando, y no lo hubo»           → describe term existía; el grep miró solo crates/*.rs
14:39  un servidor arrancado a mano, sin verificar  → 3 diagnósticos falsos encadenados
14:52  «el conmutador de idioma manda a 404»        → traducía bien; la URL estaba inventada
15:23  «las 26 del léxico se quedan sin superficie» → gen-nota-lenguaje.nu → /sobre-el-idioma
15:32  «el tooltip está bloqueado por contrato»     → reason_type traía 'SourceLanguage para eso
17:25  «Es esta sesión»                             → el id estaba en la ruta del scratchpad

El arma no es ninguna de las ocho frases: es la forma gramatical que comparten. Siete son negativas — «no está escrito», «no hay tal comando», «se quedan sin superficie» — y una afirmación negativa dicha con seguridad es la mentira perfecta, porque quien la dice solo sabe que él no lo ha encontrado, y suena exactamente igual que quien sí buscó.

La octava es el mismo error con el signo cambiado: «Es esta sesión», dicho porque la fecha cuadraba, con el identificador verdadero escrito en la ruta del scratchpad desde el primer mensaje. Se dijo dentro del paso que existe para impedirlo.

Ninguna de las ocho produjo jamás un mensaje de error. El canal donde se dijeron no tiene puertas.

Los cuatro que no dispararon

ondaod                    en el CLAUDE.md, con procedimiento consultable
afirmación ⇒ testigo      ADR-072, aceptado, con el anti-patrón nombrado
qa:expediente-howto       267 líneas; advertía las trampas exactas de esta sesión
mode:generate-expediente  11 pasos con actor; se imprime con --dry-run

Aquí es donde el caso deja de ser una anécdota sobre un agente descuidado. Las tres explicaciones que cualquiera daría tienen coartada, y las tres están verificadas contra el log:

«No conocía las reglas.» Falso: las conocía todas. El hook de arranque enumeró los 29 modos —generate-expediente entre ellos— y las tensiones con nombre; el CLAUDE.md del proyecto trae el protocolo de entrada con describe capabilities como paso 1. Todo eso estaba en contexto a las 13:19:10, antes de la primera herramienta. La primera invocación del CLI llegó a las 14:14:48 — cincuenta y cinco minutos después, y porque el humano preguntó. No fue ignorancia: saber no dispara nada.

«Los mecanismos no existían todavía.» Los cuatro son anteriores a la primera afirmación. Existían, eran correctos, eran consultables. Y esta coartada es precisamente lo que convierte un descuido en un caso.

«Las reglas estaban mal escritas.» Cuando por fin se leyeron, funcionaron a la primera. El howto advertía las trampas exactas en las que la sesión cayó: cuenta la tarjeta y no la cadena, verifica la página y nunca el fichero, arranca por la vía declarada o toda medición es falsa. No hizo falta interpretarlas ni corregirlas. Hizo falta leerlas.

Queda la cuarta, y no es el despiste de nadie: «una regla escrita se aplica sola». Es la creencia por defecto de cualquiera que haya redactado una regla y la haya visto quedar bien escrita. Se publica, y se archiva la sensación de que ya está resuelto.

El modo pasó por la pantalla como nombre de fichero en un ls a las 14:28. Nadie lo abrió hasta las 17:16 — tres horas y cincuenta y siete minutos dentro, señalado por el humano.

Un mecanismo así no es una puerta. Es un cartel junto a la carretera, y los carteles no frenan a nadie.

Esto ya tenía nombre, y tenía cifra

La tensión enforcement-vs-emergence de la ontología de ontoref lo dice sin anestesia, y lo dice del propio proyecto (traduzco del nodo, que está en inglés):

Una restricción declarada y no exigida no es un suelo: es la descripción de un suelo. […] Una exigencia de la que no cabe fiarse de que falle es indistinguible de no exigir nada, y es más peligrosa, porque se la cree.

Y trae el número: de 212 restricciones Hard declaradas en el conjunto de ADRs, 95 constan como violadas y nada bloquea por ellas. adr validate se ejecuta, se lee, y se ignora.

El caso de las cuatro horas es la anécdota de ese número. No es un fallo del agente: es la forma que toma un suelo que solo está descrito.

El arreglo no fue una regla nueva

Ninguna de las cuatro reglas cambió. Lo que se les puso fue disparador, y cada una necesitó uno distinto:

# 1. Un hook — la regla viaja hacia el agente, no al revés.
#    En cada prompt, si la tarea ya está gobernada, el QA que la gobierna se sirve entero.
"UserPromptSubmit": nu ~/.claude/hooks/onre-prompt-orient.nu

# 2. Una puerta — el servidor degradado muere en un segundo, no en tres diagnósticos.
just server-check

# 3. Un contrato — un id de modo resuelve a UN solo DAG (había dos contestando por uno).
#    shared.nu#all-mode-files — dedupe por id: 29 ids → 29 DAGs

# 4. Un esquema — un caso que calla su lección no exporta.
#    LessonAccounted: punteros verificados a lo que ejecuta la lección, o la deuda nombrada.

Un hook, una puerta, un contrato, un esquema. Ninguno pide que nadie se acuerde de nada — que es el único requisito que importa, porque acordarse es exactamente lo que falló ocho veces.

El primero ya disparó en producción: la sesión que escribió el expediente de este caso recibió el howto que gobernaba su tarea en su primer prompt, en vez de descubrirlo cuatro horas después.

Lo que esto no arregla

--artifacts sigue inalcanzable desde el envoltorio del CLI, y los runs históricos llevan esa columna vacía por eso. verify existe en cero de los once pasos del modo: sin oráculo por paso, el estado de un paso es lo que el agente diga. La lista de pasos del howto no se coteja contra el DAG, y ya mintió una vez.

Y la de fondo, la que no tiene puerta posible: una frase no es un artefacto. Los ficheros de este proyecto tienen oráculos de sobra — contratos que rechazan, puertas que fallan, esquemas que no exportan. La conversación no tiene ninguno. Por eso en cuatro horas no llegó ni una mentira a disco y se dijeron ocho: lo que se escribe pasa por puertas, lo que se dice no pasa por ninguna.

El único oráculo del canal humano↔agente es el humano. Eso no es una excusa. Es la tesis.

La pregunta

La respuesta honesta a «¿con ontoref no habría pasado?» es incómoda, y es la única que se sostiene: ontoref, declarado, ya estaba — y no bastó. Estaba cuatro veces. Hasta que cada regla consiguió su disparador.

Ninguna de las dos posturas cómodas es cierta. La fricción no es el producto: vender «esto te obliga a cumplir» es confundir el andamio con el edificio, y la fricción es real pero transitoria. Y la contraria tampoco: la coherencia no se vuelve gravedad sola. Sin suelo debajo, la emergencia no es wu wei — es deriva. Las dos cosas a la vez, o ninguna es honesta.

Así que la pregunta que deja el caso no es «¿está escrito?». Eso se contestaba cuatro veces que sí.

Es «¿qué lo dispara?».

Si la respuesta es «alguien se acordará», ya sabes lo que tienes. Y el día que haga falta, lo señalará un humano con la paciencia justa.

En este caso, ocho veces.


Este artículo se proyecta del expediente 8/4, «la disciplina sin disparador» — un caso tipado cuyas cifras salen todas de comandos ejecutados contra el log de la sesión, nunca de la memoria de nadie. El expediente entero, con la rueda de reconocimiento y las coartadas, está en la serie de expedientes.

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