Skip to content

ucp version data format correction in samples#99

Open
dipankar1415 wants to merge 1 commit into
Universal-Commerce-Protocol:mainfrom
dipankar1415:agent_version_compare_server_version
Open

ucp version data format correction in samples#99
dipankar1415 wants to merge 1 commit into
Universal-Commerce-Protocol:mainfrom
dipankar1415:agent_version_compare_server_version

Conversation

@dipankar1415
Copy link
Copy Markdown

Description

Fix UCP version in the Python REST merchant sample (rest/python/server).

validate_ucp_headers previously compared agent and merchant versions with string ordering (agent_version > server_version), which is incorrect for UCP YYYY-MM-DD versions. In discovery_profile.json looks like it is in date format, for example:
"version": "2026-01-23"

This change parses versions as ISO calendar dates, compares datetime.date values, returns VERSION_INVALID_FORMAT (400) for malformed agent versions, and returns VERSION_UNSUPPORTED (400) when the agent version is newer than the merchant. Behavior is unchanged when UCP-Agent omits version= (defaults to merchant version).

Files changed: ucp_version.py (new), exceptions.py (UcpVersionError), dependencies.py (date-based validation).
Note: the tests are not added, can add the tests if instructed to add them at a new tests folder.

Category (Required)

Please select one or more categories that apply to this change.

  • Core Protocol: Changes to the base communication layer, global context, or breaking refactors. (Requires Technical Council approval)
  • Governance/Contributing: Updates to GOVERNANCE.md, CONTRIBUTING.md, or CODEOWNERS. (Requires Governance Council approval)
  • Capability: New schemas (Discovery, Cart, etc.) or extensions. (Requires Maintainer approval)
  • Documentation: Updates to README, or documentations regarding schema or capabilities. (Requires Maintainer approval)
  • Infrastructure: CI/CD, Linters, or build scripts. (Requires DevOps Maintainer approval)
  • Maintenance: Version bumps, lockfile updates, or minor bug fixes. (Requires DevOps Maintainer approval)
  • SDK: Language-specific SDK updates and releases. (Requires DevOps Maintainer approval)
  • Samples / Conformance: Maintaining samples and the conformance suite. (Requires Maintainer approval)
  • UCP Schema: Changes to the ucp-schema tool (resolver, linter, validator). (Requires Maintainer approval)
  • Community Health (.github): Updates to templates, workflows, or org-level configs. (Requires DevOps Maintainer approval)

Related Issues

Checklist

  • I have followed the Contributing Guide (including Conventional Commits title requirements and ! for breaking changes).
  • I have updated the documentation (if applicable).
  • My changes pass all local linting and formatting checks.
  • I have added tests that prove my fix is effective or that my feature works.
  • New and existing unit tests pass locally with my changes.
  • (For Core/Capability) I have included/updated the relevant JSON schemas.
  • I have regenerated Python Pydantic models by running generate_models.sh under python_sdk.

Screenshots / Logs (if applicable)

Example response for a newer agent version (version="2027-01-01" vs merchant 2026-01-23):

{
"detail": {
"status": "error",
"errors": [{
"code": "VERSION_UNSUPPORTED",
"message": "Version 2027-01-01 is not supported. This merchant implements version 2026-01-23.",
"severity": "critical"
}]
}
}

@dipankar1415 dipankar1415 requested review from a team as code owners May 18, 2026 04:51
@dipankar1415 dipankar1415 requested review from archrao and kmcduffie May 18, 2026 04:51
@google-cla
Copy link
Copy Markdown

google-cla Bot commented May 18, 2026

Thanks for your pull request! It looks like this may be your first contribution to a Google open source project. Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA).

View this failed invocation of the CLA check for more information.

For the most up to date status, view the checks section at the bottom of the pull request.

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