Extract gossip-rpc-pull.js and gossip-rpc-handler-map.js; deduplicate meshPeerIdHex, peer resolution, wire prep, and multi-peer RPC fanout across audit archive, digest snapshot, message search, and mesh view mixins. Non-breaking refactor only — default gossip v1 unchanged. test:ci-phase876.
Pearcord platform mixins
Prototype mixins merged onto PearcordPlatform in manifest order (platform-mixin-assign-manifest.js). Do not reorder rows without a regression pass (npm run test:phase730-mixin-manifest).
Layout
| Folder | Contents | Manifest rows (approx.) |
|---|---|---|
domain/ |
Legacy feature mixins (permissions-mixin, user-settings, …) |
1–16 |
json-export/ |
Signed JSON mesh export mixins (*-json-mixin.js) |
17–59 |
runtime/core/ |
Hyperswarm, session, capabilities, diagnostics | 60–65 |
runtime/mesh/ |
Guild mesh peers, auto-heal, federation view | 66–74 |
runtime/guild-sync/ |
Sync watermarks, gossip outbox, wire, ingest/export | 75–88 |
runtime/search-discovery/ |
Search index, discovery listings, forum search | 89–103 |
runtime/partition-heal/ |
Partition heal state + domain heal mixins | 72, 104–112 |
runtime/view/ |
view(), caches, unread audit |
97, 109–111, 126 |
runtime/voice-dm/ |
DM session, voice mesh state, contacts presence | 92–93, 129–130 |
runtime/features/ |
Messaging, permissions, channels, bots, settings prefs, … | remainder |
Path map: mixin-paths.json. Regenerate after adding a mixin:
python3 apps/pearcord/scripts/generate-mixin-paths-json.py
# edit map / categorize() if needed
python3 apps/pearcord/scripts/migrate-platform-mixin-dirs.py --manifest-only # after manual mv
cd modules/pearcord-platform && python3 ../../apps/pearcord/scripts/regenerate-apply-platform-mixins.py
cd modules/pearcord-platform && python3 ../../apps/pearcord/scripts/regenerate-runtime-mixin-registry.py
Adding a new platform-* mixin
- Add file under the correct
runtime/<category>/folder. - Append a row to
platform-mixin-assign-manifest.js(usually near related mixins). - Run both regenerate scripts and
npm run test:phase730-mixin-manifest.
See PLATFORM_MIXINS.md for architecture context.