Repository navigation
Conversation
The series builds its Core layers on current upstream sdk-rust main, so the bridge moves to the 1.0 crates and the protos follow upstream's api drift.
The interface's record on the wire is temporal.api.stream.v1.StreamRecord, and the regen from this pin brings that module in.
This was referenced Oct 6, 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.
This PR repins
temporalio/bridge/sdk-coreto upstream sdk-rustmainplus the stream record envelope, and brings the bridge up to it.What changed?
Two commits.
The first repins Core to upstream
mainand brings the bridge up to it:temporalio-clientgets theexperimentalfeature.temporalio/apiandtemporalio/bridge/protoare regenerated from that Core's api tree, so upstream's drift comes in here. That includes upstream's newnexusoperationandnotificationservicepackages and thecauseon external signal and cancel results. It also includes theinclude_arguments_in_markerrename, which no Python code uses.temporal_link_to_nexus_linkrefuses the new upstreamcallbacklink variant, the same way it refusesbatch_job. The pin forces this one, since the link oneof gained the variant.The second moves the pin one Core commit up, to moetemp/sdk-rust#38, which vendors
temporal/api/stream/v1/message.proto..gitmodulespoints the submodule at themoetemp/sdk-rustfork for that.poe gen-protosfrom the pin addstemporalio.api.stream.v1withStreamRecordandStreamRecordKind. Nothing else changes, and nothing uses the module yet.Part of AI-198 (epic AI-37).
Why?
The old pin is an "Update api_upstream" commit that upstream
mainnever got. The Core work for AI-198 sits on currentmain, so the Python side needs a bridge that compiles against it first. That part is a chore on its own, and it could go upstream as is.The stream interface puts one record on the wire for every provider, and that record is the envelope proto. It reaches Python the usual way, through the Core's vendored api tree, so a later
poe gen-protosfrom the pin stays correct. The interface itself is the next PR.The earlier series had these as two PRs with the notification channel protos between them. The channel is paused per the 2026-10-05 design review, so the repin and the envelope pin now sit together on
main. Thenotificationservicepackage is upstream's own and unrelated to the paused work.How did you test it?
Link to a test plan if any -
The bridge builds, and
cargo clippy -- -D warningsandpoe lintare clean. A second run of thepoe gen-protosgenerators leaves the tree as committed. The worker, client and Nexus suites pass against the dev server the fixtures start.