Skip to content

fix(compliance): drop get_adcp_capabilities from required_tools across 17 storyboards (OR-gate bug) - #6774

Merged
bokelley merged 3 commits into
mainfrom
claude/issue-6773-billing-gate-dispatch-required-tools
Aug 23, 2026
Merged

fix(compliance): drop get_adcp_capabilities from required_tools across 17 storyboards (OR-gate bug)#6774
bokelley merged 3 commits into
mainfrom
claude/issue-6773-billing-gate-dispatch-required-tools

Conversation

@bokelley

Copy link
Copy Markdown
Contributor

Closes #6773

Summary

required_tools in AdCP compliance storyboards uses OR semantics: any single listed tool present on the agent satisfies the gate. Listing get_adcp_capabilities alongside a capability-specific tool (e.g. sync_accounts, build_creative, get_products) made the storyboard-level gate trivially satisfied for every conformant agent — because get_adcp_capabilities is 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 clean coverage_gap skip.

This PR removes get_adcp_capabilities from required_tools in all 17 affected storyboards across the universal, creative, and media-buy families. get_adcp_capabilities continues 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 receive coverage_gap skips instead of spurious failures.

Storyboards fixed (17)

Universal:

Creative scenarios (4):

  • billing_out_of_band, canonical_supported_formats, evaluator_auth, native_localization

Media-buy scenarios (11):

  • account_timezone_seller_fixed, account_timezone_buyer_selected, account_timezone_seller_assigned
  • budget_cap_timezone_account, budget_cap_timezone_fixed, budget_cap_timezone_override_rejected
  • geo_region_all_values_support, geo_region_targeting, geo_region_exclusion_support, geo_place_targeting
  • portfolio_routing_scope

Backport note

billing_gate_dispatch ships in dist/compliance/3.1.x (currently at 3.1.19). A cherry-pick to 3.1.x is warranted to fix grading for adopters on the stable line. agent_notification_configs references a 3.2 task (sync_agent_notification_configs) and must not be cherry-picked to 3.1.x.

Pre-PR review

  • ad-tech-protocol-expert: approved — fix is non-breaking, patch changeset correct, billing_gate_dispatch backport to 3.1.x confirmed eligible; agent_notification_configs is 3.2-only and should not be included in the backport
  • code-reviewer (triage pass): approved — fix is mechanically correct; found 15 additional storyboards with the same pattern; all 15 incorporated in this PR

Nit (from protocol expert, not blocking): The billing_gate_dispatch storyboard's capability_discovery phase calls get_adcp_capabilities internally but it no longer appears in required_tools. A brief comment noting this would prevent future confusion about whether the tool is exercised at all.

Triage-managed PR. This bot does not currently iterate on
review comments or PR conversation threads (only on the source
issue). To unblock:

  • Push fixup commits directly: gh pr checkout <num>
    fix → push.
  • Or request a new first draft PR: comment /triage execute
    on the source issue only when no triage-managed PR is already
    open. Triage does not update existing PRs.

See #3121
for context.

Session: https://claude.ai/code/session_01M3evZsz4Y3971B5RZVxhKh


Generated by Claude Code

claude added 2 commits August 22, 2026 18:56
…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
@bokelley bokelley added the claude-triaged Issue has been triaged by the Claude Code triage routine. Remove to re-triage. label Aug 22, 2026
@bokelley
bokelley marked this pull request as ready for review August 23, 2026 07:46

@aao-secretariat aao-secretariat Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

@bokelley
bokelley enabled auto-merge (squash) August 23, 2026 07:52

@aao-secretariat aao-secretariat Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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_decision is 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.

@bokelley
bokelley merged commit a1e72ec into main Aug 23, 2026
90 checks passed
@bokelley
bokelley deleted the claude/issue-6773-billing-gate-dispatch-required-tools branch August 23, 2026 07:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

claude-triaged Issue has been triaged by the Claude Code triage routine. Remove to re-triage.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

billing_gate_dispatch: drop get_adcp_capabilities from required_tools — it defeats the OR gate against sync_accounts

2 participants