認可コンパイラ (Authorization Compiler)
認可コンパイラは、レビュー可能な認可仕様を実行可能なポリシー成果物へ変換します。Ninka では、その仕様が 手形 (Tegata)(小さな宣言的ドキュメント)です。境界は 手形 → 検証 → Rego/WASM → ランタイム と流れます。あなたがレビューし承認するのは手形であり、適用コードを手書きすることはありません。
決定性がすべて
コンパイルは決定的で、ドキュメントの純粋関数です。同じ手形を同じバージョンの ninka-authz でコンパイルすれば、常にバイト単位で同一の Rego/WASM が得られます。乱数・タイムスタンプ・環境に依存しません。各手形はフィンガープリント(tegata_hash)を持つため、フィンガープリントを承認することは、実行されるコードをそのまま承認することと等価です。レビューしたものと実行されるものの間に隙間はありません。出力が固定であるため、ninka verify は CI でバイト単位の一致を要求でき、改ざんや古い成果物は決して通りません。
OPA 上で動く
Ninka は Rego/WASM にコンパイルし、それを業界標準のエンジン OPA 上で実行します。プロセス内で、リクエストごとに、フェイルクローズで動作します。Ninka は新しいランタイムやポリシー言語ではありません。OPA の上に、欠けていた層 — ポリシーの作者(多くは AI エージェント)と、判定を適用するコードとの間の、人間が承認可能な契約 — を足します。
構成要素
- 手形 (Tegata) — あなたが書き、承認する宣言的なポリシー。
- 関所 (Sekisho) — 手形の意味を検査し、危険なものを一行のエラーで却下するコンパイル時の検査。
流れはこうです。あなた(または AI エージェント)が手形を書く → 関所が検査する → 差分を承認する → コンパイラがバイト単位で同一の Rego/WASM を出力する → OPA がリクエストごとに適用する。