You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Use the accepted activity option names in guide examples and reject unknown ones #188
The PHP SDK guide shows activity options the runtime does not recognize. A developer who copies them gets one attempt and no per-attempt deadline, with no error.
Failures and retries passes start_to_close_timeout_seconds and retry_policy.maximum_attempts, initial_interval_seconds and maximum_interval_seconds. Workflows and activities passes start_to_close_timeout_seconds.
The worker protocol accepts start_to_close_timeout, schedule_to_start_timeout, schedule_to_close_timeout, heartbeat_timeout and retry_policy fields max_attempts, backoff_seconds and non_retryable_error_types. WorkflowCommandNormalizer::optionalRetryPolicy keeps only those fields, so the misspelled keys are dropped and the activity gets a one-attempt budget.
Local activity options already reject unknown retry policy fields.
Expected
The examples use accepted fields and say that max_attempts counts the first attempt. An unsupported remote activity option is reported to the developer instead of silently producing one attempt with no timeout.
Acceptance
Both guide examples use accepted fields, with backoff expressed as backoff_seconds.
A test runs the documented options through the SDK and asserts the emitted schedule_activity carries retry_policy.max_attempts 5 and start_to_close_timeout 30.
An unknown remote activity option or retry policy field, such as maximum_attempts, fails before transport with an error naming the field.
Confirmed and prepared in draft #190, exact head ae351cc6997c4bb4e6bf583013b255fcc6a8fb57 / whole 834711e5.
Seven new unknown-field cases fail on unchanged runtime bytes matching
published 2.5.2; two valid-option controls pass. The executable PHP consumer
retry fixture also fails before the correction. The candidate rejects the
unknown field locally and retains all supported options. The normal workflow
context emits exactly retry_policy.max_attempts=5 and start_to_close_timeout=30; both guide examples now use accepted names.
Focused9/23, full local2498/12418 with56 connected-test skips, full PHPStan,
both official PHP consumer fixtures and final metadata/options11/84 pass.
The source checks are not a published-package or actual Server claim. Prospective
2.5.3 is unpublished; hosted PHP/framework/corpus/docs/Sonar, merge/main,
publication, installed archive and live portal follow-through remain.
Existing runs that recorded defaults from misspelled options need a
replay-compatible policy branch or completion before corrected policy is
deployed. The guide explains this rather than promising a silent policy change.
All local tooling, dependencies/cache/build/raw and network are removed at
05:57:42 UTC, ahead the06:30 bound. No application/DB/paid host was started.
Delivered in PHP SDK 2.5.3, source 43d39bff50ccace0a309de41306cd350751ec575 / whole 89fbb7363f287b1fb946c10620f8e4ef8a8ddb4b, through #190 and #191.
The guide now uses accepted activity option names. Unknown top-level and retry-policy fields fail locally with the offending name instead of silently changing the policy. Existing recorded policies still require replay-compatible rollout; the guide explains that boundary.
Final candidate and independent main checks pass. The first #190 corpus setup failure and the first main portal link failure remain failed records; #191 corrects the link and adds the existing rendered-link check to pull-request qualification.
Packagist's normal source/dist references match the release. A normal archive installation passes 9 tests / 23 assertions, both official consumer negative fixtures, and the released registration-identity check (durable-workflow-php/2.5.3). The loaded WorkflowCommand comes from vendor and matches the released SHA-256 e5852ff5f70c372d86453d3fa65a41d3c3fa29853c05be5f491e1b801821204c.
Published source-free service-mode verification passes with explicit SDK 2.5.3 and the declared minimum Server 2.5.0, including a genuine completed class-oriented workflow. Optional cooperative discovery is skipped and is not qualified by that run.
Portal deployment passes. Live deployment audit identifies exact source 43d39bff; both affected public guides contain the corrected names and working retry-guide link. No minimum protocol, dependency or major-version change is made.
The issue's published-package and live documentation acceptance is complete. Separate SDK #112/#111/#16 work is unchanged.
Activity
rmcdaniel commentedon Oct 20, 2026
Confirmed and prepared in draft #190, exact head
ae351cc6997c4bb4e6bf583013b255fcc6a8fb57/ whole834711e5.Seven new unknown-field cases fail on unchanged runtime bytes matching
published 2.5.2; two valid-option controls pass. The executable PHP consumer
retry fixture also fails before the correction. The candidate rejects the
unknown field locally and retains all supported options. The normal workflow
context emits exactly
retry_policy.max_attempts=5andstart_to_close_timeout=30; both guide examples now use accepted names.Focused9/23, full local2498/12418 with56 connected-test skips, full PHPStan,
both official PHP consumer fixtures and final metadata/options11/84 pass.
The source checks are not a published-package or actual Server claim. Prospective
2.5.3 is unpublished; hosted PHP/framework/corpus/docs/Sonar, merge/main,
publication, installed archive and live portal follow-through remain.
Existing runs that recorded defaults from misspelled options need a
replay-compatible policy branch or completion before corrected policy is
deployed. The guide explains this rather than promising a silent policy change.
All local tooling, dependencies/cache/build/raw and network are removed at
05:57:42 UTC, ahead the06:30 bound. No application/DB/paid host was started.
rmcdaniel commentedon Oct 20, 2026
Delivered in PHP SDK 2.5.3, source
43d39bff50ccace0a309de41306cd350751ec575/ whole89fbb7363f287b1fb946c10620f8e4ef8a8ddb4b, through #190 and #191.The guide now uses accepted activity option names. Unknown top-level and retry-policy fields fail locally with the offending name instead of silently changing the policy. Existing recorded policies still require replay-compatible rollout; the guide explains that boundary.
Final candidate and independent main checks pass. The first #190 corpus setup failure and the first main portal link failure remain failed records; #191 corrects the link and adds the existing rendered-link check to pull-request qualification.
Packagist's normal source/dist references match the release. A normal archive installation passes 9 tests / 23 assertions, both official consumer negative fixtures, and the released registration-identity check (
durable-workflow-php/2.5.3). The loadedWorkflowCommandcomes from vendor and matches the released SHA-256e5852ff5f70c372d86453d3fa65a41d3c3fa29853c05be5f491e1b801821204c.Published source-free service-mode verification passes with explicit SDK 2.5.3 and the declared minimum Server 2.5.0, including a genuine completed class-oriented workflow. Optional cooperative discovery is skipped and is not qualified by that run.
Portal deployment passes. Live deployment audit identifies exact source
43d39bff; both affected public guides contain the corrected names and working retry-guide link. No minimum protocol, dependency or major-version change is made.The issue's published-package and live documentation acceptance is complete. Separate SDK #112/#111/#16 work is unchanged.