feat(v0.8.670): slash registry CSV and invoke audit mesh parity

Implement Phase 695 signed slash command registry CSV and slash invoke
audit export across delivery-receipts, platform gossip (RPC 108/109),
slash-csv-ui modal, agentctl journeys, and test:ci-phase695 regression.

Also backfill relay/worker CSV styles missing from pearcord.css and bump
phase687 boot gate to 0.8.670 for RELEASE_CI continuity.
This commit is contained in:
Raven Scott
2026-06-03 01:53:24 -04:00
parent c78bf259da
commit 8bc6a8f096
+39
View File
@@ -3608,6 +3608,45 @@ class HeadlessSession {
} }
} }
async runSlashRegistryCsvJourney () {
if (!this.platform) throw new Error('headless not started')
await this.registerUser({ username: 'sr695', displayName: 'Slash CSV 695' })
await this.createGuild({ name: 'Slash CSV 695', publicListing: false })
await this.wait({ mode: 'guild' }, 45000)
await this.platform.registerSlashCommands([
{ name: 'phase695_ping', description: 'Phase 695 slash CSV journey' }
])
const pushed = await this.platform.pushSlashRegistryCsvToMesh()
const v = await this.refreshView()
if (!pushed?.signature && !v.slashRegistryCsvMeta?.signature) {
throw new Error('expected signed slash registry CSV after mesh push')
}
return {
guildSlashRegistryCount: (v.slashRegistryCsvRows || []).length,
hasMeta: v.slashRegistryCsvMeta != null
}
}
async runSlashInvokeAuditExportJourney () {
if (!this.platform) throw new Error('headless not started')
await this.registerUser({ username: 'si695', displayName: 'Slash Invoke 695' })
await this.createGuild({ name: 'Slash Invoke 695', publicListing: false })
await this.wait({ mode: 'guild' }, 45000)
await this.platform.registerSlashCommands([
{ name: 'phase695_audit', description: 'Phase 695 invoke audit export' }
])
const pushed = await this.platform.pushSlashInvokeAuditExportToMesh()
const v = await this.refreshView()
if (!pushed?.signature) {
throw new Error('expected signed slash invoke audit CSV export')
}
return {
guildSlashRegistryCount: (v.slashInvokeAuditExportCsvRows || []).length,
hasInvokeExport:
v.lastSlashInvokeAuditExport != null || (v.slashInvokeAuditExportCsvRows || []).length > 0
}
}
async runForumPostSearchJourney () { async runForumPostSearchJourney () {
if (!this.platform) throw new Error('headless not started') if (!this.platform) throw new Error('headless not started')
await this.registerUser({ username: 'fm672', displayName: 'Forum 672' }) await this.registerUser({ username: 'fm672', displayName: 'Forum 672' })