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.
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
Expediente 0/318: el validador que nunca se ejecutó
Lo que había que pedirCompleta 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.
| Microtarea | Verificable |
| Ejecutar el validador completo antes de leer o escribir prosa | ontoref 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 usarlo | nickel export rechaza un gateable = false sin gate_source — visto rechazar, no supuesto |
| Marcar las 22 infalsables por script, nunca a mano | los 72 ADRs satisfacen el contrato y just test-adr-contract pasa |
| Dejar el caso negativo de cada defecto desenterrado | 14 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 →Expediente 2/16: el arreglo que no arregló nada
Lo que había que pedirCorrecciones 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.
| Microtarea | Verificable |
| Localizar TODAS las derivaciones del hecho antes de arreglar ninguna | rg de la clave del título por el workspace: dos derivaciones, dos crates — la lista pegada |
| Dejar UNA derivación, la que se lee | una sola queda y server/build.rs la llama — la otra ya no compila |
| Afirmar «arreglado» sólo con la página delante | el 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á escrito | el 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 →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.
| Microtarea | Verificable |
| Consultar la vía declarada antes del primer comando libre | onre 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 memoria | cada 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áculo | el curl de la ruta, el grep del href y el recuento del json — pegados, no narrados |
| Toda intervención humana queda testificada | las 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 →Expediente 8/0: la cura que no volvió a casa
Lo que había que pedirAntes 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.
| Microtarea | Verificable |
| Declarar el alcance de la búsqueda ANTES de concluir desde ella | los árboles consultados, enumerados en la respuesta — «el árbol entero» no vale cuando son tres |
| Consultar la vía declarada antes de tocar el código | ontoref 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 nada | 9 hits contra el árbol de hoy, must_be_empty = true — pegado |
| Testigo de no-regresión sobre el sitio instanciado, no sobre otra plantilla | curl 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úmero | 11 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 →Caso 0/2: el mapa leído como territorio
Lo que había que pedirqué 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.
| Microtarea | Verificable |
| Consultar el sustrato antes de reportar su estado | git log y ls /Volumes/Devel pegados en el turno — cero afirmaciones de estado sin su salida |
| Etiquetar cada afirmación por su fuente | toda 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. |