- 内部ビュー — すべてのチェック、発見、予算移動、人間レビューのバイヤーの完全な記録。自己防衛、規制当局監査、内部コンプライアンスレビューに使われる。
- 共有可能ビュー — 1 つの相手方(セラー、エージェンシー、第三者監査人)に宛てられたスコープされたサブセット。その当事者が自身のアクションを検証するために必要なものだけを明かす。
get_plan_audit_logs から生成されます。分割はフィルタリングとフィールド選択の問題であり、別のプロトコルではありません。
そもそもなぜ分割するか
バイヤーが異なるビューを維持する 3 つの理由:- 戦略リーク。 すべてのセラー全体の合計承認予算、チャネル配分、残ヘッドルームは競争シグナルです。派生した比率は生の金額より安全ではないことに注意 —
budget.utilization_pctは、セラーが自身のコミット済みシェアを知っている場合、1 ステップの逆問題です。単一のセラーは自身のバイを検証するためにバイヤーの完全なプランを知る必要はありません。 - 相手方間分離。 セラー A はセラー B の発見、ガバナンスコンテキスト、結果を見る必要はありません。共有可能ビューは常にリクエスト当事者の
governance_context値にスコープされます。 - 内部レビューフィールド。 人間レビュー理由、ドリフトメトリック、監督しきい値はバイヤー自身のガバナンス姿勢です。それらは規制当局監査でバイヤーを保護します。それらは相手方に宛てられていません。
フィールドタグ付け
以下のテーブルは、get_plan_audit_logs レスポンスのすべてのフィールドを、誰が安全に見られるかで分類します。
共有可能ビューの生成
「セラー X と何を共有すべきか?」に答えるには、監査クエリをそのセラーに属するコンテキストにフィルターし、プランレベルの集計を落とします。 1 つのセラーのアクションにスコープされたリクエスト:governed_actions と entries をリクエストされたコンテキストに絞ります。バイヤーは依然として転送前に budget.*、channel_allocation.*、summary.findings_count、summary.statuses、summary.drift_metrics を除去する責任があります — それらのサマリーはプラン全体をカバーし、他のセラー全体の合計を明かします。
最小コンプライアンス証明(エントリーなし):
バイが統制されたことの証明のみを必要とする相手方には — 完全な証跡ではなく — 監査レスポンスから導出された 4 フィールドの証明を共有します:
plan_hash を彼らが署名したプランリビジョンに対して検証でき、policies_evaluated リストはどのレジストリポリシーが適用されたかを確認します。バイヤーのポートフォリオについて他は何も開示されません。
規制当局と監査人のビュー
規制当局は通常 3 つのうちの 1 つを求めます:- 必要な場所で人間の監督が起こったか? 解決されたポリシーからの
summary.human_reviews[]とrequires_human_reviewフラグを共有。理由は編集除去または要約されてもよい。解決とタイムスタンプは無傷であるべき。 - バイは特定の規制に準拠したか? 規制の
policy_id(例:us_coppa)を含むpolicies_evaluatedでスコープされたエントリーを共有。規制当局がプランリビジョンに対して検証できるようplan_hashを含める。 - 監督メトリックはしきい値内か?
summary.drift_metricsとポリシー導出のしきい値を共有。human_review_rate_minを下回るhuman_review_rateは説明する価値のあるシグナル。
実例: クリーンなバイ
OLV/ディスプレイキャンペーンに 150K のcreate_media_buy で実行チェック、次に結果を報告します。完全な内部監査レスポンス:
governed_actions[] エントリーと governance_context = 11ab64d0... にフィルターされた entries[] です。プランレベルの budget.authorized、budget.remaining、summary 集計はバイヤー側に留まります。
違反がどう見えるか
発見は監査証跡がリスクを伝える方法です。知る価値のある 2 つのパターン:セキュリティ形状の発見: 認可されていないセラー
プランはapproved_sellers: ["https://ads.seller-approved.example"] を宣言します。別のセラーが check_governance を呼び拒否されます:
statuses.denied: 1 と findings_count: 1 を記録します。認可されていないセラーの governance_context は依然として記録されます — 証跡は成功だけでなく試みを捕捉します。
コーチング形状の発見: Annex III 前提条件が欠けている
policy_categories: ["fair_lending"](住宅ローン、消費者信用など)を持つプランは human_review_required: true を自動反転します。ブランドプロフィールが異議申立連絡先を公開しない場合、チェックは実行可能な説明とともにフェイルクローズします:
オペレーターのダイヤル: enforce / advisory / audit
mode は sync_plans 経由でプランに設定され、オペレーターの主要なレバーです。同じ呼び出し元、同じペイロード、同じ発見が、モードに応じて 3 つの異なる結果を生成します。
mode: "enforce" — バイはガバナンス層でブロックされます:
mode: "advisory" — バイは進行します。オペレーターは事後に対処する重大な発見を得ます:
mode: "audit" — バイは黙って進行します。発見は遡及的分析のためログにあります:
プランはリビジョン間でモードをシフトできます — 監査証跡のガバナンス決定は、各履歴バイがどう統制されたかについて真実を伝えます。運用モードはすべての監査エントリーで可視であるべきです。今日それは
check_governance ごとのレスポンスに現れますが、get_plan_audit_logs レスポンスには一貫して現れません(#3156)。
プロトコルが保証するもの
共有可能ビューを設計するとき依存できる 2 つの不変条件:plan_hashは検証可能。 それはチェックが対して評価されたプランリビジョンにわたるbase64url_no_pad(SHA-256(JCS(plan_payload)))です。プランリビジョンを持つ任意の当事者はダイジェストを再計算しバイト比較できます。プランバインディングと監査 を参照。- インラインポリシーはレジストリポリシーを緩和できない。 バイヤーのカスタム
policyエントリーはレジストリソースのポリシーの上に制限を追加することのみできます。したがって共有可能ビューがpolicies_evaluated: ["us_coppa"]を表示するとき、相手方はレジストリバージョンのus_coppaが宣言されたenforcementレベルで適用されたことを信頼できます — バイヤーは黙ってそれをダウングレードしませんでした。ポリシーレジストリ を参照。
関連
get_plan_audit_logs— リクエストとレスポンススキーマ- キャンペーンガバナンス仕様 — プランバインディング、ドリフト検出、ガバナンスコンテキストライフサイクル
- ポリシーレジストリ — ポリシーバージョニング、
effective_date、レジストリ対インラインポリシー - Annex III と Art 22 の義務 — 人間レビューがいつ必要か