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
Published PHP SDK 3.18.1 cannot complete a query whose valid Avro value contains nested binary bytes. Client::completeQueryTask() sends the authoritative result_envelope and also puts the original PHP value into optional plain JSON result. For AvroBinaryValue::fromBytes("\xff\x00\x80"), the envelope round-trips correctly but the plain projection throws JsonException before the completion HTTP request is sent.
Confirmed with a fresh Packagist install: version 3.18.1, source and dist ffa67454b99e299624d46dc2c5a4f7eceab5b73f, no repository-source fallback. A recording PSR-18 client exercises the production JSON/planning boundary. Ordinary JSON control: valid codec round-trip, one discovery and one completion HTTP request, plain result retained. Nested binary control: valid codec round-trip, one discovery and zero completion HTTP requests, malformed-UTF-8 exception. This is transport/source reproduction, not actual Server Worker acceptance. The first probe had a broken recording handler and was inconclusive; it is not product evidence.
Owner: sdk-php. Next action: omit only an unencodable optional plain projection while retaining the authoritative Avro envelope, ordinary JSON display values, lease identity, payload limits and refusal behavior. Native 3.9.1's existing query tests already cover envelope-only completion; no new capability is proposed. Python independently owns its corresponding sdk-python#319 fix.
Acceptance:
Real JSON/HTTP regression for nested binary, preserving its exact decoded Avro bytes and sending completion once.
Ordinary JSON/null/whole-float/signed-zero projection behavior remains unchanged; invalid Avro values still refuse before submission.
Smallest reproducing codec corpus case and normal required checks.
Reviewed compatible patch, actual installed package/native query Worker round-trip, protected publication and registry-only repeat before closure.
Implementation and exact prepublication qualification are in #415, frozen source b0ce44195e10c55100dd93594c5497b03047be09.
The smallest codec fixture fails against the previous client and passes with the fix; 225 focused cases / 965 assertions and all codec fixtures pass. Protected packaged-candidate run43454221657 has inspected, nonempty native3.9.1 Worker evidence for nested binary/JSON/signed-zero/null queries, workflow completion and graceful deregistration. The exact candidate archive retains all300 required inputs and excludes internal CI tooling. Earlier harness failures/false-green runs remain explicitly NONPASS on the PR.
Owner remains sdk-php. Next actions: terminal current-head checks plus independent source/package approval, normal merge/main verification, immutable 3.18.2 publication, registry-only Worker repeat and stable portal readback. Published3.18.1 remains affected until that release is verified; this issue stays open.
Normal merge/tagged source f9483bb2b5b45f591a82d9e5419c5b60a6e967c6, tree f34f34f7784b970a83996415a49d088cef412551 equal the reviewed head; remote topic404. All six actual-main workflows passed, including CI43455684906 and portal43455684822.
Annotated tag object c63c6c712e752106fb41a14af8bb81a635cd1afa; Packagist3.18.2 source and dist both point to f9483bb. Published ZIP SHA256 32dc5d1a05a96e9e772e964bea95ae8142882b901d612c97a4aadee699f4ec6b equals the approved candidate in file bytes/modes; all300 required runtime/example/resource/config/contract inputs remain, internal Git/CI/container tooling absent.
Registry-only installed acceptance 43456999904 PASS, PHP8.3.36 / published native3.9.1 index sha256:946c65eb70e8b4b7c4694be8a181c9669d46c3408b80d4e44d96f2030ea3cf51, producer source7d7ad9d6. Actual Composer log confirms extracting the registry archive; retained lock source/dist=f9483bb, no candidate artifacts or repository fallback.
Real Worker nested binary3-byte query, ordinary JSON, signed zero and null round-trip; workflow completion and graceful Worker deregistration all true in nonempty query-results.json.
Actual300×10KB completion4,158,899B/HTTP200; over-cap60×450KB completion36,032,179B/HTTP413 once with exact33,554,432B structural diagnostic, one WorkflowFailed and zero partial activities; fresh same-Worker follow-up completes, uploads0.
Retained pending→completed-null uses one POST/four GETs and one accepted/completed event; default completed wait and unknown original GET key remain explicit. Readiness metric labels and task-kind observations pass.
Exact-tag portal 43457005358 build/deploy PASS. Live https://php.durable-workflow.com/deployment-audit.json binds SDK/presentation/published/workflow revisions to f9483bb and version3.18.2; Client query API and retained-read manual were fetched and verified. No source override was supplied.
All earlier false-green/empty-evidence, invalid-SHA and fixture-failure attempts retain NONPASS; only the corrected source/candidate and final registry results authorize this receipt. #414 can close. Wider #216, timeout-cleanup, #267/no4.0 and remaining #297 caller profiles remain separate. Root Docs/Sample adoption belongs to their owners; this receipt is the PHP handoff.
The normal maintainer annotated-tag push reported the existing tag-creation-rule bypass, as for3.18.1. No force/admin option or policy change was used; source, independent package review and all main gates preceded the push. General was notified immediately.
Activity
rmcdaniel commentedon Nov 13, 2026
Implementation and exact prepublication qualification are in #415, frozen source
b0ce44195e10c55100dd93594c5497b03047be09.The smallest codec fixture fails against the previous client and passes with the fix; 225 focused cases / 965 assertions and all codec fixtures pass. Protected packaged-candidate run43454221657 has inspected, nonempty native3.9.1 Worker evidence for nested binary/JSON/signed-zero/null queries, workflow completion and graceful deregistration. The exact candidate archive retains all300 required inputs and excludes internal CI tooling. Earlier harness failures/false-green runs remain explicitly NONPASS on the PR.
Owner remains sdk-php. Next actions: terminal current-head checks plus independent source/package approval, normal merge/main verification, immutable 3.18.2 publication, registry-only Worker repeat and stable portal readback. Published3.18.1 remains affected until that release is verified; this issue stays open.
rmcdaniel commentedon Nov 13, 2026
3.18.2 is delivered: https://github.com/durable-workflow/sdk-php/releases/tag/3.18.2 .
Identity and integration:
b0ce44195e10c55100dd93594c5497b03047be09, Security final source/harness/package PASS6857765153, all33 source checks green/one intended skip.f9483bb2b5b45f591a82d9e5419c5b60a6e967c6, treef34f34f7784b970a83996415a49d088cef412551equal the reviewed head; remote topic404. All six actual-main workflows passed, including CI43455684906 and portal43455684822.c63c6c712e752106fb41a14af8bb81a635cd1afa; Packagist3.18.2 source and dist both point to f9483bb. Published ZIP SHA25632dc5d1a05a96e9e772e964bea95ae8142882b901d612c97a4aadee699f4ec6bequals the approved candidate in file bytes/modes; all300 required runtime/example/resource/config/contract inputs remain, internal Git/CI/container tooling absent.Registry-only installed acceptance 43456999904 PASS, PHP8.3.36 / published native3.9.1 index
sha256:946c65eb70e8b4b7c4694be8a181c9669d46c3408b80d4e44d96f2030ea3cf51, producer source7d7ad9d6. Actual Composer log confirms extracting the registry archive; retained lock source/dist=f9483bb, no candidate artifacts or repository fallback.query-results.json.Exact-tag portal 43457005358 build/deploy PASS. Live https://php.durable-workflow.com/deployment-audit.json binds SDK/presentation/published/workflow revisions to f9483bb and version3.18.2; Client query API and retained-read manual were fetched and verified. No source override was supplied.
All earlier false-green/empty-evidence, invalid-SHA and fixture-failure attempts retain NONPASS; only the corrected source/candidate and final registry results authorize this receipt. #414 can close. Wider #216, timeout-cleanup, #267/no4.0 and remaining #297 caller profiles remain separate. Root Docs/Sample adoption belongs to their owners; this receipt is the PHP handoff.
The normal maintainer annotated-tag push reported the existing tag-creation-rule bypass, as for3.18.1. No force/admin option or policy change was used; source, independent package review and all main gates preceded the push. General was notified immediately.