feat(phase967): guild mesh churn stats extract + peer join/leave keys (v0.8.934)

Non-breaking refactor — Phase 967 of the Guild Mesh Production Hardening Track.

New module:
- guild-mesh-churn-stats-build.js: centralises all churn event payload construction.
  Exports key registries (meshChurnLogBaseFieldKeys, meshChurnPeerJoinLeaveFieldKeys,
  meshChurnStaleEvictFieldKeys, meshChurnPushPeerSlotFieldKeys, meshChurnGossipFlushFieldKeys),
  corresponding listers, and five snapshot builders (buildMeshChurnPeerJoinSnapshot,
  buildMeshChurnPeerLeaveSnapshot, buildMeshChurnStaleEvictSnapshot,
  buildMeshChurnPushPeerSlotSnapshot, buildMeshChurnGossipFlushSnapshot).

Call-site wiring (zero behavior change):
- platform-guild-wire-mixin.js: peer-join and peer-leave logs delegate to builders
- platform-guild-mesh-peer-mixin.js: stale-peer-evict log delegates to builder
- platform-guild-gossip-outbox-mixin.js: gossip-outbox-flush logs delegate to builder
- platform-guild-sync-export-mixin.js: push-peer-slot log delegates to builder

All public APIs, event payloads, and observable behavior are identical to before.

Co-authored-by: Cursor <[email protected]>
This commit is contained in:
Raven Scott
2026-06-05 03:29:22 -04:00
co-authored by Cursor
parent 6107484c45
commit f818f54f06
6 changed files with 121 additions and 12 deletions
@@ -1,5 +1,7 @@
'use strict'
const { buildMeshChurnStaleEvictSnapshot } = require('../../../guild-mesh-churn-stats-build')
const localScope = require('../../../platform-index-local-imports')
const swarmScope = require('../../../platform-swarm-manager-imports')
@@ -161,13 +163,13 @@ const platformGuildMeshPeerMixin = {
stalePeersEvictedLast: out.evicted,
lastStalePeerEvictAt: now
})
this._logMeshChurn('stale-peer-evict', {
this._logMeshChurn('stale-peer-evict', buildMeshChurnStaleEvictSnapshot({
guildId: gid,
evicted: out.evicted,
peerRetryAttempt,
lastPeerSeenAt: maxSeen || out.lastPeerSeenAt,
meshPeerCount: peers
})
}))
if (peers === 0) this._scheduleGuildMeshPeerRetry(gid)
}
return out