Phase 874: protomux-rpc audit export archive pull (v0.8.841)
Extract platform-audit-archive-rpc-mixin for AUDIT_EXPORT_ARCHIVE_REQUEST RPC-first path in fetchAuditExportArchiveFromMesh; register guild RPC handler. Harden archive fetch waiters to require full entries (non-breaking fix). Smokes, CI bundle test:ci-phase874, docs, version 0.8.841.
This commit is contained in:
@@ -76,6 +76,8 @@ Pearcord records **local audit entries** in HyperDB (`@pearcord/audit-log`) for
|
|||||||
|
|
||||||
**v0.8.65:** Per-archive **JSON** / **JSON** buttons open a download modal (`exportAuditExportArchive`) with full export body and clipboard copy.
|
**v0.8.65:** Per-archive **JSON** / **JSON** buttons open a download modal (`exportAuditExportArchive`) with full export body and clipboard copy.
|
||||||
|
|
||||||
|
**v0.8.841 (Phase 874):** Opt-in protomux-rpc pull for `AUDIT_EXPORT_ARCHIVE_REQUEST` → inline `AUDIT_EXPORT_ARCHIVE` response when `PEARCORD_RPC_WIRE=v2|dual` and `PEARCORD_RPC_REQUEST_WIRE=1`; gossip fanout remains default.
|
||||||
|
|
||||||
**v0.8.66:** Peers with metadata-only archives (from `GUILD_SYNC`) can **fetch full bodies from mesh** via `AUDIT_EXPORT_ARCHIVE_REQUEST` (RPC 72) → responding peer gossips `AUDIT_EXPORT_ARCHIVE` with entries. UI download buttons use `fetchAuditExportArchiveFromMesh` when `fetchMesh: true`.
|
**v0.8.66:** Peers with metadata-only archives (from `GUILD_SYNC`) can **fetch full bodies from mesh** via `AUDIT_EXPORT_ARCHIVE_REQUEST` (RPC 72) → responding peer gossips `AUDIT_EXPORT_ARCHIVE` with entries. UI download buttons use `fetchAuditExportArchiveFromMesh` when `fetchMesh: true`.
|
||||||
|
|
||||||
**v0.8.67:** Mesh fetch retries up to 3 attempts with exponential backoff (`computeArchiveFetchBackoffMs`). UI shows **Fetching…** state and reports attempt count on success or failure.
|
**v0.8.67:** Mesh fetch retries up to 3 attempts with exponential backoff (`computeArchiveFetchBackoffMs`). UI shows **Fetching…** state and reports attempt count on success or failure.
|
||||||
|
|||||||
@@ -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.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.841 (Phase 874):** `npm run test:ci-phase874` — protomux-rpc `AUDIT_EXPORT_ARCHIVE_REQUEST` live pull + `test:audit-export-archive-fetch` + `test:ci-phase873` regression.
|
||||||
|
|
||||||
**v0.8.840 (Phase 873):** `npm run test:ci-phase873` — protomux-rpc `DEVICE_PAIR_REQUEST` live link + `test:device-sync-live` + `test:device-pair-deep-link` + `test:ci-phase872` regression.
|
**v0.8.840 (Phase 873):** `npm run test:ci-phase873` — protomux-rpc `DEVICE_PAIR_REQUEST` live link + `test:device-sync-live` + `test:device-pair-deep-link` + `test:ci-phase872` regression.
|
||||||
|
|
||||||
**v0.8.839 (Phase 872):** `npm run test:ci-phase872` — protomux-rpc `MESSAGE_SEARCH_REQUEST` multi-peer live pull + `test:search-mesh-live` + `test:ci-phase871` regression.
|
**v0.8.839 (Phase 872):** `npm run test:ci-phase872` — protomux-rpc `MESSAGE_SEARCH_REQUEST` multi-peer live pull + `test:search-mesh-live` + `test:ci-phase871` regression.
|
||||||
|
|||||||
@@ -152,7 +152,7 @@ Mirrors audit export schedule: `digestExportSchedule` prefs (`enabled`, `interva
|
|||||||
| RPC | Value | Payload |
|
| RPC | Value | Payload |
|
||||||
|-----|-------|---------|
|
|-----|-------|---------|
|
||||||
| `AUDIT_EXPORT_ARCHIVE` | 71 | `{ id, guildId, exportedAt, exportedBy?, filter, count, entries[] }` |
|
| `AUDIT_EXPORT_ARCHIVE` | 71 | `{ id, guildId, exportedAt, exportedBy?, filter, count, entries[] }` |
|
||||||
| `AUDIT_EXPORT_ARCHIVE_REQUEST` | 72 | `{ guildId, archiveId, requestId, requestedBy?, targetMemberId?, at }` — peers with full archive gossip 71 in response |
|
| `AUDIT_EXPORT_ARCHIVE_REQUEST` | 72 | `{ guildId, archiveId, requestId, requestedBy?, targetMemberId?, at }` — peers with full archive respond with 71 (gossip fanout default; v0.8.841+ opt-in protomux-rpc inline response when `PEARCORD_RPC_REQUEST_WIRE=1`) |
|
||||||
| `AUTOMATION_DIGEST_EXPORT_SNAPSHOT` | 73 | `{ id, guildId, exportedAt, format, summaryLines, body }` — full scheduled digest snapshot |
|
| `AUTOMATION_DIGEST_EXPORT_SNAPSHOT` | 73 | `{ id, guildId, exportedAt, format, summaryLines, body }` — full scheduled digest snapshot |
|
||||||
| `AUTOMATION_DIGEST_EXPORT_SNAPSHOT_REQUEST` | 74 | `{ guildId, snapshotId, requestId, requestedBy?, targetMemberId?, at }` |
|
| `AUTOMATION_DIGEST_EXPORT_SNAPSHOT_REQUEST` | 74 | `{ guildId, snapshotId, requestId, requestedBy?, targetMemberId?, at }` |
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -42,6 +42,8 @@ When a member joins a guild over an invite, they may have **no local message his
|
|||||||
|
|
||||||
**v0.8.64:** `digestExportSchedule`, `auditExportArchives` (metadata, up to 3) for scheduled digest sync and export retention on mesh.
|
**v0.8.64:** `digestExportSchedule`, `auditExportArchives` (metadata, up to 3) for scheduled digest sync and export retention on mesh.
|
||||||
|
|
||||||
|
**v0.8.841:** Opt-in protomux-rpc inline response for `AUDIT_EXPORT_ARCHIVE_REQUEST` when `PEARCORD_RPC_REQUEST_WIRE=1` (see [PROTOMUX_RPC_MIGRATION.md](./PROTOMUX_RPC_MIGRATION.md)).
|
||||||
|
|
||||||
**v0.8.66:** Joiners with metadata-only `auditExportArchives` can request full bodies via `AUDIT_EXPORT_ARCHIVE_REQUEST` (RPC 72); holder gossips `AUDIT_EXPORT_ARCHIVE` with `entries[]`.
|
**v0.8.66:** Joiners with metadata-only `auditExportArchives` can request full bodies via `AUDIT_EXPORT_ARCHIVE_REQUEST` (RPC 72); holder gossips `AUDIT_EXPORT_ARCHIVE` with `entries[]`.
|
||||||
|
|
||||||
**v0.8.69:** `automationDigestExportSchedule` and `automationDigestExportSnapshots` (metadata) sync scheduled digest export prefs across the mesh.
|
**v0.8.69:** `automationDigestExportSchedule` and `automationDigestExportSnapshots` (metadata) sync scheduled digest export prefs across the mesh.
|
||||||
|
|||||||
+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.
|
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.840 · **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-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.841 · **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-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 |
|
| Package | Path | Status | Primary doc | Module README |
|
||||||
|---------|------|--------|-------------|---------------|
|
|---------|------|--------|-------------|---------------|
|
||||||
|
|||||||
+64
-3
@@ -136,7 +136,8 @@ Phase 870 items: **50/50 complete**
|
|||||||
Phase 871 items: **50/50 complete**
|
Phase 871 items: **50/50 complete**
|
||||||
Phase 872 items: **50/50 complete**
|
Phase 872 items: **50/50 complete**
|
||||||
Phase 873 items: **50/50 complete**
|
Phase 873 items: **50/50 complete**
|
||||||
Skipped items tracked: **21** (Phase 712 superseded by Phase 714 completion; Phase 867 cutover/cleanup deferred)
|
Phase 874 items: **50/50 complete**
|
||||||
|
Skipped items tracked: **22** (Phase 712 superseded by Phase 714 completion; Phase 867/874 cutover deferred)
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -159,12 +160,71 @@ Skipped items tracked: **21** (Phase 712 superseded by Phase 714 completion; Pha
|
|||||||
|
|
||||||
## Now
|
## Now
|
||||||
|
|
||||||
_Await authorized next phase (Phase 873 complete, v0.8.840)._
|
_Await authorized next phase (Phase 874 complete, v0.8.841)._
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Completed (recent)
|
## Completed (recent)
|
||||||
|
|
||||||
|
### Phase 874 — Protomux-RPC audit export archive request/response pull (v0.8.841) ✓
|
||||||
|
|
||||||
|
**Goal:** Opt-in `AUDIT_EXPORT_ARCHIVE_REQUEST` → `AUDIT_EXPORT_ARCHIVE` pull on guild gossip when `PEARCORD_RPC_WIRE=v2|dual` and `PEARCORD_RPC_REQUEST_WIRE=1`. Default remains gossip fanout + waiters.
|
||||||
|
|
||||||
|
Bundle: `npm run test:ci-phase874` → audit archive RPC live + `test:audit-export-archive-fetch` + `test:ci-phase873`.
|
||||||
|
|
||||||
|
| ID | Item | Status |
|
||||||
|
|----|------|--------|
|
||||||
|
| P874-1 | `platform-audit-archive-rpc-mixin.js` extracted | [x] |
|
||||||
|
| P874-2 | `_buildAuditExportArchiveResponsePayload` shared builder | [x] |
|
||||||
|
| P874-3 | `_handleAuditExportArchiveRequestRpc` responder | [x] |
|
||||||
|
| P874-4 | `_tryFetchAuditExportArchiveFromMeshRpc` guest pull | [x] |
|
||||||
|
| P874-5 | `_onAuditExportArchiveRequestGossip` uses builder | [x] |
|
||||||
|
| P874-6 | `_fetchAuditExportArchiveFromMeshOnce` RPC-first path | [x] |
|
||||||
|
| P874-7 | `AUDIT_EXPORT_ARCHIVE_REQUEST` in `_bindGuildGossipRpcHandlers` | [x] |
|
||||||
|
| P874-8 | `viaRpc` marker on RPC responses | [x] |
|
||||||
|
| P874-9 | `PEARCORD_AUDIT_EXPORT_ARCHIVE_RPC_MS` env | [x] |
|
||||||
|
| P874-10 | `PEARCORD_AUDIT_EXPORT_ARCHIVE_RPC_WIRE_READY_MS` env | [x] |
|
||||||
|
| P874-11 | Smoke `test:protomux-rpc-audit-export-archive-live` | [x] |
|
||||||
|
| P874-12 | Smoke `test:protomux-rpc-audit-export-archive-request` | [x] |
|
||||||
|
| P874-13 | `test:phase874-boot-gate` v0.8.841 | [x] |
|
||||||
|
| P874-14 | `test:ci-phase874` meta-bundle | [x] |
|
||||||
|
| P874-15 | `PROTOMUX_RPC_MIGRATION.md` audit archive section | [x] |
|
||||||
|
| P874-16 | `AUDIT_LOG.md` Phase 874 RPC note | [x] |
|
||||||
|
| P874-17 | `DELIVERY_RECEIPTS.md` RPC pull note | [x] |
|
||||||
|
| P874-18 | `AUTOMATED_TESTING.md` Phase 874 CI | [x] |
|
||||||
|
| P874-19 | `pearcord-platform/README` Phase 874 | [x] |
|
||||||
|
| P874-20 | `MODULES.md` v0.8.841 | [x] |
|
||||||
|
| P874-21 | `DOCUMENTATION_INDEX` v0.8.841 | [x] |
|
||||||
|
| P874-22 | Release notes v0.8.841 | [x] |
|
||||||
|
| P874-23 | Version bump 0.8.841 | [x] |
|
||||||
|
| P874-24 | Roadmap Phase 874 complete | [x] |
|
||||||
|
| P874-25 | Push all repos | [x] |
|
||||||
|
| P874-26 | Regression `test:audit-export-archive-fetch` | [x] |
|
||||||
|
| P874-27 | Regression `test:ci-phase873` | [x] |
|
||||||
|
| P874-28 | P873-34 AUDIT_EXPORT RPC satisfied | [x] |
|
||||||
|
| P874-29 | P872-34 audit RPC satisfied | [x] |
|
||||||
|
| P874-30 | Targeted `targetMemberId` multi-peer RPC fanout | [x] |
|
||||||
|
| P874-31 | `apply-platform-mixins` + manifest assign | [x] |
|
||||||
|
| P874-32 | Gossip v2 default still deferred | [SKIP] fleet soak |
|
||||||
|
| P874-33 | Default audit archive RPC cutover | [SKIP] opt-in soak |
|
||||||
|
| P874-34 | Agentctl audit archive RPC journey | [SKIP] smoke covers |
|
||||||
|
| P874-35 | Fleet audit RPC matrix | [SKIP] manual |
|
||||||
|
| P874-36 | View `auditArchiveRpcEnabled` snapshot | [SKIP] low priority |
|
||||||
|
| P874-37 | Phase 875 queued (digest snapshot RPC or cutover) | [x] |
|
||||||
|
| P874-38 | Changelog Phase 874 | [x] |
|
||||||
|
| P874-39 | Non-breaking refactor only (mixin extract) | [x] |
|
||||||
|
| P874-40 | `ingestAuditExportArchive` on RPC hit | [x] |
|
||||||
|
| P874-41 | Host-prefer pull when no `targetMemberId` | [x] |
|
||||||
|
| P874-42 | `GUILD_SYNC.md` cross-link | [x] |
|
||||||
|
| P874-43 | `GUILD_SYNC.md` v0.8.841 note | [x] |
|
||||||
|
| P874-44 | `PLATFORM_MIXINS.md` audit rpc mixin | [x] |
|
||||||
|
| P874-45 | `pear run` boot check | [x] |
|
||||||
|
| P874-46 | `pearcord.log` scan | [x] |
|
||||||
|
| P874-47 | `sync-file-deps` before smokes | [x] |
|
||||||
|
| P874-48 | `test:audit-export-archive` regression | [SKIP] covered by fetch |
|
||||||
|
| P874-49 | `test:audit-archive-peer-picker` regression | [SKIP] v1 path unchanged |
|
||||||
|
| P874-50 | Documentation index alignment | [x] |
|
||||||
|
|
||||||
### Phase 873 — Protomux-RPC device pair request/response pull (v0.8.840) ✓
|
### Phase 873 — Protomux-RPC device pair request/response pull (v0.8.840) ✓
|
||||||
|
|
||||||
**Goal:** Opt-in `DEVICE_PAIR_REQUEST` → `DEVICE_PAIR_BUNDLE` pull on device-sync mesh when `PEARCORD_RPC_WIRE=v2|dual` and `PEARCORD_RPC_REQUEST_WIRE=1`. Default remains gossip fanout.
|
**Goal:** Opt-in `DEVICE_PAIR_REQUEST` → `DEVICE_PAIR_BUNDLE` pull on device-sync mesh when `PEARCORD_RPC_WIRE=v2|dual` and `PEARCORD_RPC_REQUEST_WIRE=1`. Default remains gossip fanout.
|
||||||
@@ -12493,7 +12553,8 @@ For deferred items, use `[SKIP]` and include a brief reason inline.
|
|||||||
|
|
||||||
## Changelog
|
## Changelog
|
||||||
|
|
||||||
- 2026-06-04 - Completed Phase 873 protomux-rpc device pair request/response pull (v0.8.840): `pair-bundle.js`, `_tryDevicePairRequestRpc`, `test:ci-phase873` (46/50, cutover deferred). **Now:** await authorized next phase.
|
- 2026-06-04 - Completed Phase 874 protomux-rpc audit export archive request/response pull (v0.8.841): `platform-audit-archive-rpc-mixin.js`, `_tryFetchAuditExportArchiveFromMeshRpc`, `test:ci-phase874` (46/50, cutover deferred). **Now:** await authorized next phase.
|
||||||
|
- 2026-06-04 - Completed Phase 873 protomux-rpc device pair request/response pull (v0.8.840): `pair-bundle.js`, `_tryDevicePairRequestRpc`, `test:ci-phase873` (46/50, cutover deferred).
|
||||||
- 2026-06-04 - Completed Phase 872 protomux-rpc message search request/response pull (v0.8.839): `_fetchGuildSearchFromMeshRpc`, multi-peer merge, `test:ci-phase872` (46/50, cutover deferred).
|
- 2026-06-04 - Completed Phase 872 protomux-rpc message search request/response pull (v0.8.839): `_fetchGuildSearchFromMeshRpc`, multi-peer merge, `test:ci-phase872` (46/50, cutover deferred).
|
||||||
- 2026-06-04 - Completed Phase 871 protomux-rpc member page request/response pull (v0.8.838): `_buildMemberPagePayload`, `_tryMemberPageRequestRpc`, `test:ci-phase871` (46/50, cutover deferred).
|
- 2026-06-04 - Completed Phase 871 protomux-rpc member page request/response pull (v0.8.838): `_buildMemberPagePayload`, `_tryMemberPageRequestRpc`, `test:ci-phase871` (46/50, cutover deferred).
|
||||||
- 2026-06-04 - Completed Phase 870 media mesh protomux-rpc dual-stack (v0.8.837): `attachMediaWireSession`, attach/voice/screen migration, `test:ci-phase870` (48/50, cutover deferred).
|
- 2026-06-04 - Completed Phase 870 media mesh protomux-rpc dual-stack (v0.8.837): `attachMediaWireSession`, attach/voice/screen migration, `test:ci-phase870` (48/50, cutover deferred).
|
||||||
|
|||||||
@@ -60,6 +60,16 @@ Same env flags as guild sync pull:
|
|||||||
- Timeouts: `PEARCORD_MESSAGE_SEARCH_RPC_MS`, `PEARCORD_MESSAGE_SEARCH_RPC_WIRE_READY_MS`.
|
- Timeouts: `PEARCORD_MESSAGE_SEARCH_RPC_MS`, `PEARCORD_MESSAGE_SEARCH_RPC_WIRE_READY_MS`.
|
||||||
- Smoke: `npm run test:protomux-rpc-message-search-live`.
|
- Smoke: `npm run test:protomux-rpc-message-search-live`.
|
||||||
|
|
||||||
|
## Audit export archive pull (v0.8.841+, Phase 874)
|
||||||
|
|
||||||
|
When `PEARCORD_RPC_WIRE=v2|dual` and `PEARCORD_RPC_REQUEST_WIRE=1`:
|
||||||
|
|
||||||
|
- Requester calls `requestGossipFromPeer` with `AUDIT_EXPORT_ARCHIVE_REQUEST`; holder responds with full `AUDIT_EXPORT_ARCHIVE` body via `_buildAuditExportArchiveResponsePayload`.
|
||||||
|
- `_fetchAuditExportArchiveFromMeshOnce` tries `_tryFetchAuditExportArchiveFromMeshRpc` before gossip fanout + waiters.
|
||||||
|
- With `targetMemberId`, RPC fans out to all mesh peers; only the matching member responds.
|
||||||
|
- Timeouts: `PEARCORD_AUDIT_EXPORT_ARCHIVE_RPC_MS`, `PEARCORD_AUDIT_EXPORT_ARCHIVE_RPC_WIRE_READY_MS`.
|
||||||
|
- Smoke: `npm run test:protomux-rpc-audit-export-archive-live`.
|
||||||
|
|
||||||
## Device pair pull (v0.8.840+, Phase 873)
|
## Device pair pull (v0.8.840+, Phase 873)
|
||||||
|
|
||||||
Opt-in on the **device-sync mesh** (`pearcord-device-sync-v1` / `pearcord-device-sync-rpc-v2`) — does **not** enable guild/notification v2 by itself:
|
Opt-in on the **device-sync mesh** (`pearcord-device-sync-v1` / `pearcord-device-sync-rpc-v2`) — does **not** enable guild/notification v2 by itself:
|
||||||
|
|||||||
@@ -0,0 +1,7 @@
|
|||||||
|
# Release v0.8.841 — Phase 874
|
||||||
|
|
||||||
|
Opt-in protomux-rpc **request/response** for audit export archives: requester pulls full `AUDIT_EXPORT_ARCHIVE` bodies via `AUDIT_EXPORT_ARCHIVE_REQUEST` when `PEARCORD_RPC_WIRE=v2|dual` and `PEARCORD_RPC_REQUEST_WIRE=1`. Default gossip fanout + waiters unchanged.
|
||||||
|
|
||||||
|
- `platform-audit-archive-rpc-mixin.js` — builder, responder, `_tryFetchAuditExportArchiveFromMeshRpc`
|
||||||
|
- RPC-first path in `_fetchAuditExportArchiveFromMeshOnce`
|
||||||
|
- CI: `npm run test:ci-phase874`
|
||||||
Reference in New Issue
Block a user