Skip to main content

check_governance

キャンペーンアクションの汎用ガバナンスチェック。オーケストレーター(バイヤーサイド)とセラーの両方がこのタスクを呼び出す — binding フィールドがコミットメントレベルを識別する:
Binding呼び出し元目的主要フィールド
proposedオーケストレーターセラーに送信する前のアドバイザリーチェック。予算はコミットされない。toolpayload
committedセラー実行前のバインディングチェック。計画された配信をプランに対して検証します。予算は後で report_plan_outcome 経由でコミットされます。media_buy_idphaseplanned_delivery
ガバナンスエージェントはすべての状態を管理します。呼び出し元はチェック ID をチェーンしたり会話履歴を追跡したりしない — アクションをポストし、ガバナンスエージェントが plan_id で相関させる。その後のライフサイクルチェックでは、呼び出し元は継続性のために前回のレスポンスから governance_context を含めます。

バインディングレベル

Proposed(オーケストレーター)

オーケストレーターはツールコールをセラーに送信する前に binding: "proposed" で呼び出す。これはアドバイザリーチェックだ — 予算はコミットされない。ガバナンスエージェントは意図された toolpayload をキャンペーンプランに対して評価します。
  1. オーケストレーターがセラーツールを呼び出すことを決定する(例: create_media_buy
  2. オーケストレーターがツール名と完全なペイロードで check_governance を呼び出す
  3. approved なら、オーケストレーターはツールコールをセラーに送信します
  4. denied なら、オーケストレーターはツールコールを送信しません
  5. conditions なら、オーケストレーターはペイロードを調整して check_governance を再呼び出しします
  6. escalated なら、オーケストレーターは人間のレビューを待ちながら停止します

Committed(セラー)

セラーは governance_agents を持つアカウント(sync_accounts 中に設定)のリクエストを処理する際に binding: "committed" で呼び出す。これはバインディングチェックだ — 承認されると予算がコミットされます。セラーはエージェント設定からの認証クレデンシャルを提示します。 コミット済みチェックは3つのフェーズを通じてメディアバイのライフサイクル全体をカバーする:
フェーズタイミングチェック内容
purchasecreate_media_buy を確認する前予算、ジオ、チャンネル、フライト日程、ポリシー
modificationupdate_media_buy を確認する前変更の大きさ、再配分、新しいパラメーター
delivery配信中に定期的ペーシング、消化率、ジオドリフト、チャンネル分配
セラーはコミット済みガバナンスチェックを段階的に採用できる:
  • レベル1: 購入のみcreate_media_buy ごとに1回の呼び出し。最小限の実行可能な統合。
  • レベル2: + 変更update_media_buy ごとに1回の呼び出し。
  • レベル3: + 配信レポート — アクティブな配信中に定期的な呼び出し。

ステータス値

ステータス意味呼び出し元のアクション
approved計画通りに進める。expires_at 前に行動するか、再呼び出しします。
denied進めない。上流の呼び出し元にエラーを返します。
conditions呼び出し元が調整を受け入れた場合に承認。条件を適用し、調整されたパラメーターで check_governance を再呼び出しします。
escalated人間のレビューを待ちながら停止。人間の解決を待つ。

期限切れ

expires_at はステータスが approved または conditions の場合に存在します。期限切れの承認は承認ではない — 呼び出し元は進む前に check_governance を再呼び出しする必要があります。

条件

ステータスが conditions の場合、呼び出し元は進む前に調整されたパラメーターで check_governance を必ず再呼び出しする必要があります。required_value を持つ条件はマシンアクション可能だ — 呼び出し元はプログラム的に値を適用できます。required_value を持たない条件はアドバイザリーだ — 呼び出し元は reason を解釈して適切に調整すべきです。 ガバナンスエージェントは同じアクションに対して3回の再呼び出しが失敗した後は conditions ではなく denied を返すべきだ(SHOULD)。これにより、セラーがキャンペーンプランの詳細を把握できないセラーサイドチェックにおいて、無限のネゴシエーションループを防ぐ。

エスカレーション

ステータスが escalated の場合、アクションは停止されます。escalation オブジェクトは理由、深刻度、人間の承認が必要かどうかを提供します。呼び出し元はエスカレーションが解決されるまで進んではなりません。 committed チェック(セラーサイド)の場合、escalated は運用上 denied と同等だ — セラーはバイヤーサイドの人間のレビューを待ちながらリクエストを無期限に保留できません。セラーは escalateddenied として扱い、オーケストレーターにエラーを返し、オーケストレーターがヒューマンインザループのフローを処理するようにすべきだ(SHOULD)。エスカレーションが解決された後、オーケストレーターはメディアバイを再開始し、セラーは新しいリクエストを受け取ります。

結果とのリンク

レスポンスには check_id が含まれます。report_plan_outcome でこれを使って、結果を承認したガバナンスチェックにリンクします。

ガバナンスエージェントが利用不可の場合

ガバナンスエージェントが設定されており、呼び出し元がそれに到達できない場合(タイムアウト、ネットワークエラー)、呼び出し元は進んではならない(MUST NOT)。ガバナンスはゲートだ — ゲートに到達できない場合、デフォルトは停止です。呼び出し元はバックオフ付きでリトライし、上流に失敗を報告すべきだ(SHOULD)。

配信ケイデンス

レスポンスに next_check が存在することは、ガバナンスエージェントが継続的な配信レポートを期待しているシグナルです。セラーは next_check 時刻までに呼び出すべきだ(SHOULD)。ガバナンスエージェントは締め切りを守れなかった場合を次の配信チェックでの検出事項として扱うことがある(MAY)。

リクエスト

Proposed(オーケストレーターがセラーに送信する前にチェック)

{
  "tool": "check_governance",
  "arguments": {
    "plan_id": "plan_q1_2026_launch",
    "binding": "proposed",
    "caller": "https://orchestrator.example.com",
    "tool": "create_media_buy",
    "payload": {
      "product_id": "premium_video_300k",
      "budget": 150000,
      "currency": "USD",
      "geo": { "countries": ["US"] },
      "channels": ["olv"],
      "flight": {
        "start": "2026-03-15T00:00:00Z",
        "end": "2026-06-15T00:00:00Z"
      }
    }
  }
}
最初の check_governance 呼び出しで、ガバナンスエージェントは payload から必要なものを抽出します。レスポンスには不透明な governance_context 文字列が含まれ、呼び出し元はそれをプロトコルエンベロープに添付してこのメディアバイの後続のガバナンス呼び出しすべてに含めます。

Committed — 購入

{
  "tool": "check_governance",
  "arguments": {
    "plan_id": "plan_q1_2026_launch",
    "binding": "committed",
    "caller": "https://seller.example.com",
    "governance_context": "gc_from_buyer_envelope",
    "media_buy_id": "mb_seller_456",
    "phase": "purchase",
    "planned_delivery": {
      "geo": { "countries": ["US"] },
      "channels": ["olv"],
      "start_time": "2026-03-15T00:00:00Z",
      "end_time": "2026-06-15T00:00:00Z",
      "total_budget": 150000,
      "currency": "USD",
      "frequency_cap": { "max_impressions": 3, "per": "user", "window": { "interval": 1, "unit": "days" } },
      "audience_summary": "Adults 25-54, US, premium video inventory",
      "enforced_policies": ["us_coppa"]
    }
  }
}

Committed — 変更

{
  "tool": "check_governance",
  "arguments": {
    "plan_id": "plan_q1_2026_launch",
    "binding": "committed",
    "caller": "https://seller.example.com",
    "governance_context": "gc_from_buyer_envelope",
    "media_buy_id": "mb_seller_456",
    "phase": "modification",
    "modification_summary": "Budget increase from $150,000 to $200,000 and flight extension to 2026-07-15.",
    "planned_delivery": {
      "geo": { "countries": ["US"] },
      "channels": ["olv"],
      "start_time": "2026-03-15T00:00:00Z",
      "end_time": "2026-07-15T00:00:00Z",
      "total_budget": 200000,
      "currency": "USD",
      "frequency_cap": { "max_impressions": 3, "per": "user", "window": { "interval": 1, "unit": "days" } },
      "audience_summary": "Adults 25-54, US, premium video inventory",
      "enforced_policies": ["us_coppa"]
    }
  }
}

Committed — 配信

{
  "tool": "check_governance",
  "arguments": {
    "plan_id": "plan_q1_2026_launch",
    "binding": "committed",
    "caller": "https://seller.example.com",
    "governance_context": "gc_from_buyer_envelope",
    "media_buy_id": "mb_seller_456",
    "phase": "delivery",
    "planned_delivery": {
      "geo": { "countries": ["US"] },
      "channels": ["olv"],
      "start_time": "2026-03-15T00:00:00Z",
      "end_time": "2026-06-15T00:00:00Z",
      "total_budget": 150000,
      "currency": "USD",
      "frequency_cap": { "max_impressions": 3, "per": "user", "window": { "interval": 1, "unit": "days" } },
      "audience_summary": "Adults 25-54, US, premium video inventory",
      "enforced_policies": ["us_coppa"]
    },
    "delivery_metrics": {
      "reporting_period": {
        "start": "2026-03-15T00:00:00Z",
        "end": "2026-03-22T00:00:00Z"
      },
      "spend": 12500,
      "cumulative_spend": 12500,
      "impressions": 850000,
      "cumulative_impressions": 850000,
      "geo_distribution": { "US": 100 },
      "channel_distribution": { "olv": 100 },
      "pacing": "on_track",
      "audience_distribution": {
        "baseline": "platform",
        "indices": {
          "age:18-24": 0.8,
          "age:25-34": 1.4,
          "age:35-44": 1.3,
          "age:45-54": 1.1,
          "gender:female": 1.05,
          "gender:male": 0.95
        },
        "cumulative_indices": {
          "age:18-24": 0.85,
          "age:25-34": 1.35,
          "age:35-44": 1.25,
          "age:45-54": 1.1,
          "gender:female": 1.03,
          "gender:male": 0.97
        }
      }
    }
  }
}

レスポンス

approved(proposed)

{
  "check_id": "chk_001",
  "status": "approved",
  "binding": "proposed",
  "mode": "enforce",
  "plan_id": "plan_q1_2026_launch",
  "explanation": "Proposed create_media_buy is within plan parameters. Budget: $150,000 of $500,000 plan total. Geo: US (within plan). Channel: OLV (within 40-70% target range).",
  "categories_evaluated": ["budget_authority", "geo_compliance", "channel_compliance", "flight_compliance", "delegation_authority"],
  "policies_evaluated": ["us_coppa", "alcohol_advertising"],
  "expires_at": "2026-03-15T01:00:00Z"
}
オーケストレーターは expires_at 前にセラーへの create_media_buy 送信に進む。

approved(committed 購入 + 配信オプトイン)

{
  "check_id": "chk_002",
  "status": "approved",
  "binding": "committed",
  "mode": "enforce",
  "plan_id": "plan_q1_2026_launch",
  "explanation": "Planned delivery is within plan parameters. Budget: $150,000 of $500,000 plan total. Geo: US (within plan). Channel: OLV (within 40-70% target range).",
  "expires_at": "2026-03-15T01:00:00Z",
  "next_check": "2026-03-22T00:00:00Z"
}
セラーはメディアバイを進める。next_check の存在はガバナンスエージェントがその時点から配信レポートを期待しているシグナルです。

approved(committed 配信)

{
  "check_id": "chk_003",
  "status": "approved",
  "binding": "committed",
  "mode": "enforce",
  "plan_id": "plan_q1_2026_launch",
  "explanation": "Delivery on track. Week 1 spend: $12,500 of $150,000 (8.3%). Pacing is on target for 13-week flight. Geo and channel distribution match plan parameters.",
  "next_check": "2026-03-29T00:00:00Z"
}
セラーは配信を継続し、next_check で次のガバナンスチェックをスケジュールします。

denied(proposed)

{
  "check_id": "chk_004",
  "status": "denied",
  "binding": "proposed",
  "plan_id": "plan_q1_2026_launch",
  "explanation": "Proposed media buy targets CA (Canada) which is not within the plan's geography.",
  "findings": [
    {
      "category_id": "strategic_alignment",
      "severity": "critical",
      "explanation": "Geo targeting includes CA but plan only covers US.",
      "details": {
        "plan_countries": ["US"],
        "payload_countries": ["US", "CA"]
      }
    }
  ]
}
オーケストレーターはツールコールをセラーに送信してはなりません(MUST NOT)。

denied(committed 配信 — ジオドリフト)

{
  "check_id": "chk_005",
  "status": "denied",
  "binding": "committed",
  "plan_id": "plan_q1_2026_launch",
  "explanation": "Delivery has drifted outside plan parameters. 12% of impressions delivered in CA (Canada) which is not within the plan's geography.",
  "findings": [
    {
      "category_id": "strategic_alignment",
      "severity": "critical",
      "confidence": 0.98,
      "explanation": "Geo distribution shows 12% delivery in CA, but plan only covers US.",
      "details": {
        "plan_countries": ["US"],
        "actual_distribution": { "US": 88, "CA": 12 }
      }
    }
  ]
}
セラーは直ちに配信を一時停止し、再開前にジオターゲティングを修正しなければなりません(MUST)。

conditions(committed 購入)

{
  "check_id": "chk_006",
  "status": "conditions",
  "binding": "committed",
  "plan_id": "plan_q1_2026_launch",
  "explanation": "Budget approved but frequency cap must be applied per brand policy.",
  "conditions": [
    {
      "field": "planned_delivery.frequency_cap",
      "required_value": { "max_impressions": 5, "per": "user", "window": { "interval": 1, "unit": "days" } },
      "reason": "Brand policy requires daily frequency cap of 5 or fewer impressions per user."
    }
  ],
  "expires_at": "2026-03-15T01:00:00Z"
}
セラーは計画された配信を調整し、進む前に更新されたパラメーターで check_governance を再呼び出しする必要がある(MUST)。

conditions(committed 配信 — オーバーペーシング)

{
  "check_id": "chk_007",
  "status": "conditions",
  "binding": "committed",
  "plan_id": "plan_q1_2026_launch",
  "explanation": "Delivery is pacing 40% ahead of schedule. Cumulative spend of $42,000 after 2 weeks exceeds expected $23,000 for this point in the flight.",
  "conditions": [
    {
      "field": "pacing",
      "reason": "Reduce daily spend rate to align with the planned flight duration. At current pace, budget will be exhausted by week 7 of 13."
    }
  ],
  "next_check": "2026-03-31T00:00:00Z"
}
セラーはペーシングを調整し、直ちに check_governance を再呼び出しする必要がある(MUST)。next_check はガバナンスエージェントが修正を確認できるよう、通常よりも早く設定されています。

escalated

{
  "check_id": "chk_008",
  "status": "escalated",
  "binding": "committed",
  "plan_id": "plan_q1_2026_launch",
  "explanation": "Budget reallocation of $75,000 exceeds the plan's reallocation threshold of $25,000. Human approval required.",
  "findings": [
    {
      "category_id": "budget_authority",
      "severity": "critical",
      "explanation": "Reallocation amount exceeds plan threshold.",
      "details": {
        "reallocation_amount": 75000,
        "threshold": 25000
      }
    }
  ],
  "escalation": {
    "reason": "Budget reallocation exceeds plan threshold. A human stakeholder must approve before the seller can proceed.",
    "severity": "critical",
    "requires_human": true,
    "approval_tier": "director"
  }
}
呼び出し元は進んではならない(MUST NOT)。人間がエスカレーションを解決するまでアクションは停止されます。

フィールド

リクエスト

フィールド必須説明
plan_idstringYesキャンペーンガバナンスプラン識別子。
bindingenumYesproposed(アドバイザリー、予算コミットなし)または committed(バインディング、承認されると予算コミット)。
callerstring (URI)Yesリクエストを行うエージェントの URL(proposed の場合はオーケストレーター、committed の場合はセラー)。
toolstringProposedチェックされる AdCP ツール。proposed チェックに必須。
payloadobjectProposedセラーに送信されるそのままのツール引数。proposed チェックに必須。
governance_contextstringNo以前の check_governance レスポンスからの不透明なガバナンスコンテキスト。ガバナンスエージェントが継続性を維持できるよう、このメディアバイの後続のライフサイクルチェックに含めます。
media_buy_idstringCommittedセラーのメディアバイ識別子。committed チェックに必須。
phaseenumCommittedpurchasemodification、または delivery。デフォルトは purchasecommitted チェックに必須。
planned_deliveryobjectCommitted実際に配信されるもの。committed チェックに必須。計画された配信を参照。
delivery_metricsobjectDelivery実際の配信パフォーマンスデータ。phasedelivery の場合に必須。
delivery_metrics.audience_distributionobjectNoベースラインに対するオーディエンスの人口統計構成。バイアス/公平性ドリフト検出に使用します。
delivery_metrics.audience_distribution.baselineenumYes参照母集団: census(国内人口)、platform(プラットフォームのユーザーベース)、または custom
delivery_metrics.audience_distribution.baseline_descriptionstringNobaselinecustom の場合のベースラインの説明(例: “US adults 18+ with broadband access”)。
delivery_metrics.audience_distribution.indicesobjectYes現在のレポート期間のインデックス値。キー形式: dimension:value(例: age:25-34gender:female)。1.0 はベースラインとのパリティを意味する; 1.0 以上はオーバーインデックス; 1.0 以下はアンダーインデックス。
delivery_metrics.audience_distribution.cumulative_indicesobjectNoすべてのレポート期間にわたるインデックス値。indices と同じ形式。ガバナンスエージェントが一期間のノイズとトレンドを区別するのに役立つ。
modification_summarystringNo変更内容の人間が読めるサマリー。modification フェーズに対して存在すべきだ(SHOULD)。

配信メトリクス

フィールド説明
reporting_periodobjectstartend タイムスタンプ(ISO 8601)を含むレポートウィンドウ。必須。
spendnumberレポート期間中の消化額。
cumulative_spendnumberメディアバイ開始以来の総消化額。
impressionsintegerレポート期間中のインプレッション数。
cumulative_impressionsintegerメディアバイ開始以来の総インプレッション数。
geo_distributionobject実際の地理的分布。キーは ISO 3166-1 alpha-2 コード、値はパーセンテージ。
channel_distributionobject実際のチャンネル分布。キーはチャンネル enum の値、値はパーセンテージ。
pacingenumaheadon_track、または behind
audience_distributionobjectベースラインに対するオーディエンス構成。baseline(enum)、オプションの baseline_description(string、カスタムベースライン用)、indices(現在の期間)、オプションの cumulative_indices(全期間)を含みます。キーは dimension:value 文字列、値はインデックス数(1.0 はパリティ)。

レスポンス

フィールド説明
check_idstringこのガバナンスチェックの一意識別子。結果をリンクするために report_plan_outcome で使用します。
statusenumapproveddeniedconditions、または escalated
bindingenumリクエストからエコーされます。ガバナンスエージェントがコミットメントレベルを理解したことを確認します。
plan_idstringリクエストからエコーされます。
explanationstring決定の人間が読めるの説明。
findingsarrayカテゴリごとに検出された問題。ステータスが deniedconditions、または escalated の場合に存在します。approved に対してアドバイザリーな検出事項として存在することもあります。各検出事項には category_idseverityexplanation、オプションで policy_iddetailsconfidence(0-1)、uncertainty_reason があります。
conditionsarrayステータスが conditions の場合に存在します。再呼び出し前に呼び出し元が行う必要がある調整。
modeenumこのチェックが評価されたガバナンスモード(auditadvisory、または enforce)。監査証跡がアドバイザリーな拒否と強制された拒否を区別できるよう存在します。
categories_evaluatedstring[]このチェック中に評価されたガバナンスカテゴリ(例: budget_authoritygeo_compliancechannel_compliance)。どの検証が実行されたかを確認するのに役立つ。
policies_evaluatedstring[]このチェック中に評価されたレジストリポリシー ID。
escalationobjectステータスが escalated の場合に存在します。reasonseverityrequires_human、オプションで approval_tier(解決に必要な組織の役割、例: "manager""director""legal")を含みます。
expires_atstringステータスが approved または conditions の場合に存在します。呼び出し元はこの時刻前に行動するか再呼び出しする必要があります。期限切れの承認は承認ではありません。
next_checkstringセラーが配信メトリクスで check_governance を次に呼び出すべきタイミング。ガバナンスエージェントが継続的な配信レポートを期待する場合に存在します。
governance_contextstringこのメディアバイの不透明なガバナンスコンテキスト。ステータスが approved または conditions の場合に存在します。プロトコルエンベロープに添付し、後続のすべてのガバナンス呼び出しに含めます。この値を解釈するのは発行したガバナンスエージェントのみです。

エラーコード

コード回復説明
PLAN_NOT_FOUNDcorrectableこの ID のプランが存在しません。バイヤーがプランをまだ同期していない可能性があります。
CAMPAIGN_SUSPENDEDcorrectableキャンペーンガバナンスが人間のレビューを待ちながら停止されています。
SELLER_NOT_RECOGNIZEDcorrectable呼び出し元 URL がプランの approved_sellers リストに含まれていません。

関連タスク

  • sync_plans — このガバナンスチェックが検証するプラン
  • report_plan_outcome — アクションが確認された後に起きたことを報告します
  • get_plan_audit_logs — プラン状態と監査証跡を表示します