Skip to content

Suite cannot pass against a merchant other than the reference server #101

Description

@BrocksiNet

We ran the suite against an independent merchant implementation (the example server in agentic-commerce-alliance/ucp-php-sdk, a PHP UCP SDK) at the pinned commit fdbdafd. Unmodified, it reports 1 passed / 63 failed / 13 skipped — and almost none of those failures are about the merchant.

Two defects account for it. Both are cases where the suite depends on the reference server's specific behaviour rather than on the protocol.

1. The mock agent profile declares one capability, the tests exercise seven

shopping-agent-test.json declares only dev.ucp.shopping.order, while the tests drive catalog, cart, checkout, discount and fulfillment.

A Business is required to negotiate capabilities against the Platform profile it is given, and to refuse operations outside the intersection. So a conformant merchant answers capabilities_incompatible to almost everything — correctly. 59 of the 63 failures share that one cause, most of them in tests asserting something else entirely that merely needed a checkout to exist first.

2. protocol_test.py sends a literal profile="..."

The UCP-Agent header is sent with the placeholder text rather than a resolvable profile URL, so a merchant that actually fetches the profile — as the spec requires — cannot.

Effect

Passed Failed
Unmodified 1 63
With both fixed 5 59
With all our fixes (see below) 58 6

The first row is what any non-reference implementation sees today.

Patches

We carry these as patches and apply them in our CI lane. Happy to open PRs for any of them if that's easier — say the word and I'll send them.

Related issues follow for the other defects we hit. Context and per-defect reasoning:
docs/upstream/conformance-suite-defects.md.

Worth saying plainly: the suite found five genuine interop bugs in our SDK that our own test suite could not — discount codes read in a shape no schema defines, an idempotent replay that wasn't byte-identical, order webhooks never dispatched, an ignored UCP-Agent version parameter, and a mis-typed error code. It is doing its job. These reports are meant to help it do that for implementations other than the reference one.

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions