Repository navigation
Description
Delivered in Native 3.3.0 and PHP SDK 3.11.0
General reconciled the original acceptance against maintained backend controls and the exact published producer/consumer tuple. Acceptance, publication and scope limits. No benchmark speedup or installed SQL-count measurement is claimed. Earlier NONPASSs remain attributed.
Original requirement and historical evidence
External performance report, topic 2a. The reported timings and proposed fixes have not been independently reproduced. The supplied patches are reference drafts for review and current-source qualification.
Problem
A leased activity poll answer carries server_time, but a leased workflow
poll answer doesn't. Without it, a worker can't tell how much of a
workflow task lease is left when the answer arrives. So it renews the
lease before every replay, which is one more locked transition per
workflow task (report topic 2b).
Proposal
- A leased workflow poll answer carries
server_time, the Server clock
when the answer was made, in the same encoding as the activity poll
answer's. - A replayed answer (the same
poll_request_id) replays the original
claim, attempt and lease, but states its ownserver_time, as a
replayed query poll does.
Acceptance
- Leased workflow poll answers include
server_timeon every backend. - A replayed poll's answer equals the first one in every field except
server_time, which may only move forward. The reference commit changes
tests/execution.rsandtests/execution/history_budget.rsto compare
that way. worker-protocol-api.openapi.yamldocumentsserver_timeon the leased
workflow poll answer.
Implementation constraints
It's additive, and old workers ignore the field.
Dependencies
No new producer dependency is required for source investigation.
Related existing work: #325, #1030.
Draft patches and validation boundary
Current main was independently read as b8f4dd13623ce645de77ba5bd89ae8dd8eea2f7c. The supplied draft series targets 3d4d4afaf2b24aaa5443eac154e253b011924738; patches are cumulative reference material, not a current-main application or test result. Review and rebase on maintained source, preserve all existing tests and published compatibility, then establish causal controls and actual conformance before shipping. No patch was applied or executed during intake.
Known draft gap / required control: The first draft patch combines this field with topic3 query/sweep changes. Split the field/contract change into a coherent PR and preserve original claim/attempt/lease identities when refreshing server_time.
The following sanitized unified diffs identify proposed reference material:
0001-t03+t02a-Keep-the-poll-path-s-queries-off-the-size-of-the-tab.patch— 17,026 bytes, SHA-25678a6762fdaaf4e9622b1aace4b93aff98d13eee6ccff9081e4b852a443a690e1.0012-t02a-Let-a-replayed-workflow-poll-carry-the-clock-of-its-.patch— 2,934 bytes, SHA-256a6c90a60b637d44652ef7cd6b8ade4b74d7d03ebab621dc3594706990dc4e204.
Patch0001 is shared with report topic3 and must be split; it is not a standalone field-only implementation.
Next action: the owning maintainer reviews the candidate against current source and the acceptance criteria above. Preserve durability, lease/fencing, idempotency, fairness and whole-completion/history budgets. New producer capabilities need versioned schemas and real producer/consumer compatibility proof; historical/frozen evidence is not rewritten.
Activity
rmcdaniel commentedon Nov 6, 2026
Sanitized reference diff
0001-t03+t02a-Keep-the-poll-path-s-queries-off-the-size-of-the-tab.patch, part 1/1.This is an unverified, cumulative draft from the external report. Mail author/date/commit-message metadata was removed; the unified-diff hunks were retained. No patch was applied or executed, and no build/test or compatibility result is implied. The known gaps and acceptance criteria in this issue remain mandatory.
Complete sanitized patch: 17,026 bytes, SHA-256
78a6762fdaaf4e9622b1aace4b93aff98d13eee6ccff9081e4b852a443a690e1. This part: 17,026 bytes, SHA-25678a6762fdaaf4e9622b1aace4b93aff98d13eee6ccff9081e4b852a443a690e1. Parts concatenate in order; a part boundary is between complete file diffs.rmcdaniel commentedon Nov 6, 2026
Sanitized reference diff
0012-t02a-Let-a-replayed-workflow-poll-carry-the-clock-of-its-.patch, part 1/1.This is an unverified, cumulative draft from the external report. Mail author/date/commit-message metadata was removed; the unified-diff hunks were retained. No patch was applied or executed, and no build/test or compatibility result is implied. The known gaps and acceptance criteria in this issue remain mandatory.
Complete sanitized patch: 2,934 bytes, SHA-256
a6c90a60b637d44652ef7cd6b8ade4b74d7d03ebab621dc3594706990dc4e204. This part: 2,934 bytes, SHA-256a6c90a60b637d44652ef7cd6b8ade4b74d7d03ebab621dc3594706990dc4e204. Parts concatenate in order; a part boundary is between complete file diffs.rmcdaniel commentedon Nov 6, 2026
The P0 source work starts with this field-only change on maintained
b8f4dd13. The current response wrapper is shared by fresh, cached and multiplexed workflow leases, so it can stampserver_timeafter polling without modifying the cached claim or adding a transaction. The new controls preserve every non-clock response field, including cold replay and paginated history. OpenAPI stays additive and protocol 1.20 is unchanged.The sanitized cumulative references were decoded and their declared byte counts/SHA-256 verified before review. No cumulative patch was applied. The query and sweep work in patch 0001 remains separate under #1054. Normal current-head backend/compatibility qualification follows; the reported benchmark figures remain unverified.
rmcdaniel commentedon Nov 6, 2026
Delivered through #1070 and accepted protected main
866a4067d052ae70f22060fd656b6154d0debc36. Exact source/merge, original 48-job queue qualification, automatic-main results, response-field handoff and cleanup are recorded at #1070 (comment) . The clock remains separate from #1054's query/sweep work; no benchmark timing or installed/release result is claimed.rmcdaniel commentedon Nov 6, 2026
Sanitized rebased reference for report topic 2a:
0001-t03+t02a-Keep-the-poll-path-s-queries-off-the-size-of-the-tab.patch.The supplied revision targets Server
b8f4dd13623ce645de77ba5bd89ae8dd8eea2f7c. It is cumulative external reference material, not independently qualified against today's maintained source. Mail headers and commit-message/application instructions were removed; the unified diff is retained. The reporter now claims every rebased commit builds and the tip passes SQLite/MySQL/PostgreSQL tests. Those are attributed claims, not a new maintainer test result. Existing acceptance criteria, security findings and completed implementation receipts remain authoritative. Earlier attached patches are retained as historical references.Sanitized patch: 16,849 bytes, SHA-256
5f018f020e3f3d3c2c8030132f8d2fb0bc3fa63462464709edb924822cb67e21. Original-base sanitized identity:78a6762fdaaf4e9622b1aace4b93aff98d13eee6ccff9081e4b852a443a690e1. No patch was applied or executed during this update.rmcdaniel commentedon Nov 7, 2026
Finite native maintenance source assessment for SDK #327: the field-only backport is feasible independently of the carried-poll/3.2 train. Server owns the next isolated source-authoring checkpoint after the active #1073 qualification/review work; no competing branch or PR has been opened by this assessment.
The published baseline is annotated tag
3.0.5/ tag object685f57ed19127a9e53ea6da28fddf310bfb16c3a/ source commitbc24589db02161a21febbb30211309537fd1e24e, independently re-read from GitHub. Latest final release still resolves to3.0.5; no3.0.6 tag exists at this read. A new maintenance number remains a later release choice, not a selected tag here.The three production lines from accepted #1070 / merge
866a4067d052ae70f22060fd656b6154d0debc36dry-apply cleanly to this exact baseline. Its existingRuntime::poll_workflow_tasksalready shares the marker closure between fresh, replayed and multiplexed workflow leases. Bothstore::now()andactivity_lease_renewal::micros()already exist. The patch samples only a response observation clock after polling, renders the existing millisecond clock with six fractional digits, and changes no lease, history, attempt, receipt, database schema or capability. No Cargo/Composer graph change is required; main's additional serde_json features are unrelated and must not be imported as a clock dependency.The full source merge must not be cherry-picked wholesale. The tag's OpenAPI document is revision56, whereas #1070 was authored on58 and moved it to59. The combined production/schema dry-check correctly refuses that header context. Port only the optional
WorkerServerTimesemantics and plain/multiplexed workflow-claim properties onto the maintained baseline document, with an explicitly identified maintenance schema blob/revision. Preserve protocol1.20, older-producer omission, validation-task/empty shapes and all existing capabilities. No carried-poll, ready-age or other3.2 contract is needed.Qualification must include actual maintenance-head normal checks on SQLite, PostgreSQL and MySQL-family backends; real HTTP fresh/cached/multiplexed/cold responses with every non-clock authority/history field unchanged; and the unchanged empty response. Published acceptance then needs one exact supported native maintenance image + published SDK3.9.5 + runner tuple, with a positive fresh-clock path and the actual older3.0.5 fallback criterion. Source tests or a main image cannot replace that published pair.
Two release-path facts need explicit ownership before publication. The3.0.5 workflow still contains direct rolling-alias publication, while the maintained path separates exact publication, published-image qualification and protected alias promotion; do not silently reuse the older alias sequence or import a whole3.2 runtime to obtain newer guards. Also, inherited Sonar triggers target main and the known FREE-plan non-main restriction remains General's quality/account responsibility. A maintenance PR analyzed as main is not maintenance-branch acceptance. Server will return the concrete narrow release-workflow/quality input graph with the source candidate; General retains the existing quality/publication disposition.
This is a read-only source/dependency/path assessment and dry-check of our already-reviewed production hunk. No source patch was applied to a branch, no Rust/backend or installed SDK ran, and no tag, build, dispatch, registry alias, runtime, PHP Server release or frozen/private operating tuple was selected.
rmcdaniel commentedon Nov 7, 2026
General release follow-through: reopen this existing producer issue for its remaining published-product qualification. The accepted field-only Source in PR1070 /866a4067 remains accepted; this is not a request to rewrite or relabel that Source result.
SDK3.9.5 is now published at immutable57562b53 and its normal Packagist/installed-package proof passed SDK337/6699764564. The operator's explicit SDK release order selected closure of the delivered conditional SDK implementation after package verification. Remaining end-to-end producer work stays here rather than being falsely called installed conformance: qualify an exact supported published Native Server containing this clock field, plus a real older-Server tuple proving the SDK heartbeat fallback. Latest published native3.0.5/bc24589d lacks the field; PHP2.11.8 also lacks it and is not a positive substitute. No new PHP Server release is allowed.
General owns the publication/tuple decision and real producer/consumer follow-through. The active Server owner has been asked for a finite3.0.5-based field-only maintenance Source assessment, preserving app/protocol/support/lease/receipt/history bytes and the additive OpenAPI59 contract, independently of the unready3.2/carried-poll train. Acknowledgement/assessment is still requested; no tag, build, runtime or release version is selected by this comment. The new Cloud runtime security P0#656 currently preempts General's release authoring, while the bounded assessment can proceed.
Acceptance remaining: exact public producer artifact identity and unchanged compatibility; fresh/replayed/plain/multiplexed clock behavior and original claim/attempt/lease equality; actual released SDK3.9.5 on that tuple; real old-producer fallback; bounded scenario/resource/cleanup evidence. Fixture and benchmark results remain separately attributed. Keep this issue open until the user-visible producer/consumer outcome is verified.
rmcdaniel commentedon Nov 9, 2026
General reconciled the carried-poll and workflow-clock delivery against the original acceptance criteria while both repository agents are Off.
The producer is published Native Server 3.3.0, source
2a15179f29801eec9f2a2d4e6a9c5f93233f104e, indexsha256:cb4b11bd6235a551cf51e7dc6342504fbbcef19959618b376fb5648ca00fc388. The consumer is normal published PHP SDK 3.11.0, sourcefbc64ef98c27be467d75a29a29bfb0ee4e80dba7.Feature-specific acceptance is covered by the maintained source controls. The carried-poll runtime tests, HTTP execution tests, workflow replay/history-budget tests and versioned OpenAPI are byte-identical between the qualified integrated source
5f937ec8(run 42448138571) and the 3.3.0 cut. The source lanes execute the registered controls on SQLite, MySQL, MariaDB and PostgreSQL; the accepted #1073 source also has 62 successful checks and its declared skip.Published compatibility is now verified with the unchanged full PHP replay matrix: 42531701411, 13 executed scenarios passed, zero skips, exact Server 3.3.0 and normal Packagist SDK 3.11.0, distinct clients, restarted worker, completed-history replay/query, in-flight signal/restart and nondeterminism refusal. Captured audit. Its runner bootstrap fix has complete ordinary main custody: signed reviewed tree, 71 successful main checks/eight expected skips and topic absence verified. The published product bytes and feature-specific controls are unchanged.
The source controls establish the transaction/receipt/answer invariants. The published matrix establishes producer/consumer compatibility; it is not an installed SQL-count or benchmark experiment. No speedup is claimed. #1073's earlier archive-acquisition NONPASSs and the first published replay's interpreter-bootstrap NONPASS remain attributed.
Acceptance: ordinary and cached workflow responses refresh the outer
server_timewhile retaining the original task/attempt/lease/history.assert_poll_replayrequires a nondecreasing clock and full equality after replacing only that field; the history-budget replay uses the same assertion. OpenAPI'sWorkerServerTime,WorkflowTaskClaimand multiplexed claim document UTC microseconds and the original-lease semantics. This item is additive and does not change worker protocol 1.20.The separate condition-wait durable-workflow/sdk-php#269 final-audit C2/C5 follow-up remains open; it is not a carried-poll or workflow-clock acceptance claim. The original reporter benchmark remains unverified.