Skip to content

chore(deps): update @adcp/sdk to 15.9.2 and drop external-smoke SDK workarounds - #8231

Merged
bokelley merged 1 commit into
mainfrom
chore/sdk-15.9.2
Oct 16, 2026
Merged

bokelley merged 1 commit into
mainfrom
chore/sdk-15.9.2

Conversation

@bokelley

Copy link
Copy Markdown
Contributor

Summary

Bumps @adcp/sdk from 15.8.1 to 15.9.2 and removes the external-smoke workarounds that #8208 added for two SDK bugs. Both bugs are fixed in 15.9.2 (adcontextprotocol/adcp-client#3278, adcontextprotocol/adcp-client#3279).

External smoke (scripts/external-smoke/)

Removed:

  • The compliance_testing cross-check waiver (SDK_COMPLIANCE_CROSS_CHECK_*, isSdkComplianceCrossCheckFalsePositive). In 15.9.2 the SDK keys comply_test_controller under compliance_testing. Any cross-check failure now fails the probe. That includes the new 15.9.2 failure for an agent that declares a compliance_testing block but does not expose the controller.
  • The served-release re-pin and second discovery (negotiateServedRelease, ReleaseProbe, RepinProbe, RELEASE_RE, releasePrecision, servedRelease, the repin option, and repinFor in run.ts). 15.9.2 validates get_adcp_capabilities against the echoed adcp_version when it is in the pin's major and the SDK bundles its schema. testCapabilityDiscovery does not register the probe's schemaRoot, so no pin-bound external root overrides the echo.

Kept, now built on the single 15.9.2 discovery result:

  • OAuth 401: requires OAuth authorization is still classified as auth, so the anonymous probe reports auth-required.
  • Echoed version: an echoed adcp_version must be in the pin's major and listed in adcp.supported_versions. The SDK's schema issues are included as context in the failure message.
  • Storyboard bundle: storyboards resolve from the hosted bundle for the served release (new resolverFor option). An echo with no hosted bundle fails.
  • Dropped: "the agent must serve the same release when re-pinned to the echo." This needed a second probe, so it goes with the re-pin.

Tests were rewritten to cover each kept check (one discovery, the resolver bundle for the echo, release-candidate and same-as-pin echoes, a missing echo, a wrong major, a non-string echo, a release not in supported_versions, no hosted bundle). They also cover any SDK cross-check failure, including the new 15.9.2 messages.

Required server change: migration 624

SDK 15.9.0 adds pattern/transport columns to adcp_reporting_destination_authorizations in REPORTING_MANAGED_DELIVERY_MIGRATION. PostgresReportingManagedDeliveryStore uses them on every call to authorizeDestination and installBinding, and in claimRevocation, which runs at the start of every managed-delivery worker pass. The store's probe() does not check for these columns, so the opt-in training GCS reporting runtime would start normally and then fail with column "pattern" does not exist.

Migration 624 copies the SDK's $pattern_transport$ block (including its backfill) verbatim. It also copies the 15.9 tombstone retry columns from REPORTING_LEDGER_MIGRATION. Those are for parity only: just period retention reads them, and the training runtime does not enable it. The namespace precondition is the same as 620/621. Row-storage and BigQuery warehouse-sink migration changes do not apply because the server uses neither.

Version pins (same set as #8148)

Choose-your-SDK doc, Addie certification text (with a CODE_VERSION bump), the GCS buyer evidence script, and the provenance test fixtures (sdk_version comes from the SDK's LIBRARY_VERSION). The TypeScript response-conformance baseline was re-recorded: all 125 cases dispatched with the same 3.2.1 artifact digest, summary counts and single known finding. Only the SDK version changed.

Request-signing vectors

15.9.x now rejects the profile-3.2 026-non-ascii-host and 031-malformed-host-authority vectors. Both SDK_KNOWN_GAPS todo entries were already passing, so they are removed, as the file's comment says to do.

No changeset: nothing on the protocol release surface changes (same as #8148).

Test plan

  • npm run typecheck
  • npm run test:unit (1131 passed)
  • npm run test:schemas
  • npm run build:compliance -- --check
  • npm run test:server-unit -- --shard=N/3 for N=1..3
  • External-smoke unit tests (44 passed)
  • npm run test:external-smoke against the deployed public test agent: authenticated passed, anonymous auth-required. With plain 15.9.2 at the 3.0 pin, the agent echoes 3.2, there are no capability schema issues and the cross-check passes.
  • Disposable PostgreSQL training-gcs-reporting-postgres suite: 8/8 pass with 624. Without it, 6/8 fail (column "pattern" does not exist, column target.pattern does not exist).
  • Full migrate.ts on a fresh database through 624, then training-gcs-account-replacement (9/9). Re-applying 624 is a no-op.
  • registry-api-agent-refresh and registry-api-compliance-verdict-source integration tests (68 passed)
  • npm run test:sdk-response-conformance; request-signing profile-3.2 and A2A vectors (151 pass, 0 todo)

Follows #8208. Refs adcontextprotocol/adcp-client#3278, adcontextprotocol/adcp-client#3279.

🤖 Generated with Claude Code

…orkarounds

SDK 15.9.2 fixes the two bugs that #8208 worked around in the external
smoke check (adcp-client#3278, #3279). Capability discovery now validates
get_adcp_capabilities against the echoed adcp_version when it is in the
pin's major and bundled. The protocol/tool cross-check now keys
comply_test_controller under compliance_testing.

Removed from scripts/external-smoke: the compliance cross-check waiver,
and the served-release re-pin with its second discovery (ReleaseProbe,
RepinProbe, releasePrecision, servedRelease, negotiateServedRelease,
repinFor). Kept on top of the single 15.9.2 discovery: OAuth 401
classification, the echoed release must share the pin's major and be
listed in supported_versions, and storyboards resolve from the served
release's hosted bundle (new resolverFor option). The "same release
when re-pinned" check needed the second probe and is dropped.

SDK 15.9.0 adds pattern/transport to adcp_reporting_destination_
authorizations. PostgresReportingManagedDeliveryStore uses them in
authorizeDestination, installBinding and claimRevocation (every worker
pass), and its probe does not check them. Migration 624 adds them
verbatim from REPORTING_MANAGED_DELIVERY_MIGRATION, plus the 15.9
tombstone retry columns for ledger parity. The disposable-PostgreSQL
suite passes 8/8 with it and fails 6/8 without it.

Moves the exact current-version pins to 15.9.2 (SDK doc, Addie
certification text with a CODE_VERSION bump, buyer evidence, provenance
tests). Re-records the TypeScript conformance baseline: all 125 cases,
same 3.2.1 digest, counts and finding; only the SDK version changed.
Removes the two request-signing SDK_KNOWN_GAPS todos, which now pass.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

@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 — SDK bump 15.8.1→15.9.2 with accompanying migration and smoke-check refactor.

Checked:

  • Migration 624 follows the established 620/621 precondition pattern; additive/idempotent with guarded ALTERs, fail-closed backfill (leaves pattern/transport NULL unless every binding agrees), bounded by lock_timeout 5s / statement_timeout 60s. Judged as production-facing (auto-runs on startup) and found safe.
  • check.ts served-release logic fails closed on bad echo before assertDiscovery, which still rejects any capabilities_schema_issues.
  • Removed SDK workarounds (compliance cross-check waiver, re-pin negotiation, request-signing SDK_KNOWN_GAPS) are obsolete under 15.9.2 and covered by rewritten tests.
  • No protocol surface touched (no static/schemas/source, docs/reference, or dist), so no changeset is required and correctly none is added.
  • Test plan fully checked, including disposable-postgres migration run (8/8) and external-smoke against the deployed agent.

Decision rules: No critical/high/medium findings (rows 1, 4, 5, 6, 8 don't fire). gated_paths is false (row 2 n/a). high_risk is true but all reasons are (modified) with no medium finding, or (added) scaffolding — not escalation-worthy (rows 3, 5 n/a). No no-auto-approve team match (row 7 n/a). Falls through to row 9 → approve.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant