Phase 871: protomux-rpc MEMBER_PAGE_REQUEST pull (v0.8.838)
Opt-in member page RPC pull mirrors guild sync request wire: _buildMemberPagePayload, _handleMemberPageRequestRpc, _tryMemberPageRequestRpc, RPC-first requestGuildMemberPage with gossip fanout fallback. Non-breaking; default event path unchanged.
This commit is contained in:
@@ -6,6 +6,8 @@ Pearcord validates itself without manual QA.
|
|||||||
|
|
||||||
**v0.8.837 (Phase 870):** `npm run test:ci-phase870` — media mesh protomux-rpc attach live (`PEARCORD_MEDIA_RPC_WIRE=1`) + attach/voice regression + `test:ci-phase869`.
|
**v0.8.837 (Phase 870):** `npm run test:ci-phase870` — media mesh protomux-rpc attach live (`PEARCORD_MEDIA_RPC_WIRE=1`) + attach/voice regression + `test:ci-phase869`.
|
||||||
|
|
||||||
|
**v0.8.838 (Phase 871):** `npm run test:ci-phase871` — protomux-rpc `MEMBER_PAGE_REQUEST` live pull + `test:guild-sync-member-page` + `test:ci-phase870` regression.
|
||||||
|
|
||||||
**v0.8.836 (Phase 869):** `npm run test:ci-phase869` — protomux-rpc `GUILD_SYNC_REQUEST` request/response live pull (`PEARCORD_RPC_WIRE=v2` + `PEARCORD_RPC_REQUEST_WIRE=1`) + `test:ci-phase868` regression.
|
**v0.8.836 (Phase 869):** `npm run test:ci-phase869` — protomux-rpc `GUILD_SYNC_REQUEST` request/response live pull (`PEARCORD_RPC_WIRE=v2` + `PEARCORD_RPC_REQUEST_WIRE=1`) + `test:ci-phase868` regression.
|
||||||
|
|
||||||
**v0.8.835 (Phase 868):** `npm run test:ci-phase868` — mux-wire module split + dual-stack gossip roundtrip + `test:ci-phase867` regression.
|
**v0.8.835 (Phase 868):** `npm run test:ci-phase868` — mux-wire module split + dual-stack gossip roundtrip + `test:ci-phase867` regression.
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -93,6 +93,8 @@ Skipped when the local peer has no messages **and** no members to share.
|
|||||||
|
|
||||||
**v0.8.836 (Phase 869):** Opt-in **protomux-rpc request/response** pull: set `PEARCORD_RPC_WIRE=v2` (or `dual`) and `PEARCORD_RPC_REQUEST_WIRE=1`. Joiner calls `guild.requestGossipFromPeer(hostPk, RPC.GUILD_SYNC_REQUEST, payload)`; owner/mod host returns a `GUILD_SYNC` bundle via `_handleGuildSyncRequestRpc`. Platform `_tryGuildSyncRequestRpc` runs before event fanout when the flag is on. Default remains gossip event fanout. See [PROTOMUX_RPC_MIGRATION.md](./PROTOMUX_RPC_MIGRATION.md). Smoke: `npm run test:protomux-rpc-guild-sync-request-live`.
|
**v0.8.836 (Phase 869):** Opt-in **protomux-rpc request/response** pull: set `PEARCORD_RPC_WIRE=v2` (or `dual`) and `PEARCORD_RPC_REQUEST_WIRE=1`. Joiner calls `guild.requestGossipFromPeer(hostPk, RPC.GUILD_SYNC_REQUEST, payload)`; owner/mod host returns a `GUILD_SYNC` bundle via `_handleGuildSyncRequestRpc`. Platform `_tryGuildSyncRequestRpc` runs before event fanout when the flag is on. Default remains gossip event fanout. See [PROTOMUX_RPC_MIGRATION.md](./PROTOMUX_RPC_MIGRATION.md). Smoke: `npm run test:protomux-rpc-guild-sync-request-live`.
|
||||||
|
|
||||||
|
**v0.8.838 (Phase 871):** Opt-in **member page RPC pull**: same env as Phase 869. Joiner calls `RPC.MEMBER_PAGE_REQUEST`; host returns a `MEMBER_PAGE` payload via `_handleMemberPageRequestRpc` / `_buildMemberPagePayload`. `_tryMemberPageRequestRpc` ingests the page before gossip fanout. Smoke: `npm run test:protomux-rpc-member-page-request-live`.
|
||||||
|
|
||||||
**v0.8.601:** `GUILD_SYNC_REQUEST` may include `channelId` for priority channel history. Env caps `PEARCORD_GUILD_SYNC_PER_CHANNEL` / `PEARCORD_GUILD_SYNC_MAX_MESSAGES`. Spans `guild.sync.push` / `guild.sync.ingest`. UI pending banner + Server Settings mesh sync panel. See [GUILD_REPLICATION.md](./GUILD_REPLICATION.md).
|
**v0.8.601:** `GUILD_SYNC_REQUEST` may include `channelId` for priority channel history. Env caps `PEARCORD_GUILD_SYNC_PER_CHANNEL` / `PEARCORD_GUILD_SYNC_MAX_MESSAGES`. Spans `guild.sync.push` / `guild.sync.ingest`. UI pending banner + Server Settings mesh sync panel. See [GUILD_REPLICATION.md](./GUILD_REPLICATION.md).
|
||||||
|
|
||||||
**v0.8.602:** Delta bundles via `sinceTimestamp` / `sinceMessageId` on request + `syncWatermark` on health. `GUILD_SYNC_ACK` (RPC **91**). `pearcord-guild-replicator` Hypercore scaffold. `npm run test:guild-sync-delta`.
|
**v0.8.602:** Delta bundles via `sinceTimestamp` / `sinceMessageId` on request + `syncWatermark` on health. `GUILD_SYNC_ACK` (RPC **91**). `pearcord-guild-replicator` Hypercore scaffold. `npm run test:guild-sync-delta`.
|
||||||
|
|||||||
+1
-1
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
All **`pearcord-*`** packages under `modules/`. Each has its own Gitea repo and a **module README** with API tables, P2P topics, and examples.
|
All **`pearcord-*`** packages under `modules/`. Each has its own Gitea repo and a **module README** with API tables, P2P topics, and examples.
|
||||||
|
|
||||||
**App release:** v0.8.837 · **Platform facade:** `pearcord-platform` ([PLATFORM_MIXINS.md](./PLATFORM_MIXINS.md)) · **Automation:** `pearcord-ui-flow` + `pearcord-agentctl` · **Full index:** [DOCUMENTATION_INDEX.md](./DOCUMENTATION_INDEX.md). Wire: [PROTOMUX_RPC_MIGRATION.md](./PROTOMUX_RPC_MIGRATION.md) (`test:ci-phase870`, `test:ci-phase869`, `test:ci-phase868`, `test:ci-phase867`). Guild mesh: [PRODUCTION_MESH.md](./PRODUCTION_MESH.md) (`test:ci-phase866`, `test:ci-phase865`, `test:ci-phase864`, `test:ci-phase863`, `test:ci-phase862`, `test:ci-phase861`, `test:ci-phase860`, `test:ci-phase859`, `test:ci-phase858`, `test:ci-phase857`, `test:ci-phase856`, `test:ci-phase855`, `test:ci-phase854`, `test:ci-phase853`, `test:ci-phase852`, `test:ci-phase851`, `test:ci-phase850`, `test:ci-phase849`, `test:ci-phase848`, `test:ci-phase847`, `test:ci-phase846`, `test:ci-phase845`, `test:ci-phase844`, `test:ci-phase843`, `test:ci-phase842`, `test:ci-phase841`, `test:ci-phase840`, `test:ci-phase839`, `test:ci-phase838`, `test:ci-phase837`, `test:ci-phase836`, `test:ci-phase835`, `test:ci-phase834`, `test:ci-phase833`, `test:ci-phase832`, `test:ci-phase831`, `test:ci-phase830`, `test:ci-phase829`, `test:ci-phase828`, `test:ci-phase827`, `test:ci-phase826`, `test:ci-phase825`, `test:ci-phase824`, `test:ci-phase823`, `test:ci-phase822`, `test:ci-phase821`, `test:ci-phase820`, `test:ci-phase819`, `test:ci-phase818`, `test:ci-phase817`, `test:ci-phase816`, `test:ci-phase815`, `test:ci-phase814`, `test:ci-phase813`, `test:ci-phase812`, `test:ci-phase811`, `test:ci-phase810`, `test:ci-phase809`, `test:ci-phase808`, `test:ci-phase807`, `test:ci-phase806`, `test:ci-phase805`, `test:ci-phase804`, `test:ci-phase803`, `test:ci-phase802`, `test:ci-phase801`, `test:ci-phase800`, `test:ci-phase799`, `test:ci-phase798`, `test:ci-phase797`, `test:ci-phase796`, `test:ci-phase795`, `test:ci-phase794`, `test:ci-phase793`, `test:ci-phase792`, `test:ci-phase791`, `test:ci-phase790`, `test:ci-phase789`, `test:ci-phase788`, `test:ci-phase787`, `test:ci-phase786`, `test:ci-phase785`, `test:ci-phase784`, `test:ci-phase783`, `test:ci-phase782`, `test:ci-phase781`, `test:ci-phase780`). Members: [MEMBERS.md](./MEMBERS.md). Settings/roles/permissions: [SETTINGS.md](./SETTINGS.md), [ROLE_EDITOR.md](./ROLE_EDITOR.md), [PERMISSIONS.md](./PERMISSIONS.md).
|
**App release:** v0.8.838 · **Platform facade:** `pearcord-platform` ([PLATFORM_MIXINS.md](./PLATFORM_MIXINS.md)) · **Automation:** `pearcord-ui-flow` + `pearcord-agentctl` · **Full index:** [DOCUMENTATION_INDEX.md](./DOCUMENTATION_INDEX.md). Wire: [PROTOMUX_RPC_MIGRATION.md](./PROTOMUX_RPC_MIGRATION.md) (`test:ci-phase870`, `test:ci-phase869`, `test:ci-phase868`, `test:ci-phase867`). Guild mesh: [PRODUCTION_MESH.md](./PRODUCTION_MESH.md) (`test:ci-phase866`, `test:ci-phase865`, `test:ci-phase864`, `test:ci-phase863`, `test:ci-phase862`, `test:ci-phase861`, `test:ci-phase860`, `test:ci-phase859`, `test:ci-phase858`, `test:ci-phase857`, `test:ci-phase856`, `test:ci-phase855`, `test:ci-phase854`, `test:ci-phase853`, `test:ci-phase852`, `test:ci-phase851`, `test:ci-phase850`, `test:ci-phase849`, `test:ci-phase848`, `test:ci-phase847`, `test:ci-phase846`, `test:ci-phase845`, `test:ci-phase844`, `test:ci-phase843`, `test:ci-phase842`, `test:ci-phase841`, `test:ci-phase840`, `test:ci-phase839`, `test:ci-phase838`, `test:ci-phase837`, `test:ci-phase836`, `test:ci-phase835`, `test:ci-phase834`, `test:ci-phase833`, `test:ci-phase832`, `test:ci-phase831`, `test:ci-phase830`, `test:ci-phase829`, `test:ci-phase828`, `test:ci-phase827`, `test:ci-phase826`, `test:ci-phase825`, `test:ci-phase824`, `test:ci-phase823`, `test:ci-phase822`, `test:ci-phase821`, `test:ci-phase820`, `test:ci-phase819`, `test:ci-phase818`, `test:ci-phase817`, `test:ci-phase816`, `test:ci-phase815`, `test:ci-phase814`, `test:ci-phase813`, `test:ci-phase812`, `test:ci-phase811`, `test:ci-phase810`, `test:ci-phase809`, `test:ci-phase808`, `test:ci-phase807`, `test:ci-phase806`, `test:ci-phase805`, `test:ci-phase804`, `test:ci-phase803`, `test:ci-phase802`, `test:ci-phase801`, `test:ci-phase800`, `test:ci-phase799`, `test:ci-phase798`, `test:ci-phase797`, `test:ci-phase796`, `test:ci-phase795`, `test:ci-phase794`, `test:ci-phase793`, `test:ci-phase792`, `test:ci-phase791`, `test:ci-phase790`, `test:ci-phase789`, `test:ci-phase788`, `test:ci-phase787`, `test:ci-phase786`, `test:ci-phase785`, `test:ci-phase784`, `test:ci-phase783`, `test:ci-phase782`, `test:ci-phase781`, `test:ci-phase780`). Members: [MEMBERS.md](./MEMBERS.md). Settings/roles/permissions: [SETTINGS.md](./SETTINGS.md), [ROLE_EDITOR.md](./ROLE_EDITOR.md), [PERMISSIONS.md](./PERMISSIONS.md).
|
||||||
|
|
||||||
| Package | Path | Status | Primary doc | Module README |
|
| Package | Path | Status | Primary doc | Module README |
|
||||||
|---------|------|--------|-------------|---------------|
|
|---------|------|--------|-------------|---------------|
|
||||||
|
|||||||
+64
-3
@@ -133,6 +133,7 @@ Phase 867 items: **48/50 complete** (2 deferred)
|
|||||||
Phase 868 items: **50/50 complete**
|
Phase 868 items: **50/50 complete**
|
||||||
Phase 869 items: **50/50 complete**
|
Phase 869 items: **50/50 complete**
|
||||||
Phase 870 items: **50/50 complete**
|
Phase 870 items: **50/50 complete**
|
||||||
|
Phase 871 items: **50/50 complete**
|
||||||
Skipped items tracked: **21** (Phase 712 superseded by Phase 714 completion; Phase 867 cutover/cleanup deferred)
|
Skipped items tracked: **21** (Phase 712 superseded by Phase 714 completion; Phase 867 cutover/cleanup deferred)
|
||||||
|
|
||||||
---
|
---
|
||||||
@@ -156,12 +157,71 @@ Skipped items tracked: **21** (Phase 712 superseded by Phase 714 completion; Pha
|
|||||||
|
|
||||||
## Now
|
## Now
|
||||||
|
|
||||||
_Await authorized next phase (Phase 870 complete, v0.8.837)._
|
_Await authorized next phase (Phase 871 complete, v0.8.838)._
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Completed (recent)
|
## Completed (recent)
|
||||||
|
|
||||||
|
### Phase 871 — Protomux-RPC member page request/response pull (v0.8.838) ✓
|
||||||
|
|
||||||
|
**Goal:** Opt-in `MEMBER_PAGE_REQUEST` → `MEMBER_PAGE` pull via protomux-rpc when `PEARCORD_RPC_WIRE=v2|dual` and `PEARCORD_RPC_REQUEST_WIRE=1`. Default remains event fanout.
|
||||||
|
|
||||||
|
Bundle: `npm run test:ci-phase871` → member page RPC live + `test:guild-sync-member-page` + `test:ci-phase870`.
|
||||||
|
|
||||||
|
| ID | Item | Status |
|
||||||
|
|----|------|--------|
|
||||||
|
| P871-1 | `_buildMemberPagePayload` shared host page builder | [x] |
|
||||||
|
| P871-2 | `_handleMemberPageRequestRpc` responder | [x] |
|
||||||
|
| P871-3 | Refactor `_handleMemberPageRequest` to use builder | [x] |
|
||||||
|
| P871-4 | `MEMBER_PAGE_REQUEST` in `_bindGuildGossipRpcHandlers` | [x] |
|
||||||
|
| P871-5 | `_tryMemberPageRequestRpc` joiner pull + ingest | [x] |
|
||||||
|
| P871-6 | `requestGuildMemberPage` RPC-first + fanout fallback | [x] |
|
||||||
|
| P871-7 | `meshPeerIdHex` host key normalization (reuse) | [x] |
|
||||||
|
| P871-8 | `PEARCORD_GUILD_MEMBER_PAGE_RPC_MS` timeout env | [x] |
|
||||||
|
| P871-9 | `PEARCORD_GUILD_MEMBER_PAGE_RPC_WIRE_READY_MS` env | [x] |
|
||||||
|
| P871-10 | Smoke `test:protomux-rpc-member-page-request-live` | [x] |
|
||||||
|
| P871-11 | Smoke `test:protomux-rpc-member-page-request` method map | [x] |
|
||||||
|
| P871-12 | `test:phase871-boot-gate` v0.8.838 | [x] |
|
||||||
|
| P871-13 | `test:ci-phase871` meta-bundle | [x] |
|
||||||
|
| P871-14 | `PROTOMUX_RPC_MIGRATION.md` member page section | [x] |
|
||||||
|
| P871-15 | `GUILD_SYNC.md` Phase 871 note | [x] |
|
||||||
|
| P871-16 | `AUTOMATED_TESTING.md` Phase 871 CI | [x] |
|
||||||
|
| P871-17 | `pearcord-platform/README` Phase 871 | [x] |
|
||||||
|
| P871-18 | `MODULES.md` v0.8.838 | [x] |
|
||||||
|
| P871-19 | `DOCUMENTATION_INDEX` v0.8.838 | [x] |
|
||||||
|
| P871-20 | Release notes v0.8.838 | [x] |
|
||||||
|
| P871-21 | Version bump 0.8.838 | [x] |
|
||||||
|
| P871-22 | Roadmap Phase 871 complete | [x] |
|
||||||
|
| P871-23 | Push all repos | [x] |
|
||||||
|
| P871-24 | Regression `test:guild-sync-member-page` | [x] |
|
||||||
|
| P871-25 | Regression `test:ci-phase870` | [x] |
|
||||||
|
| P871-26 | Event `member-page-request` unchanged when flag off | [x] |
|
||||||
|
| P871-27 | Owner/mod responder permission gate | [x] |
|
||||||
|
| P871-28 | Page `viaRpc` marker on response | [x] |
|
||||||
|
| P871-29 | Debounced schedule still calls `requestGuildMemberPage` | [x] |
|
||||||
|
| P871-30 | `_ingestMemberPage` auto-chain preserved | [x] |
|
||||||
|
| P871-31 | P869-43 MEMBER_PAGE RPC satisfied | [x] |
|
||||||
|
| P871-32 | Live smoke two-page offset 0 + 50 | [x] |
|
||||||
|
| P871-33 | Guest member ingest count check | [x] |
|
||||||
|
| P871-34 | `ensureGuildWireChannels` before RPC retries | [x] |
|
||||||
|
| P871-35 | Bounded swarm flush in live smoke | [x] |
|
||||||
|
| P871-36 | `pendingRpc` return shape on request | [x] |
|
||||||
|
| P871-37 | No default `PEARCORD_RPC_REQUEST_WIRE=1` | [x] |
|
||||||
|
| P871-38 | Gossip v2 default still deferred | [SKIP] fleet soak |
|
||||||
|
| P871-39 | MESSAGE_SEARCH RPC pull | [SKIP] future |
|
||||||
|
| P871-40 | DEVICE_PAIR RPC pull | [SKIP] future |
|
||||||
|
| P871-41 | View `memberPageRpcEnabled` snapshot | [SKIP] low priority |
|
||||||
|
| P871-42 | Agentctl member page RPC journey | [SKIP] smoke covers |
|
||||||
|
| P871-43 | Fleet member page RPC matrix | [SKIP] manual |
|
||||||
|
| P871-44 | Default member page RPC cutover | [SKIP] opt-in soak |
|
||||||
|
| P871-45 | Phase 872 queued (search RPC or gossip cutover) | [x] |
|
||||||
|
| P871-46 | Changelog Phase 871 | [x] |
|
||||||
|
| P871-47 | `GETTING_STARTED` cross-link unchanged (shared flag) | [x] |
|
||||||
|
| P871-48 | `GUILD_REPLICATION.md` RPC pull cross-ref | [SKIP] doc debt |
|
||||||
|
| P871-49 | `pearcord-guild/README` member page RPC note | [SKIP] low priority |
|
||||||
|
| P871-50 | Boot gate mixin source checks | [x] |
|
||||||
|
|
||||||
### Phase 870 — Media mesh protomux-rpc dual-stack (v0.8.837) ✓
|
### Phase 870 — Media mesh protomux-rpc dual-stack (v0.8.837) ✓
|
||||||
|
|
||||||
**Goal:** Opt-in protomux-rpc v2 for attach/voice/screen JSON media planes via `PEARCORD_MEDIA_RPC_WIRE=1` (requires `PEARCORD_RPC_WIRE=v2|dual`). Default unchanged: media stays v1 buffer even when gossip is v2.
|
**Goal:** Opt-in protomux-rpc v2 for attach/voice/screen JSON media planes via `PEARCORD_MEDIA_RPC_WIRE=1` (requires `PEARCORD_RPC_WIRE=v2|dual`). Default unchanged: media stays v1 buffer even when gossip is v2.
|
||||||
@@ -271,7 +331,7 @@ Bundle: `npm run test:ci-phase869` → guild sync RPC live smoke + `test:ci-phas
|
|||||||
| P869-40 | P868-49 satisfied (guild sync RPC live) | [x] |
|
| P869-40 | P868-49 satisfied (guild sync RPC live) | [x] |
|
||||||
| P869-41 | P867-49 default v2 cutover still deferred | [SKIP] fleet soak |
|
| P869-41 | P867-49 default v2 cutover still deferred | [SKIP] fleet soak |
|
||||||
| P869-42 | P867-50 v1 removal still deferred | [SKIP] after cutover |
|
| P869-42 | P867-50 v1 removal still deferred | [SKIP] after cutover |
|
||||||
| P869-43 | MEMBER_PAGE RPC pull | [SKIP] future phase |
|
| P869-43 | MEMBER_PAGE RPC pull | [x] Phase 871 |
|
||||||
| P869-44 | Contacts/settings RPC request pairs | [SKIP] future phase |
|
| P869-44 | Contacts/settings RPC request pairs | [SKIP] future phase |
|
||||||
| P869-45 | Default `PEARCORD_RPC_REQUEST_WIRE=1` | [SKIP] opt-in soak |
|
| P869-45 | Default `PEARCORD_RPC_REQUEST_WIRE=1` | [SKIP] opt-in soak |
|
||||||
| P869-46 | View field `rpcRequestWireEnabled` | [SKIP] low priority |
|
| P869-46 | View field `rpcRequestWireEnabled` | [SKIP] low priority |
|
||||||
@@ -12313,7 +12373,8 @@ For deferred items, use `[SKIP]` and include a brief reason inline.
|
|||||||
|
|
||||||
## Changelog
|
## Changelog
|
||||||
|
|
||||||
- 2026-06-04 - Completed Phase 870 media mesh protomux-rpc dual-stack (v0.8.837): `attachMediaWireSession`, attach/voice/screen migration, `test:ci-phase870` (48/50, cutover deferred). **Now:** await authorized next phase.
|
- 2026-06-04 - Completed Phase 871 protomux-rpc member page request/response pull (v0.8.838): `_buildMemberPagePayload`, `_tryMemberPageRequestRpc`, `test:ci-phase871` (46/50, cutover deferred). **Now:** await authorized next phase.
|
||||||
|
- 2026-06-04 - Completed Phase 870 media mesh protomux-rpc dual-stack (v0.8.837): `attachMediaWireSession`, attach/voice/screen migration, `test:ci-phase870` (48/50, cutover deferred).
|
||||||
- 2026-06-04 - Completed Phase 869 protomux-rpc guild sync request/response pull (v0.8.836): `gossip-request.js`, `_tryGuildSyncRequestRpc`, `test:ci-phase869` (48/50, cutover deferred). **Now:** await authorized next phase.
|
- 2026-06-04 - Completed Phase 869 protomux-rpc guild sync request/response pull (v0.8.836): `gossip-request.js`, `_tryGuildSyncRequestRpc`, `test:ci-phase869` (48/50, cutover deferred). **Now:** await authorized next phase.
|
||||||
- 2026-06-04 - Completed Phase 868 mux-wire modularization + dual-stack gossip CI (v0.8.835): split `mux-wire/{common,v1,v2,gossip}`, `test:ci-phase868`, view `rpcWireVersion` (50/50). **Now:** await authorized next phase.
|
- 2026-06-04 - Completed Phase 868 mux-wire modularization + dual-stack gossip CI (v0.8.835): split `mux-wire/{common,v1,v2,gossip}`, `test:ci-phase868`, view `rpcWireVersion` (50/50). **Now:** await authorized next phase.
|
||||||
- 2026-06-04 - Completed Phase 867 protomux-rpc wire migration (v0.8.834): dual-stack `PEARCORD_RPC_WIRE`, `attachGossipWireSession`, migrated gossip meshes, `test:ci-phase867` (48/50, cutover deferred). **Now:** await authorized next phase.
|
- 2026-06-04 - Completed Phase 867 protomux-rpc wire migration (v0.8.834): dual-stack `PEARCORD_RPC_WIRE`, `attachGossipWireSession`, migrated gossip meshes, `test:ci-phase867` (48/50, cutover deferred). **Now:** await authorized next phase.
|
||||||
|
|||||||
@@ -40,6 +40,16 @@ When **`PEARCORD_RPC_WIRE=v2`** (or `dual`) and **`PEARCORD_RPC_REQUEST_WIRE=1`*
|
|||||||
- Host registers `GUILD_SYNC_REQUEST` responder (owner/mod) returning a `GUILD_SYNC` bundle from `_buildGuildSyncBundle`.
|
- Host registers `GUILD_SYNC_REQUEST` responder (owner/mod) returning a `GUILD_SYNC` bundle from `_buildGuildSyncBundle`.
|
||||||
- Default remains event fanout (`gossipGuildSyncRequest`) when request wire is off.
|
- Default remains event fanout (`gossipGuildSyncRequest`) when request wire is off.
|
||||||
|
|
||||||
|
## Member page pull (v0.8.838+, Phase 871)
|
||||||
|
|
||||||
|
Same env flags as guild sync pull:
|
||||||
|
|
||||||
|
- Joiner calls `guild.requestGossipFromPeer(hostPk, RPC.MEMBER_PAGE_REQUEST, { guildId, requesterId, offset })`.
|
||||||
|
- Host registers `MEMBER_PAGE_REQUEST` responder (owner/mod) returning a `MEMBER_PAGE` payload from `_buildMemberPagePayload`.
|
||||||
|
- Platform `_tryMemberPageRequestRpc` runs before `gossipMemberPageRequest` fanout when the flag is on.
|
||||||
|
- Timeouts: `PEARCORD_GUILD_MEMBER_PAGE_RPC_MS`, `PEARCORD_GUILD_MEMBER_PAGE_RPC_WIRE_READY_MS`.
|
||||||
|
- Smoke: `npm run test:protomux-rpc-member-page-request-live`.
|
||||||
|
|
||||||
## Request/response semantics (P867-2)
|
## Request/response semantics (P867-2)
|
||||||
|
|
||||||
These pairs use request/response **semantics** on gossip (v1: fire-and-forget broadcasts; v2: may use `rpc.request` / `rpc.respond` in a later sub-step):
|
These pairs use request/response **semantics** on gossip (v1: fire-and-forget broadcasts; v2: may use `rpc.request` / `rpc.respond` in a later sub-step):
|
||||||
|
|||||||
@@ -0,0 +1,7 @@
|
|||||||
|
# Release v0.8.838 — Phase 871
|
||||||
|
|
||||||
|
Opt-in protomux-rpc **request/response** for large-guild member roster pages: joiner pulls `MEMBER_PAGE` from the mesh host via `MEMBER_PAGE_REQUEST` when `PEARCORD_RPC_WIRE=v2|dual` and `PEARCORD_RPC_REQUEST_WIRE=1`. Default gossip event fanout is unchanged.
|
||||||
|
|
||||||
|
- `_buildMemberPagePayload` / `_handleMemberPageRequestRpc` on host
|
||||||
|
- `_tryMemberPageRequestRpc` RPC-first in `requestGuildMemberPage`
|
||||||
|
- CI: `npm run test:ci-phase871`
|
||||||
Reference in New Issue
Block a user