feat(phase700): member roster CSV and moderation timeout export mesh parity (v0.8.675)

Add signed member roster CSV mesh (RPC 118) and moderation timeout export CSV
(RPC 119) with member-csv-ui, platform member-csv-mixin, delivery-receipts store
methods, guild gossip, ui-flow IPC, agentctl journeys, and test:ci-phase700.
This commit is contained in:
Raven Scott
2026-06-03 02:57:53 -04:00
parent c2c29a2e13
commit 637911772b
+34
View File
@@ -3797,6 +3797,40 @@ class HeadlessSession {
}
}
async runMemberRosterCsvJourney () {
if (!this.platform) throw new Error('headless not started')
await this.registerUser({ username: 'mb700', displayName: 'Member CSV 700' })
await this.createGuild({ name: 'Member CSV 700', publicListing: false })
await this.wait({ mode: 'guild' }, 45000)
const pushed = await this.platform.pushMemberRosterCsvToMesh()
const v = await this.refreshView()
if (!pushed?.signature && !v.memberRosterCsvMeta?.signature) {
throw new Error('expected signed member roster CSV after mesh push')
}
return {
guildMemberCsvCount: (v.memberRosterCsvRows || []).length,
hasMeta: v.memberRosterCsvMeta != null
}
}
async runModerationTimeoutExportJourney () {
if (!this.platform) throw new Error('headless not started')
await this.registerUser({ username: 'to700', displayName: 'Timeout 700' })
await this.createGuild({ name: 'Timeout 700', publicListing: false })
await this.wait({ mode: 'guild' }, 45000)
const pushed = await this.platform.pushModerationTimeoutExportToMesh()
const v = await this.refreshView()
if (!pushed?.signature) {
throw new Error('expected signed moderation timeout CSV export')
}
return {
guildMemberCsvCount: (v.moderationTimeoutExportCsvRows || []).length,
hasTimeoutExport:
v.lastModerationTimeoutExport != null ||
(v.moderationTimeoutExportCsvRows || []).length > 0
}
}
async runForumPostSearchJourney () {
if (!this.platform) throw new Error('headless not started')
await this.registerUser({ username: 'fm672', displayName: 'Forum 672' })