-
Notifications
You must be signed in to change notification settings - Fork 0
Canonicalize regression evidence identity across supported representations #76
Copy link
Copy link
Closed
Labels
authority:githubGitHub is the authoritative lifecycle record for this workGitHub is the authoritative lifecycle record for this workbeta:blockerMust be resolved before the first 2.0 betaMust be resolved before the first 2.0 betacompletion:evidence-requiredClose only after all explicit acceptance and operational evidence is publicClose only after all explicit acceptance and operational evidence is publiccompletion:evidence-verifiedAcceptance, fixed version, and required operational evidence are publicly verifiedAcceptance, fixed version, and required operational evidence are publicly verifiedkind:cross-repositoryWork spans more than one public repositoryWork spans more than one public repositorypriority:P0Immediate release or data-integrity riskImmediate release or data-integrity riskrepo:github-control-planeOwned by the public organization control planeOwned by the public organization control planestatus:doneDerived from the authoritative closed issue stateDerived from the authoritative closed issue state
Milestone
Description
Metadata
Metadata
Assignees
Labels
authority:githubGitHub is the authoritative lifecycle record for this workGitHub is the authoritative lifecycle record for this workbeta:blockerMust be resolved before the first 2.0 betaMust be resolved before the first 2.0 betacompletion:evidence-requiredClose only after all explicit acceptance and operational evidence is publicClose only after all explicit acceptance and operational evidence is publiccompletion:evidence-verifiedAcceptance, fixed version, and required operational evidence are publicly verifiedAcceptance, fixed version, and required operational evidence are publicly verifiedkind:cross-repositoryWork spans more than one public repositoryWork spans more than one public repositorypriority:P0Immediate release or data-integrity riskImmediate release or data-integrity riskrepo:github-control-planeOwned by the public organization control planeOwned by the public organization control planestatus:doneDerived from the authoritative closed issue stateDerived from the authoritative closed issue state
Status Summary
The shared regression-corpus validator fingerprints representation details instead of one canonical execution identity in two supported paths. A golden-history replay case can be rewrapped as
replay-regression-v1with the same workflow input, history, and expected commands yet receive a different semantic digest. Codec wires are fingerprinted from Base64 text, while the advertised canonical check accepts distinct padded spellings that decode to the same bytes. Either representation-only change can increase a guarded corpus count without adding a new reproducer.How to fix
Normalize every supported replay format to the same consumer-executed workflow/input/history/command/expected shape before duplicate comparison. Normalize codec wires to decoded bytes (or reject any spelling that does not round-trip to canonical Base64), including malformed-frame golden evidence. Keep protocol/runtime metadata out of duplicate identity unless an official consumer proves that it changes execution behavior. Propagate the same normalization to every participating repository-local validator.
Acceptance Criteria
replay-regression-v1is rejected as duplicate semantic evidence.Delete when
Delete when all participating target branches use the canonical identity rules, representation-only additions fail qualification, and focused cross-format/canonical-wire regression tests pass.
Required source targets
durable-workflow/.github@main
durable-workflow/sdk-php@main
durable-workflow/sdk-python@main
durable-workflow/sdk-rust@main
durable-workflow/server@main
durable-workflow/workflow@v2