Quise comprobar primero algo pequeño: que el modelo pudiera escribir un programa, ejecutarlo y observar sus consecuencias sin tener acceso directo al juego. En esta versión el hijo ejecuta Python y solicita acciones; el padre conserva el entorno, las cuotas y los recibos. No trasladé el LLM al núcleo de NEXUS-0.

## Lo que ya pude ejecutar

Pasaron 62 pruebas seleccionadas: 29 del arnés nuevo, 24 de interacción y 9 del núcleo y la rejilla. Los seis casos sintéticos scriptados se resolvieron. En tres corredores, pasar de una acción por script a un mini-programa redujo los envíos de 17 a 3, manteniendo exactamente 17 movimientos. Eso comprueba el mecanismo; no mide ahorro de tokens ni mejora de inteligencia.

<figure><a href="/assets/figures/echo55/protocol-benchmark.png"><img src="/assets/figures/echo55/protocol-benchmark.png" alt="Benchmark scriptado: 17 envíos frente a 3, con las mismas 17 acciones físicas" width="1800" height="740" loading="lazy"></a><figcaption>Seis casos resueltos, cero llamadas LLM en esta comparación. <a href="/assets/figures/echo55/protocol-benchmark.pdf">Descargar PDF</a> · <a href="/assets/evidence/ECHO-5.5/v1-results-20261016/scripted.json">Datos</a>.</figcaption></figure>

## El modelo real, en CPU

Qwen2.5-Coder-7B-Instruct Q4\_K\_M escribió un bucle que localizaba los colores declarados por el fixture y actuaba hasta alcanzar la meta. La calibración final del corredor de tres pasos necesitó una llamada, 407 tokens de entrada, 185 de salida y tres movimientos; tardó 115,46 segundos. El modelo no utilizó el planificador, así que no atribuyo al helper esa victoria.

Antes hubo dos programas con un atributo inexistente, un timeout y una interrupción. Conservé los errores, aclaré la API y repetí la calibración en una salida nueva. No convierto el único corredor finalmente calibrado en un resultado de tres tareas ni en una victoria ARC.

## Ver las ejecuciones oficiales

Estas repeticiones proceden de los frames públicos guardados en los recibos de dos juegos de desarrollo oficiales, con arc-agi y arcengine 0.9.3. Cada secuencia contiene el inicio y doce acciones. Son un smoke scriptado, sin LLM: **cero niveles y cero victorias**. El ritmo del GIF es de presentación, no el tiempo original de ejecución.

<details><summary>Ver repetición: bp35-0a0ad940 · 12 acciones</summary><figure><a href="/assets/media/echo55/bp35-0a0ad940.gif"><picture><source media="(prefers-reduced-motion: reduce)" srcset="/assets/media/echo55/bp35-0a0ad940.png"><img src="/assets/media/echo55/bp35-0a0ad940.gif" width="512" height="600" alt="Frames reales del smoke oficial bp35-0a0ad940: inicio y doce acciones sin resolver niveles" loading="lazy"></picture></a><figcaption>Frames registrados; sin interpolación. <a href="/assets/media/echo55/bp35-0a0ad940.gif">Abrir o descargar GIF</a> · <a href="/assets/media/echo55/bp35-0a0ad940.png">Captura estática</a> · <a href="/assets/evidence/ECHO-5.5/replays/bp35-0a0ad940.json">Secuencia de datos</a>.</figcaption></figure></details>

<details><summary>Ver repetición: s5i5-18d95033 · 12 acciones</summary><figure><a href="/assets/media/echo55/s5i5-18d95033.gif"><picture><source media="(prefers-reduced-motion: reduce)" srcset="/assets/media/echo55/s5i5-18d95033.png"><img src="/assets/media/echo55/s5i5-18d95033.gif" width="512" height="600" alt="Frames reales del smoke oficial s5i5-18d95033: inicio y doce acciones sin resolver niveles" loading="lazy"></picture></a><figcaption>Frames registrados; sin interpolación. <a href="/assets/media/echo55/s5i5-18d95033.gif">Abrir o descargar GIF</a> · <a href="/assets/media/echo55/s5i5-18d95033.png">Captura estática</a> · <a href="/assets/evidence/ECHO-5.5/replays/s5i5-18d95033.json">Secuencia de datos</a>.</figcaption></figure></details>

## Qué significa el verde de v1

Los tres runs finales conservaron sus fuentes sin cambios, sus 180 recibos pasaron la verificación con custodia HMAC local y los trabajos del sandbox terminaron vacíos, con destroyed igual a cero. No se gastó GPU; el servidor CPU se apagó. Las firmas acreditan integridad, no la verdad de una interpretación.

El ejecutor limita recursos y conserva los efectos ya realizados si un programa falla: no existe rollback del mundo. Usa el runtime de lectura del host, no un rootfs hermético. El motor del juego sigue siendo código confiable síncrono en el padre.

## Lo que falta demostrar

El planificador existente solo admite mapas de 2 a 16 celdas por eje. Antes de aprovecharlo sobre frames ARC de 64×64 necesito una abstracción válida y aprender los efectos contextuales de los botones. Agencia y contacto siguen siendo hipótesis; un no-op no se transforma en pared permanente.

El siguiente contraste requiere episodios oficiales con modelo y ablaciones pareadas de planificación y memoria. Esta versión demuestra que el circuito funciona en el alcance descrito. Todavía no demuestra una ventaja frente a The Duck ni mayor resolución en ARC.
