Equiv:AIリファクタリングがコードの動作を変更していないか確認
Equivは、関数のリファクタリング前後で動作が変わっていないかを検証する決定的チェッカーです。同じ入力を生成して両バージョンで実行し、差異があれば報告し、再現可能な署名付きレシートを提供します。GitHub ActionおよびCLIツールとして利用可能。
AIが生成するコードが増えるにつれて、AIによるリファクタリングが意図しない動作の変更を引き起こさないことを確認することが重要になっています。Equivはまさにそのためのツールです。リファクタリング前後の関数に対して、決定的に生成された同じ入力を与え、出力を比較します。出力が異なる場合は、差異を発生させた具体的な入力が報告されます。同一であれば、再現可能で署名付きのレシートが生成されます。このレシートはどのマシンでも再検証でき、モデルの意見に依存しません。
動作原理
入力生成と判定は、固定シードからRustで計算されます。言語ランタイムは評価器としてのみ使用され、レシートに影響を与える決定は一切行いません。レシートはホスト間で同一であり、ローカルのed25519鍵またはSigstoreのキーレス署名(OIDC)で署名できます。キーレスパスは署名を検証可能なCI IDにバインドし、秘密鍵を保存する必要がありません。ツールは単一の静的バイナリで、ランタイム依存関係がなく、macOS、Linux、Windows向けにプリビルドされています。
クイックスタート:PRゲート
リポジトリルートにマニフェストファイル(.equiv-review)を作成し、動作を維持すべき関数とその引数型をリストします。各行の形式は「ファイルパス : 関数名 : 引数型」で、引数型はint、str、list[int]をカンマ区切りで指定します。例:
src/math.py : total : int
src/utils.py : process : str, list[int]次に、.github/workflows/にワークフローファイルを追加します。
on: pull_request
permissions: { contents: read, pull-requests: write, id-token: write }
jobs:
review:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with: { fetch-depth: 0 }
- uses: Neelagiri65/[email protected]
with: { keyless: "true" }リリースタグ(@v0.1.0)にピン留めすることで、実行の再現性を確保し、予期せぬ変更を防ぎます。
各PRにはコメントが投稿されます。変更されたすべての関数がベースブランチのバージョンと比較されます。動作を保持する変更はパス、そうでない場合は差異が報告され、チェックが失敗します。レシートはSigstoreのキーレス署名で署名され、cosignで検証できます。
CLI
以下のコマンドでインストール:
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/Neelagiri65/equiv/releases/latest/download/equiv-cli-installer.sh | sh使用例:
equiv review candidate.py reference.py
equiv verify-receipt終了コード:0(等価)、1(反例あり)、2(チェック不可)。
範囲と制限
Equivは有界ランダムテストを実施するものであり、網羅的な検証ではありません。テストに合格しても完全に正しいとは限らず、生成されなかった入力でしか現れないエッジケースを見逃す可能性があります。また、意図、アーキテクチャ、セキュリティをチェックするものではなく、比較対象のない新機能には適用できません。合格結果はテストした入力でのみ動作が保存されたことを意味し、変更が正しいことを保証するものではありません。
現在サポートされている引数型はint、str、list[int]です。
技術詳細
入力生成と判定は、固定シードからRustで計算されます。言語ランタイムは評価器としてのみ使用されます。レシートはすべてのホストで同一です。レシートはローカルのed25519鍵またはSigstoreのキーレス署名(OIDC)で署名できます。キーレスパスは署名を検証可能なCI IDにバインドし、秘密鍵を保存する必要がありません。ツールは単一の静的バイナリで、ランタイム依存関係がなく、macOS、Linux、Windows向けにプリビルドされています。
ライセンスはApache-2.0です。プロジェクトはRustワークスペース(equiv-core、equiv-engine、equiv-review、equiv-cli)とドキュメント(docs/signing-model.md、docs/RELEASING.md)で構成されています。
まとめ
AIによるコード生成が一般的になる中、Equivはコードのリファクタリングが動作を変更しないことを確認するための決定的な検証手段を提供します。署名付きレシートにより再現可能な検証が可能で、CI/CDパイプラインやローカル開発に適しています。完全な正確性を保証するものではありませんが、動作等価性の強力な保証を提供します。