fix(compliance): drop get_adcp_capabilities from required_tools across 17 storyboards (OR-gate bug) - #6774
Conversation
…lling_gate_dispatch and agent_notification_configs required_tools uses OR semantics in the adcp-client SDK. Listing get_adcp_capabilities alongside a capability-specific tool made the storyboard-level gate trivially satisfied for every conformant agent, causing billing_gate_dispatch and agent_notification_configs to run against agents that lack sync_accounts / sync_agent_notification_configs and fail at the first assertion instead of receiving a clean coverage-gap skip. Closes #6773 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01M3evZsz4Y3971B5RZVxhKh
…ties OR-gate bug Same pattern as billing_gate_dispatch (issue #6773): required_tools uses OR semantics, so listing get_adcp_capabilities alongside a capability- specific tool made the gate trivially satisfied for every conformant agent. Affected: billing_out_of_band, canonical_supported_formats, evaluator_auth, native_localization (creative); account_timezone_{seller_fixed,buyer_selected, seller_assigned}, budget_cap_timezone_{account,fixed,override_rejected}, geo_{region_all_values_support,region_targeting,region_exclusion_support, place_targeting}, portfolio_routing_scope (media-buy). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01M3evZsz4Y3971B5RZVxhKh
There was a problem hiding this comment.
Ladon verdict: Approve
Approve — surgical, correct compliance-asset fix.
This PR drops the universal get_adcp_capabilities tool from required_tools in 17 storyboards where it was paired with a capability-specific tool. Because required_tools is lenient any-of (skip only when ALL listed tools are missing, per storyboard-schema.yaml:52), the universal tool made the coverage-gap skip unreachable — a real grading bug. The fix scope is exactly the 17 paired-tool files; the 3 storyboards where get_adcp_capabilities is the sole gate are correctly untouched.
Changeset check: a patch changeset is present and appropriate — non-breaking, no wire-shape change, no removed/renamed published field/tool/enum on the protocol surface (these are compliance scenario assets, not schema source). No dist/** artifact edits, so immutability is preserved. No schema↔docs coherence concern (no static/schemas/source/** change). Tests unaffected.
No critical/high/medium findings. gated_paths is false and high_risk is false, so rows 1–5 do not fire. No prior escalation (first review), no no-auto-approve team match. review_decision is REVIEW_REQUIRED, but with gated_paths false and no prose hard gate triggered (no breaking-class protocol change), row 2 does not apply. Falls through to row 9 — approve.
There was a problem hiding this comment.
Ladon verdict: Approve
Approve — no blocking findings.
Checked: this PR drops the universal get_adcp_capabilities tool from required_tools across 17 compliance storyboards (4 creative, 11 media-buy, 2 universal) plus a patch changeset. Because required_tools uses OR/any-of coverage semantics and get_adcp_capabilities is mandatory for every conformant agent, listing it made each storyboard-level gate trivially satisfied — agents lacking the actual capability tool entered and hard-failed instead of receiving a clean coverage-gap skip. The fix correctly keys gates off the capability-specific tool; tests inject get_adcp_capabilities separately so they still pass.
- No wire-shape/schema/docs/dist/oneOf surface touched; schema↔docs coherence not implicated.
- Patch changeset is appropriate for this compliance-asset scope; no breaking wire change.
- No high-risk paths, no gated paths (and
review_decisionis APPROVED regardless). - No author team gate.
Reviewer surfaced no critical/high/medium findings. This is consistent with the prior approve on the earlier head. Rows 1–8 do not fire; falls through to row 9 → approve.
Closes #6773
Summary
required_toolsin AdCP compliance storyboards uses OR semantics: any single listed tool present on the agent satisfies the gate. Listingget_adcp_capabilitiesalongside a capability-specific tool (e.g.sync_accounts,build_creative,get_products) made the storyboard-level gate trivially satisfied for every conformant agent — becauseget_adcp_capabilitiesis mandatory for all conformant agents. Agents that lack the capability-specific tool would enter the storyboard and fail hard at the first capability-specific assertion instead of receiving a cleancoverage_gapskip.This PR removes
get_adcp_capabilitiesfromrequired_toolsin all 17 affected storyboards across theuniversal,creative, andmedia-buyfamilies.get_adcp_capabilitiescontinues to be invoked within individual phase steps (e.g.billing_gate_dispatch/capability_discovery) — only the storyboard-level selection gate is corrected.Non-breaking justification: Agents implementing the capability-specific tool (e.g.
sync_accounts) were already admitted by the OR gate and continue to run with identical phase logic. The only behavioral change is that agents lacking the capability-specific tool now correctly receivecoverage_gapskips instead of spurious failures.Storyboards fixed (17)
Universal:
billing_gate_dispatch(origin of billing_gate_dispatch: drop get_adcp_capabilities from required_tools — it defeats the OR gate against sync_accounts #6773)agent_notification_configs(same pattern, 3.2 surface — do not backport to 3.1.x)Creative scenarios (4):
billing_out_of_band,canonical_supported_formats,evaluator_auth,native_localizationMedia-buy scenarios (11):
account_timezone_seller_fixed,account_timezone_buyer_selected,account_timezone_seller_assignedbudget_cap_timezone_account,budget_cap_timezone_fixed,budget_cap_timezone_override_rejectedgeo_region_all_values_support,geo_region_targeting,geo_region_exclusion_support,geo_place_targetingportfolio_routing_scopeBackport note
billing_gate_dispatchships indist/compliance/3.1.x(currently at 3.1.19). A cherry-pick to3.1.xis warranted to fix grading for adopters on the stable line.agent_notification_configsreferences a 3.2 task (sync_agent_notification_configs) and must not be cherry-picked to3.1.x.Pre-PR review
billing_gate_dispatchbackport to 3.1.x confirmed eligible;agent_notification_configsis 3.2-only and should not be included in the backportNit (from protocol expert, not blocking): The
billing_gate_dispatchstoryboard'scapability_discoveryphase callsget_adcp_capabilitiesinternally but it no longer appears inrequired_tools. A brief comment noting this would prevent future confusion about whether the tool is exercised at all.Session: https://claude.ai/code/session_01M3evZsz4Y3971B5RZVxhKh
Generated by Claude Code