Protocolo de sesión · Serie Expedientes

El protocolo de sesión

Este protocolo no se redactó: se proyecta de los replays de los expedientes — la sesión repetida con protocolo que cada caso deja escrita y tipada. Cambia un caso y esta página cambia con él. Editarla a mano es imposible por construcción, porque una checklist mantenida a mano es la siguiente deriva.

Replays 5Casos 14
Las cuatro caras de una sola regla: el agente nunca es su propio oráculo

Microtarea ⇒ oráculo

cada microtarea nombra ANTES el comando que la falsa — nunca «revisar que…»

Puerta antes de delegar

el contrato y su test existen y corren ANTES de soltar al agente

Afirmación ⇒ testigo

ninguna afirmación de estado sin su testigo pegado — la página servida, no el compilador

adr? al cierre

la sesión evalúa qué decisión merece persistir — y su lección nombra qué la exige, o declara la deuda

Los replays — caso a caso
0/318

Expediente 0/318: el validador que nunca se ejecutó

Lo que había que pedir
Completa el ADR-072 que quedó pendiente al final de .coder/2026-07_12_spanish_terms_done.md.

Antes de tocar la prosa:
1. Ejecuta `ontoref adr validate` sobre el corpus ENTERO y pega el resultado —
   la ejecución completa o el error exacto con que muere. Un ADR sobre cobertura
   no se completa encima de un validador que no corre.
2. Cada afirmación que añadas nombra su verificable: el comando que hoy la falsa,
   o gateable = false + gate_source con la dirección de quien la saldará.
3. Si una microtarea descubre un contrato sin decidir —un campo que un ADR promete
   y no existe—, PARA y repórtalo. No lo cites como precedente.

Al cierre: adr? — evalúa si la sesión deja decisiones con peso arquitectónico.
MicrotareaVerificable
Ejecutar el validador completo antes de leer o escribir prosaontoref adr validate termina — el contador de ejecuciones completas deja de ser 0
Desmenuzar cada fallo: ¿viola el código, o la restricción es infalsable?cada uno de los 93 clasificado —violación real, check inservible o promesa sin oráculo— con su cuenta
Construir el primitivo que falta ANTES de usarlonickel export rechaza un gateable = false sin gate_source — visto rechazar, no supuesto
Marcar las 22 infalsables por script, nunca a manolos 72 ADRs satisfacen el contrato y just test-adr-contract pasa
Dejar el caso negativo de cada defecto desenterrado14 aserciones en just ci-adrs, una por defecto — una falsificación a mano se evapora

La puerta antes de delegar: El contrato y su test existen ANTES de soltar al agente sobre los 72 ADRs: adr-constraints.ncl exporta y just test-adr-contract corre. Sin la puerta cerrada, el agente improvisa el contrato que le falta — y lo cita como jurisprudencia. Pasó: ADR-072 citó como precedente un mecanismo de ADR-071 que nunca se construyó.

El disparador de ADR: La tercera palabra —vincula, y nada lo verifica— cambia el vocabulario del protocolo y revertirla tocaría los 72 ADRs: adr? da fuerte en los cinco criterios. Quedó en ADR-071/072.

abrir el expediente completo →
2/16

Expediente 2/16: el arreglo que no arregló nada

Lo que había que pedir
Correcciones del sitio para 0.1.8 — un frente por microtarea, y ninguna se
cierra con el compilador:

1. Cada «arreglado» lleva su testigo pegado: el curl o el grep de LA PÁGINA
   servida, nunca el exit 0 del build. Si el hecho vive en dos sitios
   (registro y binario), el testigo mira los dos.
2. Antes de tocar una derivación duplicada, busca sus copias: `rg` de la clave
   por todos los crates — y si hay dos, la microtarea es UNIFICAR, no parchear
   la primera que aparezca.
3. Si un documento manda ejecutar un verificador, ejecútalo tal cual está
   escrito ANTES de confiar en él; si no existe o es un alias, es un hallazgo
   que se reporta, no se rodea.
MicrotareaVerificable
Localizar TODAS las derivaciones del hecho antes de arreglar ningunarg de la clave del título por el workspace: dos derivaciones, dos crates — la lista pegada
Dejar UNA derivación, la que se leeuna sola queda y server/build.rs la llama — la otra ya no compila
Afirmar «arreglado» sólo con la página delanteel curl de la página servida muestra los 16 títulos correctos — el build en verde no es testigo de nada
Ejecutar el verificador que mandan los documentos, tal cual está escritoel comando existe como binario —no como alias— y su salida va pegada; si no existe, hallazgo

La puerta antes de delegar: La definición de «hecho» se cierra antes de delegar: qué comando prueba cada afirmación de la lista. Un encargo multi-frente sin oráculo por frente invita a cerrar frentes con el compilador — y así se firmó «lo he arreglado» sobre dieciséis títulos rotos.

El disparador de ADR: El caso no dejó ADR propio: empuja la regla que ADR-072 ya recoge —la página es la publicación— y su pauta quedó exigida en governed-delivery, al derivar los contratos.

abrir el expediente completo →
11/530

Expediente 11/530: el criterio que se acreditó a sí mismo

Lo que había que pedir
¿No habíamos creado una página de conceptos tirando del glosario? Antes de tocar nada:

1. Consulta la vía declarada, no tu memoria: `onre describe capabilities` y el
   qa que gobierna esta superficie — y pega QUÉ dice el registro de esa página
   (ruta, generador, gates) antes de ningún comando libre.
2. Trabaja por microtareas: cada una nombra ANTES su verificable (el comando
   que la falsa), y ninguna afirmación de estado sin su testigo pegado.
3. Los límites del encargo no se reinventan: si un límite no está declarado,
   PARA y pregunta — no lo deduzcas de lo que ya hiciste.
MicrotareaVerificable
Consultar la vía declarada antes del primer comando libreonre describe capabilities ejecutado y pegado — la primera consulta declarada deja de llegar en el minuto 41
Enunciar los límites del encargo desde el registro, no desde la memoriacada límite citado con su fuente (modo, qa, routes.ncl) — cero límites reinventados
Una microtarea por superficie —ruta, menú, datos EN—, cada una con su oráculoel curl de la ruta, el grep del href y el recuento del json — pegados, no narrados
Toda intervención humana queda testificadalas tres intervenciones aparecen en el log con su efecto — de la sesión original no queda ni una

La puerta antes de delegar: El encargo no se suelta sin nombrar su vía declarada: el modo o el qa que lo gobierna, consultado y pegado. Sin esa consulta el agente opera sobre su propia reconstrucción — 530 comandos, 11 por la vía declarada, y la primera consulta al minuto 41, disparada por una persona.

El disparador de ADR: Ninguno — la renuncia a interceptar el bucle libre es deliberada (protocol-not-runtime) y ya está decidida. Lo que quedó fue pauta, no arquitectura: montarla es de substrate-session, y servirla al operador, de esta misma página.

abrir el expediente completo →
8/0

Expediente 8/0: la cura que no volvió a casa

Lo que había que pedir
Antes de afirmar que algo no existe, DECLARA EL ALCANCE de tu búsqueda y compruébalo
contra todos los árboles de la constelación, no sólo el repo desde el que corres. Si la
evidencia del encargo no aparece, la hipótesis por defecto es que estás mirando el árbol
equivocado — no que el encargo se equivoca.

Y antes de proponer borrar nada: consulta la vía declarada (`ontoref qa show`), no el
código. La respuesta a si ese match es redundante YA ESTÁ ESCRITA, y no es la que se
deduce leyendo el fichero.
MicrotareaVerificable
Declarar el alcance de la búsqueda ANTES de concluir desde ellalos árboles consultados, enumerados en la respuesta — «el árbol entero» no vale cuando son tres
Consultar la vía declarada antes de tocar el códigoontoref qa show rustelo-static-page-howto ejecutado y pegado — dice que los match arms son optimización, no fuente de verdad
La restricción nueva, vista FALLAR antes de arreglar nada9 hits contra el árbol de hoy, must_be_empty = true — pegado
Testigo de no-regresión sobre el sitio instanciado, no sobre otra plantillacurl a 8 rutas × 2 idiomas, antes y después: diff before backport idéntico — cazó que borrar rompía 6 de 8 a 200
Desmenuzar los 69 hits en vez de reportar el número11 reales · 15 fixtures · 38 en cfg(test) · 4 comentarios · 1 sin clasificar

La puerta antes de delegar: El testigo se define ANTES, y se define sobre la superficie real: «curl a estas ocho rutas, en los dos idiomas, antes y después, pegado». Esa frase —y sólo esa— es lo que impidió el desastre: el arquitecto había recomendado borrar el atajo con una «prueba empírica» construida sobre dos árboles distintos, y el testigo la desmintió antes de que costara nada. La puerta cazó al arquitecto.

El disparador de ADR: La enmienda a ADR-002 basta y ya está: la decisión registry-vs-lista se tomó y se desplegó en la instancia; aquí sólo se backporteó, así que falla el criterio 1. El que SÍ pide ADR es otro y está sin decidir: si templates/ es producto que se versiona o scaffolding generado. Propuesto, no creado.

abrir el expediente completo →
0/2

Caso 0/2: el mapa leído como territorio

Lo que había que pedir
qué más queda ?  Antes de responder con un estado:

1. Consulta el sustrato, no tu memoria: `git status` / `git log` para los commits,
   `ls`/`path exists` para los ficheros, la salida del propio comando para su resultado.
   Pega la evidencia en el turno. Cero afirmaciones de estado sin su consulta.
2. Separa observación de inferencia: toda causa lleva su fuente — `[obs: comando]` si la
   ejecutaste, `[inferencia]` si la dedujiste. Una inferencia jamás vestida de hecho.
3. No arrastres estado entre turnos como verdad presente: el operador pudo actuar en
   paralelo. "sin un solo commit" se cae con un `git log`; re-consulta, no recuerdes.
MicrotareaVerificable
Consultar el sustrato antes de reportar su estadogit log y ls /Volumes/Devel pegados en el turno — cero afirmaciones de estado sin su salida
Etiquetar cada afirmación por su fuentetoda causa lleva [obs:cmd] o [inferencia] — cero inferencias presentadas como observación
Re-consultar el estado, no arrastrar el modelo'sin un solo commit' contrastado contra git log en el mismo turno — el modelo de hace 20 pasos no se da por presente

La puerta antes de delegar: Una afirmación de estado no se emite sin su consulta al sustrato pegada. Sin ella el agente reporta su reconstrucción, no el repositorio — dos afirmaciones categóricas, cero comandos, ambas a una consulta de la verdad.

El disparador de ADR: Ninguno — el lazo libre es ingobernado por diseño (protocol-not-runtime, renuncia deliberada). No es arquitectura nueva sino régimen; y el hueco — un testigo para el estado narrado sin consulta — está sin declarar (ver lesson_debt).

abrir el expediente completo →

La deuda viva de la serie — lo que aún no exige nada

Cada ⊘ es una lección que hoy nada exige, con la dirección de quien la saldaría — declarada en el dato del caso, nunca en una intención. Cuando una se salda, desaparece de aquí sola.

404-PAP⊘ Queda una cosa, y es la que hace que las de arriba muerdan o no: nada ejecuta la restricción. El justfile de rustelo no llama a ningún validador de ADRs — 23 restricciones en 8 ADRs, cero ejecutadas por receta o CI — así que la regla que ahora prohíbe este defecto está tan escrita, y tan callada, como lo estaba ADR-002 durante meses. La saldaría una receta just en la cadena de rustelo que las corra y reporte por restricción. Y con ella se arrastran dos que tampoco tienen dueño: la cura de la instancia sigue sin commitear (git status M), y templates/ no está versionado — un git clean se lleva el backport y nadie se entera. El expediente 8/0 cuenta esto entero.
404-PAP-bis⊘ La recaída tenía causa, y no era la memoria: el primer arreglo nunca había vuelto a la plantilla, así que no era recaída sino reinfección desde la fuente. Ya volvió — el backport está en las dos plantillas y la lista a mano está prohibida por una restricción tipada. Lo que queda es lo de siempre: nada la ejecuta. El justfile de rustelo no llama a ningún validador, así que la puerta que impediría la próxima reinfección existe y está callada. La saldaría una receta just en su cadena. El expediente 8/0 cuenta por qué el arreglo tardó meses en volver a casa.
1/1852⊘ La frontera sigue abierta donde el dato se vuelve texto: lo que se escribe tras ella se publica bajo palabra. Lo saldaría un contrato sobre el artefacto EMITIDO —un esquema del recurso generado—, no sólo sobre su fuente.
8/0⊘ Nada ejecuta la restricción nueva: la receta que corra las 23 y reporte por restricción está sin escribir — y sin ella, esto se vuelve a pudrir exactamente igual. La saldaría una receta just en la cadena de rustelo, fuera de check-strict hasta que los 11 hits reales estén triados. Y quedan cuatro sin dueño: la tercera lista de htmx_pages.rs (3 hits), los 11 hits reales de no-hardcoded-route-paths, templates/ sin versionar —la más grave, y ningún ADR dice si es política o descuido—, y un drift-check instancia ↔ plantillas, que no tiene ni mecanismo ni dueño.
8/4⊘ «--artifacts» declarado list<string> e inalcanzable desde el envoltorio del CLI — los cinco runs históricos llevan la columna vacía por eso; lo salda aceptar cadena separada por comas o una opción repetible. «verify» en cero de los once pasos del modo; aprobado añadirlo a los tres con oráculo (assemble_case: el .ncl exporta; render: el .md reproduce; publish: expedientes-check). La lista de pasos del howto no se coteja contra el DAG; lo salda una puerta que compare sus ids contra mode show --fmt json. Y la de fondo, sin puerta posible: una frase no es un artefacto — el único oráculo del canal humano↔agente es el humano.
0/2⊘ Falta un testigo declarable para «afirmación de estado emitida en el lazo libre sin una consulta al sustrato en el mismo turno». No existe porque el lazo libre es ingobernado por diseño (protocol-not-runtime). Lo que lo saldaría: un disparador que, ante una afirmación de estado — qué existe, qué pasó, cuál es la causa — exija su consulta pegada o su etiqueta [inferencia]/[sin verificar]; dosis por decisión, no por comando (como el caso 11/530), medible sin construir protocolo nuevo. Nombrado, no encogido de hombros — y NO sustituido por una promesa de disciplina, que es exactamente lo que el operador rechazó.
63/0⊘ Ninguna restricción tipada ata extract.rs al contrato que ADR-041 declara. La puerta nueva comprueba FRESCURA —¿se reconcilió?— y no CONFORMIDAD BITEMPORAL —¿se reconcilió emitiendo Retract y conservando lo superseded?—. Un extractor reescrito mañana en monotemporal pasaría check-substrate en verde, que es la forma exacta de este caso repetida sobre su propia cura. Lo saldaría una restricción en ADR-041 cuyo oráculo fuese el corpus de pruebas que esta sesión dejó, y la decisión de identidad de entidad (edge:{from}:{to}) que quedó sin tomar. Y hay una segunda deuda, mayor y más incómoda: la historia bitemporal existe en disco y ningún binario ni endpoint expone as_of. Nadie puede mirarla. Queda a la espera de decidir si una superficie puede responder por encima de su tier.