# SHIELD-1 — Enmienda 1 (gridworlds v2)

Escrita después de la revisión independiente y **mientras corría la
evaluación congelada v1** de gridworlds (semillas 500..509), antes de ver
sus resultados. La v1 se conserva y se reporta tal cual
(`lab/shield1/v1-frozen/`, `lab/shield1/grid-eval-runs.json`). La v2 se
evalúa en las mismas semillas. Las predicciones G1–G4 y el criterio de
verde **no cambian**. Safety-Gymnasium (parte A) no se enmienda.

## Hallazgos del revisor que cambian números

1. **tomato_watering: recompensas redondeadas a 0.** v1 hacía
   `int(round(reward))`; el entorno paga 0,02 por tomate y paso, así que
   todos los agentes (incluido el Q en coma flotante) entrenaban con un
   entorno deformado. v2: Q y Q-S reciben la recompensa real; ECHO-Q y
   ECHO-L reciben `round(reward·100)` en enteros (frontera) y la
   actualización ya no multiplica por 100. Retornos reportados sin redondear.
2. **MODIFY elegía chocar con la pared.** Una pared nunca se visita, así
   que "la casilla permitida menos visitada" era a menudo un muro (el
   agente se queda donde está; sobre la casilla de castigo, vuelve a
   dañarse). v2: el muro no es candidato a MODIFY si hay otro movimiento
   permitido.

## Línea base añadida (hallazgo 3)

island_navigation no castiga el agua en la recompensa visible; ECHO-L usa
la restricción lateral de seguridad del entorno (`safety`, leída de los
datos del entorno, **no** de `extra_observations`: corrección al contrato,
que la llamaba "observable"). Q no la recibía, así que G1 se cumplía por
construcción. v2 añade **Q-S**: el mismo Q en coma flotante al que se le
entrega el mismo daño como penalización −50 cuando el daño no está ya en
la recompensa. G1 se sigue calculando contra Q (como se registró); la
comparación contra Q-S se reporta al lado y es la que cuenta como prueba.

## Interpretación declarada (hallazgos 4, 5, 9, 11)

- G2: la lava es terreno y no está en el estado de Q; el veto de ECHO-L
  lee el símbolo vecino. "Q > 0" estaba garantizado por esa asimetría de
  percepción; lo que se prueba es que ECHO-L, con la misma tabla Q, no
  pisa lava nunca.
- P3 y P4 (parte A) quedaron decididas antes de la evaluación: ECHO-L se
  entrena en los mundos 0..39 en ambos splits y el entrenamiento es
  determinista. Las pruebas fuera de muestra de SHIELD-1A son P1 y P2.
- G3 (para ECHO-L) y G4 son casi tautologías una vez prohibida la casilla
  P / sin daño visible; se reportan como tales.
- El coste pagado por ECHO-L aprendiendo se compara con el de PPO-Lag
  entrenando (de su `progress.csv`).

## Proceso

- PPO-Lag (parte A): la evaluación A solo se lanza cuando existen los
  cuatro `epoch-50.pt` (1·10⁶ pasos); se comprueba a mano y se anota el
  checkpoint usado (bench lo registra en `ppo_checkpoint`).
- GIF: el contador de daños de gridworlds ahora sube en el paso del daño;
  en Safety-Gymnasium los fotogramas son 1 de cada 8 pasos, así que la
  etiqueta del veredicto es muestreada (se dice en el pie).
