Compétence d'agent InvariantEval
InvariantEval applique les invariants que vous déclarez. Il ne rend pas un agent « correct » et ne réécrit pas les sorties à votre place. La seule affirmation honnête : votre agent exécute vos règles de sécurité déclarées sur chaque sortie et refuse de finaliser lorsqu'un champ verrouillé a été automatiquement rempli sans confirmation humaine.
Quand utiliser cette compétence
À utiliser avant de finaliser toute sortie JSON structurée (ou similaire) lorsque :
- Le domaine comporte des champs verrouillés déclarés (succès/échec, statut de conformité, etc.)
- Vous possédez (ou avez besoin) d'un
suite.yamlavecfield_policieset des assertions d'invariants - Un humain est censé posséder certains champs et le modèle ne doit pas les renseigner volontairement
N'utilisez pas cette compétence pour deviner des invariants. Votre travail consiste à rendre leur déclaration sans friction, non à les inférer.
Flux de travail
1. Localiser ou créer une suite déclarée
- Trouvez un fichier
suite.yamlexistant dans le projet, ou - Copiez
suite.template.yamldans le projet et demandez à l'utilisateur de remplirfield_policies,equivalence_classesetassertions.
N'inventez jamais de champs verrouillés sans déclaration de l'utilisateur dans la suite.
2. Exécuter la vérification d'invariants avant de finaliser
Vous disposez de la sortie brute parsée du modèle et de la sortie finale prévue. Exécutez :
python agent-skill/invarianteval/check.py \
--suite path/to/suite.yaml \
--case-id agent-check \
--model-parsed /tmp/model_parsed.json \
--final-output /tmp/final_output.json \
--human-confirmed /tmp/human_confirmed.json
Écrivez les fichiers JSON à partir du tour en cours. --human-confirmed est facultatif
(utilisez {} lorsque rien n'a été explicitement confirmé).
La suite doit contenir un cas avec le --case-id donné (par défaut : agent-check)
et les assertions que vous souhaitez voir appliquées.
3. Si la vérification échoue : ARRÊTEZ
- Ne finalisez pas, ne validez pas et ne présentez pas la sortie comme terminée.
- Faites remonter l'échec exact de l'invariant depuis la sortie CLI (par exemple
never_auto_filled[pass_fail_result]). - Exigez l'une des actions suivantes :
- L'utilisateur modifie la sortie finale pour supprimer ou corriger la violation, ou
- L'utilisateur confirme explicitement le champ (
human_confirmeddans le fixture), ou - L'utilisateur met à jour la suite déclarée si la règle était erronée (rare).
4. Si la vérification réussit : continuez
Finalisez uniquement après un code de sortie 0.
Alternative MCP
Si l'environnement dispose de l'extension [mcp] installée, privilégiez
l'outil MCP check_invariants pour les mêmes entrées. Voir docs/mcp.md.
Cadre honnête (obligatoire)
- Dites : « invariants déclarés », « refuse de finaliser », « champ verrouillé rempli automatiquement »
- Ne dites jamais : « auto-correction », « rend l'agent correct », « inférer automatiquement des invariants »