@adcp/sdk 7.11.0 → 7.11.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (282) hide show
  1. package/compliance/cache/3.1.0-rc.2/domains/brand/index.yaml +160 -0
  2. package/compliance/cache/3.1.0-rc.2/domains/brand/scenarios/distributed_brand_resolution.yaml +415 -0
  3. package/compliance/cache/3.1.0-rc.2/domains/brand/scenarios/single_side_trust_extension.yaml +454 -0
  4. package/compliance/cache/3.1.0-rc.2/domains/creative/index.yaml +339 -0
  5. package/compliance/cache/3.1.0-rc.2/domains/creative/scenarios/billing_out_of_band.yaml +153 -0
  6. package/compliance/cache/3.1.0-rc.2/domains/creative/scenarios/canonical_supported_formats.yaml +212 -0
  7. package/compliance/cache/3.1.0-rc.2/domains/creative/scenarios/creative_lifecycle_webhooks.yaml +389 -0
  8. package/compliance/cache/3.1.0-rc.2/domains/creative/scenarios/native_in_feed.yaml +543 -0
  9. package/compliance/cache/3.1.0-rc.2/domains/governance/index.yaml +682 -0
  10. package/compliance/cache/3.1.0-rc.2/domains/media-buy/index.yaml +789 -0
  11. package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/audience_buy_flow.yaml +380 -0
  12. package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/available_actions.yaml +565 -0
  13. package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/billing_finality_delivery.yaml +354 -0
  14. package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/canonical_formats.yaml +861 -0
  15. package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/clicks_buy_flow.yaml +264 -0
  16. package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/completed_views_buy_flow.yaml +344 -0
  17. package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/create_media_buy_async.yaml +234 -0
  18. package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/creative_fate_after_cancellation.yaml +419 -0
  19. package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/creative_reception.yaml +247 -0
  20. package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/delivery_reporting.yaml +357 -0
  21. package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/dependency_impairment.yaml +633 -0
  22. package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/dependency_impairment_cardinality.yaml +800 -0
  23. package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/event_dedup_flow.yaml +399 -0
  24. package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/frequency_cap_enforcement.yaml +309 -0
  25. package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/governance_approved.yaml +214 -0
  26. package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/governance_conditions.yaml +199 -0
  27. package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/governance_denied.yaml +204 -0
  28. package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/governance_denied_recovery.yaml +252 -0
  29. package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/invalid_transitions.yaml +289 -0
  30. package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/inventory_list_no_match.yaml +148 -0
  31. package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/inventory_list_targeting.yaml +276 -0
  32. package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/measurement_accountability.yaml +244 -0
  33. package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/measurement_terms_rejected.yaml +203 -0
  34. package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/package_correlation_legacy_fallback.yaml +113 -0
  35. package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/pending_creatives_to_start.yaml +292 -0
  36. package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/per_creative_conversion_attribution.yaml +500 -0
  37. package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/performance_buy_flow.yaml +428 -0
  38. package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/performance_buy_flow_roas.yaml +470 -0
  39. package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/product_signal_targeting.yaml +373 -0
  40. package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/proposal_finalize.yaml +399 -0
  41. package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/proposal_finalize_asap_timing.yaml +264 -0
  42. package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/proposal_not_found_errors.yaml +257 -0
  43. package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/provenance_audit_observation.yaml +333 -0
  44. package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/provenance_enforcement.yaml +517 -0
  45. package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/provenance_truth_of_claim.yaml +294 -0
  46. package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/reach_buy_flow.yaml +823 -0
  47. package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/refine_finalize_exclusivity.yaml +360 -0
  48. package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/refine_products.yaml +148 -0
  49. package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/vendor_metric_accountability.yaml +293 -0
  50. package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/vendor_metric_catalog_precondition.yaml +307 -0
  51. package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/vendor_metric_optimization_flow.yaml +576 -0
  52. package/compliance/cache/3.1.0-rc.2/domains/media-buy/state-machine.yaml +442 -0
  53. package/compliance/cache/3.1.0-rc.2/domains/signals/index.yaml +266 -0
  54. package/compliance/cache/3.1.0-rc.2/domains/sponsored-intelligence/index.yaml +256 -0
  55. package/compliance/cache/3.1.0-rc.2/index.json +356 -0
  56. package/compliance/cache/3.1.0-rc.2/protocols/brand/index.yaml +160 -0
  57. package/compliance/cache/3.1.0-rc.2/protocols/brand/scenarios/distributed_brand_resolution.yaml +415 -0
  58. package/compliance/cache/3.1.0-rc.2/protocols/brand/scenarios/single_side_trust_extension.yaml +454 -0
  59. package/compliance/cache/3.1.0-rc.2/protocols/creative/index.yaml +339 -0
  60. package/compliance/cache/3.1.0-rc.2/protocols/creative/scenarios/billing_out_of_band.yaml +153 -0
  61. package/compliance/cache/3.1.0-rc.2/protocols/creative/scenarios/canonical_supported_formats.yaml +212 -0
  62. package/compliance/cache/3.1.0-rc.2/protocols/creative/scenarios/creative_lifecycle_webhooks.yaml +389 -0
  63. package/compliance/cache/3.1.0-rc.2/protocols/creative/scenarios/native_in_feed.yaml +543 -0
  64. package/compliance/cache/3.1.0-rc.2/protocols/governance/index.yaml +682 -0
  65. package/compliance/cache/3.1.0-rc.2/protocols/media-buy/index.yaml +789 -0
  66. package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/audience_buy_flow.yaml +380 -0
  67. package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/available_actions.yaml +565 -0
  68. package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/billing_finality_delivery.yaml +354 -0
  69. package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/canonical_formats.yaml +861 -0
  70. package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/clicks_buy_flow.yaml +264 -0
  71. package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/completed_views_buy_flow.yaml +344 -0
  72. package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/create_media_buy_async.yaml +234 -0
  73. package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/creative_fate_after_cancellation.yaml +419 -0
  74. package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/creative_reception.yaml +247 -0
  75. package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/delivery_reporting.yaml +357 -0
  76. package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/dependency_impairment.yaml +633 -0
  77. package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/dependency_impairment_cardinality.yaml +800 -0
  78. package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/event_dedup_flow.yaml +399 -0
  79. package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/frequency_cap_enforcement.yaml +309 -0
  80. package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/governance_approved.yaml +214 -0
  81. package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/governance_conditions.yaml +199 -0
  82. package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/governance_denied.yaml +204 -0
  83. package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/governance_denied_recovery.yaml +252 -0
  84. package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/invalid_transitions.yaml +289 -0
  85. package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/inventory_list_no_match.yaml +148 -0
  86. package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/inventory_list_targeting.yaml +276 -0
  87. package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/measurement_accountability.yaml +244 -0
  88. package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/measurement_terms_rejected.yaml +203 -0
  89. package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/package_correlation_legacy_fallback.yaml +113 -0
  90. package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/pending_creatives_to_start.yaml +292 -0
  91. package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/per_creative_conversion_attribution.yaml +500 -0
  92. package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/performance_buy_flow.yaml +428 -0
  93. package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/performance_buy_flow_roas.yaml +470 -0
  94. package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/product_signal_targeting.yaml +373 -0
  95. package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/proposal_finalize.yaml +399 -0
  96. package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/proposal_finalize_asap_timing.yaml +264 -0
  97. package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/proposal_not_found_errors.yaml +257 -0
  98. package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/provenance_audit_observation.yaml +333 -0
  99. package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/provenance_enforcement.yaml +517 -0
  100. package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/provenance_truth_of_claim.yaml +294 -0
  101. package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/reach_buy_flow.yaml +823 -0
  102. package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/refine_finalize_exclusivity.yaml +360 -0
  103. package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/refine_products.yaml +148 -0
  104. package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/vendor_metric_accountability.yaml +293 -0
  105. package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/vendor_metric_catalog_precondition.yaml +307 -0
  106. package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/vendor_metric_optimization_flow.yaml +576 -0
  107. package/compliance/cache/3.1.0-rc.2/protocols/media-buy/state-machine.yaml +442 -0
  108. package/compliance/cache/3.1.0-rc.2/protocols/signals/index.yaml +266 -0
  109. package/compliance/cache/3.1.0-rc.2/protocols/sponsored-intelligence/index.yaml +256 -0
  110. package/compliance/cache/3.1.0-rc.2/specialisms/audience-sync/index.yaml +313 -0
  111. package/compliance/cache/3.1.0-rc.2/specialisms/brand-rights/index.yaml +350 -0
  112. package/compliance/cache/3.1.0-rc.2/specialisms/brand-rights/scenarios/governance_denied.yaml +226 -0
  113. package/compliance/cache/3.1.0-rc.2/specialisms/collection-lists/index.yaml +359 -0
  114. package/compliance/cache/3.1.0-rc.2/specialisms/content-standards/index.yaml +572 -0
  115. package/compliance/cache/3.1.0-rc.2/specialisms/creative-ad-server/index.yaml +409 -0
  116. package/compliance/cache/3.1.0-rc.2/specialisms/creative-generative/generative-seller.yaml +807 -0
  117. package/compliance/cache/3.1.0-rc.2/specialisms/creative-generative/index.yaml +758 -0
  118. package/compliance/cache/3.1.0-rc.2/specialisms/creative-template/index.yaml +510 -0
  119. package/compliance/cache/3.1.0-rc.2/specialisms/governance-aware-seller/index.yaml +143 -0
  120. package/compliance/cache/3.1.0-rc.2/specialisms/governance-aware-seller/scenarios/governance_multi_agent_rejected.yaml +117 -0
  121. package/compliance/cache/3.1.0-rc.2/specialisms/governance-delivery-monitor/index.yaml +441 -0
  122. package/compliance/cache/3.1.0-rc.2/specialisms/governance-spend-authority/denied.yaml +221 -0
  123. package/compliance/cache/3.1.0-rc.2/specialisms/governance-spend-authority/index.yaml +330 -0
  124. package/compliance/cache/3.1.0-rc.2/specialisms/property-lists/index.yaml +482 -0
  125. package/compliance/cache/3.1.0-rc.2/specialisms/sales-broadcast-tv/index.yaml +738 -0
  126. package/compliance/cache/3.1.0-rc.2/specialisms/sales-catalog-driven/index.yaml +840 -0
  127. package/compliance/cache/3.1.0-rc.2/specialisms/sales-guaranteed/index.yaml +601 -0
  128. package/compliance/cache/3.1.0-rc.2/specialisms/sales-non-guaranteed/index.yaml +546 -0
  129. package/compliance/cache/3.1.0-rc.2/specialisms/sales-proposal-mode/index.yaml +586 -0
  130. package/compliance/cache/3.1.0-rc.2/specialisms/sales-social/index.yaml +919 -0
  131. package/compliance/cache/3.1.0-rc.2/specialisms/signal-marketplace/index.yaml +424 -0
  132. package/compliance/cache/3.1.0-rc.2/specialisms/signal-marketplace/scenarios/governance_denied.yaml +210 -0
  133. package/compliance/cache/3.1.0-rc.2/specialisms/signal-owned/index.yaml +317 -0
  134. package/compliance/cache/3.1.0-rc.2/specialisms/sponsored-intelligence/index.yaml +59 -0
  135. package/compliance/cache/3.1.0-rc.2/test-kits/acme-outdoor-live.yaml +78 -0
  136. package/compliance/cache/3.1.0-rc.2/test-kits/acme-outdoor.yaml +223 -0
  137. package/compliance/cache/3.1.0-rc.2/test-kits/billing-gate-runner.yaml +115 -0
  138. package/compliance/cache/3.1.0-rc.2/test-kits/bistro-oranje.yaml +126 -0
  139. package/compliance/cache/3.1.0-rc.2/test-kits/distributed-brand-runner.yaml +281 -0
  140. package/compliance/cache/3.1.0-rc.2/test-kits/nova-motors.yaml +262 -0
  141. package/compliance/cache/3.1.0-rc.2/test-kits/osei-natural.yaml +126 -0
  142. package/compliance/cache/3.1.0-rc.2/test-kits/parallel-dispatch-runner.yaml +196 -0
  143. package/compliance/cache/3.1.0-rc.2/test-kits/rate-limit-trip-runner.yaml +172 -0
  144. package/compliance/cache/3.1.0-rc.2/test-kits/signed-requests-runner.yaml +155 -0
  145. package/compliance/cache/3.1.0-rc.2/test-kits/single-side-trust-runner.yaml +294 -0
  146. package/compliance/cache/3.1.0-rc.2/test-kits/substitution-observer-runner.yaml +688 -0
  147. package/compliance/cache/3.1.0-rc.2/test-kits/summit-foods.yaml +125 -0
  148. package/compliance/cache/3.1.0-rc.2/test-kits/webhook-receiver-runner.yaml +265 -0
  149. package/compliance/cache/3.1.0-rc.2/test-vectors/plan-hash/001-minimal-plan.json +43 -0
  150. package/compliance/cache/3.1.0-rc.2/test-vectors/plan-hash/002-full-plan.json +217 -0
  151. package/compliance/cache/3.1.0-rc.2/test-vectors/plan-hash/003-bookkeeping-stripped.json +60 -0
  152. package/compliance/cache/3.1.0-rc.2/test-vectors/plan-hash/004a-human-review-omitted.json +43 -0
  153. package/compliance/cache/3.1.0-rc.2/test-vectors/plan-hash/004b-human-review-explicit-null.json +49 -0
  154. package/compliance/cache/3.1.0-rc.2/test-vectors/plan-hash/005a-policy-categories-order-1.json +53 -0
  155. package/compliance/cache/3.1.0-rc.2/test-vectors/plan-hash/005b-policy-categories-order-2.json +57 -0
  156. package/compliance/cache/3.1.0-rc.2/test-vectors/plan-hash/006a-ext-trace-v1.json +49 -0
  157. package/compliance/cache/3.1.0-rc.2/test-vectors/plan-hash/006b-ext-trace-v2.json +53 -0
  158. package/compliance/cache/3.1.0-rc.2/test-vectors/plan-hash/007-unicode-objectives.json +43 -0
  159. package/compliance/cache/3.1.0-rc.2/test-vectors/plan-hash/008-numeric-canonicalization.json +65 -0
  160. package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/README.md +220 -0
  161. package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/canonicalization.json +241 -0
  162. package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/keys.json +60 -0
  163. package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/negative/001-no-signature-header.json +24 -0
  164. package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/negative/002-wrong-tag.json +26 -0
  165. package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/negative/003-expired-signature.json +26 -0
  166. package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/negative/004-window-too-long.json +26 -0
  167. package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/negative/005-alg-not-allowed.json +26 -0
  168. package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/negative/006-missing-covered-component.json +26 -0
  169. package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/negative/007-missing-content-digest.json +26 -0
  170. package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/negative/008-unknown-keyid.json +26 -0
  171. package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/negative/009-key-ops-missing-verify.json +27 -0
  172. package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/negative/010-content-digest-mismatch.json +33 -0
  173. package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/negative/011-malformed-header.json +27 -0
  174. package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/negative/012-missing-expires-param.json +26 -0
  175. package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/negative/013-expires-le-created.json +27 -0
  176. package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/negative/014-missing-nonce-param.json +27 -0
  177. package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/negative/015-signature-invalid.json +28 -0
  178. package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/negative/016-replayed-nonce.json +35 -0
  179. package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/negative/017-key-revoked.json +38 -0
  180. package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/negative/018-digest-covered-when-forbidden.json +28 -0
  181. package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/negative/019-signature-without-signature-input.json +26 -0
  182. package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/negative/020-rate-abuse.json +34 -0
  183. package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/negative/021-duplicate-signature-input-label.json +31 -0
  184. package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/negative/022-multi-valued-content-type.json +31 -0
  185. package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/negative/023-multi-valued-content-digest.json +32 -0
  186. package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/negative/024-unquoted-string-param.json +31 -0
  187. package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/negative/025-jwk-alg-crv-mismatch.json +43 -0
  188. package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/negative/026-non-ascii-host.json +31 -0
  189. package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/negative/027-webhook-registration-authentication-unsigned.json +25 -0
  190. package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/negative/028-unsigned-protocol-method-required.json +26 -0
  191. package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/positive/001-basic-post.json +30 -0
  192. package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/positive/002-post-with-content-digest.json +31 -0
  193. package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/positive/003-es256-post.json +30 -0
  194. package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/positive/004-multiple-signature-labels.json +26 -0
  195. package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/positive/005-default-port-stripped.json +30 -0
  196. package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/positive/006-dot-segment-path.json +30 -0
  197. package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/positive/007-query-byte-preserved.json +30 -0
  198. package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/positive/008-percent-encoded-path.json +30 -0
  199. package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/positive/009-percent-encoded-unreserved-decoded.json +30 -0
  200. package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/positive/010-percent-encoded-slash-preserved.json +30 -0
  201. package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/positive/011-ipv6-authority.json +30 -0
  202. package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/positive/012-ipv6-authority-default-port-stripped.json +30 -0
  203. package/compliance/cache/3.1.0-rc.2/test-vectors/webhook-signing/README.md +211 -0
  204. package/compliance/cache/3.1.0-rc.2/test-vectors/webhook-signing/keys.json +61 -0
  205. package/compliance/cache/3.1.0-rc.2/test-vectors/webhook-signing/negative/001-wrong-tag.json +26 -0
  206. package/compliance/cache/3.1.0-rc.2/test-vectors/webhook-signing/negative/002-expired-signature.json +26 -0
  207. package/compliance/cache/3.1.0-rc.2/test-vectors/webhook-signing/negative/003-window-too-long.json +26 -0
  208. package/compliance/cache/3.1.0-rc.2/test-vectors/webhook-signing/negative/004-alg-not-allowed.json +26 -0
  209. package/compliance/cache/3.1.0-rc.2/test-vectors/webhook-signing/negative/005-missing-authority-component.json +26 -0
  210. package/compliance/cache/3.1.0-rc.2/test-vectors/webhook-signing/negative/006-missing-content-digest.json +25 -0
  211. package/compliance/cache/3.1.0-rc.2/test-vectors/webhook-signing/negative/007-unknown-keyid.json +26 -0
  212. package/compliance/cache/3.1.0-rc.2/test-vectors/webhook-signing/negative/008-wrong-adcp-use.json +26 -0
  213. package/compliance/cache/3.1.0-rc.2/test-vectors/webhook-signing/negative/009-content-digest-mismatch.json +26 -0
  214. package/compliance/cache/3.1.0-rc.2/test-vectors/webhook-signing/negative/010-malformed-signature-input.json +26 -0
  215. package/compliance/cache/3.1.0-rc.2/test-vectors/webhook-signing/negative/011-signature-without-input.json +25 -0
  216. package/compliance/cache/3.1.0-rc.2/test-vectors/webhook-signing/negative/012-missing-expires-param.json +26 -0
  217. package/compliance/cache/3.1.0-rc.2/test-vectors/webhook-signing/negative/013-expires-le-created.json +26 -0
  218. package/compliance/cache/3.1.0-rc.2/test-vectors/webhook-signing/negative/014-missing-nonce-param.json +26 -0
  219. package/compliance/cache/3.1.0-rc.2/test-vectors/webhook-signing/negative/015-signature-invalid.json +26 -0
  220. package/compliance/cache/3.1.0-rc.2/test-vectors/webhook-signing/negative/016-replayed-nonce.json +37 -0
  221. package/compliance/cache/3.1.0-rc.2/test-vectors/webhook-signing/negative/017-key-revoked.json +32 -0
  222. package/compliance/cache/3.1.0-rc.2/test-vectors/webhook-signing/negative/018-rate-abuse.json +33 -0
  223. package/compliance/cache/3.1.0-rc.2/test-vectors/webhook-signing/negative/019-revocation-stale.json +32 -0
  224. package/compliance/cache/3.1.0-rc.2/test-vectors/webhook-signing/negative/020-key-ops-missing-verify.json +41 -0
  225. package/compliance/cache/3.1.0-rc.2/test-vectors/webhook-signing/negative/021-base64-alphabet-mixing.json +26 -0
  226. package/compliance/cache/3.1.0-rc.2/test-vectors/webhook-signing/positive/001-basic-post.json +24 -0
  227. package/compliance/cache/3.1.0-rc.2/test-vectors/webhook-signing/positive/002-es256-post.json +24 -0
  228. package/compliance/cache/3.1.0-rc.2/test-vectors/webhook-signing/positive/003-multiple-signature-labels.json +24 -0
  229. package/compliance/cache/3.1.0-rc.2/test-vectors/webhook-signing/positive/004-default-port-stripped.json +24 -0
  230. package/compliance/cache/3.1.0-rc.2/test-vectors/webhook-signing/positive/005-percent-encoded-path.json +24 -0
  231. package/compliance/cache/3.1.0-rc.2/test-vectors/webhook-signing/positive/006-query-byte-preserved.json +24 -0
  232. package/compliance/cache/3.1.0-rc.2/test-vectors/webhook-signing/positive/007-body-without-idempotency-key.json +25 -0
  233. package/compliance/cache/3.1.0-rc.2/universal/billing-gate-dispatch.yaml +450 -0
  234. package/compliance/cache/3.1.0-rc.2/universal/canonical-format-validate-input.yaml +640 -0
  235. package/compliance/cache/3.1.0-rc.2/universal/capability-discovery.yaml +125 -0
  236. package/compliance/cache/3.1.0-rc.2/universal/collection-lists-pagination-integrity.yaml +306 -0
  237. package/compliance/cache/3.1.0-rc.2/universal/comply-controller-mode-gate.yaml +141 -0
  238. package/compliance/cache/3.1.0-rc.2/universal/content-standards-pagination-integrity.yaml +326 -0
  239. package/compliance/cache/3.1.0-rc.2/universal/deterministic-testing.yaml +1430 -0
  240. package/compliance/cache/3.1.0-rc.2/universal/error-compliance-signals.yaml +377 -0
  241. package/compliance/cache/3.1.0-rc.2/universal/error-compliance.yaml +528 -0
  242. package/compliance/cache/3.1.0-rc.2/universal/fictional-entities.yaml +307 -0
  243. package/compliance/cache/3.1.0-rc.2/universal/get-media-buys-pagination-integrity.yaml +160 -0
  244. package/compliance/cache/3.1.0-rc.2/universal/get-signals-pagination-integrity.yaml +210 -0
  245. package/compliance/cache/3.1.0-rc.2/universal/idempotency.yaml +861 -0
  246. package/compliance/cache/3.1.0-rc.2/universal/notification-config-event-scope.yaml +119 -0
  247. package/compliance/cache/3.1.0-rc.2/universal/notification-config-lifecycle.yaml +337 -0
  248. package/compliance/cache/3.1.0-rc.2/universal/notification-config-rejections.yaml +107 -0
  249. package/compliance/cache/3.1.0-rc.2/universal/pagination-integrity-creative-formats.yaml +265 -0
  250. package/compliance/cache/3.1.0-rc.2/universal/pagination-integrity-list-accounts.yaml +245 -0
  251. package/compliance/cache/3.1.0-rc.2/universal/pagination-integrity.yaml +263 -0
  252. package/compliance/cache/3.1.0-rc.2/universal/property-lists-pagination-integrity.yaml +307 -0
  253. package/compliance/cache/3.1.0-rc.2/universal/read-tool-idempotency.yaml +405 -0
  254. package/compliance/cache/3.1.0-rc.2/universal/runner-output-contract.yaml +1285 -0
  255. package/compliance/cache/3.1.0-rc.2/universal/schema-validation-signals.yaml +181 -0
  256. package/compliance/cache/3.1.0-rc.2/universal/schema-validation.yaml +548 -0
  257. package/compliance/cache/3.1.0-rc.2/universal/security.yaml +539 -0
  258. package/compliance/cache/3.1.0-rc.2/universal/signed-requests.yaml +217 -0
  259. package/compliance/cache/3.1.0-rc.2/universal/stale-response-advisory.yaml +295 -0
  260. package/compliance/cache/3.1.0-rc.2/universal/storyboard-schema.yaml +2194 -0
  261. package/compliance/cache/3.1.0-rc.2/universal/v3-envelope-integrity.yaml +117 -0
  262. package/compliance/cache/3.1.0-rc.2/universal/version-negotiation.yaml +130 -0
  263. package/compliance/cache/3.1.0-rc.2/universal/webhook-emission.yaml +411 -0
  264. package/compliance/cache/3.1.0-rc.2/universal/wholesale-feed-bulk-webhooks.yaml +82 -0
  265. package/compliance/cache/3.1.0-rc.2/universal/wholesale-feed-product-webhooks.yaml +83 -0
  266. package/compliance/cache/3.1.0-rc.2/universal/wholesale-feed-products.yaml +151 -0
  267. package/compliance/cache/3.1.0-rc.2/universal/wholesale-feed-signal-webhooks.yaml +83 -0
  268. package/compliance/cache/3.1.0-rc.2/universal/wholesale-feed-signals.yaml +149 -0
  269. package/dist/lib/schemas-data/v2.5/_provenance.json +1 -1
  270. package/dist/lib/testing/storyboard/default-invariants.js +23 -0
  271. package/dist/lib/testing/storyboard/default-invariants.js.map +1 -1
  272. package/dist/lib/testing/storyboard/runner.d.ts.map +1 -1
  273. package/dist/lib/testing/storyboard/runner.js +84 -21
  274. package/dist/lib/testing/storyboard/runner.js.map +1 -1
  275. package/dist/lib/testing/storyboard/types.d.ts +21 -0
  276. package/dist/lib/testing/storyboard/types.d.ts.map +1 -1
  277. package/dist/lib/testing/storyboard/types.js.map +1 -1
  278. package/dist/lib/testing/types.d.ts +9 -0
  279. package/dist/lib/testing/types.d.ts.map +1 -1
  280. package/dist/lib/version.d.ts +3 -3
  281. package/dist/lib/version.js +3 -3
  282. package/package.json +1 -1
@@ -0,0 +1,117 @@
1
+ id: governance_aware_seller/governance_multi_agent_rejected
2
+ version: "1.0.0"
3
+ title: "Seller rejects sync_governance with more than one governance agent"
4
+ category: governance_aware_seller
5
+ summary: "Verifies that any seller required to implement sync_governance rejects a request carrying more than one governance_agents entry, enforcing the maxItems: 1 constraint."
6
+ track: media_buy
7
+ required_tools:
8
+ - sync_governance
9
+
10
+ narrative: |
11
+ PR #3015 constrained governance_agents to maxItems: 1 — one governance agent
12
+ per account, mirroring the singular governance_context on the protocol envelope.
13
+ The sync_governance task doc states that sellers MUST reject registrations
14
+ carrying more than one agent entry and surface a clear error pointing at the
15
+ one-agent-per-account invariant.
16
+
17
+ A seller that silently accepts a two-agent payload (persisting only the first
18
+ entry, or all entries) passes every happy-path governance scenario without ever
19
+ enforcing this constraint. This scenario closes that gap: it submits a
20
+ sync_governance request with two governance_agents entries and expects the seller
21
+ to respond with INVALID_REQUEST.
22
+
23
+ No governance agent is needed — only the seller's request-schema validation is
24
+ under test. The test is intentionally narrow: account setup followed by a
25
+ single schema-violating sync_governance call.
26
+
27
+ agent:
28
+ interaction_model: media_buy_seller
29
+ capabilities:
30
+ - sells_media
31
+ examples:
32
+ - "Any media buy seller that validates sync_governance request schema"
33
+
34
+ caller:
35
+ role: buyer_agent
36
+ example: "Pinnacle Agency (buyer)"
37
+
38
+ prerequisites:
39
+ description: |
40
+ A seller that supports sync_governance and validates the governance_agents
41
+ maxItems: 1 constraint on receipt. The scenario does not require a live
42
+ governance agent — only the seller is under test.
43
+ test_kit: "test-kits/acme-outdoor.yaml"
44
+
45
+ phases:
46
+ - id: account_setup
47
+ title: "Establish account with seller"
48
+ steps:
49
+ - id: sync_accounts
50
+ title: "Create account"
51
+ task: sync_accounts
52
+ schema_ref: "account/sync-accounts-request.json"
53
+ response_schema_ref: "account/sync-accounts-response.json"
54
+ doc_ref: "/accounts/tasks/sync_accounts"
55
+ stateful: true
56
+ expected: |
57
+ Seller returns the account with account_id and status active.
58
+ sample_request:
59
+ accounts:
60
+ - brand:
61
+ domain: "acmeoutdoor.example"
62
+ operator: "pinnacle-agency.example"
63
+ billing: "operator"
64
+ payment_terms: "net_30"
65
+ idempotency_key: "$generate:uuid_v4#governance_aware_seller_multi_agent_rejected_account_setup_sync_accounts"
66
+ validations:
67
+ - check: response_schema
68
+ description: "Response matches sync-accounts-response.json schema"
69
+ - check: field_present
70
+ path: "accounts[0].account_id"
71
+ description: "Account has a platform-assigned ID"
72
+
73
+ - id: multi_agent_rejected
74
+ title: "sync_governance with two agents — rejected"
75
+ steps:
76
+ - id: sync_governance_two_agents
77
+ title: "Submit two governance_agents entries (violates maxItems: 1)"
78
+ task: sync_governance
79
+ schema_ref: "account/sync-governance-request.json"
80
+ response_schema_ref: "account/sync-governance-response.json"
81
+ doc_ref: "/accounts/tasks/sync_governance"
82
+ expect_error: true
83
+ negative_path: schema_invalid
84
+ stateful: true
85
+ expected: |
86
+ Seller rejects the request because governance_agents contains two entries,
87
+ violating the maxItems: 1 constraint. Returns INVALID_REQUEST with a
88
+ message indicating the one-agent-per-account invariant was violated.
89
+ sample_request:
90
+ accounts:
91
+ - account:
92
+ brand:
93
+ domain: "acmeoutdoor.example"
94
+ operator: "pinnacle-agency.example"
95
+ governance_agents:
96
+ - url: "https://governance.pinnacle-agency.example"
97
+ authentication:
98
+ schemes: ["Bearer"]
99
+ credentials: "gov-token-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
100
+ - url: "https://secondary-governance.pinnacle-agency.example"
101
+ authentication:
102
+ schemes: ["Bearer"]
103
+ credentials: "gov-token-yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy"
104
+ idempotency_key: "$generate:uuid_v4#governance_aware_seller_multi_agent_rejected_sync_governance_two_agents"
105
+ context:
106
+ correlation_id: "governance_aware_seller--multi_agent_rejected--sync_governance"
107
+ validations:
108
+ - check: error_code
109
+ allowed_values: ["INVALID_REQUEST", "VALIDATION_ERROR"]
110
+ description: "Seller rejects two-agent payload at the request-shape layer — governance_agents maxItems: 1 violated. Returns a top-level error envelope (errors[]) rather than per-account failure status; schema-shape violations are not per-account business failures. INVALID_REQUEST or VALIDATION_ERROR are both compliant."
111
+ - check: field_present
112
+ path: "context"
113
+ description: "Response echoes back the context object on errors"
114
+ - check: field_value
115
+ path: "context.correlation_id"
116
+ value: "governance_aware_seller--multi_agent_rejected--sync_governance"
117
+ description: "Context correlation_id echoed verbatim on error response"
@@ -0,0 +1,441 @@
1
+ id: governance_delivery_monitor
2
+ version: "1.0.0"
3
+ title: "Campaign governance — delivery monitoring with drift detection"
4
+ protocol: governance
5
+ category: governance_delivery_monitor
6
+ summary: "Governance agent monitors delivery, detects budget drift past thresholds, and triggers re-evaluation."
7
+ track: campaign_governance
8
+ required_tools:
9
+ - check_governance
10
+
11
+ # Cross-step assertion (adcp#2639): mid-flight drift can return a denial
12
+ # re-evaluation. The assertion gates any post-denial mutation on the
13
+ # affected plan, catching sellers that ignore a mid-campaign denial and
14
+ # keep delivering / committing new spend.
15
+ # Cross-step assertion (adcp#2664): status.monotonic rejects media_buy
16
+ # status transitions observed across steps that aren't on the spec
17
+ # lifecycle graph — paused → active → paused is fine,
18
+ # active → pending_creatives fails.
19
+ invariants:
20
+ - governance.denial_blocks_mutation
21
+ - status.monotonic
22
+
23
+ narrative: |
24
+ After a media buy is confirmed with governance approval, the governance agent monitors
25
+ delivery. When spend drifts past a reallocation threshold — for example, one line item
26
+ is overspending while another is underspending — the governance agent triggers a delivery
27
+ phase re-evaluation.
28
+
29
+ This storyboard covers the delivery monitoring governance flow: initial approval,
30
+ delivery metrics showing drift, governance re-check triggered by drift, and either
31
+ re-approval with adjusted conditions or a pause recommendation.
32
+
33
+ agent:
34
+ interaction_model: media_buy_seller
35
+ capabilities:
36
+ - sells_media
37
+ - governance_aware
38
+ examples:
39
+ - "Publisher platform with governance and delivery reporting"
40
+ - "Retail media network with pacing data"
41
+
42
+ caller:
43
+ role: buyer_agent
44
+ example: "Pinnacle Agency (buyer)"
45
+
46
+ prerequisites:
47
+ description: |
48
+ The caller needs a brand identity, operator credentials, a governance agent URL,
49
+ and an active media buy with delivery data. The governance plan defines a
50
+ reallocation threshold that triggers re-evaluation.
51
+ test_kit: "test-kits/acme-outdoor.yaml"
52
+ controller_seeding: true
53
+
54
+ fixtures:
55
+ products:
56
+ - product_id: "outdoor_display_q2"
57
+ delivery_type: "guaranteed"
58
+ channels: ["display"]
59
+ format_ids:
60
+ - id: "display_300x250"
61
+ - product_id: "outdoor_video_q2"
62
+ delivery_type: "guaranteed"
63
+ channels: ["video"]
64
+ format_ids:
65
+ - id: "video_15s"
66
+ pricing_options:
67
+ - product_id: "outdoor_display_q2"
68
+ pricing_option_id: "cpm_standard"
69
+ pricing_model: "cpm"
70
+ currency: "USD"
71
+ fixed_price: 8.0
72
+ - product_id: "outdoor_video_q2"
73
+ pricing_option_id: "cpm_standard"
74
+ pricing_model: "cpm"
75
+ currency: "USD"
76
+ fixed_price: 12.0
77
+ plans:
78
+ - plan_id: "gov_acme_delivery_monitor"
79
+ brand:
80
+ domain: "acmeoutdoor.example"
81
+ objectives: "Delivery-phase governance with drift detection and rebalancing"
82
+ budget:
83
+ total: 40000
84
+ currency: "USD"
85
+ reallocation_threshold: 8000
86
+ flight:
87
+ start: "2027-01-01T00:00:00Z"
88
+ end: "2027-12-31T23:59:59Z"
89
+ countries: ["US"]
90
+ custom_policies:
91
+ - policy_id: "drift_reevaluation"
92
+ enforcement: "must"
93
+ policy: "Re-evaluate governance if any line item drifts more than 20% from plan."
94
+ media_buys:
95
+ - media_buy_id: "mb_acme_q2_2026"
96
+ status: "active"
97
+ budget:
98
+ total: 40000
99
+ currency: "USD"
100
+ flight:
101
+ start: "2026-04-01T00:00:00Z"
102
+ end: "2026-06-30T23:59:59Z"
103
+
104
+ phases:
105
+ - id: capability_discovery
106
+ title: "Capability discovery"
107
+ narrative: |
108
+ The buyer calls get_adcp_capabilities to confirm the agent supports media buying before sending briefs or creating buys.
109
+
110
+ steps:
111
+ - id: get_capabilities
112
+ title: "Check agent capabilities"
113
+ narrative: |
114
+ Verify that the agent declares the expected protocol support before
115
+ proceeding with domain-specific operations.
116
+ task: get_adcp_capabilities
117
+ schema_ref: "protocol/get-adcp-capabilities-request.json"
118
+ response_schema_ref: "protocol/get-adcp-capabilities-response.json"
119
+ doc_ref: "/protocol/get_adcp_capabilities"
120
+ comply_scenario: capability_discovery
121
+ stateful: false
122
+ expected: |
123
+ Return capabilities declaring media_buy in supported_protocols, confirming the agent sells media.
124
+ sample_request:
125
+ context:
126
+ correlation_id: "governance_delivery_monitor--get_capabilities"
127
+ validations:
128
+ - check: response_schema
129
+ description: "Response matches get-adcp-capabilities-response.json schema"
130
+ - check: field_present
131
+ path: "supported_protocols"
132
+ description: "Agent declares supported protocols"
133
+
134
+ - check: field_present
135
+ path: "context"
136
+ description: "Response echoes back the context object"
137
+ - check: field_value
138
+ path: "context.correlation_id"
139
+ value: "governance_delivery_monitor--get_capabilities"
140
+ description: "Context correlation_id returned unchanged"
141
+ - id: plan_registration
142
+ title: "Register governance plan with delivery monitoring"
143
+ narrative: |
144
+ The buyer registers a governance plan that includes delivery monitoring thresholds.
145
+ When spend drift exceeds the reallocation threshold, the governance agent triggers
146
+ a delivery-phase re-evaluation.
147
+
148
+ steps:
149
+ - id: sync_plans
150
+ title: "Register a governance plan with reallocation threshold"
151
+ narrative: |
152
+ The buyer's governance agent registers a plan with full spending authority and
153
+ a 20% reallocation threshold. If any line item's spend drifts more than 20%
154
+ from the planned budget allocation, the governance agent re-evaluates.
155
+ task: sync_plans
156
+ schema_ref: "governance/sync-plans-request.json"
157
+ response_schema_ref: "governance/sync-plans-response.json"
158
+ doc_ref: "/governance/campaign/tasks/sync_plans"
159
+ comply_scenario: governance_delivery_monitor
160
+ stateful: true
161
+ expected: |
162
+ Acknowledge the governance plan:
163
+ - plan_id: identifier for this governance plan
164
+ - budget.reallocation_threshold: amount above which reallocation requires re-evaluation
165
+
166
+ sample_request:
167
+ idempotency_key: "$generate:uuid_v4#gov-delivery-monitor-sync"
168
+ plans:
169
+ - plan_id: "gov_acme_delivery_monitor"
170
+ brand:
171
+ domain: "acmeoutdoor.example"
172
+ objectives: "Delivery-phase governance with drift detection and rebalancing"
173
+ budget:
174
+ total: 40000
175
+ currency: "USD"
176
+ reallocation_threshold: 8000
177
+ flight:
178
+ start: "2027-01-01T00:00:00Z"
179
+ end: "2027-12-31T23:59:59Z"
180
+ countries: ["US"]
181
+ custom_policies:
182
+ - policy_id: "drift_reevaluation"
183
+ enforcement: "must"
184
+ policy: "Re-evaluate governance if any line item drifts more than 20% from plan."
185
+
186
+ context:
187
+ correlation_id: "governance_delivery_monitor--sync_plans"
188
+ context_outputs:
189
+ - name: plan_id
190
+ path: 'plans[0].plan_id'
191
+ validations:
192
+ - check: response_schema
193
+ description: "Response matches sync-plans-response.json schema"
194
+
195
+ - check: field_present
196
+ path: "context"
197
+ description: "Response echoes back the context object"
198
+ - check: field_value
199
+ path: "context.correlation_id"
200
+ value: "governance_delivery_monitor--sync_plans"
201
+ description: "Context correlation_id returned unchanged"
202
+ - check: field_present
203
+ path: "plans[0].plan_id"
204
+ description: "Governance agent assigns plan_id — must be echoed in check_governance"
205
+ - id: initial_approval
206
+ title: "Initial governance check — approved"
207
+ narrative: |
208
+ The buyer proposes a media buy within authority. The governance agent approves
209
+ the buy with the delivery monitoring conditions active.
210
+
211
+ steps:
212
+ - id: check_governance_approved
213
+ title: "Pre-buy governance check (approved)"
214
+ narrative: |
215
+ The buyer calls check_governance with a media buy within authority. The governance
216
+ agent approves and notes that delivery monitoring is active with the 20% drift
217
+ threshold.
218
+ task: check_governance
219
+ schema_ref: "governance/check-governance-request.json"
220
+ response_schema_ref: "governance/check-governance-response.json"
221
+ doc_ref: "/governance/campaign/tasks/check_governance"
222
+ comply_scenario: governance_delivery_monitor
223
+ stateful: true
224
+ expected: |
225
+ Return an approved governance decision:
226
+ - decision: approved
227
+ - governance_context: token for the media buy
228
+ - monitoring: delivery phase governance is active
229
+
230
+ sample_request:
231
+ plan_id: "$context.plan_id"
232
+ caller: "https://pinnacle-agency.example"
233
+ tool: "create_media_buy"
234
+ payload:
235
+ account:
236
+ brand:
237
+ domain: "acmeoutdoor.example"
238
+ operator: "pinnacle-agency.example"
239
+ total_budget: 40000
240
+ packages:
241
+ - product_id: "sports_ctv_q2"
242
+ budget: 20000
243
+ - product_id: "outdoor_video_q2"
244
+ budget: 20000
245
+
246
+ context:
247
+ correlation_id: "governance_delivery_monitor--check_governance_approved"
248
+ validations:
249
+ - check: response_schema
250
+ description: "Response matches check-governance-response.json schema"
251
+ - check: field_present
252
+ path: "verdict"
253
+ description: "Response contains a governance verdict"
254
+
255
+ - check: field_present
256
+ path: "context"
257
+ description: "Response echoes back the context object"
258
+ - check: field_value
259
+ path: "context.correlation_id"
260
+ value: "governance_delivery_monitor--check_governance_approved"
261
+ description: "Context correlation_id returned unchanged"
262
+ - id: create_buy
263
+ title: "Create media buy under governance approval"
264
+ narrative: |
265
+ With governance approved, the buyer creates the media buy. The seller confirms
266
+ and returns a media_buy_id the buyer will use to pull delivery metrics as the
267
+ campaign runs.
268
+
269
+ steps:
270
+ - id: create_media_buy
271
+ title: "Create a media buy"
272
+ narrative: |
273
+ The buyer creates the media buy with the governance_context from the approved
274
+ check. The seller confirms and returns a media_buy_id that subsequent delivery
275
+ monitoring steps reference.
276
+ task: create_media_buy
277
+ schema_ref: "media-buy/create-media-buy-request.json"
278
+ response_schema_ref: "media-buy/create-media-buy-response.json"
279
+ doc_ref: "/media-buy/task-reference/create_media_buy"
280
+ comply_scenario: governance_delivery_monitor
281
+ stateful: true
282
+ expected: |
283
+ Confirm the media buy:
284
+ - media_buy_id: platform-assigned identifier
285
+ - status: active
286
+ - packages: confirmed line items
287
+
288
+ sample_request:
289
+ account:
290
+ brand:
291
+ domain: "acmeoutdoor.example"
292
+ operator: "pinnacle-agency.example"
293
+ brand:
294
+ domain: "acmeoutdoor.example"
295
+ governance_context: "gov_ctx_acme_delivery_approved"
296
+ start_time: "2026-04-01T00:00:00Z"
297
+ end_time: "2026-06-30T23:59:59Z"
298
+ packages:
299
+ - product_id: "sports_ctv_q2"
300
+ budget: 20000
301
+ pricing_option_id: "cpm_guaranteed"
302
+ - product_id: "outdoor_video_q2"
303
+ budget: 20000
304
+ pricing_option_id: "cpm_standard"
305
+
306
+ idempotency_key: "$generate:uuid_v4#governance_delivery_monitor_create_buy_create_media_buy"
307
+ context:
308
+ correlation_id: "governance_delivery_monitor--create_media_buy"
309
+ context_outputs:
310
+ - name: media_buy_id
311
+ path: "media_buy_id"
312
+ validations:
313
+ - check: response_schema
314
+ description: "Response matches create-media-buy-response.json schema"
315
+ - check: field_present
316
+ path: "media_buy_id"
317
+ description: "Response contains a media_buy_id for delivery monitoring"
318
+
319
+ - check: field_present
320
+ path: "context"
321
+ description: "Response echoes back the context object"
322
+ - check: field_value
323
+ path: "context.correlation_id"
324
+ value: "governance_delivery_monitor--create_media_buy"
325
+ description: "Context correlation_id returned unchanged"
326
+ - id: delivery_monitoring
327
+ title: "Delivery metrics show budget drift"
328
+ narrative: |
329
+ The campaign is running. The buyer checks delivery and finds that one line item
330
+ is overspending while the other is underspending. The CTV line item has consumed
331
+ 70% of its budget at the halfway point while the video line item is at 30%.
332
+
333
+ steps:
334
+ - id: get_delivery
335
+ title: "Check delivery metrics"
336
+ narrative: |
337
+ The buyer requests delivery data and finds budget drift. One line item is
338
+ significantly overpacing while the other is underpacing.
339
+ task: get_media_buy_delivery
340
+ schema_ref: "media-buy/get-media-buy-delivery-request.json"
341
+ response_schema_ref: "media-buy/get-media-buy-delivery-response.json"
342
+ doc_ref: "/media-buy/task-reference/get_media_buy_delivery"
343
+ comply_scenario: governance_delivery_monitor
344
+ stateful: true
345
+ expected: |
346
+ Return delivery metrics showing drift:
347
+ - Per-package delivery with impressions, spend, and pacing
348
+ - One package overpacing (>60% spend at 50% flight)
349
+ - One package underpacing (<40% spend at 50% flight)
350
+
351
+ sample_request:
352
+ account:
353
+ brand:
354
+ domain: "acmeoutdoor.example"
355
+ operator: "pinnacle-agency.example"
356
+ media_buy_ids:
357
+ - "$context.media_buy_id"
358
+ include_package_daily_breakdown: true
359
+
360
+ context:
361
+ correlation_id: "governance_delivery_monitor--get_delivery"
362
+ validations:
363
+ - check: response_schema
364
+ description: "Response matches get-media-buy-delivery-response.json schema"
365
+ - check: field_present
366
+ path: "media_buy_deliveries"
367
+ description: "Response contains media buy delivery data"
368
+
369
+ - check: field_present
370
+ path: "context"
371
+ description: "Response echoes back the context object"
372
+ - check: field_value
373
+ path: "context.correlation_id"
374
+ value: "governance_delivery_monitor--get_delivery"
375
+ description: "Context correlation_id returned unchanged"
376
+ - id: drift_recheck
377
+ title: "Governance re-check — drift detected"
378
+ narrative: |
379
+ The buyer's governance agent detects that budget drift has exceeded the 20%
380
+ reallocation threshold. It triggers a delivery-phase governance check with the
381
+ current delivery data as evidence. The governance agent re-evaluates and returns
382
+ a decision — either re-approved with updated conditions or a recommendation to
383
+ pause and rebalance.
384
+
385
+ steps:
386
+ - id: check_governance_drift
387
+ title: "Delivery-phase governance re-check (drift exceeded)"
388
+ narrative: |
389
+ The buyer calls check_governance with phase: delivery and attaches
390
+ the current delivery metrics as evidence. The governance agent evaluates the
391
+ drift against the reallocation threshold and returns a decision.
392
+ task: check_governance
393
+ schema_ref: "governance/check-governance-request.json"
394
+ response_schema_ref: "governance/check-governance-response.json"
395
+ doc_ref: "/governance/campaign/tasks/check_governance"
396
+ comply_scenario: governance_delivery_monitor
397
+ stateful: true
398
+ expected: |
399
+ Return a governance decision about the delivery drift:
400
+ - decision: approved (with rebalancing conditions) or denied (pause recommended)
401
+ - findings: warning-severity findings noting the drift amounts
402
+ - severity: warning
403
+ - category_id: BUDGET_DRIFT_EXCEEDED
404
+ - explanation: explains which line items drifted and by how much
405
+ - conditions: if approved, conditions for rebalancing (e.g., "Reallocate $5K from CTV to video")
406
+
407
+ sample_request:
408
+ plan_id: "$context.plan_id"
409
+ caller: "https://pinnacle-agency.example"
410
+ phase: "delivery"
411
+ governance_context: "gov_ctx_acme_delivery_approved"
412
+ delivery_metrics:
413
+ reporting_period:
414
+ start: "2026-05-01T00:00:00Z"
415
+ end: "2026-05-15T00:00:00Z"
416
+ spend: 20000
417
+ cumulative_spend: 20000
418
+ channel_distribution:
419
+ ctv: 70
420
+ video: 30
421
+ pacing: "ahead"
422
+
423
+ context:
424
+ correlation_id: "governance_delivery_monitor--check_governance_drift"
425
+ validations:
426
+ - check: response_schema
427
+ description: "Response matches check-governance-response.json schema"
428
+ - check: field_present
429
+ path: "verdict"
430
+ description: "Response contains a governance verdict"
431
+ - check: field_present
432
+ path: "findings"
433
+ description: "Response contains findings about the drift"
434
+
435
+ - check: field_present
436
+ path: "context"
437
+ description: "Response echoes back the context object"
438
+ - check: field_value
439
+ path: "context.correlation_id"
440
+ value: "governance_delivery_monitor--check_governance_drift"
441
+ description: "Context correlation_id returned unchanged"