CGF
コードに署名するように、コンプライアンスに署名する。
これは何か
コンプライアンス・グラフ形式 (CGF) は、ソフトウェア成果物に関する暗号学的証拠の可搬コンテナです。ディスク上では .cgfevidence として、有向グラフを格納します。すべてのノードは型付き (Code.File、Model、Dataset、Policy、Endpoint、Risk、Control、Approval、Deploy、Disclosure など)、すべてのエッジは型付き関係であり、クレームパックが走査します。
バンドルは Ed25519 マルチ署名と、任意の RFC 3161 信頼タイムスタンプで封印されるため、今日作成したドシエは元の発行者のインフラを信頼せずに何十年経っても検証可能です。 v1.0 は EU AI Act 高リスク (第9・13・15条)、GDPR 第30条、SOC 2 Common Criteria、そして CGF-JP リージョナルプロファイルを同梱しています。
パイプライン全体は4つの動詞です: ingest → check → bundle → verify。
なぜ存在するか
今日のコンプライアンスは並行宇宙です。エンジニアはgitでコードを書き、コンプライアンスチームはエンジニアの説明をWord文書に書き写します。両者は接触せず、次のコミットの瞬間に書類は腐ります。
CGFはコンプライアンスをビルドに折り込みます。リリースタグに署名する同じキーが、そのリリースを記述するグラフに署名します。 リーダーを持つ監査人は1年分の証拠を数秒で検証でき、持たない監査人もグラフから生成された人間可読のナラティブと、ベンダーソフトウェア不要のJSONを読めます。
二つのリリースは二つのバンドルを生み、二つのバンドルは構造化された 差分 を生みます。追加されたモデル、削除された開示、変更された承認——レビューはゼロから始まらなくなります。
コード例
# .cgfevidence (tar+zstd)
# ├── manifest.json
# ├── graph.json deterministic, content-addressed nodes/edges
# ├── claims.json structured pack results
# ├── narrative.md rendered from graph + claims
# ├── signatures/
# │ ├── ed25519-ops@acme.sig
# │ └── ed25519-cto@acme.sig
# └── timestamp/
# . └── freetsa.tsr RFC 3161 token
{
"manifest": {
"format": "cgf",
"version": "1.0",
"rootSha256": "9f3a…d27e",
"createdAt": "2026-04-12T09:14:22Z",
"ingestor": { "name": "@daitai/cgf", "version": "1.0.0-rc.1" }
},
"signatures": [
{ "alg": "Ed25519", "by": "ops@acme", "sig": "2c7b…f441" },
{ "alg": "Ed25519", "by": "cto@acme", "sig": "8e1d…0aa3" }
],
"timestamp": {
"alg": "RFC3161",
"tsa": "https://freetsa.org/tsr",
"time": "2026-04-12T09:14:25Z"
}
}