Skip to content

[Brook] Added stream topics and references. - #116

Closed
moetemp wants to merge 19 commits into
moe/brook/p2c-errors-cursorsfrom
moe/brook/p2d-topics-refs
Closed

moetemp wants to merge 19 commits into
moe/brook/p2c-errors-cursorsfrom
moe/brook/p2d-topics-refs

Conversation

@moetemp

@moetemp moetemp commented Oct 12, 2026 •

Copy link
Copy Markdown
Owner

What changed?

This PR adds typed stream topics and StreamRef.

  • StreamTopic[T], topic(name, result_type=None) and DEFAULT_TOPIC ("output"). A name holds at most 256 UTF-8 bytes and no control character, the same rule as Core.
  • StreamRef round-trips through the default data converter. Its run_id picks the chain a handle looks up and when a read ends, not the records it returns.
  • kind is a plain str, so a ref from a later release still decodes and then meets the kind check.

Why?

Only Workflow-owned streams are in this release (DD-2). With a string kind, later owner kinds need no type change (DD-37).

How did you test it?

Link to a test plan if any -

  • Unit Tests
  • Staging
  • End to End Tests

tests/contrib/streams/test_topics_refs.py.

moetemp added 15 commits October 9, 2026 14:56
A topic is defined once with its record type, and a StreamRef names a
Workflow's stream as data another process can open.
A ref that names an owner kind from a later release now reaches the ref's
own kind check when decoded, instead of failing the converter's type check.
# Conflicts:
#	temporalio/contrib/streams/__init__.py
Only providers resolve a topic argument, so applications do not need it
and the package should not commit to it.
A name goes into store keys, cursor hashes and Core's manifest budget, and a control character in it broke the pending stage encoding. A pinned ref was read as returning only that run's records, which no provider does.
There's no provider any more, only the store a client's plugin configures.
@moetemp
moetemp marked this pull request as draft October 12, 2026 06:58
@moetemp moetemp closed this Oct 13, 2026
@moetemp moetemp reopened this Oct 13, 2026
@moetemp moetemp added the skip-changelog Changelog entry rides another PR label Oct 13, 2026
@moetemp

moetemp commented Oct 13, 2026

Copy link
Copy Markdown
Owner Author

Replaced by Brook #152. Brook was split in two: Brook now has streams with Activity and client publish and outside readers, and Ford has the Workflow Task publish path. The code is the same, re-cut into new branches.

@moetemp moetemp closed this Oct 13, 2026
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