Skip to content

Unified server-derived participant presence — client surface (query + events) #13

Description

@styk-tv

Client-side surface for participant presence. Multi-party sessions need "who is here right now" — including quiet participants. agent.presence is agent-plane liveness, not participant presence; and an events-only feed can't show a late joiner the participants who are already connected but silent. Presence needs query + events.

Proposal (client half)

  • k.presence(filter?) → current roster snapshot (thin wrapper over a governed .presence read; filter.type = user/bot/agent/…).
  • A reactive presence binding for join/leave/drop deltas, reconciled by Ck-Seq against the snapshot cursor — reusing the existing snapshot + bind pattern.
  • No client-side roster synthesis; agent.presence stays distinct.

Depends on

pgCK exposing a server-derived, type-filterable .presence read + join/leave/drop events (a new substrate capability — presence is live-connection truth, not a sealed instance). Gated on the styk-tv/pgCK presence issue.

Done-when

  • A joining client gets the full roster incl. quiet users from one .presence call.
  • Live via events with no gaps (Ck-Seq reconciliation); type filter works from the single affordance.

Relates

Metadata

Metadata

Assignees

No one assigned

    Labels

    P1Priority 1 — this releaseidentityIdentity, admission, attribution

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions