Repository navigation
Fix numeric string Worker names in PHP SDK 2.5.1 - #181
Merged
Merged
Conversation
|
rmcdaniel
marked this pull request as ready for review
October 18, 2026 16:02
This was referenced Oct 20, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.



Addresses #180. Published-package acceptance completes the issue.
Normally installed PHP SDK 2.5.0 rejects a managed workflow named
0or17before registration. PHP coerces these dictionary keys to integers. The low-level API accepts strings, but later validation, attributed registration and fingerprint calls expect those stored keys to remain strings.Change
17and017.Qualification
Normally installed 2.5.0 controls refuse
0and17, while017and an ordinary name pass. The observed managed Worker failure occurs before HTTP registration, with zero workflows/tasks in the separate Server 2.9.4 runtime. This is not a Server or Core defect.On unchanged runtime, the corrected 24-case regression suite reports 11 TypeErrors and two JSON-map failures, with 11 controls passing. Current implementation passes all 24 cases / 102 assertions, PHPStan and the full local suite: 2,463 tests / 12,317 assertions, 56 explicit environment-dependent skips. The first test draft had a plural-key typo; a later assertion incorrectly compared wrapper closure identity. Both fixture errors are corrected, with actual activity dispatch used for the identity control.
Final candidate
2e76c92974ce867340d2fbddceaacea6e32f6b38/ tree0c8042952a1e008681b72ba80a29c216a2d4ea17passes every applicable hosted check: PHP 8.1–8.4, package/identity, Laravel/Symfony bridges, transitions, docs, static analysis and official corpus/counterfactual validation. A numeric attributed workflow now retains its original caller context and isolated state across three cold tasks. The preceding source fails its registration boundary. No corpus policy or threshold was relaxed. Connected cooperation remains explicitly skipped.The first hosted
e529627run remains failed on incomplete quickstart release metadata and missing corpus growth. Both were corrected before final qualification. Local official corpus invocation lacked Git in its tooling image; the PHP fixture and hosted official validation pass separately.Sonar passes with zero OPEN/CONFIRMED PR findings, 0.0% new duplication and no ignored conditions. Merged source
aba516ef471a414365f384810307bb3f93f98d4ahas the identical tested tree. Automatic main checks remain their own runs.Separate source HTTP qualification uses the unpublished exact implementation with loaded Worker/Client hash checks against verified Server 2.9.4. All three
0/17/017originals pass typed execute and fresh-process cold reads, preserving original 30-second budgets. Three Workers and both API/queue roles exit 0 with no OOM/restarts. Stopped WAL-aware SQL confirms three completed runs/activities, nine completed tasks, eighteen events, zero repairs/failed jobs and unchanged original database/sidecar bytes. The first direct read-only audit could not open WAL; corrected readback uses a disposable copy of the stopped database and WAL, with the original mounted read-only. All runtime data and resources are removed.Published 2.5.1 at exact
aba516ef. Packagist source/dist references and the normal installed package match. The fresh registry-only consumer passes all three numeric-name typed execute/cold-read originals on the verified Server image. All managed Workers/API/queue exit 0, no OOM/restarts. Stopped readback confirms three completed runs/activities, nine completed tasks, eighteen events and zero repairs/failed jobs; original database and sidecar bytes remain unchanged. Fresh main CI39143182758also passes every applicable check. Package acceptance is complete; Sample/website alignment remains separate follow-through.No Server, Workflow, native/shared/frozen fixture, schema, dependency or held Rust-major edit.