Skip to main content
プロトコルは、バイヤーが相手方と何を共有しなければならないかを義務付けません。しかし同じ監査証跡の 2 つの異なるビューを生成するプリミティブを与えます:
  • 内部ビュー — すべてのチェック、発見、予算移動、人間レビューのバイヤーの完全な記録。自己防衛、規制当局監査、内部コンプライアンスレビューに使われる。
  • 共有可能ビュー — 1 つの相手方(セラー、エージェンシー、第三者監査人)に宛てられたスコープされたサブセット。その当事者が自身のアクションを検証するために必要なものだけを明かす。
両方とも get_plan_audit_logs から生成されます。分割はフィルタリングとフィールド選択の問題であり、別のプロトコルではありません。

そもそもなぜ分割するか

バイヤーが異なるビューを維持する 3 つの理由:
  1. 戦略リーク。 すべてのセラー全体の合計承認予算、チャネル配分、残ヘッドルームは競争シグナルです。派生した比率は生の金額より安全ではないことに注意 — budget.utilization_pct は、セラーが自身のコミット済みシェアを知っている場合、1 ステップの逆問題です。単一のセラーは自身のバイを検証するためにバイヤーの完全なプランを知る必要はありません。
  2. 相手方間分離。 セラー A はセラー B の発見、ガバナンスコンテキスト、結果を見る必要はありません。共有可能ビューは常にリクエスト当事者の governance_context 値にスコープされます。
  3. 内部レビューフィールド。 人間レビュー理由、ドリフトメトリック、監督しきい値はバイヤー自身のガバナンス姿勢です。それらは規制当局監査でバイヤーを保護します。それらは相手方に宛てられていません。

フィールドタグ付け

以下のテーブルは、get_plan_audit_logs レスポンスのすべてのフィールドを、誰が安全に見られるかで分類します。

共有可能ビューの生成

「セラー X と何を共有すべきか?」に答えるには、監査クエリをそのセラーに属するコンテキストにフィルターし、プランレベルの集計を落とします。 1 つのセラーのアクションにスコープされたリクエスト:
これは governed_actionsentries をリクエストされたコンテキストに絞ります。バイヤーは依然として転送前に budget.*channel_allocation.*summary.findings_countsummary.statusessummary.drift_metrics を除去する責任があります — それらのサマリーはプラン全体をカバーし、他のセラー全体の合計を明かします。 最小コンプライアンス証明(エントリーなし): バイが統制されたことの証明のみを必要とする相手方には — 完全な証跡ではなく — 監査レスポンスから導出された 4 フィールドの証明を共有します:
セラーは plan_hash を彼らが署名したプランリビジョンに対して検証でき、policies_evaluated リストはどのレジストリポリシーが適用されたかを確認します。バイヤーのポートフォリオについて他は何も開示されません。

規制当局と監査人のビュー

規制当局は通常 3 つのうちの 1 つを求めます:
  1. 必要な場所で人間の監督が起こったか? 解決されたポリシーからの summary.human_reviews[]requires_human_review フラグを共有。理由は編集除去または要約されてもよい。解決とタイムスタンプは無傷であるべき。
  2. バイは特定の規制に準拠したか? 規制の policy_id(例: us_coppa)を含む policies_evaluated でスコープされたエントリーを共有。規制当局がプランリビジョンに対して検証できるよう plan_hash を含める。
  3. 監督メトリックはしきい値内か? summary.drift_metrics とポリシー導出のしきい値を共有。human_review_rate_min を下回る human_review_rate は説明する価値のあるシグナル。
プロトコルは規制当局 API を定義しません。相手方ルールが開示を統制します。監査証跡が開示を可能にします。

実例: クリーンなバイ

OLV/ディスプレイキャンペーンに 500K承認されたプラン。オーケストレーターはgetproductsで意図チェックを実行し、次に500K 承認されたプラン。オーケストレーターは `get_products` で意図チェックを実行し、次に 150K の create_media_buy で実行チェック、次に結果を報告します。完全な内部監査レスポンス:
同じ証跡のセラーの共有可能ビューは、governed_actions[] エントリーと governance_context = 11ab64d0... にフィルターされた entries[] です。プランレベルの budget.authorizedbudget.remainingsummary 集計はバイヤー側に留まります。

違反がどう見えるか

発見は監査証跡がリスクを伝える方法です。知る価値のある 2 つのパターン:

セキュリティ形状の発見: 認可されていないセラー

プランは approved_sellers: ["https://ads.seller-approved.example"] を宣言します。別のセラーが check_governance を呼び拒否されます:
対応するプランサマリーは statuses.denied: 1findings_count: 1 を記録します。認可されていないセラーの governance_context は依然として記録されます — 証跡は成功だけでなく試みを捕捉します。

コーチング形状の発見: Annex III 前提条件が欠けている

policy_categories: ["fair_lending"](住宅ローン、消費者信用など)を持つプランは human_review_required: true を自動反転します。ブランドプロフィールが異議申立連絡先を公開しない場合、チェックは実行可能な説明とともにフェイルクローズします:
拒否はまたコーチングの瞬間です — オペレーターは何を修正すべきかを正確に見ます。これは良いガバナンス発見が取るべき形状です: カテゴリー、重大度、前進の道。

オペレーターのダイヤル: enforce / advisory / audit

modesync_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 レベルで適用されたことを信頼できます — バイヤーは黙ってそれをダウングレードしませんでした。ポリシーレジストリ を参照。

関連