Skip to main content
パックはGitHubリリースに添付された3つのファイルで構成されます。failproofai pack build は既存のポリシーファイルからこの3つを生成します。

1. ポリシーを書く

カスタムポリシーと同じAPIを使った1つのファイルで記述します。パック固有のフィールドが2つあります:
defaultEnabled を省略した場合、デフォルトは false になります。通常の failproofai pack add は、マークしたポリシーのみを有効化します。見知らぬパックのすべてのポリシーを無人でインストールするかどうかは、インストーラーがユーザーに代わって決める判断ではありません。
エントリは自己完結した1つのファイルでなければなりません。ダイジェストが固定されるのはエントリのみであるため、ローカルファイルをインポートするパックは、ダイジェストが実行内容をカバーしていると正直に主張できません。先にバンドル(esbuildbun buildrollup)し、バンドルからパックをビルドしてください。pack build はローカルインポートを検出した場合、守れない約束を出荷するのではなくビルドを拒否します。

2. リリースアセットをビルドする

3つのファイルを生成し、すべてのポリシーをローダー自身のルールで事前に検証します。インストールできないパックは、修正できるこの段階で失敗します: ビルド時に拒否されるケース:publisher/name 形式でないid、/ を含むポリシー名、alwaysOn を宣言するポリシー、descriptioncategorymatch のいずれかが欠けている場合、何も登録しないエントリ、ローカルファイルをインポートするエントリ。

3. リリースに添付する

ビルドと同じバージョンでリリースにタグを付け、3つのファイルをリリースアセットとして添付します:
誰でも以下でインストールできます:
アセット名は固定されています。コンシューマーのCLIはAPIコールや探索なしに、この名前からURLを構築します。

新しいバージョンを公開する

新しい --version でビルドし、新しいリリースにタグを付け、3つのアセットを再度添付します。コンシューマーは同じ pack add を実行すれば、以前選択したサブセットが引き継がれます。オフにしたポリシーはアップグレード後もオフのままです。 ポリシーの name を変更すると破壊的変更になります。オフにしていたマシンは存在しない名前をオフにしようとし、新しい名前は defaultEnabled の設定に従って有効化されます。

ユーザーが信頼していること

SHA256SUMS はアーティファクトと同じリリースに含まれるため、公開したバイトであることは証明できますが、あなたが誰であるかは証明しません。リポジトリへの書き込みアクセスを持つ人は両方のファイルを書き換えることができます。ユーザーを守るのは、インストール時にダイジェストが固定されるという仕組みです。インストール後に公開内容が改ざんされても、ユーザーに影響はありません。 書き込みアクセスを自分で管理するリポジトリから公開し、パックリリースをパッケージの公開と同様に扱ってください。

適用前に観察する

マニフェストには "effect": "observe" を宣言できます。このポリシーは実行されますが、判定は記録されるだけで破棄されます。何もブロックしません。実際のトラフィックに対して新しいルールを計測し、誰の作業も妨げることなく検証するための方法です。