# F2 · E1 (libro de efectos) · resultado: **no pasa** (negativo)

- Corrida: kernel v4, 18/10 20:58 → 19/10 01:04 UTC, 25 juegos × 2 pasadas = 50 partidas (38 `gave_up`, 12 `won`), 0 `Traceback` del harness. Salida en `ECHO-5.5/artifacts/campaign/f2-e1-v4/` (fuera de git).
- Única diferencia con la base v3: la función `effects()` en el sandbox y su descripción (una línea) en el prompt del sistema. Mismo modelo, misma configuración, mismo presupuesto, `n_passes=2`.
- Comparación generada con `tools/compare.py f1-base-v3 f2-e1-v4 --arm E1`.

## Comparación pareada · E1 frente a la base

### cap = 1

- Total base 47.91 (pasadas 45.75, 50.07); total E1 36.85 (pasadas 36.57, 37.12).
- Diferencia -11.06 frente a banda de ruido 4.31.
- Juegos: 9 mejor, 16 peor, 0 igual; prueba de signos p = 0.230.
- Niveles por pasada: base [104, 108], E1 [91, 96]. Acciones por nivel completado: base 37.5, E1 40.1.
- Tokens generados por pasada: base [4389080, 4307134], E1 [4332277, 4580146].
- Veredicto (DESIGN §4): no pasa.

### cap = 1.15

- Total base 49.66 (pasadas 47.45, 51.88); total E1 39.06 (pasadas 38.48, 39.64).
- Diferencia -10.60 frente a banda de ruido 4.42.
- Juegos: 8 mejor, 16 peor, 1 igual; prueba de signos p = 0.152.
- Niveles por pasada: base [104, 108], E1 [91, 96]. Acciones por nivel completado: base 37.5, E1 40.1.
- Tokens generados por pasada: base [4389080, 4307134], E1 [4332277, 4580146].
- Veredicto (DESIGN §4): no pasa.

### Por juego (media de pasadas, cap = 1)

| Juego | base | E1 | Δ |
|---|---|---|---|
| ar25-0c556536 | 100.00 | 88.89 | -11.11 |
| bp35-0a0ad940 | 1.11 | 2.22 | +1.12 |
| cd82-fb555c5d | 94.83 | 86.81 | -8.02 |
| cn04-2fe56bfb | 71.43 | 26.19 | -45.24 |
| dc22-fdcac232 | 23.40 | 12.69 | -10.72 |
| ft09-0d8bbf25 | 47.62 | 29.42 | -18.20 |
| g50t-5849a774 | 0.00 | 5.36 | +5.36 |
| ka59-38d34dbb | 44.10 | 35.20 | -8.90 |
| lf52-271a04aa | 3.64 | 5.25 | +1.61 |
| lp85-305b61c3 | 100.00 | 98.09 | -1.91 |
| ls20-9607627b | 23.25 | 24.10 | +0.85 |
| m0r0-492f87ba | 45.60 | 6.73 | -38.87 |
| r11l-495a7899 | 100.00 | 72.36 | -27.64 |
| re86-8af5384d | 49.26 | 66.90 | +17.64 |
| s5i5-18d95033 | 9.30 | 8.33 | -0.96 |
| sb26-7fbdac44 | 89.50 | 89.77 | +0.26 |
| sc25-635fd71a | 57.21 | 60.04 | +2.82 |
| sk48-d8078629 | 1.26 | 0.00 | -1.26 |
| sp80-589a99af | 26.19 | 4.76 | -21.43 |
| su15-1944f8ab | 28.66 | 11.85 | -16.81 |
| tn36-ef4dde99 | 1.58 | 0.73 | -0.85 |
| tr87-cd924810 | 90.28 | 91.78 | +1.51 |
| tu93-0768757b | 85.28 | 60.82 | -24.46 |
| vc33-5430563c | 96.89 | 25.11 | -71.78 |
| wa30-ee6fef47 | 7.33 | 7.78 | +0.45 |

## Uso de la pieza (`tools/piece_usage.py`)

- 16 llamadas a `effects()` en 15 de 3.108 pasos, 0 errores. En 16 de los 25 juegos no se llamó nunca, por ejemplo en vc33 (−71,8) y m0r0 (−38,9).
- En el pensamiento del modelo, «effects(» aparece en 41 de 4.605 bloques y «ledger» en 91: menos del 1 %.

## Diagnóstico (19/10, sin GPU)

1. **El gancho está limpio.**
   - El prompt del sistema real de la primera petición de vc33 (`*_requests.jsonl`) difiere de la base en exactamente una línea, la declarada.
   - El código pegado en el sandbox no tapa ningún nombre del harness: solo define `transition_effects`, `effect_ledger`, `REGISTER` y `PROMPT_ADDENDUM`, más `import collections`.
   - Errores de Python del propio modelo: 397 `Traceback` en E1 frente a 380 en la base; `NameError` 90 frente a 85.
2. **El cómputo fue el mismo.**
   - Acciones: 10.039 en E1, 10.186 en la base.
   - Tokens generados: 8,91 M en E1, 8,70 M en la base (888 frente a 854 por acción).
   - Duración: 4 h 06 min las dos.
   - Pasos de análisis: 3.108 en E1, 3.221 en la base.
3. **Dónde se pierde.**
   - En E1, 28 partidas terminan con `stop_requested`, frente a 24 en la base.
   - Ejemplo, vc33 p0: 155 mil tokens en 98 acciones, frente a 157 mil en 234 en la base. El planificador la paró mientras el modelo seguía razonando sobre el nivel 4.
   - Otras ganan, pero gastando el doble de acciones: r11l, con 215 y 233 frente a 113 y 108; cd82 p0, con 288 frente a 144.
4. **El planificador de M2 acopla las pasadas** (`priority_scheduler.py`).
   - Reparte un único presupuesto de tokens entre las 50 partidas de la corrida, por prioridad, y para las rezagadas.
   - Si unas partidas se encarecen, les quitan tiempo a las demás de las dos pasadas. Las dos pasadas de una corrida no son independientes.
   - **Consecuencia: la banda de ruido medida dentro de una corrida (|pasada 0 − pasada 1| = 4,42) subestima el ruido entre corridas.** Franzen lo advierte sin dar cifras: «individual runs varied considerably» (WRITEUP §6).
5. **Prueba de permutación por juego.**
   - Supone que las 4 pasadas de cada juego son intercambiables, es decir, sin efecto de corrida.
   - p = 0,002 para una diferencia de −10,6; la desviación de la diferencia bajo esa hipótesis es 3,58.
   - Como el punto 4 rompe esa hipótesis, este p no basta para culpar a la pieza.

## Lectura

- E1 no pasa y se registra como negativo.
- Lo que sabemos: con una pieza que el modelo casi no usa, una línea más en el prompt basta para que la corrida entera sea otra muestra. Esa muestra salió 10,6 puntos por debajo.
- Lo que no sabemos: si esa línea perjudica de verdad o si es ruido entre corridas.
- Lo distingue una corrida A/A: la base sin cambios, otra vez. Sin ella, ningún brazo de 2 pasadas se puede juzgar con la banda de 4,42.

## Qué cambia

- E2 (planificador condicionado) sigue: ya estaba declarado y lanzado (kernel v5) y su resultado se lee igual.
- **Siguiente corrida RTX propuesta: A/A de la base** (notebook v3 sin cambios) para medir el ruido entre corridas. Coste ~4,3 h. Con ella, la base tendrá 4 pasadas en 2 corridas y el criterio usará la diferencia entre corridas.
- Versión siguiente de E1 (post-rojo, solo si el A/A deja margen): que el harness añada el resumen del libro a cada resultado de acción, en vez de esperar a que el modelo lo pida. Es un hecho calculado por el harness, no una nota escrita por el modelo, así que no repite lo que Franzen midió sin mejora.

## Relectura con la base agrupada (19/10, tras el A/A)

La base agrupada son las corridas v3 y v6, con 4 pasadas: total 48,00 con cap 1,15 y banda 10,03. Detalle en `F1-AA.md`. El veredicto no cambia: **no pasa**.

E1 queda en 39,06 frente a 48,00 (−8,94); 9 juegos mejor, 15 peor y 1 igual. Sus dos pasadas son las más bajas de los 8 totales tipo base (p ≈ 0,04 por rangos): probablemente perjudicó.
