# Resultado

## Causa

La fachada resolvía todos los targets y líneas en `resolveAndValidate()` antes de ejecutar el plan. Por eso `tableSetColumnWidth` consultaba la tabla original después de `tableInsertColumn`, y `tableSetLineBackground` consultaba la tabla original después de `tableInsertLine`.

## Solución

`execute()` valida y resuelve cada command inmediatamente antes de ejecutarlo, sobre el estado actual del diseñador. El snapshot inicial continúa proporcionando atomicidad; ante cualquier fallo se restaura documento, selección e historial pendiente.

## Resultados

- insertColumn → width: PASS.
- insertColumn → move: PASS.
- insertLine → insertColumn: PASS.
- insertLine → background: PASS.
- insertLine → height: PASS.
- moveColumn → deleteColumn: PASS.
- create ref → resize: PASS.
- duplicate → move selection: PASS.
- delete → modificar eliminado: PASS y rollback.
- create ref → delete ref → modificar ref: PASS y rollback.
- command final inválido: PASS y rollback completo.
- Undo/Redo: PASS.
- plan fallido sin historial: PASS.

H: 0/1 antes, 1/1 después.
I: 0/1 antes, 1/1 después.

La batería determinista específica pasó completamente.
