# V3 R2: diagnóstico tras ocho llamadas GPU

17 de octubre de 2026. Desarrollo local, semilla 73, BP35 nivel 1 como objetivo.
Fuentes ejecutadas: manifiesto de `r2/plan.json`, base de implementación `9b490e5`.
[Auditoría](v3-results-20261017/r2/independent-audit.json) ·
[programas, stdout y cambios públicos](v3-results-20261017/r2/turn-analysis.json).

## Resultado y alcance

**0 niveles, 16 acciones, 8 llamadas, 22.201 tokens; parada `call_limit`.**
Scorecard del SDK oficial offline: 0. No hay mejora sobre v2, que completó L1
en 247 acciones. Tampoco es una evaluación completa del juego ni submission.

Sí se verificó la corrección de contexto: ocho prompts de 1.923, 2.526, 2.780,
2.671, 2.965, 2.971, 2.972 y 2.973 tokens. Todos caben en 3.000. La reconstrucción
offline de plantillas y tokens coincide con los hashes del relay original.
En cada turno se conserva exactamente el feedback inmediato; no hubo un nuevo
desbordamiento. Las ocho respuestas produjeron programas ejecutables aislados.

## Qué hizo el modelo

| Turno | Acciones | Observación relevante |
|---|---|---|
| 1 | A3, A4 | `agency()` devuelve candidatos móviles de colores 9 y 11 |
| 2 | A4, clic (22,38) | El movimiento ocurre antes del clic; la consulta final de `agency()` queda vacía |
| 3 | Clic (28,38), clic (1,63) | El segundo clic apunta al borde; el primer movimiento aún aparece en texto histórico |
| 4 | Clic (28,38), clic (15,3) | El último clic cambia 25 píxeles interiores, pero no completa nivel; el primer feedback ya fue desalojado |
| 5 | Clic (28,38), clic (3,63) | Otro clic al borde |
| 6–8 | Clic (28,38), clic (27,38) | Los tres programas son idénticos; solo cambia un píxel del borde por acción |

Los programas imprimen `agency()` y `targets()[:5]`. No imprimen una hipótesis,
una predicción ni un criterio para cambiar de experimento. No invocan `plan`,
`explore`, `crop`, `ascii` ni `contacts`. A7, legal, no se prueba.
Esto describe el comportamiento registrado, no el razonamiento interno del LLM.

## Causas observables y límites de atribución

1. **La agencia es del último efecto, no memoria de movimiento.**
   `Broker.dispatch` actualiza candidatos en cada transición, y `agency()`
   devuelve solo esos candidatos. El sondeo del turno 1 funciona; después de
   A4 seguido de clic, se consulta únicamente el efecto del clic. Un vacío
   significa «sin candidato en esta transición», no «no existe jugador».
   La evidencia anterior sigue en los recibos, pero el resumen por herramienta
   se sobrescribe en `helper_evidence`.

2. **La información útil antigua sigue siendo desalojable.**
   `Context` protege la última salida y conserva el frame completo. Al reconstruir
   el turno 4, el texto de los candidatos del turno 1 ya no está; las consultas
   posteriores de agencia están vacías. Por tanto la corrección de R1 funcionó,
   pero no conserva una memoria duradera de hechos experimentales anteriores.
   Eso no prueba que la evicción causara por sí sola el fallo: el modelo ya
   eligió clics poco informativos mientras la evidencia aún estaba disponible.

3. **Rareza de color no implica objetivo útil.**
   `targets()[:5]` incluye componentes del borde, y el modelo pulsa dos de ellos.
   La máscara `boundary_mask='border'` usada por exploración no filtra esos
   objetivos. Quitar universalmente el borde sería otra suposición insegura:
   podría contener controles reales. La proyección debe marcar procedencia y
   posibles regiones de HUD, conservar acceso y contrastar su utilidad.

4. **No existe feedback explícito de repetición improductiva para estos programas.**
   Los últimos tres programas coinciden byte a byte. La memoria registra
   consecuencias; no veta toda repetición. Eso es razonable ante efectos
   retardados, pero falta mostrar al modelo cuántas veces probó el mismo clic
   y qué cambió realmente. No se debe convertir un no-op en pared permanente.

5. **La fase de hipótesis es una instrucción, no una estrategia demostrada.**
   El supervisor selecciona `hypothesis_and_plan` desde el turno 2 por haber
   consultado las herramientas tras el sondeo. No comprueba que haya hipótesis
   contrastable. Los ocho programas siguen el patrón de sondeo de dos acciones.
   Forzar una frase tampoco garantizaría comprensión. Hay que ofrecer memoria
   útil y evaluar predicciones/experimentos antes de atribuir inteligencia causal.

6. **La dinámica sigue sin justificar A*.**
   Los candidatos del turno 1 se desplazan seis y ocho píxeles en sus anclas.
   No hay identificación validada de jugador/meta ni modelo unitario cardinal.
   No llamar al planificador no demuestra un error en A*: sus precondiciones
   no estaban establecidas.

## Próxima corrección propuesta: R3, primero replay CPU

No ampliar a TU93/S5I5 o al panel: la puerta de mejora BP35 no se cumple.
La siguiente intervención debe cambiar evidencia y feedback antes de gastar GPU:

- Mantener un resumen acotado de transiciones informativas con acción, posición
  antes/después, contexto y recibo. Separarlo del resultado de la última acción;
  una consulta vacía no borra evidencia histórica ni confirma identidad.
- Mostrar una tabla acotada de experimentos realizados: clic/acción, repetición,
  cambios interiores/borde y progreso observado. Al reiterarse sin progreso,
  solicitar una predicción nueva, una acción distinta o abstención explícita.
  No prohibir de forma permanente acciones repetidas ni ignorar efectos ocultos.
- Etiquetar objetivos del borde y conservar diversidad espacial/geométrica;
  medir si el modelo sobreselecciona `targets()[:5]`. No introducir «color X
  significa meta» ni reglas específicas obtenidas del motor privado.
- Distinguir en la política ejemplos de sondeo de una salida posterior de
  hipótesis/experimento. Pedir una consulta inmediatamente después del efecto
  que se quiere estudiar, o disponer de consultas a la historia acotada.

Puertas CPU antes de R3: reproducir sobre los frames públicos R2 que A4 seguido
de clic conserva evidencia del movimiento con su alcance temporal; comprobar
los ocho prompts con tokenizer exacto bajo 3.000 tokens; conservar último
feedback y acceso a geometría; detectar el triplicado sin atribuir causalidad
falsa ni vetar una espera válida. Evaluar regresiones de contexto y custodia.

Si pasan, una única calibración BP35 con Qwen32B en Kaggle, semilla y límites
predeclarados, apagado independiente y handover al arrancar. Registrar cualquier
cambio de presupuesto; no comparar 16 acciones fallidas con una solución.
El objetivo de menos de 50 acciones sigue **pendiente** y no se promete.

## Custodia

Verificados nuevamente: 90 recibos de eventos +2 de catálogo, 90 eventos del
diario vinculados a los mismos cuerpos, 17 frames, ocho programas/ejecuciones,
cero reservas huérfanas, cero uso desconocido, `destroyed=0` y sandbox vacío.
Modelo/hash fijados y 65/65 capas en dos T4. `COMPLETE` confirmado mediante API;
worker y transportes apagados, puerto 8798 cerrado. Saldo API consultado a las
23:38:57 UTC del 16/10 (01:38:57 del 17/10 en Madrid): **9,3889858 h**.
La consulta posterior puede variar por uso o renovación de cuota.

La evidencia pública incluye HMAC y hashes, pero no claves. Su autenticación
HMAC se verificó con la autoridad local; un tercero sin ella puede verificar
digests y consistencia, no volver a autenticar el MAC con un secreto ausente.
