Guías
Referencia de configuración
Cada campo de oloproof.yaml y de release.yaml, con su tipo, su valor por defecto, los valores que acepta y un ejemplo, tomados de los modelos que leen los archivos. Úsela para consultar un campo; lea las páginas de la guía rápida y de gates para aprender el flujo de trabajo.
Ambos archivos se validan antes de que se ejecute nada. Un campo desconocido, un campo mal escrito o un valor del tipo equivocado es un error de configuración, y el comando sale con 2 sin ejecutar ningún caso. Ambos archivos tienen JSON Schemas, que un editor capaz de leer JSON Schema puede usar para el autocompletado. El paquete instalado los escribe, junto con los esquemas de resultados, en schemas/v1/ bajo el directorio actual: python -m oloproof_core.models.schema_export (los dos son project_config.schema.json y release_policy.schema.json).
En las tablas de abajo, "obligatorio" significa que el archivo se rechaza sin el campo; cualquier otro campo muestra el valor que se usa cuando se omite.
oloproof.yaml de un vistazo
Un proyecto pequeño y completo. Ejecuta una función de Python en local, no necesita red ni claves, y es la forma que genera oloproof init.
# oloproof.yaml
version: 1
project: support-bot
dataset: datasets/support.jsonl
system:
name: support-bot
callable: app.bot:answer
evaluators:
- type: exact_match
criterion: correct_label
field: labelCampos de nivel superior
| Campo | Tipo | Por defecto | Qué es |
|---|---|---|---|
| version | 1 | 1 | Versión del formato de archivo. Solo existe 1. |
| project | cadena | obligatorio | El nombre del proyecto, que se muestra en los informes y se usa al hacer push. |
| dataset | ruta | obligatorio | El archivo de la suite, JSONL, relativo al proyecto. Sus filas se describen en Suites. |
| system | mapeo | obligatorio | El sistema evaluado. Véase más abajo. |
| concurrency | mapeo | system: 8, judge: 4 | Cuántas llamadas al sistema y al juez se ejecutan a la vez. |
| evaluators | lista | obligatorio, al menos uno | Lo que se mide en cada caso. Cada entrada tiene un type. |
| metrics | lista | vacía | Métricas adicionales, más allá de la que ya es cada criterio de evaluador. |
| predictive | mapeo | ausente | Dónde están la etiqueta, la puntuación y la verdad de un clasificador. Consulte Modelos predictivos. |
| slices | lista de cadenas | vacía | Segmentos exploratorios: metadata.<key>, relevant_position o context_truncated. Nunca llegan al gate. Consulte Segmentos. |
| min_slice_support | entero, al menos 1 | 30 | Por debajo de este número de casos elegibles, un segmento muestra su estimación pero ningún intervalo. |
| replicates | entero, al menos 1 | 1 | Medir cada caso este número de veces. El caso sigue siendo la unidad: las réplicas se agregan dentro de él antes de calcular ningún intervalo. |
| pricing | lista | vacía | Lo que usted paga por millón de tokens, por modelo. Sin ella, el coste se informa en tokens y nunca en dólares. |
| egress | lista de cadenas | vacía | Qué contenido en bruto puede enviar oloproof push a un espacio de trabajo alojado. Consulte Resultados y ejecución. |
concurrency
| Campo | Tipo | Por defecto |
|---|---|---|
| system | entero, al menos 1 | 8 |
| judge | entero, al menos 1 | 4 |
entradas de pricing
Oloproof no incluye ninguna tabla de precios. Cada entrada nombra un modelo exactamente como lo nombra el model: de un evaluador.
| Campo | Tipo | Por defecto |
|---|---|---|
| model | cadena | obligatorio |
| input_per_mtok | número, 0 o más | obligatorio |
| output_per_mtok | número, 0 o más | obligatorio |
# oloproof.yaml
version: 1
project: support-bot
dataset: datasets/support.jsonl
system:
name: support-bot
callable: app.bot:answer
evaluators:
- type: exact_match
criterion: correct_label
field: label
pricing:
- model: my-judge-model
input_per_mtok: 0.15
output_per_mtok: 0.6
egress: [raw_outputs]system
Un sistema necesita exactamente uno de callable, http o rag.
| Campo | Tipo | Por defecto | Qué es |
|---|---|---|---|
| name | cadena | obligatorio | El nombre del sistema. Parte de la identidad de su versión. |
| version | cadena | ausente | Su etiqueta para esta versión. Obligatoria para un sistema HTTP. Parte de su identidad, así que cambiarla invalida las ejecuciones en caché. |
| callable | module:attribute | ausente | Una función de Python, síncrona o asíncrona. Recibe el input del caso y devuelve la salida. |
| http | mapeo | ausente | Un endpoint al que se llama una vez por caso. Véase más abajo. |
| rag | mapeo | ausente | Una clase RAG por etapas declarada con @rag_system. Véase más abajo. |
| config | mapeo | vacío | Ajustes libres registrados con la versión del sistema. Cambiarlos cambia la versión. |
| code_paths | lista de patrones glob | vacía | Archivos fuente cuyo contenido entra en la versión de un sistema callable. Sin ella, solo se calcula el hash del propio módulo del callable. |
| timeout_s | número mayor que 0 | 120 | Límite de tiempo por llamada para un sistema callable. Un sistema HTTP usa en su lugar http.timeout_s. |
| records | lista de tipos de artefacto | vacía | Tipos de artefacto que registra un sistema callable, como retrieval/v1. Se rechaza en un sistema HTTP o RAG. |
system.http
| Campo | Tipo | Por defecto | Qué es |
|---|---|---|---|
| url | cadena | obligatorio | Adónde se envía cada caso. |
| method | GET, POST o PUT | POST | El método HTTP. |
| output_path | ruta con puntos | ausente | Qué campo de la respuesta JSON es la salida, como result.answer. Ausente significa el cuerpo entero. |
| artifacts | mapeo de tipo a ruta con puntos | vacío | Campos de la respuesta registrados como artefactos, como retrieval/v1: debug.retrieval. |
| version | cadena | ausente | Se usa como versión del sistema cuando system.version está ausente. Un sistema HTTP necesita una de las dos. |
| timeout_s | número mayor que 0 | 30 | Límite de tiempo por petición. |
# oloproof.yaml
version: 1
project: support-api
dataset: datasets/support.jsonl
system:
name: support-api
version: "2026-10-08"
http:
url: http://localhost:8000/answer
output_path: answer
artifacts:
retrieval/v1: debug.retrieval
evaluators:
- type: hit_rate
k: 5El contrato de petición y respuesta, y lo que ocurre con los tiempos de espera agotados y los errores HTTP, están en Resultados y ejecución.
system.rag
| Campo | Tipo | Por defecto | Qué es |
|---|---|---|---|
| object | module:attribute | obligatorio | La clase declarada con @rag_system, o una instancia de ella. |
| depth | entero, al menos 1 | el de la clase | Cuántos pasajes devuelve la recuperación. |
| top_k | entero, al menos 1 | el de la clase | Cuántos de ellos llegan a la generación. |
| token_budget | entero, al menos 1 | el de la clase | Un límite de tokens para el contexto. Necesita el count_tokens(passage) de la clase. |
| index_version | cadena | el de la clase | Parte de la identidad de la recuperación. Cámbiela cada vez que se reconstruya el índice. |
Los ajustes indicados aquí sustituyen a los que declara la clase. Un sistema por etapas registra sus propios artefactos retrieval/v1, context/v1 y citations/v1, así que records se rechaza junto a él. Consulte RAG.
evaluators
Cada entrada toma un type y estos dos campos comunes:
| Campo | Tipo | Por defecto | Qué es |
|---|---|---|---|
| criterion | cadena | obligatorio salvo que el tipo tenga uno por defecto | El nombre de lo que se mide. Cada criterio es una métrica, y el metric: de una regla lo nombra. |
| on_execution_error | missing o fail | missing | Lo que cuenta, para este criterio, un caso cuya llamada al sistema falló. missing lo mantiene en el denominador como no observado; fail lo cuenta como un fallo. |
fail solo se aplica a evaluadores de aprobado/fallo; un evaluador de puntuación con él es un error de configuración. on_execution_error es un campo de YAML; las clases de evaluador del SDK no toman ese argumento, y un caso con error cuenta como faltante.
Tipos de evaluador
"Lee" enumera aquello de lo que depende el veredicto del evaluador, que es también aquello por lo que se indexa su juicio en caché. "SDK" nombra la clase en oloproof.evaluators.
| type de YAML | Lee | SDK | Necesita red o una clave |
|---|---|---|---|
| exact_match | output, expected | ExactMatch | no |
| contains | output, expected | Contains | no |
| regex | output | Regex | no |
| json_schema | output | JsonSchema | no |
| rubric_judge | input, output, expected | RubricJudge | sí, un proveedor de modelos |
| model_classifier | output (o el campo que nombra text), opcionalmente premise | solo YAML | sí, un servidor compatible con TEI |
| probability_judge | el caso y la salida | solo YAML | sí, un proveedor compatible con OpenAI que devuelva probabilidades logarítmicas |
| cascade | como sus dos etapas | solo YAML | sí |
| hit_rate, recall, mrr, ndcg | artifacts.retrieval, expected | HitRate, Recall, MRR, NDCG | no |
| citation_validity | artifacts.citations, artifacts.context | CitationValidity | no |
| groundedness_judge | input, output, artifacts.context | Groundedness | sí |
| citation_support_judge | input, output, artifacts.context, artifacts.citations | CitationSupport | sí |
| agent_max_steps | artifacts.agent_trajectory | AgentMaxSteps | no |
| agent_tool_called | artifacts.agent_trajectory | AgentToolCalled | no |
| agent_no_tool_loop | artifacts.agent_trajectory | AgentNoToolLoop | no |
| agent_tool_sequence | artifacts.agent_trajectory, expected | AgentToolSequence | no |
| agent_no_undeclared_tool | artifacts.agent_trajectory, expected | AgentNoUndeclaredTool | no |
| agent_constraints_satisfied | artifacts.agent_trajectory | AgentConstraintsSatisfied | no |
| agent_route | artifacts.agent_trajectory | AgentRoute | no |
| agent_tool_permissions | artifacts.agent_trajectory | AgentToolPermissions | no |
| agent_max_handoffs | artifacts.agent_trajectory | AgentMaxHandoffs | no |
| predictive_correct | el campo de etiqueta de output y de expected | PredictiveCorrect | no |
| predictive_recall | como arriba | PredictiveRecall | no |
| predictive_precision | como arriba | PredictivePrecision | no |
| predictive_absolute_error | como arriba, numérico | AbsoluteError | no |
| predictive_brier | el campo de puntuación de output, la etiqueta de expected | Brier | no |
| predictive_log_loss | como arriba | LogLoss | no |
| predictive_ranking | como arriba | PredictiveRanking | no |
| sin tipo YAML | artifacts.conversation | ConversationCompleted (solo SDK) | no |
| sin tipo YAML | expected, artifacts.conversation | ConversationJudge (solo SDK) | sí |
| sin tipo YAML | lo que usted declare | @evaluator y CustomEvaluator (solo SDK) | lo que use usted |
Un juez que llama a un modelo alojado envía el contenido de los casos a ese proveedor, que se lo factura. Las claves se leen de la variable de entorno nombrada en api_key_env; Oloproof nunca las guarda en estos archivos.
Evaluadores deterministas
| Tipo | Campo | Tipo | Por defecto |
|---|---|---|---|
| exact_match | field | ruta con puntos en la salida | ausente: la salida entera |
| exact_match | expected_field | ruta con puntos en expected | ausente: igual que field |
| exact_match | strip | booleano | true |
| exact_match | casefold | booleano | false |
| contains | field, expected_field | como exact_match | ausente |
| regex | pattern | expresión regular | obligatorio |
| regex | field | ruta con puntos | ausente |
| regex | pass_if | match o no_match | match |
| json_schema | schema | un JSON Schema en línea, o la ruta a un archivo JSON relativa al proyecto | obligatorio |
| json_schema | field | ruta con puntos | ausente |
Jueces modelo
rubric_judge, groundedness_judge y citation_support_judge comparten estos campos. rubric_judge exige exactamente uno de rubric_file o rubric_text; los dos jueces RAG toman como mucho uno y, si no, usan una rúbrica integrada. Su criterion vale por defecto groundedness y citation_support.
| Campo | Tipo | Por defecto |
|---|---|---|
| provider | anthropic, openai o openai_compatible | obligatorio |
| model | cadena | obligatorio |
| rubric_file | ruta | ausente |
| rubric_text | cadena | ausente |
| api_key_env | nombre de variable de entorno | ANTHROPIC_API_KEY u OPENAI_API_KEY |
| base_url | URL | la del proveedor |
| temperature | número | 0 |
| max_tokens | entero, al menos 1 | 512 |
| timeout_s | número mayor que 0 | 60 |
probability_judge plantea una pregunta tipada y lee las probabilidades del modelo:
| Campo | Tipo | Por defecto |
|---|---|---|
| provider | openai o openai_compatible | obligatorio |
| model | cadena | obligatorio |
| question | cadena | obligatorio |
| form | yes_no, choice o score | obligatorio |
| min_probability | número en (0, 1] | obligatorio |
| options | mapeo de respuesta a descripción | para choice |
| pass_options | lista de respuestas | para choice |
| levels | mapeo de nivel a descripción, el más bajo primero | para score |
| pass_at_least | un nivel | para score |
| calibration | slope (mayor que 0), intercept, from_version | ausente |
| api_key_env, base_url | como arriba | ausente |
| timeout_s | número mayor que 0 | 60 |
cascade ejecuta primero un juez barato y escala los casos inciertos:
| Campo | Tipo | Por defecto |
|---|---|---|
| first | una entrada probability_judge | obligatorio |
| then | una entrada rubric_judge o probability_judge | obligatorio |
| escalate_between | dos probabilidades | obligatorio |
Las etapas juzgan el propio criterion de la cascada; una etapa que nombra otro se rechaza.
model_classifier puntúa texto con un modelo entrenado en un servidor compatible con TEI:
| Campo | Tipo | Por defecto |
|---|---|---|
| model | cadena | obligatorio |
| base_url | URL | obligatorio |
| label | la etiqueta del clasificador que se lee | obligatorio |
| min_score o max_score | número en [0, 1], exactamente uno | obligatorio |
| text | qué campo se clasifica | output |
| premise | un segundo texto, para clasificadores de pares | ausente |
| api_key_env | nombre de variable de entorno | ausente |
| timeout_s | número mayor que 0 | 30 |
Evaluadores RAG
| Tipo | Campo | Tipo | Por defecto |
|---|---|---|---|
| hit_rate, recall, mrr, ndcg | k | entero, al menos 1 | 5 para hit_rate y recall, 10 para mrr y ndcg |
| hit_rate, recall, mrr, ndcg | relevance_unit | doc o chunk | doc |
| hit_rate, recall, mrr, ndcg | criterion | cadena | <type>_at_<k>, como hit_rate_at_5 |
| citation_validity | require_citations | booleano | false |
| citation_validity | criterion | cadena | citations_valid |
Evaluadores de agentes
| Tipo | Campo | Tipo | Por defecto |
|---|---|---|---|
| agent_max_steps | max_steps | entero, al menos 1 | obligatorio |
| agent_tool_called | tool_name | cadena | obligatorio |
| agent_tool_called | min_calls | entero, al menos 1 | 1 |
| agent_no_tool_loop | max_repeats | entero, al menos 1 | 2 |
| agent_tool_sequence | ordered | booleano | true |
| agent_constraints_satisfied | constraints | lista de nombres de restricciones | vacía |
| agent_tool_permissions | permissions | mapeo de agente a herramientas permitidas | obligatorio |
| agent_max_handoffs | max_handoffs | entero, 0 o más | obligatorio |
Cada tipo de agente tiene un criterion por defecto, así que puede omitirse: el nombre de su propio tipo, o uno construido a partir de su ajuste (agent_steps_le_8, agent_tool_lookup_called, agent_handoffs_le_2). Consulte Agentes.
Evaluadores predictivos
| Tipo | Campo | Tipo | Por defecto |
|---|---|---|---|
| predictive_correct, predictive_recall, predictive_precision | positive | cualquier valor JSON | true, o el del bloque predictive: |
| ídem | field | campo de salida | label, o predictive.label_field |
| ídem | expected_field | campo esperado | label, o predictive.expected_field |
| predictive_absolute_error | target_range | dos números | obligatorio |
| predictive_absolute_error | field, expected_field | como arriba | label |
| predictive_brier, predictive_log_loss, predictive_ranking | positive | cualquier valor JSON | true, o el del bloque |
| ídem | field | campo de salida | score, o predictive.score_field |
| ídem | expected_field | campo esperado | label, o el del bloque |
| predictive_log_loss | clip | número en (0, 0.5) | obligatorio |
Un evaluador predictivo que no escribe positive, field o expected_field lo toma del bloque predictive:; un valor que sí escribe se conserva.
predictive
| Campo | Tipo | Por defecto |
|---|---|---|
| label_field | cadena | label |
| score_field | cadena | score |
| expected_field | cadena | label |
| positive | cualquier valor JSON | true |
| calibration_bins | entero, al menos 1 | 10 |
| thresholds | lista de números | vacía |
| average | macro o micro | ausente: sin agregado |
metrics
Cada criterio de evaluador ya es una métrica. Una entrada de metrics: añade una más, distinguida por type.
| type | Campos | Qué es |
|---|---|---|
| quantile | id, source, quantile en (0, 1) | Un cuantil de latency_ms, input_tokens, output_tokens, cost_usd, agent_steps o agent_tool_calls. |
| ranking | id, criterion, statistic: roc_auc o average_precision | Un estadístico sobre el orden de las puntuaciones de un criterio de ranking. |
| human_score, human_preference | id | Rechazadas: ningún método admitido lee todavía estas etiquetas. |
| cost_per_accepted | id, criterion, cost_ceiling_usd, cost_ceiling_source | Rechazada hasta que una auditoría admita su integración. |
# oloproof.yaml
version: 1
project: support-bot
dataset: datasets/support.jsonl
system:
name: support-bot
callable: app.bot:answer
evaluators:
- type: exact_match
criterion: correct_label
field: label
metrics:
- id: latency_p95
type: quantile
source: latency_ms
quantile: 0.95release.yaml
La política de publicación: qué reglas deciden, y qué decisiones bloquean. Los ajustes omitidos conservan sus valores por defecto, así que una política que solo nombra sus reglas sigue bloqueando con FAIL, INSUFFICIENT_EVIDENCE y MANUAL_REVIEW.
# release.yaml
version: 1
rules:
- id: label_accuracy
metric: correct_label
min: 0.8| Campo | Tipo | Por defecto | Qué es |
|---|---|---|---|
| version | 1 | 1 | Versión del formato de archivo. |
| confidence_level | probabilidad | 0.95 | El nivel de cada intervalo que lee una regla. |
| block_on | lista de estados de decisión | FAIL, INSUFFICIENT_EVIDENCE, MANUAL_REVIEW | Estados que hacen que el gate bloquee, y que fijan el código de salida. |
| warn_on | lista de estados de decisión | vacía | Estados que avisan sin bloquear. No debe solaparse con block_on. |
| block_on_partial_run | booleano | true | Si una ejecución que no se completó bloquea, con salida 5. |
| require_validated_evaluators | booleano | true | Si una regla sobre un juez modelo retiene su decisión hasta que el juez se valide frente a etiquetas humanas. Los evaluadores deterministas están exentos. |
| minimum_evaluator_agreement | número en [0, 1] | ausente | El acuerdo con las etiquetas humanas que un juez debe alcanzar, según su límite inferior, antes de poder validarse. |
| maximum_evaluator_bias | número en (0, 1] | ausente | Cuánto puede alejarse la tasa de aprobados de un juez de la de las personas antes de poder validarse. |
| allow_approximate_methods | booleano | false | Si una regla puede decidir sobre un intervalo que el motor marca como aproximado (el intervalo binario por clústeres). Si no, indica MANUAL_REVIEW. |
| min_clusters | entero, al menos 10 | 20 | Con menos clústeres que este número, una regla por clústeres indica INSUFFICIENT_EVIDENCE. |
| difference_method | bounded_paired_difference@1 o conditional_exact_paired_difference@1 | ausente: el primero | Qué método admitido acota una diferencia emparejada de tasas binarias. |
| early_stopping | booleano | false | Ejecutar los casos por lotes y detenerse en cuanto todas las reglas estén decididas. Consulte Gates. |
| early_stopping_seed | entero, 0 o más | ausente | La semilla del orden de los casos. |
| early_stopping_batch_size | entero, al menos 1 | 25 | Casos por lote. |
| rules | lista | obligatorio, al menos una | Las reglas. Véase más abajo. |
| families | lista | vacía | Reglas cuyos FAIL falsos se controlan conjuntamente. |
| review_rule | mapeo | ausente | Rechazado: la integración todavía no está admitida. |
rules
Una sola lista contiene ambos tipos. Una regla de ejecución toma exactamente uno de min, max o max_failures. Una regla de comparación nombra su kind y decide una diferencia entre dos ejecuciones; consulte Reglas de comparación.
| Campo | Tipo | Por defecto | Se aplica a |
|---|---|---|---|
| id | cadena | obligatorio | todas |
| metric | un id de métrica o un criterio | obligatorio | todas |
| kind | interval_threshold, observed_count, superiority, non_inferiority, equivalence | deducido para las reglas de ejecución | todas |
| min | número | ausente | reglas de ejecución: PASS cuando el límite inferior del intervalo es al menos este valor |
| max | número | ausente | reglas de ejecución: PASS cuando el límite superior del intervalo es como mucho este valor |
| max_failures | entero, 0 o más | ausente | observed_count: un conteo sobre la suite ejecutada, sin intervalo |
| margin | número mayor que 0, en las unidades de la métrica | ausente | non_inferiority y equivalence; se rechaza en superiority |
| direction | min o max | min | solo non_inferiority: si lo mejor es más alto o más bajo |
| max_missing_fraction | número en [0, 1] | ausente | reglas de intervalo y de comparación |
| requires_manual_review | booleano | false | todas: la regla siempre indica MANUAL_REVIEW |
| scope | global o un segmento | global | reglas de intervalo y de comparación |
| min_support | entero, al menos 1 | ausente | reglas de comparación sobre un segmento |
families
| Campo | Tipo | Por defecto |
|---|---|---|
| id | cadena | obligatorio |
| correction | holm | holm |
| rules | lista de ids de regla | obligatorio, al menos uno |
# release.yaml
version: 1
warn_on: [INSUFFICIENT_EVIDENCE]
block_on: [FAIL, MANUAL_REVIEW]
rules:
- id: label_accuracy
metric: correct_label
min: 0.8
max_missing_fraction: 0.05
- id: no_regression
metric: correct_label
kind: non_inferiority
margin: 0.02Tipos de artefacto
Un artefacto es un registro tipado que un sistema escribe junto a su salida, como lo que recuperó. Un tipo es un nombre en minúsculas con una versión opcional, que coincide con ^[a-z][a-z0-9_]*(/v[1-9][0-9]*)?$. Los evaluadores que necesitan un artefacto lo nombran, y una ejecución cuyo sistema no declara un tipo requerido se rechaza antes de empezar, en lugar de contar todos los casos como faltantes.
| Tipo | Escrito por | Requerido por |
|---|---|---|
| retrieval/v1 | current_case().retrieval(...), un @rag_system, o http.artifacts | hit_rate, recall, mrr, ndcg |
| context/v1 | current_case().context(...) o un @rag_system | citation_validity, groundedness_judge, citation_support_judge |
| citations/v1 | current_case().citations(...) o un @rag_system | citation_validity, citation_support_judge |
| agent_trajectory/v1 | current_case().agent_trajectory(...) | todos los evaluadores agent_*, y las fuentes agent_steps y agent_tool_calls |
| conversation/v1 | current_case().artifact(CONVERSATION, ...) | ConversationCompleted, ConversationJudge |
| stage_timings/v1 | un @rag_system | ninguno; se muestra junto a la latencia |
Un sistema callable declara los tipos que registra en records: (o @system(records=...)); un sistema HTTP, en http.artifacts; un sistema RAG por etapas registra los suyos propios.
Versiones, claves de caché e invalidación
Oloproof reutiliza el trabajo cuyas entradas no han cambiado, y decide qué significa "sin cambios" a partir de digests de contenido. Cada uno lo calcula el motor y se registra con la ejecución.
| Registro | Se reutiliza cuando estos son idénticos |
|---|---|
| Versión del sistema | name, version, config, y un digest del código: el código fuente del módulo de un callable (o cada archivo que coincide con code_paths), el url, method, output_path y artifacts de un sistema HTTP |
| Ejecución | la versión del sistema, el input del caso y el índice de réplica. Solo se reutilizan las ejecuciones correctas. |
| Juicio | la versión del evaluador (su tipo y cada ajuste) y un digest de cada campo que lee, como se enumera en la tabla de evaluadores |
| Análisis | el plan de análisis, la métrica, el nivel de confianza, el digest de la suite y cada entrada que contó |
| Gate | cada análisis, el digest de la política, si la ejecución se completó, y el estado efectivo de cada evaluador que citan las decisiones |
Lo que Oloproof no puede ver le corresponde a usted declararlo:
- El comportamiento de un sistema HTTP está en el servidor. Cambie system.version cada vez que cambie lo que hay detrás de la URL, o una salida antigua en caché representará al sistema nuevo.
- Los módulos auxiliares de un callable solo entran en el hash cuando code_paths coincide con ellos. Sin él, editar un auxiliar no cambia la versión.
- Un método o un objeto callable debe declarar una versión, y la versión debe cambiar cuando cambia el estado del objeto.
- Un índice RAG se identifica por index_version; cámbiela cuando se reconstruya el índice.
- La identidad de un juez modelo son sus ajustes, no los pesos del proveedor. La caché no detecta que un proveedor actualice el modelo detrás del mismo nombre.
- Un @evaluator personalizado calcula el hash del archivo de módulo que lo define, y sus juicios solo se reutilizan entre ejecuciones cuando declara cacheable=True. Los jueces de rúbrica integrados se pueden almacenar en caché; los evaluadores deterministas se recalculan, lo cual es barato.
El trabajo en caché vive en el almacén local del proyecto, .oloproof/store.sqlite junto a oloproof.yaml (o bajo OLOPROOF_HOME). Borrar el almacén descarta todas las cachés y todas las ejecuciones. En un espacio de trabajo alojado, el motor no reutiliza ejecuciones, juicios ni análisis en caché, porque un push puede escribirlos; los vuelve a calcular.