Summary
The reusable reference-seller storyboard harness added in #818 exists and can be invoked from the TS SDK workflow with ADCP_SDK_TARBALL, but the Python reference seller is not currently green against the current TS @adcp/sdk 3.1.0-beta.3 storyboard runner.
This blocks adcontextprotocol/adcp-client#1916 from pinning a Python tag and making the cross-repo interop workflow a release gate.
Repro
From a TS SDK checkout with a built candidate tarball:
git checkout 9b13320a9b3b81420a85ee0c9ab5ede0d29ac70d
ADCP_SDK_TARBALL=/path/to/adcp-sdk-8.1.0-beta.0.tgz \
ADCP_PORT=3101 \
STORYBOARD_RESULT_PATH=/tmp/storyboard-result.json \
SELLER_LOG_PATH=/tmp/storyboard-seller.log \
./scripts/ci/run_storyboard_reference_seller.sh
I ran this locally using the TS-side workflow prototype from adcontextprotocol/adcp-client#1916 against Python commit 9b13320a9b3b81420a85ee0c9ab5ede0d29ac70d (#818 merge commit).
Actual result
The harness runs, detects the controller, but exits non-zero with overall_status: partial:
Status: partial
Steps: 19 passed, 18 failed, 53 skipped
controller_detected: true
Failure groups:
12x VALIDATION_ERROR: get_products failed: get_products response failed schema validation at /cache_scope: 'cache_scope' is a required property
2x VALIDATION_ERROR: create_media_buy failed: create_media_buy response failed schema validation at /status: value not in allowed enum (9 options)
1x expected TERMS_REJECTED, got PRODUCT_NOT_FOUND
1x expected PACKAGE_NOT_FOUND, got MEDIA_BUY_NOT_FOUND
2x NOT_FOUND from comply_test_controller setup steps
The dominant blocker is get_products: examples/v3_reference_seller/src/platform.py returns GetProductsResponse(products=products) without cache_scope, while response validation intentionally does not infer it.
The seller log also reports the same schema warnings:
Schema validation warning (response) for get_products: /cache_scope 'cache_scope' is a required property
Schema validation warning (response) for create_media_buy: /status value not in allowed enum (9 options)
Expected result
A Python tag containing scripts/ci/run_storyboard_reference_seller.sh should pass the current TS candidate runner so the TS repo can:
- build a candidate
@adcp/sdk tarball,
- check out the pinned Python tag,
- invoke the Python-owned harness with
ADCP_SDK_TARBALL, and
- use the result as a blocking release/PR interop gate.
Notes
On the TS side, one local issue found during this repro was fixed separately: AJV duplicate $id failures when compiling flat/core schemas before bundled response schemas. After that fix, the remaining red signal is the Python reference seller contract mismatch above.
Summary
The reusable reference-seller storyboard harness added in #818 exists and can be invoked from the TS SDK workflow with
ADCP_SDK_TARBALL, but the Python reference seller is not currently green against the current TS@adcp/sdk3.1.0-beta.3 storyboard runner.This blocks adcontextprotocol/adcp-client#1916 from pinning a Python tag and making the cross-repo interop workflow a release gate.
Repro
From a TS SDK checkout with a built candidate tarball:
I ran this locally using the TS-side workflow prototype from adcontextprotocol/adcp-client#1916 against Python commit
9b13320a9b3b81420a85ee0c9ab5ede0d29ac70d(#818 merge commit).Actual result
The harness runs, detects the controller, but exits non-zero with
overall_status: partial:Failure groups:
The dominant blocker is
get_products:examples/v3_reference_seller/src/platform.pyreturnsGetProductsResponse(products=products)withoutcache_scope, while response validation intentionally does not infer it.The seller log also reports the same schema warnings:
Expected result
A Python tag containing
scripts/ci/run_storyboard_reference_seller.shshould pass the current TS candidate runner so the TS repo can:@adcp/sdktarball,ADCP_SDK_TARBALL, andNotes
On the TS side, one local issue found during this repro was fixed separately: AJV duplicate
$idfailures when compiling flat/core schemas before bundled response schemas. After that fix, the remaining red signal is the Python reference seller contract mismatch above.