# Fermenty — Simulación de UI: de la entrada a la tanda

> Anexo de trabajo al documento fundacional **v0.8** · ZYMOLAB SLU
> Propósito: recorrer la interfaz paso a paso para que salgan los detalles de diseño que la prosa esconde.
> No es especificación de maquetación. Es el **guion del flujo** y, sobre todo, la lista de lo que este guion deja al descubierto.

**Cómo leerlo.** Cada pantalla lleva tres bloques: *qué ve*, *qué pasa por dentro*, y —cuando lo hay— **⚠ hueco**: algo que el flujo exige y el diseño v0.8 todavía no resuelve. Los huecos son el producto de este documento; las pantallas son solo la excusa para encontrarlos.

---

## 0. Las tres puertas

El doc dice «el usuario aterriza en una RECETA. Nunca elige una categoría». Correcto, pero eso describe una de tres puertas reales:

| Puerta | Quién entra | Estado | Primera pantalla |
|---|---|---|---|
| **A · SEO** | Novato desde Google | Anónimo | Receta concreta |
| **B · Afinador** | Curioso desde el imán | Anónimo | Plano intensidad×equilibrio |
| **C · ERP** | LIRONA, productor | Autenticado, Nivel 3 | Formulación guardada |

Las tres desembocan en la misma tanda. Lo que cambia es cuánto sabe Fermenty del usuario cuando llega al momento de formular. La simulación principal es la **A**, porque es la que tiene que funcionar con cero contexto; la **C** va al final, como delta.

**⚠ Hueco 0.** La puerta B (el afinador suelto, sin receta) no está contemplada en el flujo del §8. Es el imán, y entra por el lado contrario: primero el perfil, después «¿y con qué lo hago?». Necesita su propio aterrizaje o se convierte en un juguete sin salida hacia la tanda.

---

## 1 · Puerta A — El novato desde Google

### P1. La landing de receta

Búsqueda: *«cómo hacer kombucha de cereza»* → aterriza en `fermenty.es/recetas/kombucha-cereza-lavanda`.

```
┌────────────────────────────────────────────────────┐
│  [imagen desaturada, tarjeta blanca semitransp.]   │
│   KOMBUCHA DE CEREZA Y LAVANDA                     │
│                                                    │
│  Fermentación en dos fases · 7–9 días · 2 L        │
│                                                    │
│  ┌──────────────────────────────────────────────┐  │
│  │  ¿Cómo la quieres?      [ Formular mi tanda ]│  │
│  └──────────────────────────────────────────────┘  │
│                                                    │
│  ── Lo que lleva ──                                │
│  Té negro · Azúcar · Arrancador · Cereza · Lavanda │
│                                                    │
│  ── Una fórmula de ejemplo ──                      │
│  Para 2 L, equilibrada, a 23 °C:                   │
│    Agua .............. 1,8 L                       │
│    Té negro .......... 11 g                        │
│    Azúcar blanco ..... 140 g                       │
│    Arrancador ........ 200 ml                      │
│    Cereza (al cerrar)  60 g                        │
│    Lavanda seca ...... 1 g                         │
│  Corta entre el día 7 y el 9. Cierra 1–2 días más. │
│  ↳ Esta fórmula cambia si la quieres más suave,    │
│    más potente, o si tu cocina está a otra temp.   │
│    [ Ajustarla a mi caso ]                         │
│                                                    │
│  ── Por qué se hace así ── (prosa SEO, la guía)    │
└────────────────────────────────────────────────────┘
```

**Por dentro:** la página *no* guarda cantidades. Llama al motor con `(ficha kombucha, receta cereza-lavanda, perfil=equilibrada, volumen=2 L, contexto=23 °C, calibración=null)` y renderiza la salida. Cacheada, porque los inputs son fijos.

**⚠ Hueco 1 — La fórmula-ejemplo es una decisión de producto, no un detalle.** Google necesita números en la página: sin cantidades no hay contenido indexable y la receta deja de ser imán. Pero el §6 dice que las cantidades son output del motor y no viven en la receta. La salida es la de arriba —una fórmula *calculada* con defaults públicos y etiquetada como ejemplo— pero eso obliga a fijar y versionar tres cosas que hoy no existen: **perfil público por defecto**, **volumen público por defecto** y **temperatura pública por defecto**. Y a decidir si esa fórmula se cachea en tabla (rápido, pero vuelve a soldar cantidades a la receta por la puerta de atrás) o se calcula en cada render (limpio, pero es motor en la ruta pública, con rate limit encima).

**⚠ Hueco 2 — La receta necesita un resumen honesto que no sea el tiempo.** «7–9 días» en la cabecera es una predicción disfrazada de metadato de catálogo — el mismo pecado que `default_duration_days`, con otro nombre. O se marca visiblemente como *rango orientativo a 23 °C*, o desaparece de la cabecera y solo existe después de formular.

---

### P2. El perfil objetivo

Pulsa *Formular mi tanda*. **Sin registro.**

```
┌────────────────────────────────────────────────────┐
│  ¿Cómo la quieres?                          1 de 3 │
│                                                    │
│  ┌──────────┐ ┌──────────┐ ┌──────────┐            │
│  │  SUAVE   │ │COMERCIAL │ │EQUILIBR. │            │
│  │  «poco   │ │ «como la │ │ «el      │            │
│  │  ácida,  │ │ del super│ │ punto    │            │
│  │  fácil»  │ │ , dulce  │ │ clásico» │            │
│  │          │ │ y con    │ │          │            │
│  │          │ │ gas»     │ │          │ ← default  │
│  └──────────┘ └──────────┘ └──────────┘            │
│  ┌──────────┐ ┌──────────┐                         │
│  │  FUERTE  │ │  ÁCIDA   │                         │
│  │ «potente │ │ «seca y  │                         │
│  │ y ácida, │ │ punzante,│                         │
│  │ con gas» │ │ sin gas» │                         │
│  └──────────┘ └──────────┘                         │
│                                                    │
│              ¿prefieres afinarlo tú? [ver el plano]│
└────────────────────────────────────────────────────┘
```

**Por dentro:** cada carta es una coordenada en el plano (S₀, progreso) con su banda de tolerancia (tolerancia tipo 2). El enlace *ver el plano* es la puerta al Nivel 2 — no un modo, una lente.

**⚠ Hueco 3 — Faltan las frases.** Ya está anotado en el §18, pero el mockup lo hace urgente: **la frase ES la interfaz del Nivel 1**. Cinco cartas es probablemente una de más para un novato; tres visibles + «otras dos» plegadas es más honesto. Y hay una ironía que hay que resolver aquí, no después: *comercial* es la carta que más pide el principiante y la esquina de máxima presión del plano. Si es la carta más vistosa, el techo de presión va a saltar constantemente. Igual la carta *comercial* debe llevar la advertencia incorporada en su propia frase, no en un aviso posterior.

---

### P3. Escala y contexto

```
┌────────────────────────────────────────────────────┐
│  ¿Cuánta y dónde?                           2 de 3 │
│                                                    │
│  Cantidad     [ 1 L ] [ 2 L ]● [ 4 L ] [ otra ]    │
│               ↳ es lo que te cabe en el tarro      │
│                                                    │
│  ¿Dónde va a fermentar?                            │
│   ○ En la cocina, encimera                         │
│   ● En el salón / sitio templado                   │
│   ○ En un armario o despensa fresca                │
│   ○ Sé la temperatura exacta → [ __ °C ]           │
│                                                    │
│   Estamos en julio, así que asumo unos 25 °C.      │
│   Si me equivoco lo corregimos sobre la marcha.    │
│                                                    │
│  ¿Tienes arrancador (SCOBY + líquido)?             │
│   ● Sí, tengo                                      │
│   ○ Tengo pero es nuevo / flojo                    │
│   ○ No tengo → te digo cómo conseguirlo            │
└────────────────────────────────────────────────────┘
```

**Por dentro:** aquí se rellena la Familia 3 (contexto) por primera vez y a ciegas. Es la pantalla más importante del flujo y la que menos atención tiene en el doc, porque **la temperatura manda sobre la velocidad** y el novato no la sabe.

**⚠ Hueco 4 — El contexto térmico necesita un proxy, no un termómetro.** Preguntar «¿a qué temperatura está tu obrador?» a alguien que no tiene obrador es pedirle un dato que no tiene y que si inventa, envenena la predicción y la calibración a la vez. Propuesta: ubicación aproximada (ya la da el navegador o el registro) + mes + una elección cualitativa de sitio → estimación con banda ancha declarada. Es exactamente humildad calibrada aplicada al input, no solo al output. Y encaja con el bucle 2: la primera tanda corrige la estimación.

**⚠ Hueco 5 — «No tengo arrancador» no es una opción de un radio: es una bifurcación del flujo.** El §7 dice que un cultivo *es un ingrediente que sabe fabricarse*, y el §18 admite que la ficha de cultivo es «laguna estructural completa». En la UI eso se materializa aquí, en la tercera pregunta del primer flujo: si contesta «no tengo», hay tres salidas posibles y ninguna está decidida —(a) le vendemos/derivamos a comprar uno, (b) arrancamos una tanda-cultivo que dura 2–4 semanas y la kombucha queda «en espera», (c) le formulamos con arranque por vinagre/kombucha comercial embotellada. La (b) es la correcta conceptualmente y la que rompe el modelo de Batch (que asume final). **Este es el hueco más caro del recorrido.**

**⚠ Hueco 6 — «Tengo pero es flojo» es vigor de cepa, o sea Familia 3.** Merece existir como opción porque cambia la predicción, pero abre la pregunta de si el vigor es un dato del usuario (persistente, calibrable) o de la tanda (puntual). Debería ser del usuario: es su cepa.

---

### P4. La fórmula

```
┌────────────────────────────────────────────────────┐
│  Tu kombucha de cereza y lavanda                   │
│  Equilibrada · 2 L · a unos 25 °C                  │
│                                                    │
│  ── Lo que necesitas ──                            │
│   Agua ................ 1,8 L                      │
│   Té negro ............ 11 g   [cambiar variante]  │
│   Azúcar blanco ....... 130 g  [cambiar variante]  │
│   Arrancador .......... 200 ml                     │
│   Cereza .............. 60 g   [fresca ▾]          │
│   Lavanda seca ........ 1 g                        │
│                                                    │
│  ── Cómo va a ir ──                                │
│   Infusiona, disuelve, enfría, arranca             │
│   ▸ Fermenta abierta.  Pruébala a partir del día 5.│
│     Suele estar en punto entre el día 6 y el 8.    │
│   ▸ Cierra con la cereza. Un día, quizá dos.       │
│   ▸ A la nevera cuando la botella esté dura.       │
│                                                    │
│  ── Ojo con esto ──                                │
│   · Con cereza fresca el gas sube rápido: purga la │
│     botella el segundo día.                        │
│   · He bajado un poco el azúcar porque la cereza   │
│     también aporta cuerpo.                         │
│                                                    │
│   [ Empecé mi tanda ]      [ Ajustarla ]           │
└────────────────────────────────────────────────────┘
```

**Por dentro:** salida del contrato del §11 —cantidades, ventanas, avisos, ritmo de cata—, redondeada y cuantizada (regla de exposición 5). Ningún coeficiente cruza la frontera.

**⚠ Hueco 7 — «He bajado un poco el azúcar porque…» es una feature que no está en el contrato.** El §11 dice que salen «los trueques que el motor ha decidido», pero eso hoy es una lista de códigos, no una frase. Para que el mentor enseñe oficio, cada trueque necesita **plantilla de voz** asociada (§10, «la voz vive en plantillas»). Sin eso el aviso sale en lenguaje de máquina y se pierde justo el diferencial. Hay que catalogar los trueques posibles antes de programar el motor, porque determina qué devuelve.

**⚠ Hueco 8 — El selector de forma del saborizante (`fresca ▾`) es una barandilla disfrazada de desplegable.** Cambiar de *fresca* a *liofilizada* multiplica el carbohidrato fermentable y por tanto la presión. Ese control no puede comportarse como los otros: al cambiarlo se recalcula la fórmula entera y puede saltar el techo de presión. Decisión pendiente: ¿se recalcula en vivo (llamada al motor por cada cambio → coste y señal regalada) o hay un botón *recalcular* explícito?

**⚠ Hueco 9 — Falta el estado «formulada pero no empezada».** El botón dice *Empecé mi tanda*, pero mucha gente formula el martes y compra el té el jueves. Si no existe borrador, o pierde la fórmula o miente en la fecha —y la fecha es el origen de todas las ventanas. Batch hoy asume estados terminales y `actual_end_date`; un borrador con caducidad (p. ej. 30 días) es barato ahora y caro después.

---

### P5. El congelado

```
┌────────────────────────────────────────────────────┐
│  ¿Cuándo la pusiste?                               │
│   ● Ahora mismo   ○ Ayer   ○ [ __/__ ]  [ __:__ ]  │
│                                                    │
│  Para avisarte y aprender de esta tanda necesito   │
│  saber quién eres.                                 │
│   [ correo ]                                       │
│   [ Crear mi cuenta y empezar ]                    │
│   ↳ gratis. Guardo tu tanda y te aviso cuándo catar│
└────────────────────────────────────────────────────┘
```

**Por dentro:** al confirmar se congela el snapshot: cabecera + pasos + líneas de ingrediente con cantidad y variante + ventanas previstas + **versión de motor + versión de ficha** + contexto usado. La línea de ingrediente lleva `lote_compra_id = null`.

**⚠ Hueco 10 — Aquí está el muro, y está en el peor sitio posible.** El registro cae justo en el gesto que genera el dato que *es* el foso. Cada punto de fricción aquí es una tanda que no se registra y una calibración que no existe. El §15 aparca la línea gratis/pago a propósito, pero el mockup demuestra que **no se puede aparcar del todo**: hay que decidir al menos si el flujo completo (formular → congelar → check-ins → cerrar) es gratis para 1–2 tandas activas, dejando el muro en *historizar / calibrar / escalar / trazar*. Formular gratis y congelar de pago mata el bucle antes de que arranque.

**⚠ Hueco 11 — La fecha de inicio no está en el modelo como concepto separado.** Formulación y arranque son dos momentos y hoy son uno. Afecta al snapshot y a todas las ventanas derivadas.

---

### P6. La tanda viva

```
┌────────────────────────────────────────────────────┐
│  Kombucha de cereza y lavanda        Día 4 de ~7   │
│  ●───●───●───◉───────○───────○                     │
│  arranca      fermentando   cierra   para          │
│                                                    │
│  ┌──────────────────────────────────────────────┐  │
│  │  Toca catar                                  │  │
│  │  Prueba una cucharada. ¿Cómo está?           │  │
│  │  [ aún dulce ]  [ en su punto ]  [ ácida ]   │  │
│  │  ¿tienes pHmetro? [ __ ]  📷 foto            │  │
│  └──────────────────────────────────────────────┘  │
│                                                    │
│  Historial                                         │
│   Día 3 · dulce → «va en rumbo, dale 2 días»       │
│                                                    │
│                            [ algo va mal ]         │
└────────────────────────────────────────────────────┘
```

Respuesta *aún dulce* → **bucle 1, inmediato**: «va en rumbo. A esta temperatura calculo que te llega el día 6 o 7 — te aviso pasado mañana.» La barra de progreso y la ventana se mueven.

**⚠ Hueco 12 — La ventana se mueve, pero el snapshot no puede moverse.** Trazabilidad exige que lo congelado no cambie; producto exige que la ventana se actualice. Solución: la ventana revisada es un **evento** (`BatchEvent` de tipo *revisión de predicción*), no una edición del snapshot. La UI muestra la última; el registro conserva la original y toda la cadena. Barato ahora, imposible de reconstruir después.

**⚠ Hueco 13 — «Algo va mal» necesita ser un botón siempre visible, y tiene un final que nadie ha diseñado: descartar la tanda.** Moho, olor raro, mosquitas. Una tanda descartada **no debe alimentar la calibración** —fue un accidente, no una señal de paladar ni de velocidad— pero sí debe existir en trazabilidad. Estado terminal nuevo, y una regla de exclusión explícita en el almacén de calibración.

**⚠ Hueco 14 — El ritmo de cata es variable con la temperatura y la UI lo trata como fijo.** El contrato ya devuelve *ritmo de cata recomendado*; hay que conectarlo a las notificaciones (NotificationRule) en vez de programar recordatorios diarios planos. A 28 °C dos días de silencio son media tanda.

---

### P7. El corte y el segundo corte

Responde *en su punto* → cambio de modo inmediato:

```
┌────────────────────────────────────────────────────┐
│  ¡Córtala ahora!                                   │
│                                                    │
│  1. Reserva 200 ml + el SCOBY para la próxima      │
│  2. Cuela y embotella                              │
│  3. Reparte 60 g de cereza y 1 g de lavanda        │
│  4. Cierra bien y déjala fuera de la nevera        │
│                                                    │
│  Con cereza fresca a 25 °C, calculo un día,        │
│  máximo dos. Purga si ves que va muy rápido.       │
│                                                    │
│  ¿quieres burbuja más fina? [ te digo cómo ]       │
│                              ↳ cierra más fresco,  │
│                                tarda más           │
│                                                    │
│           [ Ya está embotellada ]                  │
└────────────────────────────────────────────────────┘
```

Al día siguiente, check-in de fase cerrada: **«¿la botella está dura?»** → *sí* → «a la nevera, ya está».

**⚠ Hueco 15 — El segundo corte es una segunda formulación, y el esquema de tanda solo tiene sitio para una.** El motor corre dos veces (§5, «dos cortes, no uno») con sustrato y sensor distintos. La tanda necesita **dos bloques de fórmula+ventana**, no uno, y el segundo se formula *en el momento del corte*, con el residual real —que depende de cuándo cortó de verdad, no de cuándo se predijo—. Esto no es UI: es esquema, y es la corrección estructural más importante que saca esta simulación.

**⚠ Hueco 16 — La textura de burbuja aparece tarde.** El §5 la trata como destino que el usuario elige, pero en el flujo del novato no se pregunta nunca hasta aquí, casi de regalo. Decisión: o sube a P2 como parte de la carta (*comercial* implica burbuja grande) o se queda como afinado opcional del cierre. Sospecho lo segundo, pero conviene decirlo explícitamente en la ficha para que el motor sepa qué valor asumir por defecto.

---

### P8. El cierre y la recompensa

```
┌────────────────────────────────────────────────────┐
│  Tanda cerrada · Lote 2026-0731-01                 │
│                                                    │
│  ¿Era lo que querías?                              │
│   ○ Más suave de lo que esperaba                   │
│   ● Justo lo que buscaba                           │
│   ○ Más ácida de lo que esperaba                   │
│                                                    │
│  Anota lo que quieras recordar: [            ]     │
│                                                    │
│  ── Lo que he aprendido de ti ──                   │
│  Tu sitio va algo más rápido de lo que asumí.      │
│  Para la próxima ya no te diré «entre el 6 y el 9»:│
│  te diré «entre el 6 y el 7».                      │
│                       [ Repetir esta tanda ]       │
└────────────────────────────────────────────────────┘
```

**⚠ Hueco 17 — El estrechamiento visible es la recompensa, y necesita aparecer también al principio de la SIGUIENTE tanda.** Si solo se muestra aquí, se lee como un cierre bonito. Si reaparece en P4 de la tanda 2 («antes te habría dicho 6–9; contigo digo 6–7»), se convierte en el motivo de volver. Es una línea de texto y es media retención.

**⚠ Hueco 18 — «Repetir esta tanda» es la formulación guardada del Nivel 3 asomando en el Nivel 1.** Y no es lo mismo repetir *la fórmula* (idéntica, ignora que ahora hace más calor) que repetir *la intención* (mismo perfil, reformulado con el contexto de hoy). La segunda es la correcta y la que demuestra el mentor. Hay que nombrarlas distinto en la UI para que no se confundan: *«otra igual»* vs *«otra como aquella»*.

---

## 2 · Puerta C — LIRONA (Nivel 3), solo los deltas

No repito el recorrido; cambia en cinco puntos:

1. **No hay P1.** Entra por el ERP a una **formulación guardada**, no a una receta del catálogo. La receta es de dónde salió, no lo que usa.
2. **P2 no es una carta: es el plano con números** y sus restricciones de estilo de casa aplicadas («no bajo de 3.2») — que viven en su perfil, nunca en la ficha.
3. **P3 no pregunta la temperatura: la sabe**, o la lee de sensor. El contexto de un obrador es estado persistente maduro, no una estimación por mes y provincia.
4. **P4 muestra producto de proveedor y lote de compra**, no variante genérica. Aquí se rellena la columna nullable y confirmar la tanda descuenta stock.
5. **P6 es multi-tanda.** LIRONA tiene ocho fermentando a la vez. La pantalla de tanda individual no sirve: necesita **un tablero de tandas con las que tocan hoy**.

**⚠ Hueco 19 — El tablero del productor es una pantalla entera que no existe en el diseño.** «Hoy toca catar la 114 y la 117; la 112 está lista para embotellar.» Sin eso, el bucle 1 no escala a un obrador: nadie abre ocho fichas cada mañana. Y es, curiosamente, la pantalla que más se parece a un ERP de verdad.

**⚠ Hueco 20 — El escalado y el reparto en recipientes.** 30 L no es una tanda de 30 L: son seis garrafas de 5 o dos de 15, y el rango válido de la ficha (1–50 L) aplica *por recipiente*, no por orden de producción. Es la diferencia entre *orden de producción* y *tanda* — y ahora mismo el modelo solo tiene tanda.

---

## 3 · Los huecos, ordenados por lo que cuestan si se deciden tarde

> **Estado a 2026-07-25.** Foto tras el arco del motor/mentor. La columna Estado dice
> qué se cerró; ✅ cerrado · 🟡 parcial · 🔜 abierto. La cola de lo abierto vive en la
> memoria del proyecto y en los briefings/deudas, no aquí (para que esta tabla no se pudra).

| # | Hueco | Toca | Estado |
|---|---|---|---|
| 15 | Segundo corte = segunda fórmula. La tanda necesita dos bloques | **Esquema** | ✅ `reformular()` al cortar (2F con residual real) |
| 5 | «No tengo arrancador» abre el flujo de cultivo (marco circular) | **Esquema** | 🔜 |
| 20 | Orden de producción ≠ tanda; el volumen válido es por recipiente | **Esquema** | 🔜 |
| 9 | Estado borrador: formulada pero no empezada | **Esquema** | ✅ ciclo de borrador (formular ≠ arrancar) |
| 11 | Fecha de arranque separada de la de formulación | **Esquema** | ✅ `arrancar()` fija `start_date` |
| 12 | La ventana revisada es evento, no edición del snapshot | **Esquema** | ✅ `batches.forecast` (móvil, separado del snapshot) |
| 13 | Tanda descartada: estado terminal + exclusión de la calibración | **Esquema** | ✅ `discard` + `scopeCalibratable` |
| 6 | Vigor de cepa: dato del usuario, no de la tanda | Esquema | 🔜 |
| 10 | Dónde cae el muro gratis/pago en el flujo | **Producto** | 🔜 |
| 1 | Fórmula-ejemplo pública: defaults, caché y ruta | Producto | 🟡 `perfil_defecto` existe; ruta pública no |
| 3 | Las frases de las cartas + qué hacer con «comercial» y la presión | Producto | 🟡 cartas con frase (`Cartas`); el aviso de presión no |
| 4 | Proxy de temperatura para quien no tiene termómetro | Producto | ✅ `ProxyTemperatura` (sitio + percepción → temp + confianza) |
| 7 | Catálogo de trueques con su plantilla de voz | Producto | ✅ `CatalogoAvisos` + `Voz` |
| 19 | Tablero de tandas del productor | Producto | 🔜 |
| 0 | Aterrizaje del afinador suelto y su salida hacia la tanda | Producto | 🔜 |
| 8 | Recalcular al cambiar forma del saborizante | UI/API | 🟡 el corte recalcula la 2F; el selector de forma no |
| 14 | Ritmo de cata variable conectado a NotificationRule | UI | ✅ `createTastingNotifications` (ritmo de la ficha, relativo a la ventana) |
| 16 | Cuándo se pregunta la textura de burbuja | Ficha | 🟡 el gas es eje del perfil; el momento de preguntarlo, decidido en la carta |
| 17 | El estrechamiento mostrado en la tanda siguiente | UI | 🔜 (espera al bucle 2) |
| 18 | «Otra igual» vs «otra como aquella» | UI | 🔜 (deuda Fase A) |
| 2 | El tiempo en la cabecera de la receta es `default_duration_days` otra vez | Producto | 🔜 |

**Lo que esto no cambia.** Ninguno de los veinte contradijo el diseño de la v0.8. A fecha
de la foto, **nueve están cerrados** (4, 7, 9, 11, 12, 13, 14, 15 y el descarte), varios de
esquema —el arco del motor los resolvió—; los siete de esquema eran *ampliaciones* de la
columna clasificación→tanda, no correcciones de rumbo. Lo abierto que más pesa: el cultivo
(5), orden≠tanda (20), el tablero del productor (19) y el bucle 2 (17).

**Y una observación sobre el orden.** Nada de esto invalida que el backtest vaya primero. Pero los huecos 15 y 5 se pueden cerrar *sobre el papel* mientras el afinador se valida, porque no dependen de si los coeficientes aciertan: dependen de qué es una tanda.

*— fin del anexo —*
