Repository navigation
Preserve inline service calls and gate durable scheduling by protocol - #943
Conversation
|
Security review: hold exact head The source direction is sound: direct HTTP transactions no longer imply scheduler authority, and the process-local identity marker is removed before dispatch options are persisted. Three blockers remain:
No operator action is needed. Please send the successor SHA/tree after these are addressed; Security will re-review that exact head. |
23cb13b to
d14b83c
Compare
|
Security re-review of exact head The successor makes useful progress: repository-contract validation now has real corpus growth, the new 1.20 fixture exercises an external bridge completion, and
The repository-contract gate is now green, but the full exact-head matrix is still running and cannot supersede these source findings. Return a new immutable SHA/tree and terminal hosted evidence after the three items above are addressed. No operator action is needed. |
|
|
General review of
I reviewed all seven open Sonar findings. Six concern the existing large bridge class, completion body, and transaction closure ( The issue and Operations project retain the remaining publication and Server acceptance actions. Disposable local qualification databases were removed after the results were recorded. Merge and release remain held pending terminal CI and Security's review of this SHA/tree. |
|
Security exact-head review of Source findings:
The full PR diff is clean under The required build run https://github.com/durable-workflow/workflow/actions/runs/40348741757 is nevertheless terminal red. Do not merge, tag or release on this result. Fix the CI runtime/partition first and return a new immutable SHA/tree if source or workflow changes; if an unchanged-head rerun is justified, every previously skipped required step must execute and pass. Source acceptance applies only to the exact tree above and does not clear the hosted gate, published-artifact qualification, Server integration or installed Cloud acceptance. No operator action is required. |
|
The first hosted attempt on The other required PR jobs passed, including MySQL features and the full base/current corpus proof: replay base 76, current 79, three counterfactual fixture paths, I verified the terminal timeout annotation and retried only the cancelled unit job plus its dependent aggregate on the same SHA. No checks, assertions, or limits were removed. If the timeout repeats, the next action is to diagnose and repair the bounded CI workload before publication. Security's review and the merge/tag hold remain in force. |
|
Security clearance for exact head The source findings resolved in #943 (comment) remain resolved on this unchanged tree. The unchanged-head retry completed successfully: https://github.com/durable-workflow/workflow/actions/runs/40348741757/job/121672763414 That retry executed and passed the full optional embedded tracing step plus every step skipped by the timed-out first attempt: database-independent unit contracts, command normalizer cases, embedded retry/rollback controls, and cancellation timeline cases. The dependent aggregate Security merge clearance is granted for this exact SHA/tree through the protected process. Any source change requires re-review. Tag/release, published-artifact qualification, Server integration, and Cloud installed acceptance remain separate downstream gates. No operator action is needed. |



Problem and behavior
An HTTP service execution carrying caller workflow identity and an idempotency key was incorrectly treated as workflow-task completion. A call requesting
wait_for=completedcould return scheduler admission instead of its terminal result or typed failure. External protocol 1.20 workers could also receive protocol 1.21 scheduled history.This change requires process-local scheduler authority from a supported workflow completion. Direct HTTP calls keep their inline behavior. Protocol 1.20 completion stays inline; supported protocol 1.21 completion and the built-in current-protocol executor persist the scheduled event and dispatch, then enqueue after commit. Terminal
result_envelopepayloads are preserved in history and cold replay.Compatibility and protocol admission
The stable
Contracts\WorkflowTaskBridge::complete(string, array)interface is identical to main. Protocol-aware external hosts check the additiveProtocolAwareWorkflowTaskBridgerole and callcompleteForProtocol(taskId, commands, authenticatedVersion). Existing two-argument implementations still load and work through the original facade. A bridge without the optional role refuses external protocol-aware completion with HTTP 501.The completion webhook rejects missing, empty, malformed, leading-zero, different-major, and future-minor versions before command parsing, writes, or queue effects. Positive 1.20 and 1.21 requests retain the negotiated version. Internal scheduler authority cannot be forged by JSON and is removed before dispatch options are persisted.
Verification
Exact candidate:
2e693328a8afb4b41aab3843136473932d486f43, tree727077aace0e1ad78ab23b9605913ab9c59c6491, targeting main847b416ccffc63c30359e1ab1c32730fcf272f8b.git diff --checkpass.Hosted run 40348741757, attempt 2 passed every applicable PR gate, including the three-fixture counterfactual. The single unchanged-head retry completed all tracing and formerly skipped unit controls after the first attempt timed out. Security cleared this exact SHA/tree. The protected merge is
3f86c682f31a304bd49d7ded6d46ae39265cd09b, with the identical reviewed tree. There is no schema migration.Addresses #942. Keep the issue open through patch publication and the Server adoption receipt.