Skip to content

fix: accept in-band missing fulfillment errors - #87

Open
FanouZeng-TT wants to merge 1 commit into
Universal-Commerce-Protocol:mainfrom
FanouZeng-TT:fix/accept-in-band-fulfillment-errors
Open

fix: accept in-band missing fulfillment errors#87
FanouZeng-TT wants to merge 1 commit into
Universal-Commerce-Protocol:mainfrom
FanouZeng-TT:fix/accept-in-band-fulfillment-errors

Conversation

@FanouZeng-TT

Copy link
Copy Markdown
Contributor

Description

test_complete_without_fulfillment in validation_test.py required the
reference server's exact transport posture and message:

self.assert_4xx_error(
  response,
  expected_status=400,
  substring="Fulfillment address and option must be selected",
)

The checkout error model also permits business failures in-band on the existing
resource: a 2xx response with a typed messages[] error while the checkout
remains non-completed. The same test file already handles both postures through
assert_business_error(...) for out-of-stock, unavailable-item, not-found, and
payment failures. The official playground uses code missing for a missing
fulfillment destination.

Fix: use the existing dual-posture helper with missing for the in-band
case and a case-insensitive fulfillment substring for a 4xx rejection.

Category (Required)

  • Core Protocol: Changes to the core UCP protocol. (Requires Technical Council approval)
  • Governance/Contributing: Changes to governance or contributing processes. (Requires Governance Council approval)
  • Capability: New or updated UCP capabilities. (Requires Maintainer approval)
  • Documentation: Documentation-only changes. (Requires Maintainer approval)
  • Infrastructure: Build, CI, and repository infrastructure. (Requires DevOps Maintainer approval)
  • Maintenance: Dependency and repository maintenance. (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. (Requires Maintainer approval)
  • Community Health (.github): Organization-wide community files. (Requires DevOps Maintainer approval)

Related Issues

N/A

Checklist

  • I have followed the Contributing Guide and the project's style guidelines.
  • 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)

  • validation_test.py: 6/6 passed against the reference Python server
  • Full conformance CI loop: all 17 *_test.py files passed
  • pre-commit run --all-files: passed

@damaz91 damaz91 added the status:needs-triage Signal that the PR is ready for human triage label Aug 14, 2026
@carolinerg1 carolinerg1 added status:under-review and removed status:needs-triage Signal that the PR is ready for human triage labels Aug 14, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants