このプロジェクトについて

FalsifyはML評価における限定的だが具体的な問題に対処する。「精度94%」のような主張が事後的に報告され、どの指標、データセット、閾値、シードを事前に意図していたかの記録がないことが多い。このツールの答えは事前登録であり、主張を正規化されたマニフェストとしてコミットし、SHA-256でハッシュ化したうえで、観測結果をその固定されたハッシュと照合する。 中心となる流れは2つのコマンドだ。`falsify lock claim.prml.yaml` はマニフェストを正規化し、サイドカーダイジェストを書き出す。`falsify verify claim.prml.yaml --observed 0.934` は観測値を固定された閾値と比較する。終了コードがAPIとして扱われ、PASSは0、閾値を下回るFAILは10、ロック後に仕様が編集されてハッシュが一致しなくなったTAMPEREDは3である。CIはこれらのコードに基づいてゲートできる。 マニフェスト形式はPRML(Pre-Registered ML Manifest)で、v0.1は安定版、v0.2は凍結版である。リポジトリには仕様、適合スイート、4つのリファレンス実装が置かれている。Python(PyPIの `falsify`)、JavaScript(npmの `falsify-js`)、そしてGoとRustの実装はリポジトリ内専用である。READMEによれば、4実装は21個の適合ベクトル(v0.1が13、v0.2が8)すべてでバイト等価であり、形式文法から導出された追加の92ベクトルからなるエッジスイートもある。多言語CIジョブが各プッシュ時と毎日、これらのベクトルを実行する。 中心的なCLIに加えて、同梱された `falsify-engine` コマンドは、`.falsify/<name>/` 仕様を対象にした主張ワークフロー(`init`、`run`、`verdict`、`guard`、`trend`)を提供する。これにはcommit-msgガード、および精度、レイテンシ、Brierスコア、LLM判定者の一致率向けの5つのスターターテンプレートが含まれる。READMEは、インストールを共有しているものの、これがPRMLマニフェストCLIとは別のツールであると明確に述べている。 READMEに記載された統合面には、エディタの自動補完向けにSchemaStoreカタログに登録されたJSON Schema、何もインストールせずにマニフェストをハッシュ化できるブラウザベースのレジストリ、CI向けのコンポジットGitHub Action、マニフェストハッシュでランをタグ付けするMLflowプラグイン、10種類の評価ハーネス(deepeval、lm-eval-harness、promptfoo、opik、langfuse、laminar、mastra、hud、braintrust、lighteval)向けの実行可能なサンプルブリッジがある。READMEは、これらの例のどれが完全にオフラインで動作し、どれがバックエンド境界までの接続にとどまるかを示している。また、CycloneDX 1.6の構成証明例と、in-toto/ITE-6ブリッジもある。 プロジェクトは適用範囲を率直に示している。PRMLはMLの結果が真であることを証明するのではなく、特定の主張が後から黙って書き換えられる前にコミットされたことだけを証明する。READMEには失敗した公開予測(Lock #2は貢献者0/3で確定)も記録され、ポストモーテムへのリンクがある。ライセンスはコードがMIT、仕様がCommunity Specification License 1.0であり、商標留保が明記されている。Python 3.11以上が必要である。