メインコンテンツまでスキップ

Ninka 0.7.0 へのアップグレード

0.7.0 でプロジェクトから観測できる変更は 1 件、CLI コマンド名だけです。成果物は動かず、 ポリシーの意味も変わらず、runtime API にも手は入っていません。コマンドを打つのが CI と package script だけなら、作業はそれらのファイルの置換 1 回で終わります。

npm install ninka-authz@0.7.0

CLI コマンド名の変更

npm パッケージ名とCLIコマンド名を ninka-authz に統一しました。

コマンド
0.7より前npx ninka compile
0.7以降npx ninka-authz compile

npmパッケージ名は引き続き ninka-authz です。サブコマンドの名前・フラグ・終了コードはいずれも そのままで、変わったのはその手前に置く実行ファイルの名前だけです。

この変更により、ninka-authz がローカルに存在しない環境で npx ninka が無関係な npm package ninka を解決し得る曖昧さをなくします。Ninka を一度も install していないプロジェクトでも npx ninka docs は成功し、まったく別のことをしていました。これを注意書きとして記述すれば経路は 残ったままになるので、経路そのものを無くしました。パッケージとコマンドで名前は 1 つ、 別のものへ解決する余地はありません。

互換のための shim はありません。ninka を 2 つ目の bin として公開することも、alias も redirect も しません。動き続ける旧コマンドは、終わらない移行だからです。

変更するもの

ninkaコマンドとして実行している箇所だけを変更します。

npx ninka init → npx ninka-authz init
npx ninka compile → npx ninka-authz compile
npx ninka build → npx ninka-authz build
npx ninka verify → npx ninka-authz verify
npx ninka docs → npx ninka-authz docs
npx ninka explain → npx ninka-authz explain

確認すべき場所を、影響が出る順に挙げます。

  1. CI。 ninka verify を呼んだままの step は、アップグレード後の最初の実行で 「command not found」で落ちます。いちばん大きな音を立て、いちばん安く直せます。
  2. package.json の scripts。 落ち方は同じで、手元に一段近いだけです。
  3. AGENTS.md 生成された規約は、コンパイルのコマンドを名前で指示しています。init は 新しい名前を書き出しますが、既にある規約は書き換えません。既存の AGENTS.md は コミットした行をそのまま保持するので、そこは自分で直してください。古い規約に従うエージェントは、 認可をインラインで書く代わりに存在しないコマンドを報告しますが、そこから先へは進めません。
  4. 自分たちの runbook や README。

ninka/ 配下は何も変わりません。workspace ディレクトリ、ninka/out/ の成果物、Consumer Projection が export する名前(createNinkapolicies)、ninka-authz/runtime の import はいずれも そのままです。ブランドは引き続き Ninka で、名前が変わったのは実行ファイルだけです。

確認

npx ninka-authz verify
✔ invoice-access: match (tegata_hash c2b55b92fb53…)
✔ src/generated/ninka.ts: Consumer Projection matches (1 policy)
verify: all artifacts match

成果物が一致していればアップグレードは完了です。0.7.0 は何も作り直しません。作り直しが要るのは 通常の理由(generated_by が各成果物を作ったリリースを記録している)によるものだけなので、 その provenance を最新にしたいときに npx ninka-authz build を実行して結果をコミットしてください。

関連項目

  • 0.8.0 へのアップグレード:次のアップグレード。Consumer Projectionの参照構文が 両言語で変わります。
  • CLI:新しい名前でのコマンド全体。
  • 0.6.0 へのアップグレード:一つ前のアップグレード。成果物が動くもので、 当時のリリースのコマンド名で書かれています。