|
1 | 1 | { |
2 | 2 | "schema": "durable-workflow.v2.platform-conformance.suite", |
3 | | - "version": 37, |
| 3 | + "version": 38, |
4 | 4 | "authority_doc": "docs/platform-conformance.md", |
5 | 5 | "authority_url": "https://durable-workflow.github.io/docs/2.0/platform-conformance", |
6 | 6 | "surface_stability_authority": "durable-workflow.v2.surface-stability.contract", |
|
241 | 241 | "provisional", |
242 | 242 | "nonconforming" |
243 | 243 | ], |
| 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 | + }, |
244 | 253 | "targets": { |
245 | 254 | "standalone_server": { |
246 | 255 | "description": "Implementations of the standalone Durable Workflow server: the HTTP control plane plus the worker plane plus the cluster_info manifests.", |
|
401 | 410 | "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.", |
402 | 411 | "sources": [ |
403 | 412 | { |
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" |
410 | 416 | } |
411 | 417 | ], |
412 | 418 | "authority_doc": "https://durable-workflow.github.io/docs/2.0/polyglot/cli-python-parity" |
|
416 | 422 | "description": "Task input envelopes (poll → claim → run) and task result envelopes (complete, fail, cancel, heartbeat) used by every conforming worker.", |
417 | 423 | "sources": [ |
418 | 424 | { |
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" |
429 | 428 | }, |
430 | 429 | { |
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" |
433 | 433 | } |
434 | 434 | ], |
435 | 435 | "authority_doc": "https://durable-workflow.github.io/docs/2.0/polyglot/worker-protocol" |
|
439 | 439 | "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.", |
440 | 440 | "sources": [ |
441 | 441 | { |
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" |
444 | 445 | } |
445 | 446 | ], |
446 | 447 | "authority_doc": "https://durable-workflow.github.io/docs/2.0/platform-conformance", |
|
570 | 571 | "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.", |
571 | 572 | "sources": [ |
572 | 573 | { |
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" |
575 | 577 | } |
576 | 578 | ], |
577 | 579 | "authority_doc": "https://durable-workflow.github.io/docs/2.0/platform-conformance", |
|
598 | 600 | "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.", |
599 | 601 | "sources": [ |
600 | 602 | { |
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" |
603 | 606 | } |
604 | 607 | ], |
605 | 608 | "authority_doc": "https://durable-workflow.github.io/docs/2.0/platform-conformance", |
|
628 | 631 | "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.", |
629 | 632 | "sources": [ |
630 | 633 | { |
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" |
633 | 637 | } |
634 | 638 | ], |
635 | 639 | "authority_doc": "https://durable-workflow.github.io/docs/2.0/platform-conformance", |
|
656 | 660 | "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.", |
657 | 661 | "sources": [ |
658 | 662 | { |
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" |
661 | 666 | }, |
662 | 667 | { |
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" |
665 | 671 | }, |
666 | 672 | { |
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" |
669 | 676 | } |
670 | 677 | ], |
671 | 678 | "authority_doc": "https://durable-workflow.github.io/docs/2.0/platform-conformance", |
|
706 | 713 | "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.", |
707 | 714 | "sources": [ |
708 | 715 | { |
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" |
711 | 719 | } |
712 | 720 | ], |
713 | 721 | "authority_doc": "https://durable-workflow.github.io/docs/2.0/platform-conformance", |
|
743 | 751 | "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.", |
744 | 752 | "sources": [ |
745 | 753 | { |
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" |
748 | 757 | } |
749 | 758 | ], |
750 | 759 | "authority_doc": "https://durable-workflow.github.io/docs/2.0/platform-conformance", |
|
767 | 776 | "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.", |
768 | 777 | "sources": [ |
769 | 778 | { |
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" |
772 | 782 | } |
773 | 783 | ], |
774 | 784 | "authority_doc": "https://durable-workflow.github.io/docs/2.0/platform-conformance", |
|
793 | 803 | "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.", |
794 | 804 | "sources": [ |
795 | 805 | { |
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" |
798 | 809 | } |
799 | 810 | ], |
800 | 811 | "authority_doc": "https://durable-workflow.github.io/docs/2.0/platform-conformance", |
|
818 | 829 | "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.", |
819 | 830 | "sources": [ |
820 | 831 | { |
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" |
823 | 835 | } |
824 | 836 | ], |
825 | 837 | "authority_doc": "https://durable-workflow.github.io/docs/2.0/platform-conformance", |
|
844 | 856 | "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.", |
845 | 857 | "sources": [ |
846 | 858 | { |
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" |
849 | 862 | } |
850 | 863 | ], |
851 | 864 | "authority_doc": "https://durable-workflow.github.io/docs/2.0/platform-conformance", |
|
865 | 878 | "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.", |
866 | 879 | "sources": [ |
867 | 880 | { |
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" |
870 | 884 | } |
871 | 885 | ], |
872 | 886 | "authority_doc": "https://durable-workflow.github.io/docs/2.0/platform-conformance", |
|
890 | 904 | "description": "Failure objects and repair / actionability shapes for stuck tasks, deterministic failure, and replay-mismatch surfaces.", |
891 | 905 | "sources": [ |
892 | 906 | { |
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" |
899 | 910 | } |
900 | 911 | ], |
901 | 912 | "authority_doc": "https://durable-workflow.github.io/docs/2.0/platform-protocol-specs" |
|
905 | 916 | "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.", |
906 | 917 | "sources": [ |
907 | 918 | { |
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" |
914 | 922 | } |
915 | 923 | ], |
916 | 924 | "authority_doc": "https://durable-workflow.github.io/docs/2.0/polyglot/cli-reference" |
|
946 | 954 | "description": "Published-artifact scenarios proving server-derived, non-spoofable principal attribution across raw HTTP, CLI, Python SDK, PHP workflow client, and Waterline operator surfaces.", |
947 | 955 | "sources": [ |
948 | 956 | { |
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" |
951 | 960 | } |
952 | 961 | ], |
953 | 962 | "authority_doc": "https://durable-workflow.github.io/docs/2.0/platform-conformance", |
|
0 commit comments