# Evaluaciones

> Los criterios de aprobación con los que se juzga una corrida, cada campo de un criterio, qué le hace cada resultado a la corrida, y cómo se pliegan los resultados en un veredicto.

Una **evaluación** es un conjunto reutilizable de criterios de aprobación. Cada criterio vigila un
canal legible dentro de una ventana de la corrida y juzga sus muestras grabadas contra una banda fija
o una tolerancia alrededor de otro canal; cada uno cierra con un resultado propio, y el veredicto de
la corrida es el pliegue de todos ellos. El motor juzga en vivo sobre las filas que graba el datalog,
así que el canal de un criterio y su canal de referencia tienen que ser columnas del datalog del
procedimiento: el archivo de la corrida prueba qué se juzgó. Las evaluaciones viven en Process >
Modelos > modelo > Preparación > **Evaluaciones** y exigen el permiso **Editar recetas y
evaluaciones**.

## La carpeta Evaluaciones {#the-evaluations-folder}

Al seleccionar la fila **Evaluaciones** se abre la página de la carpeta ("Criterios de conformidad con
los que se juzga una corrida. La evaluación lee canales del proceso.") con una tarjeta por evaluación,
por nombre; al hacer clic en una tarjeta se abre y la X la quita. Sin ninguna, la página dice "Todavía
no hay evaluaciones. Agregue una."

| Comando | Qué hace | Atenuado cuando (situación) | No se dibuja cuando (rol) |
| --- | --- | --- | --- |
| **Evaluación** (barra de detalle, con la carpeta seleccionada; botón derecho **Agregar evaluación**) | Agrega `Evaluación <n>` sin criterios. La fila se agrega a su grupo, resaltada y desplazada hasta quedar a la vista allí; su tarjeta la abre. | Cualquier unidad tiene una corrida, o el runtime está detenido. | Sin Editar recetas y evaluaciones. |

## La página de la evaluación {#the-evaluations-page}

El encabezado lleva el nombre, la línea "Criterios de conformidad con los que se juzga una corrida." y
una píldora que cuenta los criterios. Todos los campos se guardan solos, y toda edición vuelve a
dibujar el anticipo del criterio elegido.

### Definición {#definition}

| Campo | Qué es | Valores / predeterminado |
| --- | --- | --- |
| **Nombre** | Cómo se llama la evaluación en el árbol, en el selector Evaluación de un procedimiento y en el selector Evaluar ahora de un panel, y su carpeta bajo el `LastRun.Evaluations` de cada unidad ([Los nombres son direcciones](#names-are-addresses)). Se confirma al salir del campo, por el renombrado que dice antes cuántas referencias se mueven con él; un nombre en blanco se rechaza. | Texto libre; `Evaluación <n>` al crearla. |
| **Notas** | Texto libre para quien la lea. | Vacío de forma predeterminada. |

Bajo los dos campos, la tarjeta avisa cuando un nombre de esta evaluación o de uno de sus criterios
se lee igual que el de otro, algo que una versión publicada puede haber guardado (véase
[Los nombres son direcciones](#names-are-addresses)).

### Cómo se juzga la corrida {#how-the-run-is-judged}

Esta tarjeta declara el pliegue que aplica el motor, en su propio orden:

- **No conforme** si falla un solo criterio.
- **Indeterminado** si no falló ninguno y uno no se pudo juzgar.
- **Conforme** solo cuando todos ellos cumplieron.

"La gravedad no cambia nada de eso. Se lee contra el umbral de aborto del procedimiento y decide
únicamente si una falla termina además la corrida ahí." La tarjeta también advierte antes de que lo
haga una corrida: "Un criterio no se puede juzgar tal como está configurado, así que una corrida
terminaría en Indeterminado." (o "`<n>` criterios no se pueden juzgar …"), y dice "Todavía ningún procedimiento de
este modelo se ejecuta contra esta evaluación." mientras nada la referencia.

## La lista de criterios {#the-criteria-list}

La lista se encabeza **Criterios** y su botón **Criterio** agrega una fila en el primer canal legible
del modelo (ancla Corrida completa, modo Ventana completa, una banda fija con los dos lados abiertos, gravedad Grave, sin
nombre) y la elige. Al hacer clic en una fila se abre en la columna **Criterio**; sin nada elegido la
columna dice "Seleccione un criterio para editarlo entero en un solo sitio, con lo que decide cada
campo al lado." La lista lleva el criterio entero y se desplaza de lado más allá del ancho del panel.

| Columna | Qué contiene |
| --- | --- |
| **Nombre** | El nombre del criterio, editable en el sitio. Se confirma al salir de la casilla, por el mismo renombrado que el campo **Nombre** de la columna; un rechazo se dice en la barra de estado. |
| **Canal** | El canal legible que se juzga. |
| **Anclaje** | Corrida completa, Ventana de tiempo o Segmento, cada una con la forma del tramo que juzga al lado de su nombre y su consecuencia como información emergente. |
| **Ventana** | Los dos ajustes que necesita el ancla: **Seg** y **Estab** para un ancla Segmento, **Desde** y **Hasta** para un ancla Ventana de tiempo, "Corrida completa" para el ancla Corrida completa. |
| **Modo** | Ventana completa o Un punto, con su forma. |
| **Límite** | Banda fija o Alrededor de la consigna, con su forma. |
| **Banda** | **Mín** y **Máx** para una banda fija ("en blanco deja el lado abierto"); el canal de referencia y la tolerancia **±** para un límite relativo. |
| **Gravedad** | Leve, Grave o Crítica. |
| **Resultado** | Lo que el criterio aporta a la corrida ("No conforme: la corrida falla", "No conforme: la corrida falla y se detiene", "No se puede juzgar"), con la frase entera como información emergente. |
| Acción de fila | **Quitar** pregunta "Eliminar el criterio": el nombre (o el nombre del canal), "Esto quita el criterio de la evaluación." |

## El criterio entero {#the-criterion-in-full}

La columna abre con un anticipo: la banda del criterio elegido y el tramo que juzga, sobre ejes
declarados sin ninguna muestra cerca (detrás de una pantalla de configuración no hay ninguna corrida).
Una banda fija se dibuja en los valores de ingeniería del canal con espacio para una falla a cada
lado; una banda relativa se dibuja como desviación del canal de referencia, que queda como la línea en
cero. Cuando no se puede dibujar nada (sin límite puesto, sin referencia elegida) el marco dice por
qué en vez de quedarse vacío. Debajo, cada campo está sobre una leyenda fija y, donde la respuesta se
mueve con lo escrito, sobre el efecto de lo que está en vigor. Las líneas de efecto escriben sus
números en el formato de número de la estación ([Idioma y formatos](settings-localization)), con las
cifras que tiene cada uno: un límite de la banda o una tolerancia hasta los seis decimales que muestra
su campo, y un tiempo en milisegundos por debajo de un segundo y en segundos de ahí en adelante.

| Campo | Qué es | Valores / predeterminado | Línea de efecto |
| --- | --- | --- | --- |
| **Nombre** | "Nombra esta verificación allí donde se muestra su resultado." Vacío recae en el canal en el reporte y en la dirección del criterio bajo `LastRun`; la columna se encabeza a sí misma `Criterio <n>` hasta que la fila tenga nombre. | Texto libre; vacío al crearlo. | Lo que se lleva consigo confirmar el nombre, como lo dice todo campo de renombrado: cuántas referencias se mueven, o que no se mueve ninguna. |
| **Canal** | "La lectura que se juzga. Debe ser una columna del datalog del procedimiento." | Los canales legibles del modelo; el primero al crearlo. | |
| **Anclaje** (VENTANA) | "Sobre qué tramo de la corrida se juzga este criterio." | **Corrida completa** (predeterminada), **Ventana de tiempo**, **Segmento**. | Corrida completa: "Se juzga sobre la corrida entera. No necesita receta." Ventana de tiempo: "Se juzga entre dos instantes medidos desde el arranque de la corrida." Segmento: "Se juzga mientras la receta está en ese segmento, pasado el retardo. Una pausa lo alarga." |
| **Segmento (empezando en 0)** y **Estabilización (ms)** (ancla Segmento) | "Qué segmento de la receta se juzga, y cuánto espera la ventana dentro de él antes de abrirse." | Números enteros; 0 y 0 de forma predeterminada. Ninguno de los dos campos acepta un número negativo: la entrada se rechaza, la nota bajo el campo lo dice, y regresa el valor anterior. | "Se abre con el segmento 1." o "Se abre 2 s dentro del segmento 1." |
| **Desde (ms)** y **Hasta (ms, 0 = fin de la corrida)** (ancla Ventana de tiempo) | "Los dos instantes, contados desde el arranque de la corrida, entre los que se sitúa la ventana." | Milisegundos; 0 y 0 de forma predeterminada. Hasta = 0 significa hasta que la corrida termine; si no, Hasta tiene que quedar después de Desde. | "Desde 5 s hasta el final de la corrida.", "De 5 s a 30 s." o "Hasta queda en Desde o antes que él, así que la ventana está vacía." |
| **Modo** | "Sobre cuánto de ese tramo descansa el veredicto." | **Ventana completa** (predeterminado), **Un punto**. | Ventana completa: "Todas las muestras de la ventana deben cumplir." Un punto: "Solo decide la última muestra de la ventana." |
| **Límite** (LÍMITES) | "Qué forma toma el límite, que es también lo que piden los campos de debajo." | **Banda fija** (predeterminado), **Alrededor de la consigna**. | Banda fija: "Una banda de ingeniería fija. Cualquiera de los dos lados se puede dejar abierto." Alrededor de la consigna: "Una banda alrededor de otro canal, muestreado en la misma fila." |
| **Mín** y **Máx** (banda fija) | "Los valores de ingeniería entre los que debe mantenerse la lectura. Un lado que se deja vacío queda abierto." | Números o vacío; los dos vacíos al crearlo. | "Sin límite fijado, así que toda lectura cumple.", "Cumple en 20 o por encima.", "Cumple en 80 o por debajo.", "Cumple entre 20 y 80." o "Mín queda por encima de Máx, así que esto no se puede juzgar y una corrida terminaría en Indeterminado.", que es lo que dice también el bloque RESULTADO bajo la fila |
| **Referencia** y **± Tolerancia** (relativo) | "El canal contra el que se mide la lectura, y cuánto puede alejarse de él." | Un canal legible del modelo y un número; ninguno y 0 al crearlo. | "Cumple dentro de ±0.5 de Consigna." o "Elija el canal alrededor del cual se mide la tolerancia." |
| **Gravedad** | "Se lee contra el umbral de aborto del procedimiento. También fija el énfasis en el reporte." | **Leve**, **Grave** (predeterminada), **Crítica**. | |
| **RESULTADO** | Lo que produce el criterio, y lo que eso le hace a la corrida. | Solo lectura. | Véase más abajo. |

### Qué dice el resultado {#what-the-result-says}

| Línea | Detalle | Cuándo |
| --- | --- | --- |
| "No conforme: la corrida falla" | "Una falla deja la corrida en No conforme." o, cuando algún procedimiento ejecuta la evaluación, "Una falla deja la corrida en No conforme. La corrida termina de todos modos, porque ningún procedimiento aborta con esta gravedad." | Ningún procedimiento que ejecuta esta evaluación aborta con la gravedad de este criterio. |
| "No conforme: la corrida falla y se detiene" | "Una falla deja la corrida en No conforme y la termina ahí, porque `<procedure>` aborta con esta gravedad." | Un procedimiento que ejecuta esta evaluación tiene Abortar con No conforme en esta gravedad o por debajo. |
| "No se puede juzgar" | "Tal como está configurado no se puede juzgar, así que dejaría la corrida en Indeterminado." seguido del motivo. | Se da uno de los motivos de abajo. |

Los motivos por los que un criterio no se puede juzgar, preguntados en el momento de configurar y en
el orden propio del motor: "No vigila ningún canal de este modelo."; "El canal que vigila no lo
registra el datalog del procedimiento que lo ejecuta."; "No sigue ningún canal de referencia de este
modelo."; "Hasta queda en Desde o antes que él, así que la ventana está vacía."; "Sus límites están
incompletos o al revés."; "El canal de referencia no lo registra el datalog del procedimiento que lo
ejecuta." Los motivos
del datalog se les preguntan solo a los procedimientos que ejecutan la evaluación; una evaluación que
ningún procedimiento tomó todavía está sin terminar, no mal.

## Cómo se pliegan los criterios en un veredicto {#how-criteria-fold-into-a-verdict}

Toda fila grabada dentro de una ventana activa se clasifica una vez: **evaluada**, **no disponible**
(un valor ausente o una calidad mala) o **no válida** (un valor bueno que no es un número finito; un
`NaN` bueno se queda como dato bruto auditable pero no puede certificar un criterio numérico). Un
límite fijo necesita el valor vigilado; un límite relativo necesita el valor vigilado y el de
referencia de la misma fila. Los contadores Muestras evaluadas, Muestras fuera, Muestras no
disponibles y Muestras no válidas y el conjunto congelado de canales afectados se graban por criterio,
y se leen además en vivo en los puntos `Procedure.*` de la unidad
(véase [El espacio de direcciones de la unidad](process-addresses)).

Cada resultado graba también lo que se midió: el último valor evaluado del canal vigilado en la
ventana (en modo Un punto, la muestra juzgada), el menor y el mayor valor evaluado, y la peor
excursión, la mayor distancia más allá de un límite entre las muestras contadas (0 cuando hubo
muestras evaluadas y ninguna quedó fuera). Las filas no disponibles y no válidas nunca cuentan, así
que una ventana sin nada evaluado no graba ninguno de esos valores. Un archivo de corrida escrito
por una versión anterior no tiene valores medidos y los lee vacíos.

Cada resultado guarda además el tramo de la corrida que juzgó: el modo, el ancla, el inicio y el fin
de una ventana de tiempo, el segmento y su estabilización. Una corrida abierta después sigue
diciendo así qué se juzgó, y la evidencia del registro de la corrida y del reporte PDF empieza con
él (véase [Criterios juzgados](histories-record#judged-criteria)). Un archivo de corrida escrito por
una versión anterior no lo guardó, y su evidencia muestra solo los contadores.

Los resultados son estrictos con la evidencia. En modo **Ventana completa** cualquier violación
evaluada prueba **No conforme**; si no, una fila no disponible o no válida, una observación
interrumpida o una ventana vacía dejan el criterio **Indeterminado**; solo una evidencia completa
dentro de banda lo deja **Conforme**. El modo **Un punto** decide solo con la última muestra activa
de la ventana, y los contadores, la peor excursión y los canales afectados de su resultado son solo
los de esa muestra; el menor y el mayor valor siguen cubriendo toda la ventana que vigiló. Un
procedimiento Temporizado vuelve a anclar cada criterio por ciclo y cuenta los ciclos fallidos. El
veredicto de la corrida se pliega en orden: una corrida abortada o cualquier criterio No conforme la
hacen **No conforme**; si no, cualquier resultado Indeterminado la hace **Indeterminado**; con todos
los resultados Conforme queda **Conforme**; una corrida sin evaluación termina sin veredicto. Solo
un No conforme confirmado dispara el umbral de aborto del procedimiento o el conteo de ciclos
fallidos.

## Los nombres son direcciones {#names-are-addresses}

Cada unidad publica el resultado de su última corrida bajo
`Process.<Model>.<Unit>.LastRun.Evaluations.<Evaluation>.<Criterion>`
([LastRun](process-addresses#lastrun)), así que el nombre de la evaluación y el nombre de cada
criterio (o, en un criterio sin nombre, el de su canal) son segmentos de dirección, los nombres
depurados: "Soak check" queda `Soak_check`. Renombrar cualquiera de ellos mueve esas direcciones y
reescribe las expresiones, los scripts y las pantallas que las escribieron, como todo renombrado del
modelo; renombrar el canal de un criterio sin nombre también lo mueve.

Dos nombres que se leen igual responden a una sola dirección, que no sabe decir qué resultado
guarda, así que:

| Situación | Qué pasa |
| --- | --- |
| Un nombre daría a dos evaluaciones del modelo, o a dos criterios de esta evaluación, el mismo segmento (mayúsculas y minúsculas no cuentan) | Se rechaza, nombrando el segmento y quién responde ya a él. |
| Dos criterios de esta evaluación no tienen nombre y vigilan el mismo canal | Se permite, ya que un criterio nuevo empieza así; ninguno de los dos resultados se puede leer bajo `LastRun` hasta que uno tenga nombre. |
| Un modelo guardado por una versión anterior ya tiene dos nombres así | Se quedan como están, y se guardan como están. La dirección compartida no lee nada, y la tarjeta Definición lo dice: "Su segmento de dirección Soak_check también es el de Soak Check, así que Logic no lee los resultados de la última corrida de ninguna de las dos. Renombre una de ellas." o "Los criterios Oven air, Oven Air comparten el segmento de dirección Oven_air, así que Logic no lee el resultado de la última corrida de ninguno. Dé a cada uno un nombre propio." |
| Se copia un modelo con nombres así | La copia los conserva como los tenía su origen. |

## Dónde se usa una evaluación {#where-an-evaluation-is-used}

| Superficie | Qué hace con la evaluación |
| --- | --- |
| La etapa **Juzgar** de un procedimiento | Juzga toda corrida del procedimiento; el selector **Abortar con No conforme ≥** llega con ella. La línea de la etapa dice "Juzga 4 criterios, y un No conforme Grave aborta la corrida." o "…, y un No conforme nunca aborta la corrida." Un procedimiento con evaluación y sin datalog no valida. Véase [Procedimientos](process-procedures). |
| La tarjeta **Comandos sueltos** de un panel | **Evaluar ahora** graba una fila a través de un datalog y la juzga contra la evaluación; el veredicto se graba en Históricos. Los canales de la evaluación tienen que ser columnas del datalog elegido. |
| Los comandos de etiqueta | Un marcador puede leer el nombre, el canal, los límites, la gravedad, el resultado, el error, los instantes de la ventana, los contadores de muestras, los canales afectados o la peor excursión de un criterio, para un ciclo explícito. Véase [Acciones](process-actions#markers). |
| Los reportes | La sección de criterios imprime el resultado de cada criterio con el énfasis que fija su gravedad. |
| Logic | El `LastRun.Evaluations` de cada unidad lee el resultado de cada criterio en la última corrida de la unidad (resultado, valor medido, extremos, límites, peor excursión, ciclos fallidos), para una acción de Logic disparada en la Finalización, una pantalla o una alarma. Véase [LastRun](process-addresses#lastrun). |

## Quitar la evaluación {#remove-evaluation}

**Quitar la evaluación** está en el grupo de peligro de la barra de detalle con la evaluación
seleccionada, en su menú del botón derecho, y como la X de la tarjeta de la página de la carpeta.
Pregunta primero ("Eliminar la evaluación", "Esto elimina la evaluación y sus criterios."). Todo
procedimiento que juzgaba con ella vacía su referencia de Evaluación y termina sus corridas sin
veredicto. Exige Editar recetas y evaluaciones y se atenúa bajo el bloqueo de ingeniería y el runtime
detenido.

## Qué no hace una evaluación {#what-an-evaluation-does-not-do}

- No juzga nada que un datalog no grabe, ni nada fuera de una corrida o de una instantánea.
- No tiene criterios de expresión: un criterio es una banda o una tolerancia sobre un canal.
- No difiere entre unidades en nada: un solo conjunto de límites sirve a todas las unidades del
  modelo.
- No termina ninguna corrida por sí sola. Si un No conforme aborta la corrida lo decide el umbral Abortar
  con No conforme del procedimiento, leído contra la gravedad del criterio.
