Skip to content

feat(protocol): select runtime tool projections - #6562

Merged
bokelley merged 2 commits into
mainfrom
coordinate-6416-and-6547
Aug 15, 2026
Merged

feat(protocol): select runtime tool projections#6562
bokelley merged 2 commits into
mainfrom
coordinate-6416-and-6547

Conversation

@bokelley

Copy link
Copy Markdown
Contributor

Summary

  • define a fail-closed runtime selector bounded by the host's implemented tool registry and narrowed by capability protocols plus exact tool claims
  • assemble MCP tools/list entries from existing per-tool bundles with only selected input schemas and optional concise manifest summaries
  • document lazy response validation and deterministic 3.2-to-3.x legacy fallback behavior without creating another static profile
  • prove a representative media-buy runtime selects 16 tools from the 66-tool production catalog while preserving draft-07/2020-12 validation outcomes

Why

The complete generated catalog is the authority for SDK generation, documentation, compatibility, and conformance, but it is too large to be a default model-context payload. Hosts need one deterministic way to project only the tools they actually implement and advertise while retaining canonical response schemas outside model context.

Closes #6416.

Validation

  • full pre-commit hook: 67 root test files, 434 server-unit test files (6,127 passed; 30 skipped), and TypeScript typecheck
  • MCP schema projection suite: 18 passed, including selected-schema parity fixtures and the 16-of-66 media-buy reduction proof
  • schema validation: 29 structural/example checks plus 4 deprecation metadata tests
  • docs navigation and owned-link tests
  • OpenAPI drift check
  • changeset protocol-scope and status checks

@bokelley
bokelley marked this pull request as ready for review August 15, 2026 09:41
@aao-secretariat aao-secretariat Bot added the ladon/needs-human-review Ladon has escalated this PR for human review. label Aug 15, 2026

@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: Escalate to human review

Escalate — gated schema paths require human/CODEOWNERS review.

This PR modifies files under static/schemas/source/**, which are under a hard, deterministic approval gate (gated_paths: true). The current review_decision is REVIEW_REQUIRED, not APPROVED, so the gate is not satisfied (decision table row 2).

The reviewer found no Critical/High/Medium findings — the change is additive and well-tested: a new optional summary manifest field, pure fail-closed projection helpers, and coherent schema↔docs updates with a correct minor changeset. Absent the gate, this would be a clean approve. But per the hard gate, it cannot auto-approve until a human/CODEOWNERS approval lands.

Escalation reasons

  • Modifies gated schema source files under static/schemas/source/** (manifest.schema.json, list-products-request.json, get-adcp-capabilities-request.json) — human/CODEOWNERS review required before merge (review_decision: REVIEW_REQUIRED).

Why human review

  • Modifies gated paths under static/schemas/source/** (manifest.schema.json, list-products-request.json, get-adcp-capabilities-request.json) while review_decision is REVIEW_REQUIRED — human/CODEOWNERS approval required.
  • This PR touches a path under a hard, non-overridable approval gate (static/schemas/source/manifest.schema.json (modified) matches static/schemas/source/**; static/schemas/source/media-buy/list-products-request.json (modified) matches static/schemas/source/**; static/schemas/source/protocol/get-adcp-capabilities-request.json (modified) matches static/schemas/source/**) and the current GitHub review decision is 'REVIEW_REQUIRED', not APPROVED. This is a hard gate enforced in code — Ladon cannot auto-approve until a human/CODEOWNERS approval is recorded, regardless of how clean the diff is.

@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: Escalate to human review

Escalate — gated paths modified without required review approval.

This PR modifies files under static/schemas/source/**, which are under a hard, non-overridable approval gate (gated_paths: true), and the current review_decision is REVIEW_REQUIRED, not APPROVED. Per decision rule row 2, this forces escalation until a human/CODEOWNERS approval is recorded.

Escalation reasons

  • Modifies gated schema-source files (e.g. static/schemas/source/manifest.schema.json, static/schemas/source/media-buy/list-products-request.json, static/schemas/source/protocol/get-adcp-capabilities-request.json, and ~30 other request schemas) while review_decision is REVIEW_REQUIRED — human/CODEOWNERS approval required before merge.

The delta itself is clean: additive x-tool-summary annotations across active Media Buy, Creative, Account, and Protocol request schemas, with x-tool-summary registered in PRESENTATION_ANNOTATIONS so it is stripped from structural runtime schemas (summary still reaches the wire via manifest summary + tools/list description). Docs (schemas.mdx, calling-an-agent.mdx) cohere with the schema, the changeset is minor and appropriate for an additive normative change, and the tightened projection test fails-closed on a missing summary. No critical/high/medium findings. This carries forward the prior escalate, which remains driven solely by the unsatisfied gated-paths approval gate, not by any code defect.

Why human review

  • Modifies gated paths under static/schemas/source/** (manifest.schema.json, media-buy/list-products-request.json, protocol/get-adcp-capabilities-request.json, and ~30 other request schemas) while review_decision is REVIEW_REQUIRED — human/CODEOWNERS approval required before merge.
  • This PR touches a path under a hard, non-overridable approval gate (static/schemas/source/account/get-account-financials-request.json (modified) matches static/schemas/source/**; static/schemas/source/account/list-accounts-request.json (modified) matches static/schemas/source/**; static/schemas/source/account/report-usage-request.json (modified) matches static/schemas/source/**; static/schemas/source/account/sync-accounts-request.json (modified) matches static/schemas/source/**; static/schemas/source/account/sync-governance-request.json (modified) matches static/schemas/source/**; static/schemas/source/creative/get-creative-delivery-request.json (modified) matches static/schemas/source/**; static/schemas/source/creative/get-creative-features-request.json (modified) matches static/schemas/source/**; static/schemas/source/creative/list-creatives-request.json (modified) matches static/schemas/source/**; static/schemas/source/creative/list-transformers-request.json (modified) matches static/schemas/source/**; static/schemas/source/creative/preview-creative-request.json (modified) matches static/schemas/source/**; static/schemas/source/creative/sync-creatives-request.json (modified) matches static/schemas/source/**; static/schemas/source/creative/validate-input-request.json (modified) matches static/schemas/source/**; static/schemas/source/manifest.schema.json (modified) matches static/schemas/source/**; static/schemas/source/media-buy/accept-proposal-request.json (modified) matches static/schemas/source/**; static/schemas/source/media-buy/build-creative-request.json (modified) matches static/schemas/source/**; static/schemas/source/media-buy/buy-products-request.json (modified) matches static/schemas/source/**; static/schemas/source/media-buy/control-media-buy-request.json (modified) matches static/schemas/source/**; static/schemas/source/media-buy/decline-proposals-request.json (modified) matches static/schemas/source/**; static/schemas/source/media-buy/get-media-buy-delivery-request.json (modified) matches static/schemas/source/**; static/schemas/source/media-buy/get-media-buys-reques

…(truncated)…

@bokelley
bokelley merged commit 6d21174 into main Aug 15, 2026
48 checks passed
@bokelley
bokelley deleted the coordinate-6416-and-6547 branch August 15, 2026 12:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ladon/needs-human-review Ladon has escalated this PR for human review.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3.2: define capability-selected runtime tool projections

1 participant