Skip to content

Preserve contract SemVer identity when the shared recovery suite changes #67

Description

@rmcdaniel

Problem

The shared release-recovery contract includes the conformance suite SHA-256 in its canonical content, and every consumer adapter pins the contract version, contract digest, and suite digest. The contract change guard now normalizes the suite digest away before comparing the previous and current contracts. A suite-only update can therefore change the contract bytes and digest while reusing the same contract version, allowing one version to identify multiple conformance suites and weakening cross-consumer qualification evidence.

Acceptance criteria

  • Compare the full canonical previous and current contract content for version advancement, including suite.sha256.
  • Add a focused regression proving that changing only the suite digest while retaining the same version fails closed, while the same change with a strictly advancing exact SemVer succeeds. Retain the existing equality, downgrade, prerelease, build-metadata, first-adoption, and unavailable-commit vectors.
  • Propagate byte-identical corrected runner and contract files through every declared consumer target, with required CI pinning the same contract version, contract digest, and suite digest.
  • Record aggregate public-target evidence only after every required target has landed the identical tuple.

Delete when

Delete when a suite-digest-only contract change cannot pass any declared consumer without a strictly advancing contract version, and aggregate evidence binds all required target commits to one identical version and digest tuple.

Required source targets

durable-workflow/.github@main
durable-workflow/cli@main
durable-workflow/sdk-php@main
durable-workflow/sdk-python@main
durable-workflow/sdk-rust@main
durable-workflow/server@main
durable-workflow/waterline@v2
durable-workflow/workflow@v2

Metadata

Metadata

Assignees

No one assigned

    Labels

    authority:githubGitHub is the authoritative lifecycle record for this workbeta:compatibleMay be completed without changing the frozen beta contractkind:cross-repositoryWork spans more than one public repositorypriority:P2Normal-priority product workrepo:github-control-planeOwned by the public organization control planestatus:doneDerived from the authoritative closed issue state

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions