Repository navigation
Remove Continue-As-New and InternalHandlerTimeout; rename FlowExecutionID to FlowRunID - #1541
Merged
Merged
Conversation
Codecov Report❌ Patch coverage is
📢 Thoughts on this report? Let us know! |
The format-compat replays of the frozen pre-attempt-handout and pre-offload-choice logs had been loosened to accept any Flow start history row, child start outbox row, or run record that encoded differently, plus self-generated replay expectations. Read the removed FlowConfig fields 2 and 3 from each logged FlowStart and child start with test-only prost messages, put them back into the replayed run records, Flow start history rows, and child start outbox rows, and move the history row metadata, history bytes, open segment bytes, and state row bytes that count them. Decoding sites keep the restored fields, so the comparisons are byte for byte again. A new test rejects another removed field value and a Flow start without them.
Remove reads of the removed continuedStart and continuedToRunId history fields: the Next run button, continued start details, the Flow continued titles and lineage, continued Step options, the continued sticky worker fallback, and the Execution graph previous-run link. Time Travel fork links and run attempts are unchanged.
The Continue-As-New removal deleted Go integration tests that ran the same scenarios with a step durability override. Restore them as async and sync step durability variants so those paths stay covered.
Old deep links to the removed section now land at the next section.
Sync the Go SDK rewrite plan with the current Go SDK and rename the run identifier in the Dex Web design. Mark the Web design's run rollover sections as historical.
The checker test must contain the forbidden term to prove that the checker rejects it. Keep the literal spellings that origin/main tested and add a spaced variant for the multi-character separators.
The previous regeneration used the include files of protoc 36.2 while CI pins 35.1, which changed the NullValue comment.
Restore the CloseStatus = 'CONTINUED_AS_NEW' rejection case and check that ExecutionStatus = and != 'ContinuedAsNew' fail with an unsupported value error, which the search backends map to INVALID_ARGUMENT.
The negative Continue-As-New threshold cases became copies of existing history_window_events cases. Test an unknown step_durability on the StartFlow and SubFlow paths instead, and drop the duplicate from the UpdateFlowConfig table.
Waiting past the last event of the completed run reports no event and the COMPLETED status.
Removing continue_as_new_threshold left the simulated UpdateFlowConfig command with an empty FlowConfig. Switch the run to ENABLED_FOR_ALL search so the command changes state the active Step type invariants check, and re-pin the regression seeds' main-stream digests.
Wait request IDs are never read by server-zd and there are no handler generations. State that, and document the per-Flow long-poll wait cap. Drop the unused _duration_seconds32 import from the Python clients.
Use the unreleased wording for the next release of each component, add Reference links, and record the ExecutionStatus query rejection, CLI JSON renames, and Python FlowConfig keyword construction. Mirror the SDK entries in each SDK CHANGELOG.md.
Also give a CLI api call example field that a request actually carried.
The SDK Developer reference moved FlowConfig from the flows-and-steps pages to each SDK's Flow page.
Restore the original v1 recording, which holds the FlowConfig fields 2 and 3 that #1072 removed, and record the current workload as v2. The golden replay of v1 restores the logged removed fields and their byte counters before it compares the state dump row for row; without the restore 67 rows differ. v2 must not hold the removed fields.
… fields run_record_with_fields re-encoded the whole RunRecord, so an unknown or noncanonical field could vanish unnoticed. Require the record to encode back to its bytes, apart from the removed FlowConfig fields, and test that an unknown field fails.
pycln drops imports that the Continue-As-New removal left unused, black joins the shortened search calls, and rustfmt joins the shorter Flow status match in the Rust example helper.
longquanzheng
force-pushed
the
chore/remove-continue-as-new
branch
from
November 10, 2026 23:20
43a5d63 to
23e3129
Compare
longquanzheng
added a commit
that referenced
this pull request
Nov 11, 2026
#1541 added SDK entries for 1.41 and 1.42, which will never be tagged: the next shared release is 1.43.0. Fold the Go 1.41 Breaking items into the Go 1.43 entry, rename the Python, TypeScript, Rust, and Java entries to 1.43, and fix the version markers: Python FlowConfig is changed in 1.43.0, and the Go ErrorWithStack change already shipped in 1.40.2.
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.
Summary
Removes Continue-As-New and InternalHandlerTimeout from the public API, server-zd, the five SDKs, dexcli, and Dex Web, and renames FlowExecutionID to FlowRunID. These are authorized breaking changes before launch.
ContinuedAsNew, value 7) are deleted with their numbers and names reserved; renamed fields keep their numbers. Generated code is regenerated with the pinned protoc 35.1 (make generated-code-checkis clean; TypeScriptstruct.tsequals main).ExecutionStatus = 'ContinuedAsNew'with INVALID_ARGUMENT.--follow-runsremoved;dexcli apiusesflowRunId. Dex Web: removes continued-run reads; Time travel fork links stay.docs/reference/<component>/changelog.mdxand each SDKCHANGELOG.md. Skills 1.0.11 (PATCH) drops the removed API.Why
Issue #1072. Continue-As-New existed because the earlier Temporal backend limited history size; server-zd has no such limit, so the API, its options, and the "execution vs run" split have no meaning. The owner authorized removing them before launch rather than keeping dead surface area.
Persisted data compatibility
server-zd's persisted commands embed the API FlowConfig, so old logs, snapshots, and state carry FlowConfig tags 2 and 3 (the removed Continue-As-New fields; the old default threshold was written into every effective FlowConfig). Current code decodes old data and skips them as unknown fields.
server-zd/testdata/v1is byte-identical to main and stays frozen. Golden replay of v1 reads the removed fields' original values from the logged commands, re-inserts them at their wire position (fixing byte counters), and compares strictly with the recorded state. Without the restore, 56 to 67 rows differ; with it, none.server-zd/testdata/v2is the newest-version baseline recorded after the removal.testdata/README.mdnow says to regenerate the newest version and keep v1 frozen, replacing the earlier "regenerate v1 in place before 1.0" rule.Review
Claude implemented and fixed; Codex reviewed twice (proto reservations, persisted-data proof, behavior, completeness).
doc-map: no change needed: the concepts Client page never described the removed internal handler timeout
Testing
cargo test --workspace(2007 passed, including format_compat and golden replay of v1 and v2), clippy, fmt,make rust-rules-check,make copyright-check;make -C server-zd/integ compileandzdIntegTests(restored Async/Sync durability variants).npm run checkand build;cd docs && npm run check; skills checks.Fixes #1072