Skip to content

docs: add System Nexus design - #896

Open
tconley1428 wants to merge 4 commits into
mainfrom
system-nexus-design-doc
Open

docs: add System Nexus design#896
tconley1428 wants to merge 4 commits into
mainfrom
system-nexus-design-doc

Conversation

@tconley1428

Copy link
Copy Markdown
Contributor

Adds a cross-SDK System Nexus design note covering envelope serialization, nested payload handling, serialization context, interception, and TypeScript-specific considerations.

@tconley1428
tconley1428 requested review from a team as code owners September 9, 2026 17:29
@tconley1428
tconley1428 added this pull request to stack #898 September 9, 2026 18:43
@tconley1428
tconley1428 force-pushed the system-nexus-design-doc branch from 1bba182 to c0694f4 Compare September 9, 2026 23:20

## Serialization

Because the operations need to be read by the server, the nexus operation's input, which we'll call the "system nexus envelope" needs to be handled uniquely. It can't be serialized with the user's data converter (payload converter, codec, or external storage) because the server would then be unable to read it. Instead, it needs to reach the server specifically encoded with binary protobuf. It should additionally have `__temporal_system_payload` metadata for use in later recognition.

@dplyukhin dplyukhin Sep 10, 2026

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Because the operations need to be read by the server, the nexus operation's input, which we'll call the "system nexus envelope" needs to be handled uniquely. It can't be serialized with the user's data converter (payload converter, codec, or external storage) because the server would then be unable to read it. Instead, it needs to reach the server specifically encoded with binary protobuf. It should additionally have `__temporal_system_payload` metadata for use in later recognition.
Because the operations need to be read by the server, the nexus operation's input, which we'll call the "system nexus envelope" needs to be handled uniquely. It can't be serialized with the user's data converter (payload converter, codec, or external storage) because the server would then be unable to read it. Instead, it needs to reach the server specifically encoded with binary protobuf. It should additionally have `__temporal_system_payload = "true"` metadata for reasons that will become clear in the next section.

@dplyukhin

Copy link
Copy Markdown
Contributor

Super helpful! Thanks for writing this. Better get some more eyes on it besides just me though

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants