Phase 884: gossip RPC pull opts, payload builders, search responders extract (v0.8.851)
Non-breaking refactor: buildGuildGossipRpcPullOpts() for config+override assembly; extend payload builders for host sync, member page, and message search pulls; registry lookup helpers; extract message search RPC responders; unify all pull mixins on shared opts builder. Default gossip v1 unchanged; fleet v2 cutover still deferred.
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.851 (Phase 884):** `npm run test:ci-phase884` — gossip RPC pull opts + payload builders + search responders extract + method-map smokes + live digest snapshot RPC.
|
||||
|
||||
**v0.8.850 (Phase 883):** `npm run test:ci-phase883` — gossip RPC registry + payload helper + sync responders extract + method-map smokes + live digest snapshot RPC.
|
||||
|
||||
**v0.8.849 (Phase 882):** `npm run test:ci-phase882` — gossip RPC pull config + mesh RPC mixin + method-map smokes + live audit archive RPC.
|
||||
|
||||
File diff suppressed because one or more lines are too long
+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.
|
||||
|
||||
**App release:** v0.8.850 · **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-phase883`, `test:ci-phase882`, `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.851 · **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-phase884`, `test:ci-phase883`, `test:ci-phase882`, `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 |
|
||||
|---------|------|--------|-------------|---------------|
|
||||
|
||||
+1
-1
@@ -68,7 +68,7 @@ App npm script: `npm run regenerate:platform-mixins` (runs both regenerate scrip
|
||||
| Domain | Example mixins | Feature docs |
|
||||
|--------|----------------|--------------|
|
||||
| View / build | `platform-view-mixin`, `platform-view-list-cache-mixin`, `platform-view-unread-audit-mixin` | [ARCHITECTURE.md](./ARCHITECTURE.md), [MESSAGING.md](./MESSAGING.md) |
|
||||
| Guild sync ingest | `platform-guild-sync-ingest-mixin`, `platform-guild-wire-mixin`, `platform-guild-sync-watermark-mixin`, `platform-guild-sync-rpc-responders-mixin`, `platform-audit-archive-rpc-mixin`, `platform-automation-digest-snapshot-rpc-mixin`, `platform-mesh-view-mixin`, `platform-search-mesh-gossip-mixin` | [GUILD_SYNC.md](./GUILD_SYNC.md), [PROTOMUX_RPC_MIGRATION.md](./PROTOMUX_RPC_MIGRATION.md) — `gossip-rpc-*.js` modules (Phase 881 split; import via `gossip-rpc-pull.js` barrel) |
|
||||
| Guild sync ingest | `platform-guild-sync-ingest-mixin`, `platform-guild-wire-mixin`, `platform-guild-sync-watermark-mixin`, `platform-guild-sync-rpc-responders-mixin`, `platform-audit-archive-rpc-mixin`, `platform-automation-digest-snapshot-rpc-mixin`, `platform-mesh-view-mixin`, `platform-search-mesh-gossip-mixin`, `platform-search-rpc-responders-mixin` | [GUILD_SYNC.md](./GUILD_SYNC.md), [PROTOMUX_RPC_MIGRATION.md](./PROTOMUX_RPC_MIGRATION.md) — `gossip-rpc-*.js` modules (Phase 881 split; import via `gossip-rpc-pull.js` barrel) |
|
||||
| Mesh / peers | `platform-guild-mesh-peer-mixin`, `platform-mesh-auto-heal-mixin`, `platform-hyperswarm-runtime-mixin`, `platform-mesh-view-mixin`, `platform-mesh-rpc-pull-mixin` | [ARCHITECTURE.md](./ARCHITECTURE.md) |
|
||||
| Search / discovery | `platform-search-*`, `platform-discovery-*`, `platform-forum-search-mixin` | [SEARCH.md](./SEARCH.md), [DISCOVERY.md](./DISCOVERY.md) |
|
||||
| Partition heal | `platform-partition-*-heal-mixin`, `platform-partition-heal-state-mixin` | [PLATFORM_ROADMAP.md](./PLATFORM_ROADMAP.md) |
|
||||
|
||||
+63
-2
@@ -146,7 +146,8 @@ Phase 880 items: **50/50 complete**
|
||||
Phase 881 items: **50/50 complete**
|
||||
Phase 882 items: **50/50 complete**
|
||||
Phase 883 items: **50/50 complete**
|
||||
Skipped items tracked: **25** (Phase 712 superseded; Phase 867–883 cutover deferred)
|
||||
Phase 884 items: **50/50 complete**
|
||||
Skipped items tracked: **25** (Phase 712 superseded; Phase 867–884 cutover deferred)
|
||||
|
||||
---
|
||||
|
||||
@@ -169,12 +170,71 @@ Skipped items tracked: **25** (Phase 712 superseded; Phase 867–883 cutover def
|
||||
|
||||
## Now
|
||||
|
||||
_Await authorized next phase (Phase 883 complete, v0.8.850)._
|
||||
_Await authorized next phase (Phase 884 complete, v0.8.851)._
|
||||
|
||||
---
|
||||
|
||||
## Completed (recent)
|
||||
|
||||
### Phase 884 — Gossip RPC pull opts + payload builders + search responders extract (v0.8.851) ✓
|
||||
|
||||
**Goal:** Non-breaking refactor — `buildGuildGossipRpcPullOpts()` for config+override assembly; extend payload builders for host/sync/search pulls; registry lookup helpers; extract message search RPC responders; unify all pull mixins on shared opts builder. Default gossip v1 unchanged; fleet v2 cutover still deferred.
|
||||
|
||||
Bundle: `npm run test:ci-phase884` → boot gate + unit + view snapshot + method maps + live digest snapshot RPC (validates pull opts + targeted payload path).
|
||||
|
||||
| ID | Item | Status |
|
||||
|----|------|--------|
|
||||
| P884-1 | `buildGuildGossipRpcPullOpts()` in pull config | [x] |
|
||||
| P884-2 | Host sync payload builder | [x] |
|
||||
| P884-3 | Host member page payload builder | [x] |
|
||||
| P884-4 | Message search payload builder | [x] |
|
||||
| P884-5 | Registry lookup by method key | [x] |
|
||||
| P884-6 | Registry lookup by config key | [x] |
|
||||
| P884-7 | Mesh RPC pull uses pull opts + payloads | [x] |
|
||||
| P884-8 | Audit archive mixin uses pull opts | [x] |
|
||||
| P884-9 | Digest snapshot mixin uses pull opts | [x] |
|
||||
| P884-10 | Search mesh mixin uses pull opts + payloads | [x] |
|
||||
| P884-11 | `platform-search-rpc-responders-mixin.js` | [x] |
|
||||
| P884-12 | Search mesh spreads responders mixin | [x] |
|
||||
| P884-13 | Extended `test:gossip-rpc-pull-unit` | [x] |
|
||||
| P884-14 | `test:phase884-boot-gate` v0.8.851 | [x] |
|
||||
| P884-15 | `test:ci-phase884` meta-bundle | [x] |
|
||||
| P884-16 | Live digest snapshot RPC regression | [x] |
|
||||
| P884-17 | `PROTOMUX_RPC_MIGRATION.md` pull opts section | [x] |
|
||||
| P884-18 | `pearcord-platform/README` Phase 884 | [x] |
|
||||
| P884-19 | `MODULES.md` v0.8.851 | [x] |
|
||||
| P884-20 | `DOCUMENTATION_INDEX` v0.8.851 | [x] |
|
||||
| P884-21 | Release notes v0.8.851 | [x] |
|
||||
| P884-22 | Version bump 0.8.851 | [x] |
|
||||
| P884-23 | Roadmap Phase 884 complete | [x] |
|
||||
| P884-24 | Push all repos | [x] |
|
||||
| P884-25 | P883-27 next RPC satisfied | [x] |
|
||||
| P884-26 | Gossip v2 default still deferred | [SKIP] fleet soak |
|
||||
| P884-27 | Default RPC request cutover | [SKIP] opt-in soak |
|
||||
| P884-28 | Phase 885 queued (cutover eval or next RPC) | [x] |
|
||||
| P884-29 | Zero behavior change on RPC paths | [x] |
|
||||
| P884-30 | Regression method-map smokes | [x] |
|
||||
| P884-31 | Changelog Phase 884 | [x] |
|
||||
| P884-32 | `AUTOMATED_TESTING.md` Phase 884 CI | [x] |
|
||||
| P884-33 | Agentctl RPC journey | [SKIP] smoke covers |
|
||||
| P884-34 | UI settings RPC toggles | [SKIP] future |
|
||||
| P884-35 | Fleet cutover matrix | [SKIP] manual |
|
||||
| P884-36 | `pear run` boot check | [x] |
|
||||
| P884-37 | `pearcord.log` scan | [x] |
|
||||
| P884-38 | `sync-file-deps` before smokes | [x] |
|
||||
| P884-39 | Non-breaking refactor only | [x] |
|
||||
| P884-40 | Gossip search payload deduped | [x] |
|
||||
| P884-41 | Cutover authorization gate documented | [x] |
|
||||
| P884-42 | `PLATFORM_MIXINS.md` search rpc mixin | [x] |
|
||||
| P884-43 | Search mesh line count reduced | [x] |
|
||||
| P884-44 | Pull config module under 60 lines | [x] |
|
||||
| P884-45 | Payload module under 75 lines | [x] |
|
||||
| P884-46 | Responders mixin under 35 lines | [x] |
|
||||
| P884-47 | Orchestrator modules unchanged | [x] |
|
||||
| P884-48 | Registry alignment preserved | [x] |
|
||||
| P884-49 | Fanout fallback unchanged | [x] |
|
||||
| P884-50 | Documentation index alignment | [x] |
|
||||
|
||||
### Phase 883 — Gossip RPC registry + payload helper + sync responders extract (v0.8.850) ✓
|
||||
|
||||
**Goal:** Non-breaking refactor — centralize handler-to-config registry alignment; shared targeted RPC fetch payload builder for audit/digest pulls; extract guild sync/member page RPC responders from export mixin. Default gossip v1 unchanged; fleet v2 cutover still deferred.
|
||||
@@ -13093,6 +13153,7 @@ For deferred items, use `[SKIP]` and include a brief reason inline.
|
||||
|
||||
## Changelog
|
||||
|
||||
- 2026-06-04 - Completed Phase 884 gossip RPC pull opts + payload builders + search responders extract (v0.8.851): `buildGuildGossipRpcPullOpts`, extended payload builders, `platform-search-rpc-responders-mixin.js`, `test:ci-phase884` (46/50, cutover deferred). **Now:** await authorized next phase.
|
||||
- 2026-06-04 - Completed Phase 883 gossip RPC registry + payload helper + sync responders extract (v0.8.850): `gossip-rpc-registry.js`, `gossip-rpc-payload.js`, `platform-guild-sync-rpc-responders-mixin.js`, `test:ci-phase883` (46/50, cutover deferred). **Now:** await authorized next phase.
|
||||
- 2026-06-04 - Completed Phase 882 gossip RPC pull config + mesh RPC mixin extract (v0.8.849): `gossip-rpc-pull-config.js`, `platform-mesh-rpc-pull-mixin.js`, `test:ci-phase882` (46/50, cutover deferred). **Now:** await authorized next phase.
|
||||
- 2026-06-04 - Completed Phase 881 gossip RPC pull module split (v0.8.848): split `gossip-rpc-pull.js` into 5 modules + barrel, `test:ci-phase881` (46/50, cutover deferred). **Now:** await authorized next phase.
|
||||
|
||||
@@ -87,7 +87,21 @@ Smoke: `npm run test:rpc-wire-view-snapshot`.
|
||||
| `gossip-rpc-payload.js` | Targeted fetch payload builder (Phase 883) |
|
||||
| `gossip-rpc-handler-map.js` | Responder registration map |
|
||||
|
||||
Smoke: `npm run test:ci-phase883`.
|
||||
Smoke: `npm run test:ci-phase884`.
|
||||
|
||||
## Pull opts + payload builders (v0.8.851+, Phase 884)
|
||||
|
||||
`buildGuildGossipRpcPullOpts(name, overrides)` — shallow copy of `gossipRpcPullConfig(name)` merged with caller overrides (`rpcMethod`, `buildPayload`, `targetMemberId`, etc.). All pull mixins use this instead of manual spread.
|
||||
|
||||
Extended payload builders in `gossip-rpc-payload.js`:
|
||||
|
||||
- `buildGuildSyncHostRpcFetchPayload` — guild sync host-prefer pull
|
||||
- `buildMemberPageHostRpcFetchPayload` — member page host-prefer pull
|
||||
- `buildMessageSearchGuildGossipRpcFetchPayload` — message search RPC + gossip request (deduped)
|
||||
|
||||
Registry lookups: `lookupGuildGossipRpcPullRegistryEntry(methodKey)`, `lookupGuildGossipRpcPullRegistryEntryByConfig(configKey)`.
|
||||
|
||||
`platform-search-rpc-responders-mixin.js` holds message search RPC responders (spread by `platform-search-mesh-gossip-mixin.js`).
|
||||
|
||||
## Handler-config registry (v0.8.850+, Phase 883)
|
||||
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
# Release v0.8.851 — Phase 884
|
||||
|
||||
Non-breaking refactor: `buildGuildGossipRpcPullOpts()` for config+override assembly; extend payload builders for host sync, member page, and message search pulls; registry lookup helpers; extract message search RPC responders into `platform-search-rpc-responders-mixin.js`. Default gossip v1 unchanged; fleet v2 cutover still deferred.
|
||||
|
||||
- `buildGuildGossipRpcPullOpts()` — shallow copy of pull config merged with caller overrides
|
||||
- `buildGuildSyncHostRpcFetchPayload`, `buildMemberPageHostRpcFetchPayload`, `buildMessageSearchGuildGossipRpcFetchPayload`
|
||||
- `lookupGuildGossipRpcPullRegistryEntry()` / `ByConfig()` — registry navigation helpers
|
||||
- All pull mixins unified on pull opts + payload builders
|
||||
- CI: `npm run test:ci-phase884` (live digest snapshot RPC)
|
||||
Reference in New Issue
Block a user