Aller au contenu

Guides

Référence de configuration

Chaque champ de oloproof.yaml et de release.yaml, avec son type, sa valeur par défaut, les valeurs qu’il accepte et un exemple, tirés des modèles qui lisent les fichiers. Servez-vous-en pour retrouver un champ ; lisez les pages démarrage rapide et porte de CI pour apprendre la démarche.

Les deux fichiers sont validés avant toute exécution. Un champ inconnu, un champ mal orthographié ou une valeur du mauvais type est une erreur de configuration, et la commande sort avec le code 2 sans exécuter aucun cas. Les deux fichiers ont des schémas JSON, qu’un éditeur capable de lire JSON Schema peut utiliser pour la complétion. Le paquet installé les écrit, avec les schémas de résultats, dans schemas/v1/ sous le répertoire courant : python -m oloproof_core.models.schema_export (les deux sont project_config.schema.json et release_policy.schema.json).

Dans les tableaux ci-dessous, « obligatoire » signifie que le fichier est refusé sans le champ ; tout autre champ indique la valeur utilisée quand il est omis.

oloproof.yaml en un coup d’œil

Un petit projet complet. Il exécute une fonction Python en local, ne demande ni réseau ni clé, et a la forme que génère 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: label

Champs de premier niveau

ChampTypePar défautCe que c’est
version11La version du format de fichier. Seule 1 existe.
projectchaîneobligatoireLe nom du projet, affiché dans les rapports et utilisé lors d’un push.
datasetcheminobligatoireLe fichier de la suite, en JSONL, relatif au projet. Ses lignes sont décrites dans Écrire une suite.
systemdictionnaireobligatoireLe système évalué. Voyez plus bas.
concurrencydictionnairesystem: 8, judge: 4Combien d’appels au système et au juge s’exécutent simultanément.
evaluatorslisteobligatoire, au moins unCe qui est mesuré sur chaque cas. Chaque entrée a un type.
metricslistevideDes métriques supplémentaires au delà de celle que constitue déjà chaque critère d’évaluateur.
predictivedictionnaireabsentOù se trouvent l’étiquette, le score et la vérité d’un classifieur. Voyez Modèles prédictifs.
slicesliste de chaînesvideDes segments exploratoires : metadata.<key>, relevant_position ou context_truncated. Ils n’atteignent jamais la porte. Voyez Segments.
min_slice_supportentier, au moins 130En dessous de ce nombre de cas éligibles, un segment affiche son estimation mais pas d’intervalle.
replicatesentier, au moins 11Mesurer chaque cas ce nombre de fois. Le cas reste l’unité : les répliques sont agrégées en son sein avant le calcul de tout intervalle.
pricinglistevideCe que vous payez par million de jetons, par modèle. Sans cela, le coût est rapporté en jetons et jamais en dollars.
egressliste de chaînesvideQuel contenu brut oloproof push peut envoyer à un espace de travail hébergé. Voyez Résultats et exécution.

concurrency

ChampTypePar défaut
systementier, au moins 18
judgeentier, au moins 14

Entrées de pricing

Oloproof ne livre aucune table de prix. Chaque entrée nomme un modèle exactement comme le nomme le model: d’un évaluateur.

ChampTypePar défaut
modelchaîneobligatoire
input_per_mtoknombre, 0 ou plusobligatoire
output_per_mtoknombre, 0 ou plusobligatoire
# 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 système demande exactement un de callable, http ou rag.

ChampTypePar défautCe que c’est
namechaîneobligatoireLe nom du système. Fait partie de l’identité de sa version.
versionchaîneabsentVotre étiquette pour cette version. Obligatoire pour un système HTTP. Fait partie de son identité, si bien que la changer invalide les exécutions en cache.
callablemodule:attributeabsentUne fonction Python, synchrone ou asynchrone. Elle reçoit l’input du cas et renvoie la sortie.
httpdictionnaireabsentUn point de terminaison appelé une fois par cas. Voyez plus bas.
ragdictionnaireabsentUne classe RAG par étapes déclarée avec @rag_system. Voyez plus bas.
configdictionnairevideDes réglages libres enregistrés avec la version du système. Les changer change la version.
code_pathsliste de motifs globvideLes fichiers source dont le contenu entre dans la version d’un système appelable. Sans cela, seul le module de l’appelable est haché.
timeout_snombre supérieur à 0120La limite de temps par appel pour un système appelable. Un système HTTP utilise http.timeout_s à la place.
recordsliste de sortes d’artefactsvideLes sortes d’artefacts qu’enregistre un système appelable, comme retrieval/v1. Refusé sur un système HTTP ou RAG.

system.http

ChampTypePar défautCe que c’est
urlchaîneobligatoireOù chaque cas est envoyé.
methodGET, POST ou PUTPOSTLa méthode HTTP.
output_pathchemin pointéabsentQuel champ de la réponse JSON est la sortie, comme result.answer. Absent signifie le corps entier.
artifactsdictionnaire de sorte vers chemin pointévideDes champs de la réponse enregistrés comme artefacts, comme retrieval/v1: debug.retrieval.
versionchaîneabsentUtilisée comme version du système quand system.version est absent. Un système HTTP a besoin de l’un des deux.
timeout_snombre supérieur à 030La limite de temps par requête.
# 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: 5

Le contrat de requête et de réponse, et ce qui se passe en cas de délai dépassé et d’erreur HTTP, se trouvent dans Résultats et exécution.

system.rag

ChampTypePar défautCe que c’est
objectmodule:attributeobligatoireLa classe déclarée avec @rag_system, ou une instance de celle-ci.
depthentier, au moins 1celui de la classeCombien de passages renvoie la récupération.
top_kentier, au moins 1celui de la classeCombien d’entre eux atteignent la génération.
token_budgetentier, au moins 1celui de la classeUne limite de jetons sur le contexte. Demande le count_tokens(passage) de la classe.
index_versionchaînecelui de la classeFait partie de l’identité de la récupération. Changez-le chaque fois que l’index est reconstruit.

Les réglages donnés ici remplacent ceux que déclare la classe. Un système par étapes enregistre lui-même ses artefacts retrieval/v1, context/v1 et citations/v1, si bien que records est refusé à côté de lui. Voyez Évaluation RAG.

evaluators

Chaque entrée prend un type et ces deux champs communs :

ChampTypePar défautCe que c’est
criterionchaîneobligatoire sauf si le type a une valeur par défautLe nom de ce qui est mesuré. Chaque critère est une métrique, et le metric: d’une règle le nomme.
on_execution_errormissing ou failmissingCe que compte, pour ce critère, un cas dont l’appel au système a échoué. missing le garde dans le dénominateur comme non observé ; fail le compte comme un échec.

fail ne s’applique qu’aux évaluateurs réussite/échec ; un évaluateur de score avec ce réglage est une erreur de configuration. on_execution_error est un champ YAML ; les classes d’évaluateurs du SDK ne prennent pas un tel argument, et un cas en erreur compte comme manquant.

Types d’évaluateurs

« Lit » liste ce dont dépend le verdict de l’évaluateur, qui est aussi ce sur quoi son jugement en cache est indexé. « SDK » nomme la classe dans oloproof.evaluators.

type YAMLLitSDKDemande un réseau ou une clé
exact_matchoutput, expectedExactMatchnon
containsoutput, expectedContainsnon
regexoutputRegexnon
json_schemaoutputJsonSchemanon
rubric_judgeinput, output, expectedRubricJudgeoui, un fournisseur de modèles
model_classifieroutput (ou le champ nommé par text), éventuellement premiseYAML seulementoui, un serveur compatible TEI
probability_judgele cas et la sortieYAML seulementoui, un fournisseur compatible OpenAI qui renvoie des log-probabilités
cascadecomme ses deux étapesYAML seulementoui
hit_rate, recall, mrr, ndcgartifacts.retrieval, expectedHitRate, Recall, MRR, NDCGnon
citation_validityartifacts.citations, artifacts.contextCitationValiditynon
groundedness_judgeinput, output, artifacts.contextGroundednessoui
citation_support_judgeinput, output, artifacts.context, artifacts.citationsCitationSupportoui
agent_max_stepsartifacts.agent_trajectoryAgentMaxStepsnon
agent_tool_calledartifacts.agent_trajectoryAgentToolCallednon
agent_no_tool_loopartifacts.agent_trajectoryAgentNoToolLoopnon
agent_tool_sequenceartifacts.agent_trajectory, expectedAgentToolSequencenon
agent_no_undeclared_toolartifacts.agent_trajectory, expectedAgentNoUndeclaredToolnon
agent_constraints_satisfiedartifacts.agent_trajectoryAgentConstraintsSatisfiednon
agent_routeartifacts.agent_trajectoryAgentRoutenon
agent_tool_permissionsartifacts.agent_trajectoryAgentToolPermissionsnon
agent_max_handoffsartifacts.agent_trajectoryAgentMaxHandoffsnon
predictive_correctle champ d’étiquette de output et de expectedPredictiveCorrectnon
predictive_recallcomme ci-dessusPredictiveRecallnon
predictive_precisioncomme ci-dessusPredictivePrecisionnon
predictive_absolute_errorcomme ci-dessus, numériqueAbsoluteErrornon
predictive_brierle champ de score de output, l’étiquette de expectedBriernon
predictive_log_losscomme ci-dessusLogLossnon
predictive_rankingcomme ci-dessusPredictiveRankingnon
pas de type YAMLartifacts.conversationConversationCompleted (SDK seulement)non
pas de type YAMLexpected, artifacts.conversationConversationJudge (SDK seulement)oui
pas de type YAMLce que vous déclarez@evaluator et CustomEvaluator (SDK seulement)à vous de voir

Un juge qui appelle un modèle hébergé envoie le contenu des cas à ce fournisseur et est facturé par lui. Les clés sont lues dans la variable d’environnement nommée dans api_key_env ; Oloproof ne les stocke jamais dans ces fichiers.

Évaluateurs déterministes

TypeChampTypePar défaut
exact_matchfieldchemin pointé dans la sortieabsent : la sortie entière
exact_matchexpected_fieldchemin pointé dans expectedabsent : le même que field
exact_matchstripbooléentrue
exact_matchcasefoldbooléenfalse
containsfield, expected_fieldcomme exact_matchabsent
regexpatternexpression régulièreobligatoire
regexfieldchemin pointéabsent
regexpass_ifmatch ou no_matchmatch
json_schemaschemaun JSON Schema en ligne, ou un chemin vers un fichier JSON relatif au projetobligatoire
json_schemafieldchemin pointéabsent

Juges modèles

rubric_judge, groundedness_judge et citation_support_judge partagent ces champs. rubric_judge exige exactement un de rubric_file ou rubric_text ; les deux juges RAG en prennent au plus un et utilisent sinon une grille intégrée. Leur criterion vaut par défaut groundedness et citation_support.

ChampTypePar défaut
provideranthropic, openai ou openai_compatibleobligatoire
modelchaîneobligatoire
rubric_filecheminabsent
rubric_textchaîneabsent
api_key_envnom de variable d’environnementANTHROPIC_API_KEY ou OPENAI_API_KEY
base_urlURLcelle du fournisseur
temperaturenombre0
max_tokensentier, au moins 1512
timeout_snombre supérieur à 060

probability_judge pose une question typée et lit les probabilités du modèle :

ChampTypePar défaut
provideropenai ou openai_compatibleobligatoire
modelchaîneobligatoire
questionchaîneobligatoire
formyes_no, choice ou scoreobligatoire
min_probabilitynombre dans (0, 1]obligatoire
optionsdictionnaire de réponse vers descriptionpour choice
pass_optionsliste de réponsespour choice
levelsdictionnaire de niveau vers description, du plus bas au plus hautpour score
pass_at_leastun niveaupour score
calibrationslope (supérieur à 0), intercept, from_versionabsent
api_key_env, base_urlcomme ci-dessusabsent
timeout_snombre supérieur à 060

cascade exécute d’abord un juge bon marché et fait remonter les cas incertains :

ChampTypePar défaut
firstune entrée probability_judgeobligatoire
thenune entrée rubric_judge ou probability_judgeobligatoire
escalate_betweendeux probabilitésobligatoire

Les étapes jugent le criterion propre à la cascade ; une étape qui en nomme un autre est refusée.

model_classifier note du texte avec un modèle entraîné sur un serveur compatible TEI :

ChampTypePar défaut
modelchaîneobligatoire
base_urlURLobligatoire
labell’étiquette du classifieur à lireobligatoire
min_score ou max_scorenombre dans [0, 1], exactement unobligatoire
textquel champ est classéoutput
premiseun second texte, pour les classifieurs de pairesabsent
api_key_envnom de variable d’environnementabsent
timeout_snombre supérieur à 030

Évaluateurs RAG

TypeChampTypePar défaut
hit_rate, recall, mrr, ndcgkentier, au moins 15 pour hit_rate et recall, 10 pour mrr et ndcg
hit_rate, recall, mrr, ndcgrelevance_unitdoc ou chunkdoc
hit_rate, recall, mrr, ndcgcriterionchaîne<type>_at_<k>, comme hit_rate_at_5
citation_validityrequire_citationsbooléenfalse
citation_validitycriterionchaînecitations_valid

Évaluateurs d’agents

TypeChampTypePar défaut
agent_max_stepsmax_stepsentier, au moins 1obligatoire
agent_tool_calledtool_namechaîneobligatoire
agent_tool_calledmin_callsentier, au moins 11
agent_no_tool_loopmax_repeatsentier, au moins 12
agent_tool_sequenceorderedbooléentrue
agent_constraints_satisfiedconstraintsliste de noms de contraintesvide
agent_tool_permissionspermissionsdictionnaire d’agent vers outils autorisésobligatoire
agent_max_handoffsmax_handoffsentier, 0 ou plusobligatoire

Chaque type d’agent a un criterion par défaut, si bien qu’on peut l’omettre : son propre nom de type, ou un nom construit à partir de son réglage (agent_steps_le_8, agent_tool_lookup_called, agent_handoffs_le_2). Voyez Agents et outils.

Évaluateurs prédictifs

TypeChampTypePar défaut
predictive_correct, predictive_recall, predictive_precisionpositiven’importe quelle valeur JSONtrue, ou celle du bloc predictive:
idemfieldchamp de sortielabel, ou predictive.label_field
idemexpected_fieldchamp attendulabel, ou predictive.expected_field
predictive_absolute_errortarget_rangedeux nombresobligatoire
predictive_absolute_errorfield, expected_fieldcomme ci-dessuslabel
predictive_brier, predictive_log_loss, predictive_rankingpositiven’importe quelle valeur JSONtrue, ou celle du bloc
idemfieldchamp de sortiescore, ou predictive.score_field
idemexpected_fieldchamp attendulabel, ou celui du bloc
predictive_log_lossclipnombre dans (0, 0.5)obligatoire

Un évaluateur prédictif qui n’écrit pas positive, field ou expected_field le prend dans le bloc predictive: ; une valeur qu’il écrit est conservée.

predictive

ChampTypePar défaut
label_fieldchaînelabel
score_fieldchaînescore
expected_fieldchaînelabel
positiven’importe quelle valeur JSONtrue
calibration_binsentier, au moins 110
thresholdsliste de nombresvide
averagemacro ou microabsent : pas d’agrégat

metrics

Chaque critère d’évaluateur est déjà une métrique. Une entrée metrics: en ajoute une de plus, distinguée par type.

typeChampsCe que c’est
quantileid, source, quantile dans (0, 1)Un quantile de latency_ms, input_tokens, output_tokens, cost_usd, agent_steps ou agent_tool_calls.
rankingid, criterion, statistic : roc_auc ou average_precisionUne statistique sur l’ordre des scores d’un critère de classement.
human_score, human_preferenceidRefusées : aucune méthode admise ne lit encore ces étiquettes.
cost_per_acceptedid, criterion, cost_ceiling_usd, cost_ceiling_sourceRefusée tant que son câblage n’a pas été admis par audit.
# 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.95

release.yaml

La politique de publication : quelles règles décident, et quelles décisions bloquent. Les réglages omis gardent leurs valeurs par défaut, si bien qu’une politique qui ne nomme que ses règles bloque quand même sur FAIL, INSUFFICIENT_EVIDENCE et MANUAL_REVIEW.

# release.yaml
version: 1
rules:
  - id: label_accuracy
    metric: correct_label
    min: 0.8
ChampTypePar défautCe que c’est
version11La version du format de fichier.
confidence_levelprobabilité0.95Le niveau de chaque intervalle que lit une règle.
block_onliste d’états de décisionFAIL, INSUFFICIENT_EVIDENCE, MANUAL_REVIEWLes états qui font bloquer la porte, et fixent le code de sortie.
warn_onliste d’états de décisionvideLes états qui avertissent sans bloquer. Ne doivent pas recouper block_on.
block_on_partial_runbooléentrueSi une exécution qui ne s’est pas terminée bloque, avec le code de sortie 5.
require_validated_evaluatorsbooléentrueSi une règle sur un juge modèle retient sa décision jusqu’à ce que le juge soit validé contre des étiquettes humaines. Les évaluateurs déterministes en sont exemptés.
minimum_evaluator_agreementnombre dans [0, 1]absentL’accord avec les étiquettes humaines qu’un juge doit atteindre, par sa borne inférieure, avant de pouvoir être validé.
maximum_evaluator_biasnombre dans (0, 1]absentL’écart maximal entre le taux de réussite d’un juge et celui des personnes avant qu’il puisse être validé.
allow_approximate_methodsbooléenfalseSi une règle peut décider sur un intervalle que le moteur marque comme approché (l’intervalle binaire en grappes). Sinon, elle lit MANUAL_REVIEW.
min_clustersentier, au moins 1020Avec moins de grappes que cela, une règle en grappes lit INSUFFICIENT_EVIDENCE.
difference_methodbounded_paired_difference@1 ou conditional_exact_paired_difference@1absent : la premièreQuelle méthode admise borne une différence appariée de taux binaires.
early_stoppingbooléenfalseExécuter les cas par lots et s’arrêter dès que chaque règle est décidée. Voyez Porte de CI.
early_stopping_seedentier, 0 ou plusabsentLa graine de l’ordre des cas.
early_stopping_batch_sizeentier, au moins 125Les cas par lot.
ruleslisteobligatoire, au moins uneLes règles. Voyez plus bas.
familieslistevideDes règles dont les faux FAIL sont contrôlés ensemble.
review_ruledictionnaireabsentRefusé : le câblage n’est pas encore admis.

rules

Une seule liste contient les deux sortes. Une règle d’exécution prend exactement un de min, max ou max_failures. Une règle de comparaison nomme son kind et décide une différence entre deux exécutions ; voyez Règles de comparaison.

ChampTypePar défautS’applique à
idchaîneobligatoiretoutes
metricun identifiant de métrique ou un critèreobligatoiretoutes
kindinterval_threshold, observed_count, superiority, non_inferiority, equivalencedéduit pour les règles d’exécutiontoutes
minnombreabsentrègles d’exécution : PASS quand la borne inférieure de l’intervalle vaut au moins cela
maxnombreabsentrègles d’exécution : PASS quand la borne supérieure de l’intervalle vaut au plus cela
max_failuresentier, 0 ou plusabsentobserved_count : un décompte sur la suite exécutée, sans intervalle
marginnombre supérieur à 0, dans les unités de la métriqueabsentnon_inferiority et equivalence ; refusé sur superiority
directionmin ou maxminnon_inferiority seulement : si plus haut ou plus bas est meilleur
max_missing_fractionnombre dans [0, 1]absentrègles d’intervalle et de comparaison
requires_manual_reviewbooléenfalsetoutes : la règle lit toujours MANUAL_REVIEW
scopeglobal ou un segmentglobalrègles d’intervalle et de comparaison
min_supportentier, au moins 1absentrègles de comparaison sur un segment

families

ChampTypePar défaut
idchaîneobligatoire
correctionholmholm
rulesliste d’identifiants de règlesobligatoire, au moins un
# 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.02

Sortes d’artefacts

Un artefact est un enregistrement typé qu’un système écrit à côté de sa sortie, comme ce qu’il a récupéré. Une sorte est un nom en minuscules avec une version facultative, qui correspond à ^[a-z][a-z0-9_]*(/v[1-9][0-9]*)?$. Les évaluateurs qui ont besoin d’un artefact le nomment, et une exécution dont le système ne déclare pas une sorte requise est refusée avant de commencer, plutôt que de compter chaque cas comme manquant.

SorteÉcrite parRequise par
retrieval/v1current_case().retrieval(...), un @rag_system, ou http.artifactshit_rate, recall, mrr, ndcg
context/v1current_case().context(...) ou un @rag_systemcitation_validity, groundedness_judge, citation_support_judge
citations/v1current_case().citations(...) ou un @rag_systemcitation_validity, citation_support_judge
agent_trajectory/v1current_case().agent_trajectory(...)chaque évaluateur agent_*, et les sources agent_steps et agent_tool_calls
conversation/v1current_case().artifact(CONVERSATION, ...)ConversationCompleted, ConversationJudge
stage_timings/v1un @rag_systemaucun ; affichée à côté de la latence

Un système appelable déclare les sortes qu’il enregistre dans records: (ou @system(records=...)) ; un système HTTP dans http.artifacts ; un système RAG par étapes enregistre les siennes.

Versions, clés de cache et invalidation

Oloproof réutilise le travail dont les entrées n’ont pas changé, et décide de ce que signifie « inchangé » à partir d’empreintes de contenu. Chacune est calculée par le moteur et enregistrée avec l’exécution.

EnregistrementRéutilisé quand ceux-ci sont identiques
Version du systèmename, version, config, et une empreinte du code : le source du module d’un appelable (ou chaque fichier reconnu par code_paths), les url, method, output_path et artifacts d’un système HTTP
Exécutionla version du système, l’input du cas et l’indice de réplique. Seules les exécutions réussies sont réutilisées.
Jugementla version de l’évaluateur (son type et chacun de ses réglages) et une empreinte de chaque champ qu’il lit, comme listé dans le tableau des évaluateurs
Analysele plan d’analyse, la métrique, le niveau de confiance, l’empreinte de la suite et chaque entrée qu’elle a comptée
Portechaque analyse, l’empreinte de la politique, si l’exécution s’est terminée, et le statut effectif de chaque évaluateur que citent les décisions

Ce qu’Oloproof ne peut pas voir, c’est à vous de le déclarer :

  • Le comportement d’un système HTTP réside sur le serveur. Changez system.version chaque fois que ce qui se trouve derrière l’URL change, sinon une ancienne sortie en cache tiendra lieu du nouveau système.
  • Les modules auxiliaires d’un appelable ne sont hachés que lorsque code_paths les reconnaît. Sans cela, modifier un module auxiliaire ne change pas la version.
  • Une méthode ou un objet appelable doit déclarer une version, et la version doit changer quand l’état de l’objet change.
  • Un index RAG est identifié par index_version ; changez-le quand l’index est reconstruit.
  • L’identité d’un juge modèle est faite de ses réglages, pas des poids du fournisseur. Un fournisseur qui met à jour le modèle derrière le même nom n’est pas détecté par le cache.
  • Un @evaluator personnalisé hache le fichier de module qui le définit, et ses jugements ne sont réutilisés d’une exécution à l’autre que lorsqu’il déclare cacheable=True. Les juges à grille intégrés peuvent être mis en cache ; les évaluateurs déterministes sont recalculés, ce qui coûte peu.

Le travail en cache réside dans le magasin local du projet, .oloproof/store.sqlite à côté de oloproof.yaml (ou sous OLOPROOF_HOME). Supprimer le magasin efface chaque cache et chaque exécution. Dans un espace de travail hébergé, le moteur ne réutilise pas les exécutions, jugements ou analyses en cache, parce qu’un push peut les écrire ; il recalcule.