Unofficial, capability-adaptive conformance runner for the Universal Commerce Protocol (UCP)
Project description
spck-conformance
Unofficial, capability-adaptive conformance runner for the Universal Commerce Protocol (UCP). Point it at any UCP server and get an honest, capability-scoped report — it runs only the checks that apply to what the server declares, and every check is kill-rate-validated (proven to catch its own defects) before it ships.
Independent project. Not affiliated with, endorsed by, or a substitute for the official UCP conformance suite. It reports only the checks it actually runs.
Install
pip install spck-conformance
No third-party dependencies (Python ≥ 3.9, stdlib only).
Use
spck-conformance --server https://api.example.com \
[--config merchant.json] [--json] [--junit report.xml]
Quickstart (30 seconds)
# 1. point it at your server — no config needed for the discovery + structure checks
spck-conformance --server https://api.example.com
# 2. scaffold a config tailored to YOUR server's declared capabilities
spck-conformance --server https://api.example.com --init merchant.json
# -> fill in the FILL_ME placeholders (a product id, discount code, payment token…)
# 3. re-run with the config to unlock the data-dependent checks
spck-conformance --server https://api.example.com --config merchant.json
On a deviation the report shows expected (the requirement) vs observed (your actual
response) so you can fix it directly, and the footer's Next steps tells you how to
unlock any not-tested checks.
Use in CI (GitHub Action)
# .github/workflows/ucp.yml
jobs:
conformance:
runs-on: ubuntu-latest
steps:
- uses: vishkaty/ucp-conformance@main
with:
server: https://api.example.com
config: merchant.json # optional
# fail-on-deviation: false # report-only mode
The job fails on any MUST deviation and writes a JUnit report (ucp-conformance.xml)
your CI can display as a test run.
--config— optional JSON supplying data-dependent inputs (product id, discount codes, a succeeding/failing payment, an out-of-stock id). Without it, those checks are honestlynot-testedrather than silently passed.--json— full machine-readable report; each check cites its normative clause (id, verbatim text, spec source).--junit FILE— JUnit XML for CI (deviation →<failure>, not-applicable / not-tested →<skipped>).- Exit code —
2if any MUST deviates, else0(partial coverage is not a failure).
What it checks
Discovery + profile structure, checkout lifecycle, idempotency, validation,
fulfillment, order completion, payment-credential handling, discounts, catalog
(search/lookup), and cart — scoped to the capabilities the target declares. The
profile-schema check requires the native ucp-schema validator (not shipped in the
wheel), so it reports not-tested here; run it from the source repo for full fidelity.
Source, methodology, and the self-validating CI harness: https://github.com/vishkaty/ucp-conformance.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file spck_conformance-0.1.0.tar.gz.
File metadata
- Download URL: spck_conformance-0.1.0.tar.gz
- Upload date:
- Size: 145.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8d7efb7aec71d4623f17ea6f943d39c2dbb111a99f04d40ed29b532e8b88bd8f
|
|
| MD5 |
17285b3a7827f936666745294aad0cbc
|
|
| BLAKE2b-256 |
3bc07e34263f38f3b95e0189a3f4e9b4a80180543ebb70f35bd70f3c790fe5c4
|
File details
Details for the file spck_conformance-0.1.0-py3-none-any.whl.
File metadata
- Download URL: spck_conformance-0.1.0-py3-none-any.whl
- Upload date:
- Size: 168.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5be93c3a0939791262ca80a0a159bf85b02cc7885f9d9422ae94a318c7f85de0
|
|
| MD5 |
e10d1a82b8f51f0f742abfc1283d5d26
|
|
| BLAKE2b-256 |
ef9548073fc5418442c56e048c2e38ba91d4f4508957e555301cd79259b7d602
|