Merged upstreamCorrectnessMerged Sep 15, 2026
Preserve owner identity and nullable versions in the skill catalog
Carried `ownerHandle` through the catalog query, HTTP response, shared schemas, OpenAPI contract, and CLI display while making `latestVersion` explicitly nullable.
openclaw/clawhub · #3580
API contract fix
Skill catalogs retain owner-qualified identity across pages and consistently represent entries without a public latest version.
Problem
Owner-scoped skills with the same slug appeared identical to catalog consumers, and valid responses containing `latestVersion: null` could be rejected by strict shared schemas.
Approach
Projects owner identity through the full API and CLI path, displays `ownerHandle/slug`, and aligns nullable-version contracts. The CLI keeps a named compatibility decoder for older custom registries configured with `--registry`.
Impact and scope
- Prevents metadata from two publishers with the same skill slug from collapsing into one public identity.
- Aligns handler, OpenAPI, package schemas, and strict consumers on explicit null versions.
- Preserves exact SemVer text, cursor continuation, trending output, and compatibility with legacy custom-registry responses.
Validation
- Registered HTTP fixtures traverse ten tied-sort records across at least four cursor pages and verify complete identities, metadata, exact SemVer build text, null versions, and trending output.
- The PR reports 550 focused tests, 6,918 coverage tests, package/artifact checks, static/type/build checks, HTTP integration, and built-CLI loopback tests. Exact-head browser CI passed the new assertion.
- GitHub product, browser, security, and integration checks passed. Auto-response and Vercel checks failed, so merge evidence does not establish deployment. The verified merge commit credits Goutam Adwant.