Skip to content

Hosted standalone streams on the Redis provider. - #49

Open
moedash wants to merge 4 commits into
moe/AI-198-if-pyext-12-redis-start-positionsfrom
moe/AI-198-if-pyext-13-redis-standalone-streams
Open

moedash wants to merge 4 commits into
moe/AI-198-if-pyext-12-redis-start-positionsfrom
moe/AI-198-if-pyext-13-redis-standalone-streams

Conversation

@moedash

@moedash moedash commented Oct 3, 2026

Copy link
Copy Markdown
Owner

This PR hosts standalone streams, streams with an id and no owner, on the Redis provider.

What changed?

  • create_standalone_stream() writes a policy hash once and refuses a different policy for the same id. get_standalone_stream_handle() reaches it, and the handle's close() seals it.
  • One append script reads the policy, refuses a sealed or missing stream, and trims the topic it wrote by count, age and a per-topic byte total.
  • A read on a sealed stream ends once it has delivered what's retained.
  • The Redis conformance case declares the three standalone capabilities.

Part of AI-198 (epic AI-37).

Why?

The interface lets a client create a stream nobody owns, with a retention policy, and seal it on purpose. Redis has no byte trim of its own. So each entry carries the size the policy counts, and the hash keeps a running total per topic.

How did you test it?

Link to a test plan if any -

  • Unit Tests
  • Staging
  • End to End Tests

poe lint is clean. The streams suite with STREAMS_LIVE=redis, now including the standalone conformance cases, passes against a channel server and a local Redis.

A stream with an id and no owner gets its own keys: a hash for the policy and
the seal, and a log per topic. One append script reads the policy, refuses a
sealed stream, and trims by count, age and a per-topic byte total.
The Redis case now declares that it hosts standalone streams, bounds their
bytes and trims an open stream by age, so the conformance suite holds it to
all three.
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