Repository navigation
fix(testing): backport served-release capability validation and compliance_testing cross-check for SDK 15.9.2 - #3287
Merged
Conversation
…ompliance_testing in the cross-check
Capability discovery strictly validated get_adcp_capabilities against the
caller's pin. A 3.0 pin sends only adcp_major_version: 3, so the seller
serves and echoes its highest 3.x release, and the SDK reported that
release's shapes as false capabilities_schema_issues (and failed
getAdcpCapabilities() in strict mode). discoverAgentProfile and
TaskExecutor now validate against the echoed adcp_version when it is a
same-major release the SDK bundles, falling back to the pin otherwise,
per the versioning spec ("Server echoes"). Validation stays strict.
The testCapabilityDiscovery protocol/tool cross-check keyed
comply_test_controller as "compliance" while the capabilities parser
reports "compliance_testing", so every agent declaring the block failed
with "Tools suggest unreported protocols: compliance". The key is now
compliance_testing and the table's keys are type-checked against
AdcpProtocol.
Fixes #3278
Fixes #3279
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…he echo; cover prerelease and major-only pins Matches the storyboard runner's response_schema precedence. Documents the deliberate downshift acceptance and tightens the cross-check changeset. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…oader A separate module grew the @adcp/sdk/client/core eager graph past its 210-module budget and the packed file count past 6630. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This was referenced Oct 15, 2026
There was a problem hiding this comment.
Ladon verdict: Approve
Approve.
Two correct, well-tested bug fixes with no findings at Medium or above.
src/lib/testing/scenarios/capabilities.ts:321— re-keys the cross-check mapcompliance→compliance_testingto matchparseCapabilitiesResponseoutput and theCOMPLIANCE_TOOLS→compliance_testingTOOL_PROTOCOL_MAP entry; type-checked viasatisfies Partial<Record<AdcpProtocol,...>>.src/lib/validation/schema-loader.ts:1258—resolveServedValidationVersionselects the seller's echoed release per the versioning spec, failing closed to the pin on every ambiguous case and regex-gated against path traversal. Strict validation preserved, not loosened. No witness-not-translator concern: only the schema-version selector changes; no data fabricated or reshaped.
Changesets present and correctly typed patch for bug fixes; no public export removed/renamed. No new external I/O or timeout surface. Test coverage sound (major-only envelope + external-schema-root precedence cases; reuses established MCP scaffolding pattern).
No high-risk flag, no gated paths, no author team gate, no prior decision. Decision table falls through rows 1–8 to row 9.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Backports #3280 to the
15.9.xmaintenance line so it ships as@adcp/sdk@15.9.2on npmlatest. SDK 16 is beta-only, and adcontextprotocol/adcp depends on 15.8.1.discoverAgentProfileandTaskExecutorvalidateget_adcp_capabilitiesagainst the seller's echoedadcp_versioninstead of the caller's pin.schemaRootbound to the pin still wins.capabilities_schema_issuesfor 3.0-pinned probes of 3.1+/3.2 sellers. A 3.0 pin negotiates major-only, so the seller serves its highest 3.x release (versioning spec, "Server echoes").testCapabilityDiscoverycross-check keyscomply_test_controllerundercompliance_testing, notcompliance. The table keys are type-checked againstAdcpProtocol.Backport notes
testing/client.ts,core/TaskExecutor.ts,testing/scenarios/capabilities.ts,validation/schema-loader.ts) is identical on15.9.xapart from line offsets.schema-loader.tsrather than a new module. That keeps theclient/coreeager graph and the packed file count inside their budgets.15.9.x'srelease.ymlalready publishes stable 15.9.x patches tolatest.patchfor@adcp/sdk.Test plan
test/lib/capabilities-served-release-validation.test.js(17 tests) passes on15.9.x.npm testlocally. Every non-Postgres suite passes, including the eslint-plugin and reference-renderers workspaces. The only failures are Postgres-backed tests (ECONNREFUSED, no local database), the same set as onmain. CI's Postgres-backed unit tests are green.format:check,verify:package,check:package-size(6565 files)Fixes #3278 and #3279 on the 15.x line.
🤖 Generated with Claude Code