# Fase Factura 1 — create TTable + target.ref

Fecha: 2026-08-10

## Implementación

`TTable` se añadió al inventario de tipos de `create` mostrado a GPT-OSS. La shape documentada es:

```json
{"command":"create","ref":"tabla1","type":"TTable"}
```

La ejecución continúa entrando por `TDesignerObjetos.createObjectForCommand()`, que comparte `createObjectInternal()` con la herramienta manual y delega en `TDocument.createObjectByType('TTable')` y `TTable.init().create()`. La fachada no construye `hSections`, `aLines` ni `aCells`.

`resolveTargets()` resuelve ahora una ref temporal ya creada y existente en el documento. La validación común de TTable comprueba después que haya exactamente un target y que sea realmente `TTable`. No se añadió lógica por primitive.

## Cobertura determinista

Los escenarios A–J pasaron:

- A: create TTable con defaults reales.
- B: create → insert detail line.
- C: create → insert line → insertar cuatro columnas.
- D: create → líneas header/detail/footer.
- E: create → ancho de columna.
- F: altura, fondo y borde de línea.
- G: zebra detail.
- H: operación final inválida → rollback completo, sin tabla, ref ni Undo parcial.
- I: Undo elimina todo el plan.
- J: Redo restaura todo el plan.

Una prueba adicional ejecutó en una sola transacción las 21 primitives TTable existentes mediante la misma ref. Resultado: 21/21 PASS y una entrada Undo.

Controles enfocados existentes: create/ref, transacción secuencial, propiedades de línea y zebra: 4/4 PASS. El test histórico `designer-command-table-columns.spec.js` mantiene un fallo propio anterior: después de provocar rollback lee la instancia local obsoleta en vez de recuperar la tabla restaurada por ID. No se modificó.

## Prueba GPT-OSS

Configuración: `gpt-oss:20b`, `think=low`, seis inferencias únicas desde la UI real.

| Caso | Resultado | Tiempo | Entrada | Salida | Observación |
|---|---:|---:|---:|---:|---|
| A | PASS | 3462 ms | 4404 | 20 | create TTable correcto |
| B | PASS | 2809 ms | 4417 | 43 | inserta detail line mediante ref |
| C | FAIL | 2342 ms | 4415 | 20 | creó tabla, omitió header/detail lines |
| D | PASS | 4756 ms | 4467 | 155 | línea detail + cuatro inserciones de columna |
| E | FAIL | 3442 ms | 4478 | 51 | omitió insertar header/detail; operación sobre línea inexistente; rollback correcto |
| F | FAIL | 3911 ms | 4429 | 130 | omitió línea/columnas antes de zebra; rollback correcto |

Total: 3 PASS / 3 FAIL. Mediana: 3452 ms. Mediana de entrada: 4423 tokens. Respuestas vacías: 0. Errores de shape/contrato: 0. Estructura privada generada: 0.

La integración `create TTable + target.ref` funciona. La dependencia restante observada es semántica: aunque el contexto dice que las secciones nacen vacías, GPT-OSS no siempre emite `tableInsertLine` antes de una operación de línea. No se añadió una regla posterior ni se repitieron casos porque el límite de seis inferencias ya se consumió.

## Tamaño de contexto

No existe medición previa válida de estas mismas seis órdenes porque `TTable` no era un tipo legal de create. El fragmento fijo de create pasó aproximadamente de 197 a 455 caracteres: +258 caracteres, unos +65 tokens estimados. Tras el cambio, la mediana real completa fue 4423 tokens de entrada. No se presenta una falsa comparación pre/post con documentos o instrucciones diferentes.

## Primitives TTable sobre ref

`tableMoveColumn`, `tableSetColumnWidth`, `tableInsertColumn`, `tableDeleteColumn`, `tableInsertLine`, `tableDeleteLine`, `tableMoveLine`, `tableSetLineHeight`, `tableSetLineBackground`, `tableSetLineBorderColor`, `tableSetLineBorderWidth`, `tableSetLinePadding`, `tableSetLineBorderRadius`, `tableSetLineBorderSide`, `tableSetLineVerticalSeparators`, `tableSetLineZebraEnabled`, `tableSetLineZebraColor`, `tableSetLineCondition`, `tableSetLineSuppressCondition`, `tableSetLineBackgroundColorFormula` y `tableSetLineBorderColorFormula`.

## Alcance

- Primitives finales: 30; no se añadió ninguna.
- Creación dentro de celdas: no implementada.
- Campos/variables en Commands: no añadidos.
- TTable, IR y arquitectura transaccional: no rediseñados.
- Proveedores usados: solo Ollama `gpt-oss:20b`.

La siguiente fase de contenido de celdas puede prepararse técnicamente, pero antes conviene resolver en una prueba aislada la precondición explícita `create TTable → tableInsertLine → operación de línea`, sin ampliar primitives.
