diff --git a/CHANGELOG.md b/CHANGELOG.md index e77d2ae..d5ff655 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,20 +2,25 @@ ## [1.1.0] - 2026-03-19 -### Added -- Canonical `{ receipt, runtime_metadata? }` response model -- Verification targets canonical receipt -- TypeScript and Python SDK parity -- TypeScript CLI support +CommandLayer SDKs now align on the Commons-first Protocol-Commons v1.1.0 surface. This release replaces the mixed 1.0.0-era documentation and response assumptions with a single canonical receipt model shared by the TypeScript SDK, Python SDK, fixtures, and verification flow. -### Changed -- Normalized response handling to wrapper model -- Improved verification flow alignment with runtime +### What changed from 1.0.0 +- Standardized on the canonical `{ receipt, runtime_metadata? }` wrapper and receipt-first verification flow across both SDKs. +- Aligned TypeScript and Python behavior, fixtures, and parity checks around the same v1.1.0 receipt hashing and verification semantics. +- Added TypeScript CLI support for the current Commons surface. -### Fixed -- No additional fixes recorded in this release note. +### Removed +- x402-first positioning from Commons-facing surfaces and release documentation. Commons is no longer presented as an x402-first product surface in this repo. +- Ambiguous blended response/documentation paths that implied multiple concurrent canonical envelopes. -### Notes -- Protocol-Commons v1.1.0 is the current supported line -- Commercial support is not yet first-class -- SDK reflects canonical receipt-first architecture +### Breaking changes +- Consumers should treat the v1.1.0 wrapper and receipt shape as the only canonical public contract documented by this repository. +- Verification guidance now assumes the canonical receipt payload and current signer-discovery flow; integrations built around older mixed envelopes should update. + +### Non-breaking improvements +- Improved cross-SDK parity coverage for hashing, signature verification, and signer resolution behavior. +- Clearer release alignment: Protocol-Commons v1.1.0 is the supported line for this repository and its published SDK packages. + +### Known limitations / scope +- This repository is Commons-first and does not claim first-class commercial or x402 runtime coverage. +- The SDKs may still normalize some older blended runtime responses for compatibility, but those compatibility paths are not the canonical contract. diff --git a/python-sdk/tests/test_verify.py b/python-sdk/tests/test_verify.py index d0c742d..c8d856d 100644 --- a/python-sdk/tests/test_verify.py +++ b/python-sdk/tests/test_verify.py @@ -26,8 +26,8 @@ def _signed_receipt() -> tuple[dict[str, object], str]: "status": "success", "x402": { "verb": "summarize", - "version": "1.0.0", - "entry": "x402://summarizeagent.eth/summarize/v1.0.0", + "version": "1.1.0", + "entry": "x402://summarizeagent.eth/summarize/v1.1.0", }, "metadata": { "proof": { diff --git a/test_vectors/README.md b/test_vectors/README.md index 987c6ba..70a50e0 100644 --- a/test_vectors/README.md +++ b/test_vectors/README.md @@ -7,7 +7,7 @@ This directory contains shared receipt fixtures used by both SDKs and the parity - `receipt_valid.json` — canonical valid receipt fixture. - `receipt_valid_v1.json` — additional valid receipt fixture used for version compatibility checks. - `receipt_invalid_sig.json` — receipt fixture with an invalid signature. -- `receipt_wrong_kid.json` — receipt fixture whose `kid` drifts but still verifies with an explicit public key. +- `receipt_wrong_kid.json` — receipt fixture expected to fail verification after `kid` mutation changes the signed content. - `receipt_malformed_pubkey.json` — receipt fixture paired with malformed ENS signer metadata scenarios. - `public_key_base64.txt` — shared Ed25519 public key for explicit-key verification. - `expected_hash.txt` — expected SHA-256 hash for canonical receipt hashing. diff --git a/typescript-sdk/scripts/unit-tests.mjs b/typescript-sdk/scripts/unit-tests.mjs index 4ee8b3f..7a1094c 100644 --- a/typescript-sdk/scripts/unit-tests.mjs +++ b/typescript-sdk/scripts/unit-tests.mjs @@ -196,7 +196,7 @@ await assertRejects( const receipt = { status: "success", - x402: { verb: "summarize", version: "1.0.0", entry: "x402://summarizeagent.eth/summarize/v1.0.0" }, + x402: { verb: "summarize", version: "1.1.0", entry: "x402://summarizeagent.eth/summarize/v1.1.0" }, result: { summary: "test" }, metadata: { proof: {