Skip to content

Repinned Core to upstream main with the stream record envelope. - #90

Open
moetemp wants to merge 3 commits into
mainfrom
moe/AI-198-s1-py-1-envelope-pin
Open

moetemp wants to merge 3 commits into
mainfrom
moe/AI-198-s1-py-1-envelope-pin

Conversation

@moetemp

@moetemp moetemp commented Oct 6, 2026 •

Copy link
Copy Markdown
Owner

This PR repins temporalio/bridge/sdk-core to upstream sdk-rust main plus the stream record envelope, and brings the bridge up to it.

What changed?

Two commits.

The first repins Core to upstream main and brings the bridge up to it:

  • The bridge now builds on the Core 1.0 crates. temporalio-client gets the experimental feature.
  • temporalio/api and temporalio/bridge/proto are regenerated from that Core's api tree, so upstream's drift comes in here. That includes upstream's new nexusoperation and notificationservice packages and the cause on external signal and cancel results. It also includes the include_arguments_in_marker rename, which no Python code uses.
  • The Nexus system docstrings are regenerated from the new Core WIT.
  • temporal_link_to_nexus_link refuses the new upstream callback link variant, the same way it refuses batch_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. .gitmodules points the submodule at the moetemp/sdk-rust fork for that. poe gen-protos from the pin adds temporalio.api.stream.v1 with StreamRecord and StreamRecordKind. 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 main never got. The Core work for AI-198 sits on current main, 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-protos from 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. The notificationservice package is upstream's own and unrelated to the paused work.

How did you test it?

Link to a test plan if any -

  • Unit Tests
  • Staging
  • End to End Tests

The bridge builds, and cargo clippy -- -D warnings and poe lint are clean. A second run of the poe gen-protos generators leaves the tree as committed. The worker, client and Nexus suites pass against the dev server the fixtures start.

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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

skip-changelog Changelog entry rides another PR

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant