Skip to content

Global $all subscription cursor (all-streams, GlobalSeq-ordered) #214

Description

@joeldsouzax

Split out of #149 (item 1) — the genuinely-nexus primitive

A subscription that yields every event across all streams in write order, resuming from a GlobalSeq position. Sibling of the existing per-stream Subscription::subscribe(&id, from).

Why this belongs in nexus (not Agency)

The substrate already exists: GlobalSeq is stamped on every event at append time and CLAUDE.md already describes it as "the position an all-streams subscription resumes from." This is a store-level cursor primitive (a data type + read path), not a runtime loop — the same category as the per-stream subscription nexus already ships. Cross-aggregate projections need it.

Scope

  • `` cursor over the store, ordered by GlobalSeq, never terminates (waits when caught up, like the per-stream cursor)
  • from: None = beginning; from: Some(GlobalSeq) = events after that position
  • Yields PersistedEnvelope (raw bytes; consumer holds the codec — see subscription-stays-raw decision)
  • Must tolerate GlobalSeq gaps (monotonic but not gapless — aborted appends burn values)

Out of scope (these went to Agency)

  • Exactly-once transactional checkpoint + competing consumers → agency#155
  • Trait-level filtering + ring-buffer notification → nexus Tier 3 (separate card)

Depends on #125 (v1 subscriptions).

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions