À propos du projet
Falsify résout un problème étroit mais concret de l’évaluation ML : une affirmation telle que « 94 % d’exactitude » est souvent rapportée après coup, sans trace indiquant au préalable quelle métrique, quel jeu de données, quel seuil ou quelle graine était prévu. La réponse de l’outil est le préenregistrement : engager l’affirmation sous forme de manifeste canonicalisé, le hacher avec SHA-256, puis vérifier le résultat observé par rapport à ce hachage verrouillé.
Le flux principal comporte deux commandes. `falsify lock claim.prml.yaml` canonicalise le manifeste et écrit un fichier d’empreinte sidecar ; `falsify verify claim.prml.yaml --observed 0.934` compare la valeur observée au seuil verrouillé. Les codes de sortie constituent l’API : 0 pour PASS, 10 pour FAIL lorsque la valeur est sous le seuil, et 3 pour TAMPERED lorsque la spécification a été modifiée après verrouillage et que le hachage ne correspond plus. La CI peut utiliser ces codes comme condition de validation.
Le format de manifeste est PRML (Pre-Registered ML Manifest), avec la v0.1 stable et la v0.2 gelée. Le dépôt héberge la spécification, une suite de conformité et quatre implémentations de référence — Python (paquet PyPI `falsify`), JavaScript (paquet npm `falsify-js`), ainsi que des implémentations Go et Rust conservées uniquement dans le dépôt. Le README indique que les quatre sont équivalentes au niveau octet sur 21 vecteurs de conformité (13 pour v0.1 et 8 pour v0.2), avec une suite supplémentaire de 92 vecteurs de cas limites dérivée de la grammaire formelle. Un travail CI multilingue exécute les vecteurs à chaque push et quotidiennement.
Au-delà de la CLI principale, une commande intégrée `falsify-engine` propose un flux de travail d’affirmation (`init`, `run`, `verdict`, `guard`, `trend`) sur des spécifications `.falsify/<name>/`, incluant un garde-fou commit-msg et cinq modèles de démarrage pour l’exactitude, la latence, le score de Brier et l’accord d’un juge LLM. Le README précise qu’il s’agit d’un outil distinct de la CLI de manifeste PRML, bien qu’ils partagent la même installation.
La surface d’intégration décrite dans le README inclut un schéma JSON dans le catalogue SchemaStore pour l’autocomplétion dans les éditeurs, un registre web pour hacher des manifestes sans rien installer, une GitHub Action composite pour la CI, un plugin MLflow qui balise les exécutions avec les hachages de manifeste, et des passerelles d’exemple exécutables pour dix harnais d’évaluation (deepeval, lm-eval-harness, promptfoo, opik, langfuse, laminar, mastra, hud, braintrust, lighteval). Le README précise lesquels de ces exemples fonctionnent entièrement hors ligne et lesquels s’arrêtent à la frontière d’un backend. Il existe également un exemple d’attestation CycloneDX 1.6 et une passerelle in-toto/ITE-6.
Le projet assume franchement son périmètre : PRML ne prouve pas qu’un résultat ML est vrai, mais seulement qu’une affirmation précise a été engagée avant de pouvoir être réécrite secrètement. Le README documente aussi une prédiction publique échouée (Lock n°2 résolu avec 0 contributeur sur 3) et renvoie vers un bilan post-mortem. La licence est MIT pour le code et Community Specification License 1.0 pour la spécification, avec des réserves de marque indiquées. Python 3.11+ est requis.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.