Skip to content

Commit 7eb2176

Browse files
Publish consumer-resolvable sources for every stable conformance fixture
1 parent dc7b98e commit 7eb2176

6 files changed

Lines changed: 83 additions & 72 deletions

File tree

CHANGELOG.md

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,13 @@
22

33
## Unreleased
44

5-
- Advanced the Workflow package source to `2.0.0-rc.8` with identical
6-
fail-closed decoding for malformed recognized service-response envelopes
7-
across embedded execution, query replay, and the standalone runner. The
8-
aggregate recommended product tuple remains RC5 until independently
9-
published release-candidate artifacts pass exact-current qualification.
5+
- Platform conformance suite version 38 replaces repository-relative stable
6+
fixture sources with version-bound public artifact identifiers, deterministic
7+
HTTPS resolvers, and SHA-256 byte bindings.
8+
- Advanced the Workflow package source to `2.0.0-rc.9` for the suite version
9+
38 authority. The aggregate recommended product tuple remains RC5 until
10+
independently published release-candidate artifacts pass exact-current
11+
qualification.
1012
- Historical command-contract gaps remain visible in operator metrics without
1113
warning fleet correctness once their runs are closed. Open runs still warn
1214
when operator command forms lack required safety data.

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ There's also a [sample application](https://github.com/durable-workflow/sample-a
3030
Install the embedded Laravel runtime:
3131

3232
```bash
33-
composer require durable-workflow/workflow:2.0.0-rc.8@RC
33+
composer require durable-workflow/workflow:2.0.0-rc.9@RC
3434
```
3535

3636
This package owns Laravel service-provider integration, migrations, Eloquent

composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@
7272
},
7373
"extra": {
7474
"durable-workflow": {
75-
"product-train": "2.0.0-rc.8"
75+
"product-train": "2.0.0-rc.9"
7676
},
7777
"laravel": {
7878
"providers": [

resources/platform-conformance-contract.json

Lines changed: 70 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"schema": "durable-workflow.v2.platform-conformance.suite",
3-
"version": 37,
3+
"version": 38,
44
"authority_doc": "docs/platform-conformance.md",
55
"authority_url": "https://durable-workflow.github.io/docs/2.0/platform-conformance",
66
"surface_stability_authority": "durable-workflow.v2.surface-stability.contract",
@@ -241,6 +241,15 @@
241241
"provisional",
242242
"nonconforming"
243243
],
244+
"conformance_authorities": {
245+
"php_sdk": {
246+
"status": "stable",
247+
"schema": "durable-workflow.v2.php-sdk-conformance-contract",
248+
"version": 1,
249+
"url": "https://durable-workflow.github.io/platform-conformance/php-sdk-conformance.json",
250+
"authority_doc": "https://durable-workflow.github.io/docs/2.0/platform-conformance"
251+
}
252+
},
244253
"targets": {
245254
"standalone_server": {
246255
"description": "Implementations of the standalone Durable Workflow server: the HTTP control plane plus the worker plane plus the cluster_info manifests.",
@@ -401,12 +410,9 @@
401410
"description": "Frozen request bodies and response shapes for control-plane operations: workflow.start, signal, query, update, cancel, task-history page, namespace storage driver, storage round-trip diagnostic.",
402411
"sources": [
403412
{
404-
"repository": "cli",
405-
"path": "tests/fixtures/control-plane/"
406-
},
407-
{
408-
"repository": "sdk-python",
409-
"path": "tests/fixtures/control-plane/"
413+
"artifact_id": "durable-workflow.v2.control-plane-api@catalog-15",
414+
"resolver_url": "https://durable-workflow.github.io/platform-protocol-specs/control-plane-api.openapi.yaml",
415+
"sha256": "sha256:3eae0fd69a79414dbc1079e9d06129884c35feba3f95439a62e73efb38543813"
410416
}
411417
],
412418
"authority_doc": "https://durable-workflow.github.io/docs/2.0/polyglot/cli-python-parity"
@@ -416,20 +422,14 @@
416422
"description": "Task input envelopes (poll → claim → run) and task result envelopes (complete, fail, cancel, heartbeat) used by every conforming worker.",
417423
"sources": [
418424
{
419-
"repository": "cli",
420-
"path": "tests/fixtures/external-task/"
421-
},
422-
{
423-
"repository": "cli",
424-
"path": "tests/fixtures/external-task-input/"
425-
},
426-
{
427-
"repository": "sdk-python",
428-
"path": "tests/fixtures/external-task-input/"
425+
"artifact_id": "durable-workflow.v2.worker-protocol-api@catalog-15",
426+
"resolver_url": "https://durable-workflow.github.io/platform-protocol-specs/worker-protocol-api.openapi.yaml",
427+
"sha256": "sha256:4e33be4fad463f00f5a2bf0362ca5df1181d26cf429b06108d74475ec484cdc8"
429428
},
430429
{
431-
"repository": "sdk-python",
432-
"path": "tests/fixtures/external-task-result/"
430+
"artifact_id": "durable-workflow.v2.worker-protocol-stream@catalog-15",
431+
"resolver_url": "https://durable-workflow.github.io/platform-protocol-specs/worker-protocol-stream.asyncapi.yaml",
432+
"sha256": "sha256:08e9f580928e5f8946ce61f2ebdca3adb45022577a46a5c50196654b3c9350d1"
433433
}
434434
],
435435
"authority_doc": "https://durable-workflow.github.io/docs/2.0/polyglot/worker-protocol"
@@ -439,8 +439,9 @@
439439
"description": "Live published-artifact scenarios for signal delivery and query consistency across PHP, Python, and Rust workers and SDK clients, replay timing, terminal runs, malformed payloads, and operator visibility.",
440440
"sources": [
441441
{
442-
"repository": "durable-workflow.github.io",
443-
"path": "static/platform-conformance/signal-query-runtime-scenarios.json"
442+
"artifact_id": "durable-workflow.v2.platform-conformance.runtime-scenarios/signal_query_runtime_contract@38",
443+
"resolver_url": "https://durable-workflow.github.io/platform-conformance/signal-query-runtime-scenarios.json",
444+
"sha256": "sha256:f4104a67fdc307e5470c8272aa76971ae152fc22b526505cf149457c04a4c42d"
444445
}
445446
],
446447
"authority_doc": "https://durable-workflow.github.io/docs/2.0/platform-conformance",
@@ -570,8 +571,9 @@
570571
"description": "Live published-artifact scenarios for workflow updates across declared update visibility, accepted/running/completed/failed outcomes, idempotency, refusal paths, payload envelopes, principal attribution, PHP/Python parity, and operator visibility.",
571572
"sources": [
572573
{
573-
"repository": "durable-workflow.github.io",
574-
"path": "static/platform-conformance/workflow-update-runtime-scenarios.json"
574+
"artifact_id": "durable-workflow.v2.platform-conformance.runtime-scenarios/workflow_update_runtime_contract@38",
575+
"resolver_url": "https://durable-workflow.github.io/platform-conformance/workflow-update-runtime-scenarios.json",
576+
"sha256": "sha256:24c0bdb1cca0ea6f7cc68daf1a62e1ca41a20bfbf0d0419aa80a3bfd5b4bb385"
575577
}
576578
],
577579
"authority_doc": "https://durable-workflow.github.io/docs/2.0/platform-conformance",
@@ -598,8 +600,9 @@
598600
"description": "Live published-artifact scenarios for Temporal-parity search attributes across PHP and Python workers, CLI query surfaces, Waterline operator visibility, cross-language codecs, load latency, boolean grammar, and adversarial query handling.",
599601
"sources": [
600602
{
601-
"repository": "durable-workflow.github.io",
602-
"path": "static/platform-conformance/search-attribute-runtime-scenarios.json"
603+
"artifact_id": "durable-workflow.v2.platform-conformance.runtime-scenarios/search_attribute_runtime_contract@38",
604+
"resolver_url": "https://durable-workflow.github.io/platform-conformance/search-attribute-runtime-scenarios.json",
605+
"sha256": "sha256:41db9910236025878bdb2aa000d295ea58b4a53369c065a07eba037f7b256e5e"
603606
}
604607
],
605608
"authority_doc": "https://durable-workflow.github.io/docs/2.0/platform-conformance",
@@ -628,8 +631,9 @@
628631
"description": "Live published-artifact scenarios for Temporal-parity schedules across cron and fixed-rate cadence, public list and describe surfaces, pause/resume/delete controls, missed-fire policy, restart survival, CLI/Python/PHP client paths, cross-language scheduled workflow dispatch, and adversarial schedule inputs.",
629632
"sources": [
630633
{
631-
"repository": "durable-workflow.github.io",
632-
"path": "static/platform-conformance/schedules-runtime-scenarios.json"
634+
"artifact_id": "durable-workflow.v2.platform-conformance.runtime-scenarios/schedules_runtime_contract@38",
635+
"resolver_url": "https://durable-workflow.github.io/platform-conformance/schedules-runtime-scenarios.json",
636+
"sha256": "sha256:9f4850ffb627f0f5afb3a12de41f60d7a35761b73c42868529b81d3a44e74513"
633637
}
634638
],
635639
"authority_doc": "https://durable-workflow.github.io/docs/2.0/platform-conformance",
@@ -656,16 +660,19 @@
656660
"description": "Deterministic replay coverage for frozen history bundles, worker restart replay, adversarial refusal, and in-flight signal timing across the official PHP and Python runtimes.",
657661
"sources": [
658662
{
659-
"repository": "durable-workflow.github.io",
660-
"path": "static/platform-conformance/replay-runtime-scenarios.json"
663+
"artifact_id": "durable-workflow.v2.platform-conformance.runtime-scenarios/history_replay_bundles@38",
664+
"resolver_url": "https://durable-workflow.github.io/platform-conformance/replay-runtime-scenarios.json",
665+
"sha256": "sha256:ce540ae887e0ef4ac2065a108c60e885458563e55a2fedf7291cea8835468945"
661666
},
662667
{
663-
"repository": "workflow",
664-
"path": "tests/Fixtures/V2/GoldenHistory/"
668+
"artifact_id": "durable-workflow.v2.history-event-payloads@catalog-15",
669+
"resolver_url": "https://durable-workflow.github.io/platform-protocol-specs/history-event-payloads.schema.json",
670+
"sha256": "sha256:23e124f6c9efcdea44e16ab80f3b2ad525ee759b1b1c5f503e2c0135a58e9d3e"
665671
},
666672
{
667-
"repository": "sdk-python",
668-
"path": "tests/fixtures/golden_history/"
673+
"artifact_id": "durable-workflow.v2.replay-bundle@catalog-15",
674+
"resolver_url": "https://durable-workflow.github.io/platform-protocol-specs/replay-bundle.schema.json",
675+
"sha256": "sha256:0e49aeb7d0ef64786697e747d5378c4298c4cf04a0c5aabc218086dc02926ef7"
669676
}
670677
],
671678
"authority_doc": "https://durable-workflow.github.io/docs/2.0/platform-conformance",
@@ -706,8 +713,9 @@
706713
"description": "Live published-artifact scenarios for Temporal-parity namespace isolation, lifecycle cleanup, CLI and SDK namespace selection, PHP worker routing, Waterline visibility, Nexus opt-in crossing, and search-attribute value query isolation.",
707714
"sources": [
708715
{
709-
"repository": "durable-workflow.github.io",
710-
"path": "static/platform-conformance/namespace-runtime-scenarios.json"
716+
"artifact_id": "durable-workflow.v2.platform-conformance.runtime-scenarios/namespace_runtime_contract@38",
717+
"resolver_url": "https://durable-workflow.github.io/platform-conformance/namespace-runtime-scenarios.json",
718+
"sha256": "sha256:78458d791b2ad1cb457c85c6e1395553ea5752ed252d8516d5b71bd0701f853d"
711719
}
712720
],
713721
"authority_doc": "https://durable-workflow.github.io/docs/2.0/platform-conformance",
@@ -743,8 +751,9 @@
743751
"description": "Live published-artifact scenarios for child workflow orchestration across PHP and Python workers, cross-language parent/child execution, failure and cancellation propagation, replay after worker restart, concurrent fan-out, and namespace behavior.",
744752
"sources": [
745753
{
746-
"repository": "durable-workflow.github.io",
747-
"path": "static/platform-conformance/child-workflow-runtime-scenarios.json"
754+
"artifact_id": "durable-workflow.v2.platform-conformance.runtime-scenarios/child_workflow_runtime_contract@38",
755+
"resolver_url": "https://durable-workflow.github.io/platform-conformance/child-workflow-runtime-scenarios.json",
756+
"sha256": "sha256:8519047688cebc87594ab1dd185f55437f20bd9d9ec362856cb62edfe74fe9b0"
748757
}
749758
],
750759
"authority_doc": "https://durable-workflow.github.io/docs/2.0/platform-conformance",
@@ -767,8 +776,9 @@
767776
"description": "Live published-artifact scenarios for safe-deploy worker versioning across build-ID registration, rollout visibility, drain/resume controls, per-run pins, compatible replay routing, no-compatible-worker diagnostics, cross-language PHP/Python pinning, adversarial no-bump behavior, and history API version pins.",
768777
"sources": [
769778
{
770-
"repository": "durable-workflow.github.io",
771-
"path": "static/platform-conformance/worker-versioning-runtime-scenarios.json"
779+
"artifact_id": "durable-workflow.v2.platform-conformance.runtime-scenarios/worker_versioning_runtime_contract@38",
780+
"resolver_url": "https://durable-workflow.github.io/platform-conformance/worker-versioning-runtime-scenarios.json",
781+
"sha256": "sha256:a5546f1c610bf7c34e793ff35fb28d1033a8ab37244eeba0e8aa02354cbba9a5"
772782
}
773783
],
774784
"authority_doc": "https://durable-workflow.github.io/docs/2.0/platform-conformance",
@@ -793,8 +803,9 @@
793803
"description": "Live published-artifact scenarios for Temporal-parity saga compensation across forward success, reverse-order compensation after later-step failure, early failure, retry idempotence, compensation failure visibility, worker restart replay, PHP/Python cross-language compensation, typed compensation errors, and operator-visible in-progress compensation state.",
794804
"sources": [
795805
{
796-
"repository": "durable-workflow.github.io",
797-
"path": "static/platform-conformance/saga-runtime-scenarios.json"
806+
"artifact_id": "durable-workflow.v2.platform-conformance.runtime-scenarios/saga_runtime_contract@38",
807+
"resolver_url": "https://durable-workflow.github.io/platform-conformance/saga-runtime-scenarios.json",
808+
"sha256": "sha256:d11d7966813eed10c7869196db72e56ab994cf86ee4bb0f33c8d68a9013959af"
798809
}
799810
],
800811
"authority_doc": "https://durable-workflow.github.io/docs/2.0/platform-conformance",
@@ -818,8 +829,9 @@
818829
"description": "Live published-artifact scenarios for v1 to v2 migration across preserved histories, in-flight progress, activities, signal-or-timer waits, schedules, worker registrations, CLI access, Waterline operator visibility, new v2 starts, queue-aware rollback semantics, and version-skew refusal.",
819830
"sources": [
820831
{
821-
"repository": "durable-workflow.github.io",
822-
"path": "static/platform-conformance/migration-runtime-scenarios.json"
832+
"artifact_id": "durable-workflow.v2.platform-conformance.runtime-scenarios/migration_runtime_contract@38",
833+
"resolver_url": "https://durable-workflow.github.io/platform-conformance/migration-runtime-scenarios.json",
834+
"sha256": "sha256:79a0ecac7afec6efdfd089326b63f20d689797cc181a7a6d441d29699f7055f7"
823835
}
824836
],
825837
"authority_doc": "https://durable-workflow.github.io/docs/2.0/platform-conformance",
@@ -844,8 +856,9 @@
844856
"description": "Published-artifact version-skew refusal scenarios across CLI, Python SDK, PHP workflow worker, Waterline, future-version boundaries, worker registration classifications, Waterline render classifications, and per-operation request/response evidence.",
845857
"sources": [
846858
{
847-
"repository": "durable-workflow.github.io",
848-
"path": "static/platform-conformance/skew-refusal-matrix-scenarios.json"
859+
"artifact_id": "durable-workflow.v2.platform-conformance.runtime-scenarios/skew_refusal_matrix_contract@38",
860+
"resolver_url": "https://durable-workflow.github.io/platform-conformance/skew-refusal-matrix-scenarios.json",
861+
"sha256": "sha256:578a327454b83a891e73d9966546b362c7a5bf94f4a29dc35eae2b110271ea93"
849862
}
850863
],
851864
"authority_doc": "https://durable-workflow.github.io/docs/2.0/platform-conformance",
@@ -865,8 +878,9 @@
865878
"description": "Published-artifact scenarios for 2.0 prerelease readiness across Workflow, Waterline, server, CLI, Python SDK, sample app, public docs, and the quickstart local-server hosting and Laravel paths.",
866879
"sources": [
867880
{
868-
"repository": "durable-workflow.github.io",
869-
"path": "static/platform-conformance/prerelease-readiness-scenarios.json"
881+
"artifact_id": "durable-workflow.v2.platform-conformance.runtime-scenarios/prerelease_readiness_contract@38",
882+
"resolver_url": "https://durable-workflow.github.io/platform-conformance/prerelease-readiness-scenarios.json",
883+
"sha256": "sha256:f2ee2bded2f34ceedb00b55177bfbfc03074fc86555d0b90493f75046d6a93f7"
870884
}
871885
],
872886
"authority_doc": "https://durable-workflow.github.io/docs/2.0/platform-conformance",
@@ -890,12 +904,9 @@
890904
"description": "Failure objects and repair / actionability shapes for stuck tasks, deterministic failure, and replay-mismatch surfaces.",
891905
"sources": [
892906
{
893-
"repository": "server",
894-
"path": "docs/contracts/external-task-result.md"
895-
},
896-
{
897-
"repository": "server",
898-
"path": "docs/contracts/replay-verification.md"
907+
"artifact_id": "durable-workflow.v2.repair-actionability-objects@catalog-15",
908+
"resolver_url": "https://durable-workflow.github.io/platform-protocol-specs/repair-actionability-objects.schema.json",
909+
"sha256": "sha256:c52238b20502e256f3e0ca681105368d642e27a6725ecfeb9f0571ccf6a01132"
899910
}
900911
],
901912
"authority_doc": "https://durable-workflow.github.io/docs/2.0/platform-protocol-specs"
@@ -905,12 +916,9 @@
905916
"description": "The `--output=json` and `--output=jsonl` envelopes that automation depends on. Diagnostic-only fields are listed in the schema and excluded from the contract diff.",
906917
"sources": [
907918
{
908-
"repository": "cli",
909-
"path": "tests/fixtures/control-plane/"
910-
},
911-
{
912-
"repository": "cli",
913-
"path": "schemas/"
919+
"artifact_id": "durable-workflow.v2.cli-json-envelopes@catalog-15",
920+
"resolver_url": "https://durable-workflow.github.io/platform-protocol-specs/cli-json-envelopes.schema.json",
921+
"sha256": "sha256:af67ec2f21d905a200f603c73fd0aa038081798a99b818b2eff8ce093e4bebc9"
914922
}
915923
],
916924
"authority_doc": "https://durable-workflow.github.io/docs/2.0/polyglot/cli-reference"
@@ -946,8 +954,9 @@
946954
"description": "Published-artifact scenarios proving server-derived, non-spoofable principal attribution across raw HTTP, CLI, Python SDK, PHP workflow client, and Waterline operator surfaces.",
947955
"sources": [
948956
{
949-
"repository": "durable-workflow.github.io",
950-
"path": "static/platform-conformance/principal-attribution-scenarios.json"
957+
"artifact_id": "durable-workflow.v2.platform-conformance.runtime-scenarios/principal_attribution_contract@38",
958+
"resolver_url": "https://durable-workflow.github.io/platform-conformance/principal-attribution-scenarios.json",
959+
"sha256": "sha256:257dbaaa0c16b62f86f19e304a3de54347da1e0cf03642639c159e0dfac8c19f"
951960
}
952961
],
953962
"authority_doc": "https://durable-workflow.github.io/docs/2.0/platform-conformance",

src/V2/Support/PlatformConformanceSuite.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,9 @@ final class PlatformConformanceSuite
2222
{
2323
public const SCHEMA = 'durable-workflow.v2.platform-conformance.suite';
2424

25-
public const VERSION = 37;
25+
public const VERSION = 38;
2626

27-
public const MIRROR_SHA256 = '7faf04cdb566c0189653cd3a93be34a00cdd7ae6cf8c8d31eeb013e6e8945a9e';
27+
public const MIRROR_SHA256 = 'b1dab120bc240cb799fb92cd67c304a65d5b29aa76dc5f2445342742172abdee';
2828

2929
public const RESULT_SCHEMA = 'durable-workflow.v2.platform-conformance.result';
3030

0 commit comments

Comments
 (0)