# Fase Factura 3 — campos y variables compactos en commands

| Caso | Resultado | ms | Vacío | Motivo |
|---|---:|---:|---:|---|
| A | PASS | 1296.80 | no | - |
| B | PASS | 1572.60 | no | - |
| C | PASS | 2816.00 | no | - |
| D | PASS | 9985.20 | no | - |
| E | PASS | 2346.60 | no | - |
| F | PASS | 2646.30 | no | - |
| G | PASS | 8525.70 | no | - |
| H | PASS | 989.60 | sí | - |

- Modelo exclusivo: `gpt-oss:20b`
- Think: `low`
- PASS: 8/8
- Campos inventados: ninguno
- Respuestas vacías: 1
- Errores contractuales: 0
- Mediana: 2496.45 ms
- Prompt antes: 19718 caracteres / 4930 tokens estimados
- Prompt después: 22191 caracteres / 5548 tokens estimados
- Incremento: 618 tokens estimados
- Inventario: 12 campos, 2 variables y 1 acumuladores

## Auditoría de fuentes

- Campos del diseñador y editor de fórmulas: `TDesignerFormulas.getActiveFormulaVariableGroups()`, consumido por `TDesignerIA.getAvailableFields()`.
- Datos globales/repetitivos: metadata tipada real `DataVar` y `DetalleVar` cargada por `TDesignerFormulas.loadFormulaVariables()`.
- Variables y acumuladores: `TDocument.hUserVars` y `TDocument.hAcumVars`, expuestos por `createTemplateFormulaVariableGroups()` como `VAR.*` y `SUM.*`.
- Runtime: las mismas definiciones del documento y del conector de datos; no se creó catálogo exclusivo de IA.
- Tipos: propiedad `tipo` de la metadata real; no se infieren por el nombre.

## Contexto exacto

```text
CAMPOS_Y_VARIABLES_DISPONIBLES
TIPOS:C=texto,N=numero,D=fecha,I=imagen,M=memo,L=booleano
CABECERA:HEADER.cif:C,HEADER.cliente:C,HEADER.direccion:C,HEADER.fecha:D,HEADER.logo:I,HEADER.numero:N,HEADER.total:N
DETALLE:DETAIL.cantidad:N,DETAIL.codigo:C,DETAIL.descripcion:C,DETAIL.importe:N,DETAIL.precio:N
VARIABLES:VAR.Moneda:C,VAR.Titulo:C
ACUMULADORES:SUM.TotalDetalle:N
```

El bloque contiene nombres y tipos, nunca los valores ni registros del fixture. La deduplicación conserva una sola aparición de cada referencia exacta.

## Verificación

- Prueba determinista: PASS; 12 campos, 2 variables y 1 acumulador; tipos, prefijos, deduplicación, ausencia de valores y UTF-8 válidos.
- Sintaxis: PASS en los PHP modificados y en el runner Node.
- Fachada `commands`: los tests de creación en celda, refs de tabla, rollback y Undo/Redo pasan dentro de la suite del diseñador.
- Suite del diseñador: 139/141. Los dos fallos restantes son ajenos a IA: timeout del popup de impresión de etiquetas y expectativa de gradiente en el editor de color.
- Suite PHP general: conserva tres expectativas antiguas del prompt manual que ya fallaban frente al contexto manual actual; no afectan al flujo experimental `commands`.
- Documento completo: no se solicitó ni generó una factura completa en una sola orden.
