Skip to content

wfctl v0.74.3 validate-contract rejects provider descriptor contracts array #862

Description

@intel352

Summary

wfctl plugin validate-contract --for-publish in v0.74.3 rejects workflow-plugin-product-capture's current plugin.json.contracts shape. The same release gate had been using wfctl v0.63.2 successfully.

Observed

During workflow-plugin-product-capture tag v0.1.8, the release workflow installed wfctl v0.74.3 successfully, then failed in Validate plugin contract for publish (pre-build):

wfctl plugin validate-contract: FAIL
  - invalid_plugin_contract_descriptors: json: cannot unmarshal array into Go value of type main.pluginContractDescriptorFile

Run: https://github.com/GoCodeAlone/workflow-plugin-product-capture/actions/runs/27055537342

Reproduction Shape

plugin.json contains provider contract descriptors inline:

"contracts": [
  {
    "id": "product-capture.browser.v1",
    "path": "contracts/product-capture-provider.json",
    "schema": "schemas/product-capture-provider.schema.json"
  }
]

wfctl v0.74.3 appears to parse inline plugin.json.contracts as pluginContractDescriptorFile, which expects an object with a contracts field rather than this existing array shape.

Impact

Product-capture release had to forward-fix with a new tag (v0.1.9) and restore the release workflow validator pin to wfctl v0.63.2. The failed v0.1.8 tag is immutable and remains as evidence.

Expected

Either:

  • validate-contract should continue accepting the existing provider descriptor array shape when used in plugin.json.contracts, or
  • the validator/docs should distinguish strict plugin contract descriptors from provider contract descriptors and provide a migration path before release gates move to v0.74.x.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions