# Fase Factura 5 — planificación visual y completitud

## Cambio de contexto

Se añadió únicamente una directriz general de planificación interna a Commands. Antes de responder, el modelo debe dividir una orden compleja en bloques visuales, asignar geometría aproximada, enumerar requisitos, ordenar dependencias y revisar completitud. Para diseños completos debe separar zonas, evitar solapamientos raíz, aplicar estilos explícitos, conservar texto literal canónico, usar fórmulas/referencias existentes y emitir `tableSetColumnWidth` cuando se soliciten anchos diferentes.

La aclaración final, también general, establece que cada objeto visual solicitado requiere su propio `create` y que el estilo de contenido de celda debe ir en `create.properties` o en operaciones posteriores mediante `ref`; `targetCell` solo existe en `create`.

No se cambió contrato, modelo, ejecución, fachada, TTable, dry-run, reparación ni primitives.

## Tamaño

Factura fase 4:

- 25.434 caracteres.
- 6.359 tokens estimados.
- 6.905 `prompt_eval_count` reportados por Ollama.

Factura fase 5 final:

- 27.163 caracteres.
- 6.791 tokens estimados.
- 6.695 `prompt_eval_count` reportados por Ollama en la ejecución final; esta métrica puede reflejar reutilización interna de prompt, por lo que la comparación estable de tamaño es 6.359 → 6.791 tokens estimados.

## Casos rápidos finales

### Complejo A

- Plan inicial válido; 12 comandos, sin reparación.
- Creó los cuatro objetos solicitados con colores y tamaños relativos.
- Cero pares de solapamiento.
- Usó `move`/`resize`, pero dos objetos terminaron fuera del ancho útil A4: la planificación no respetó los límites de página.

### Complejo B

- Plan inicial inválido: preparó cuatro columnas antes de usar `cellIndex:4`.
- Reparación inválida: la respuesta terminó con elementos string dentro de `commands`.
- Rechazo atómico; documento e historial intactos.

### Complejo C

- Plan inicial inválido por propiedad inexistente `cFontBold`.
- Reparación válida y aplicada.
- Creó seis objetos en tres zonas mediante `position`.
- Los tres solapamientos detectados corresponden a texto situado sobre su rectángulo de fondo, pero las coordenadas del pie exceden la altura A4 y `size` no es una forma Commands válida, por lo que se conservaron tamaños default.

## Factura exacta final

- Instrucción y documento inicial: idénticos a fase 4.
- Respuesta inicial exacta: `{"commands":[]}`.
- Dry-run inicial: FAIL por array vacío.
- Se ejecutó una única reparación.
- Respuesta reparada exacta: `{"commands":[]}`.
- Dry-run reparado: FAIL.
- Aplicación: no.
- Documento e historial: intactos.
- Campos inventados: cero.
- Primera inferencia: 1.574,802 ms.
- Reparación: 1.544,600 ms.
- Total: 3.153,300 ms.

En una ejecución exploratoria previa de la misma fase, la factura generó 33 comandos iniciales y 43 reparados, pero ambos planes usaron `setProperty.targetCell` y fueron rechazados. La aclaración genérica eliminó esa ambigüedad en el contexto, aunque la repetición final optó por el plan vacío seguro.

## Comparación

- Resultado anterior: PARCIAL, aplicado y estructuralmente editable, con 28 pares de solapamiento raíz.
- Resultado nuevo final: INCORRECTO/no aplicado; permanece el diseño inicial con su único solapamiento previo.
- La directriz mejora casos visuales pequeños, pero no consigue planificación fiable de la orden completa en una única generación Commands.
- El criterio de éxito de fase 5 no se cumple y la fase no debe cerrarse como satisfactoria.

## Verificación

- Regresión determinista focalizada: 8/8 PASS.
- Modelo exclusivo: `gpt-oss:20b`.
- `think=low`.
- Máximo observado: una generación y una reparación.
- Sin cambios en ejecución, TTable ni primitives.

## Conclusión

El problema no es solo geometría. GPT-OSS mejora el layout en órdenes menores, pero una instrucción muy larga sigue mostrando inestabilidad de completitud y contrato interno. El siguiente paso requiere autorización para evaluar una planificación estructurada separada de la emisión Commands, manteniendo el aplicador y la fachada actuales, en vez de seguir acumulando directrices dentro de un único prompt.
