Feat: pulse users clustering - #454
Merged
Merged
Conversation
Signed-off-by: Mikhail Agapov <mikhail.agapov@decentraland.org>
PeerClusterChange had no generated TS because the generator only emits for
public/*.proto entry points and none referenced decentraland/pulse/. Comms
Gatekeeper needs this type to subscribe to peer.{addr}.cluster_change.
Test this pull request
|
…sence feed ParcelChangesBatch is published by Pulse on NATS engine.parcel_changes and becomes the platform's single presence feed (Archipelago => Pulse migration, iteration 2): first non-null placement = connect, parcel absent = exit, realm and parcel on every entry, per-server seq with periodic full snapshots. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…rypoint The TypeScript/C# codegen only walks public/*.proto, so without this import the tarball shipped the .proto but no generated ParcelChangesBatch module. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Adds session, displaced_session and displaced_cluster_id so consumers can address a device session rather than a wallet. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This was referenced Sep 11, 2026
Merged
Signed-off-by: Mikhail Agapov <mikhail.agapov@decentraland.org>
Signed-off-by: Mikhail Agapov <mikhail.agapov@decentraland.org>
This was referenced Sep 16, 2026
LautaroPetaccio
approved these changes
Sep 16, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Iteration 1: Pulse cluster/session contract
This PR adds pulse_clusters.proto and its public/comms.proto export. PeerClusterChange retains session, displaced_session and displaced_cluster_id for iteration-1 duplicate-identity and reconnection handling. Pulse #34 produces this contract; Gatekeeper #283 consumes it. Archipelago #128 routes session subject tokens without importing these messages and needs no automatic protocol re-pin.
Iteration separation
Presence originally leaked here via 5395a4a and afb5d1c. Additive removal commit 9e53cec removes pulse_presence.proto and its export while preserving history. Presence and the later session_status/distinct-ban amendment are isolated on codex/protocol-iteration2-presence-control, stacked on this PR.
Compatibility prerequisites
Merge 66f9b48 reconciles current main 688d92c, preserving its TeleportToRequest/restricted_actions and other schema changes unchanged. Commit 830556a replaces the legacy compatibility checker that aborts on valid reserved names with the existing Buf WIRE_JSON checker. These are shared build prerequisites, not additional iteration-1 features. The old compatibility failure is not dismissed as unrelated: current-main definitions are retained and Buf verifies wire compatibility.
Verification and release
Earlier reconciliation passed Buf lint/build/breaking and generation. Fresh split CI snapshot checks and artifact provenance are being collected; old 3ef4c52 snapshot is not a split artifact. No merge, stable npm publication, service deployment or LiveKit Cloud mutation is authorized. Consumer pins require verified actual CI artifact URLs and integrity; source candidates and older staged provenance work remain preserved.