GitHub + Kubernetes + Argo CD + Terraform 環境において、変更管理統制 (Change Management Controls) を継続的に評価する CLI。
花押は文書の真正性を証明する署名。KAO は本番に反映された変更について、誰が・誰が承認し・何がデプロイされ・適切な統制のもとで行われたかを証跡として収集・評価する。
| HADO | KAO | |
|---|---|---|
| タイミング | リリース前 | リリース後 |
| 問い | 変更を出してよいか | 変更は適切な統制のもとで出されたか |
- 証跡を収集する
- 証跡を評価する
- 評価結果を出力する
| 証跡 | 収集元 (v1) |
|---|---|
repo_control |
GitHub(Branch Protection, CODEOWNERS 等) |
code_change |
GitHub(default branch へマージされた PR) |
app_deployment |
Argo CD |
infra_deployment |
Terraform(GitHub Actions 上の apply) |
CM-001〜010 により統制を評価する。詳細は 設計ドキュメント を参照。
go install でインストール:
go install github.com/keyskey/kao/cmd/kao@latestCI やチーム運用ではバージョンを pin する:
go install github.com/keyskey/kao/cmd/kao@v0.1.0GitHub Releases からプリビルドバイナリを配布する。対応アーカイブ:
- darwin-arm64
- darwin-amd64
- linux-arm64
- linux-amd64
最新版をインストール:
curl -fsSL "https://raw.githubusercontent.com/keyskey/kao/main/scripts/install.sh" | sh特定バージョンをインストール:
VERSION=v0.1.0 curl -fsSL "https://raw.githubusercontent.com/keyskey/kao/main/scripts/install.sh" | shカスタムインストール先:
INSTALL_DIR="$HOME/.local/bin" curl -fsSL "https://raw.githubusercontent.com/keyskey/kao/main/scripts/install.sh" | sh毎日 00:00 UTC に kao run daily を実行する。証跡と評価結果は PostgreSQL(推奨)または filesystem backend に保存する。
kao run daily --config kao.yaml --date 2026-06-05認証情報は Configuration に平文で書かず、環境変数(GITHUB_TOKEN, ARGOCD_SERVER, ARGOCD_TOKEN, DATABASE_URL 等)から注入する。go.mod の argoproj/argo-cd/v2 は本番 Argo CD サーバーのバージョンに合わせて pin する。
- docs/design-doc.md — v1.0 (Accepted)
# ビルド
make build
# PostgreSQL 起動とスキーマ適用
docker compose up -d
make migrate
# 環境変数
export GITHUB_TOKEN=ghp_...
export DATABASE_URL='postgres://kao:kao@localhost:5432/kao?sslmode=disable'
# 日次ジョブ(GitHub 証跡のみ、MVP)
./bin/kao run daily --config kao.local.yaml --date 2026-06-05
# 個別コマンド
./bin/kao collect repo-control --config kao.local.yaml --output -
./bin/kao collect code-change --config kao.local.yaml --date 2026-06-05 --output -
./bin/kao evaluate --config kao.local.yaml --date 2026-06-05 --output -ファイル入力での評価(storage 不要):
./bin/kao evaluate --input files \
--repo-control testdata/repo_control.jsonl \
--code-change testdata/code_change.jsonl \
--output -KAO は Semantic Versioning に従う。
pre-1.0 フェーズでは 0.x でバージョニングし、統制評価ロジックを実運用で検証する。
PATCH(0.1.0->0.1.1): バグ修正のみMINOR(0.1.1->0.2.0): 新機能・挙動変更・破壊的変更を含むMAJOR(1.x): インターフェースと出力が安定した後に使用
0.x のマイナーバージョン間ではインターフェースや出力形式が変わる可能性がある。タグは vX.Y.Z 形式(例: v0.1.0)。
v* タグの push で GoReleaser が GitHub Release を自動作成する。リリースノートはタグ間の git コミットから生成される。
次の SemVer タグを作成:
make tag-patch
make tag-minor
make tag-major
# or
make tag-next TYPE=patch
make tag-next TYPE=minor
make tag-next TYPE=major初回リリース例:
make tag-minor
git push origin v0.1.0push 後:
- GitHub Actions workflow
releaseが自動実行される - GitHub Release が作成される
- OS/arch アーカイブと
checksums.txtがアップロードされる
リリースノートをきれいに保つため、コミットメッセージには feat:, fix:, refactor:, perf: などのプレフィックスを推奨する。
v0.1.0 リリース。repo_control / code_change / app_deployment / infra_deployment の収集・評価・PostgreSQL/filesystem 保存に対応(MVP)。