report_plan_outcome
Report the outcome of an action to the governance agent. Called by the orchestrator (buyer-side agent) after a seller responds. This is the “after” half of the governance loop — it tells the governance agent what actually happened so it can update its state and flag any issues. Sellers do not call this task. They report delivery data viacheck_governance with phase: "delivery".
Seller response (after create_media_buy)
Response (no issues)
Response (discrepancy found)
In this alternative scenario for the same action, the seller modified the request:Delivery data (periodic reporting)
Response (on track)
Response (anomaly detected)
Failed actions
If the seller rejected the request, report it so the governance agent can update plan state:Fields
Request
| Field | Type | Required | Description |
|---|---|---|---|
plan_id | string | Yes | The plan this outcome is for. |
check_id | string | Conditional | The check_id from check_governance. Links the outcome to the governance check that authorized it. Required for completed and failed outcomes. |
outcome | enum | Yes | completed, failed, or delivery. |
seller_response | object | No | The seller’s full response. Required when outcome is completed. |
seller_response.media_buy_id | string | No | Seller’s media buy identifier. |
seller_response.committed_budget | number | No | Total budget committed across all confirmed packages. When present, the governance agent uses this directly instead of summing individual package budgets. |
seller_response.packages | array | No | Confirmed packages with actual budget and targeting. |
seller_response.planned_delivery | object | No | What the seller said it will deliver. When seller-side governance is not configured, this is the governance agent’s only view of the seller’s delivery parameters. |
seller_response.creative_deadline | string | No | ISO 8601 deadline for creative submission. |
delivery | object | No | Delivery metrics. Required when outcome is delivery. |
delivery.media_buy_id | string | No | The media buy being reported on. |
delivery.reporting_period | object | No | Start and end timestamps for the reporting window. |
delivery.impressions | integer | No | Impressions delivered in the period. |
delivery.spend | number | No | Spend in the period. |
delivery.cpm | number | No | Effective CPM for the period. |
delivery.viewability_rate | number | No | Viewability rate (0-1). |
delivery.completion_rate | number | No | Video completion rate (0-1). |
error | object | No | Error details. Required when outcome is failed. |
error.code | string | No | Error code from the seller. |
error.message | string | No | Human-readable error description. |
Response
| Field | Type | Description |
|---|---|---|
outcome_id | string | Unique identifier for this outcome record. |
status | enum | accepted (state updated, no issues) or findings (issues detected). |
committed_budget | number | Budget committed from this outcome (present for completed/failed outcomes). |
findings | array | Present only when status is findings. |
findings[].category_id | string | Which validation category flagged the issue. |
findings[].severity | enum | info, warning, or critical. |
findings[].explanation | string | Human-readable description of the issue. |
findings[].details | object | Structured details for programmatic consumption. |
plan_summary | object | Updated plan budget state (present for completed/failed outcomes). |
Error codes
| Code | Recovery | Description |
|---|---|---|
PLAN_NOT_FOUND | correctable | No plan with this ID. |
CHECK_NOT_FOUND | correctable | No governance check with this check_id. |
CAMPAIGN_NOT_FOUND | correctable | No campaign with this governance_context in the plan. |
CAMPAIGN_SUSPENDED | correctable | Plan is suspended pending human review. Outcome reporting is blocked until the escalation is resolved. |
Related tasks
check_governance— The governance check that authorized the actionsync_plans— Push or update the planget_plan_audit_logs— View plan state and audit trail