Conversation
The branch builds against the fork's api, which pulls newer gRPC and OpenTelemetry through the module graph and ships the nexusoperation and stream protos the import map has to list.
Taken from upstream temporalio/temporal temporalio#11906. The api version this branch pins rejects a system payload that is not binary/protobuf, so the endpoint has to refuse one instead of labelling it.
This was referenced Sep 25, 2026
Equating empty across the whole comparison also hid a nil-versus-empty attribute set or data point, which is not what the test is about.
The api branch renamed the two stream command fields and reshaped the appended event's range. The layers above this one need the new accessors.
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 pins the server to the api-go branch that carries the stream protos.
Nothing stream-specific is added here. It is the part of the work that only moves the api dependency and repairs what that move breaks, so the five layers above it start from a tree that builds and tests green.
What changed?
go.mod/go.sumreplacego.temporal.io/apiwithgithub.com/moedash/api-goat the documented head. That branch was rebased onto its upstreammain, which pulls newer gRPC, OpenTelemetry and genproto through the module graph.cmd/tools/getproto/files.golists thenexusoperationandstreamprotos the new pin ships.tests/mixedbrain/go.{mod,sum}track the root module's gRPC bump, andbuild-testsruns that module's tests from its own directory since the rootgo testcannot reach them.clean-test-outputremovestest.log, whichverify-test-logreads whole, so a failure from an earlier run kept failing every later verification.common/metrics/otel_metrics_handler_test.gotreats a nil and an empty exemplar slice as equal. The metric SDK returns one or the other depending on whether the reservoir was ever allocated.binary/protobuf, a port of upstream temporalio/temporal Fix mislabeled "system payload" issue temporalio/temporal#11906. The api version this branch pins rejects such a payload, so the endpoint has to refuse it instead of labelling it.tests/api_fork_test.goround-trips the new command, poll-response and completed-event shapes over the wire. A field added without its descriptor would compile and silently drop on marshal.Why?
Every later layer depends on the new api, so the pin and its fallout are worth reading on their own rather than mixed into the stream code.
How did you test it?
All green.
Series
Server 1 of 6. Replaces #2.
Previous:
moe/main(base). Next: #4moe/AI-198-srv-2-stream-component.Review round
cmpopts.EquateEmpty()incommon/metrics/otel_metrics_handler_test.goapplied to the whole comparison, so besides the nil-versus-empty exemplar slice it was added for, it also hid nil-versus-empty differences in attribute sets and data point slices. It is anIgnoreFieldsonExemplarsnow, which is the field the test does not care about.The System Nexus Endpoint change is already its own commit,
Required protobuf payloads from the system Nexus endpoint., so it can be read and reverted on its own. It stays in this PR rather than moving to one of its own: it is a port of an upstream change and the pin is what makes it compile.Review round: api surface
The api branch renamed
AppendStreamRecordsCommandAttributes.stream_idtostream_nameandSubscribeStreamCommandAttributes.stream_idtostream_name_or_id, and gaveWorkflowStreamRecordsAppendedEventAttributesafrom_offsetand ato_offsetin place of a first offset and a count. Field numbers are unchanged, so the wire does not move. This branch moves thego.temporal.io/apipin onto that head. Nothing here reads the renamed fields yet, so the pin is the whole change.