docs(v0.8.70): Phase 106 roadmap, RPC 73/74, and smoke catalog
Document automation digest snapshot mesh fetch, archive peer last-seen timestamps, worker publish announce+matrix E2E gate, and mark Phase 106 complete with Phase 107 next. Co-authored-by: Cursor <[email protected]>
This commit is contained in:
@@ -55,6 +55,8 @@ Pearcord records **local audit entries** in HyperDB (`@pearcord/audit-log`) for
|
|||||||
|
|
||||||
**v0.8.69:** Peer picker shows **● mesh** for members with live presence on an active guild mesh (`meshConnected`); offline peers disabled when mesh is live.
|
**v0.8.69:** Peer picker shows **● mesh** for members with live presence on an active guild mesh (`meshConnected`); offline peers disabled when mesh is live.
|
||||||
|
|
||||||
|
**v0.8.70:** Peer picker labels include **last seen** timestamps (`@pearcord/archive-peer-seen` + presence `at`). Scheduled automation digest snapshots without local body offer **Fetch from mesh** (RPC 73/74).
|
||||||
|
|
||||||
## Tests
|
## Tests
|
||||||
|
|
||||||
| Script | Marker |
|
| Script | Marker |
|
||||||
|
|||||||
@@ -89,6 +89,9 @@ Pearcord validates itself without manual QA.
|
|||||||
| `npm run test:audit-archive-peer-mesh-live` | Archive peer mesh indicator (`AUDIT_ARCHIVE_PEER_MESH_LIVE_SMOKE_OK`) |
|
| `npm run test:audit-archive-peer-mesh-live` | Archive peer mesh indicator (`AUDIT_ARCHIVE_PEER_MESH_LIVE_SMOKE_OK`) |
|
||||||
| `npm run test:automation-digest-export-schedule` | Scheduled digest export (`AUTOMATION_DIGEST_EXPORT_SCHEDULE_SMOKE_OK`) |
|
| `npm run test:automation-digest-export-schedule` | Scheduled digest export (`AUTOMATION_DIGEST_EXPORT_SCHEDULE_SMOKE_OK`) |
|
||||||
| `npm run test:worker-publish-matrix` | Publish matrix gate (`WORKER_PUBLISH_MATRIX_GATE_OK`) |
|
| `npm run test:worker-publish-matrix` | Publish matrix gate (`WORKER_PUBLISH_MATRIX_GATE_OK`) |
|
||||||
|
| `npm run test:automation-digest-snapshot-fetch` | Digest snapshot mesh fetch (`AUTOMATION_DIGEST_SNAPSHOT_FETCH_SMOKE_OK`) |
|
||||||
|
| `npm run test:archive-peer-last-seen` | Archive peer last seen (`ARCHIVE_PEER_LAST_SEEN_SMOKE_OK`) |
|
||||||
|
| `npm run test:worker-publish-announce-matrix` | Matrix + announce persist (`WORKER_PUBLISH_ANNOUNCE_MATRIX_SMOKE_OK`) |
|
||||||
| `npm run test:worker-stage` | Pear stage dry-run includes worker entry |
|
| `npm run test:worker-stage` | Pear stage dry-run includes worker entry |
|
||||||
| `npm run test:worker-release` | Optional Pear key release dry-run (`WORKER_RELEASE_OK` or skip) |
|
| `npm run test:worker-release` | Optional Pear key release dry-run (`WORKER_RELEASE_OK` or skip) |
|
||||||
| `npm run test:automation-export` | Automation manifest export/import (`AUTOMATION_EXPORT_SMOKE_OK`) |
|
| `npm run test:automation-export` | Automation manifest export/import (`AUTOMATION_EXPORT_SMOKE_OK`) |
|
||||||
|
|||||||
@@ -149,7 +149,9 @@ 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?, at }` — peers with full archive gossip 71 in response |
|
| `AUDIT_EXPORT_ARCHIVE_REQUEST` | 72 | `{ guildId, archiveId, requestId, requestedBy?, targetMemberId?, at }` — peers with full archive gossip 71 in response |
|
||||||
|
| `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 }` |
|
||||||
|
|
||||||
Retention: max 8 archives per guild, 30-day prune. `appendAuditExportArchive` merges incoming entries when local row is metadata-only.
|
Retention: max 8 archives per guild, 30-day prune. `appendAuditExportArchive` merges incoming entries when local row is metadata-only.
|
||||||
|
|
||||||
@@ -163,6 +165,8 @@ Retention: max 8 archives per guild, 30-day prune. `appendAuditExportArchive` me
|
|||||||
|
|
||||||
**v0.8.69:** **Scheduled automation digest export** — `automationDigestExportSchedule` prefs, timer saves text/JSON snapshots (max 5), synced on `GUILD_SYNC.automationDigestExportSchedule`.
|
**v0.8.69:** **Scheduled automation digest export** — `automationDigestExportSchedule` prefs, timer saves text/JSON snapshots (max 5), synced on `GUILD_SYNC.automationDigestExportSchedule`.
|
||||||
|
|
||||||
|
**v0.8.70:** `@pearcord/archive-peer-seen` records `lastSeenAt` on presence/mesh activity for archive peer picker. `fetchAutomationDigestSnapshotFromMesh` on platform. `ingestAutomationDigestExportSnapshot` merges metadata → full body.
|
||||||
|
|
||||||
## Tests
|
## Tests
|
||||||
|
|
||||||
| Script | Validates |
|
| Script | Validates |
|
||||||
@@ -189,6 +193,8 @@ Retention: max 8 archives per guild, 30-day prune. `appendAuditExportArchive` me
|
|||||||
| `npm run test:automation-overdue-actions` | Overdue schedule runs → `AUTOMATION_OVERDUE_ACTIONS_SMOKE_OK` |
|
| `npm run test:automation-overdue-actions` | Overdue schedule runs → `AUTOMATION_OVERDUE_ACTIONS_SMOKE_OK` |
|
||||||
| `npm run test:automation-schedule-digest-export` | Schedule digest bundle → `AUTOMATION_SCHEDULE_DIGEST_EXPORT_SMOKE_OK` |
|
| `npm run test:automation-schedule-digest-export` | Schedule digest bundle → `AUTOMATION_SCHEDULE_DIGEST_EXPORT_SMOKE_OK` |
|
||||||
| `npm run test:automation-digest-export-schedule` | Scheduled digest export → `AUTOMATION_DIGEST_EXPORT_SCHEDULE_SMOKE_OK` |
|
| `npm run test:automation-digest-export-schedule` | Scheduled digest export → `AUTOMATION_DIGEST_EXPORT_SCHEDULE_SMOKE_OK` |
|
||||||
|
| `npm run test:automation-digest-snapshot-fetch` | Digest snapshot mesh body → `AUTOMATION_DIGEST_SNAPSHOT_FETCH_SMOKE_OK` |
|
||||||
|
| `npm run test:archive-peer-last-seen` | Archive peer `lastSeenAt` → `ARCHIVE_PEER_LAST_SEEN_SMOKE_OK` |
|
||||||
| `npm run test:integration-worker` | Retention + worker templates |
|
| `npm run test:integration-worker` | Retention + worker templates |
|
||||||
| `npm run test:delivery-metrics` | `DELIVERY_METRICS_SMOKE_OK` |
|
| `npm run test:delivery-metrics` | `DELIVERY_METRICS_SMOKE_OK` |
|
||||||
| `npm run test:app-events` | App event bridge (unchanged) |
|
| `npm run test:app-events` | App event bridge (unchanged) |
|
||||||
|
|||||||
@@ -40,6 +40,8 @@ When a member joins a guild over an invite, they may have **no local message his
|
|||||||
|
|
||||||
**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.
|
||||||
|
|
||||||
|
**v0.8.70:** Metadata-only `automationDigestExportSnapshots` on join; full bodies via `AUTOMATION_DIGEST_EXPORT_SNAPSHOT_REQUEST` (RPC 74) → holder gossips RPC 73 with `body`. Scheduled exports gossip snapshot bodies after each run.
|
||||||
|
|
||||||
## When sync is sent
|
## When sync is sent
|
||||||
|
|
||||||
| Trigger | Who pushes |
|
| Trigger | Who pushes |
|
||||||
|
|||||||
@@ -156,6 +156,8 @@ Phases **0–2** and **4** are largely complete; **3** (live audio) and **5** (n
|
|||||||
|
|
||||||
**Next tranches (Phase 106+):** Automation digest snapshot mesh body gossip · archive peer last-seen · publish announce + matrix E2E.
|
**Next tranches (Phase 106+):** Automation digest snapshot mesh body gossip · archive peer last-seen · publish announce + matrix E2E.
|
||||||
|
|
||||||
|
**v0.8.70 (Phase 106):** Automation digest snapshot mesh body fetch (RPC 73/74), archive peer last-seen in picker, worker publish announce + matrix E2E gate.
|
||||||
|
|
||||||
**v0.8.69 (Phase 105):** Mesh-connected archive peer indicator, scheduled automation digest export, worker publish matrix gate.
|
**v0.8.69 (Phase 105):** Mesh-connected archive peer indicator, scheduled automation digest export, worker publish matrix gate.
|
||||||
|
|
||||||
**v0.8.68 (Phase 104):** Archive fetch peer picker, worker trial matrix, automation schedule digest export bundle.
|
**v0.8.68 (Phase 104):** Archive fetch peer picker, worker trial matrix, automation schedule digest export bundle.
|
||||||
|
|||||||
+15
-1
@@ -294,6 +294,19 @@ When completing work, change `[ ]` → `[x]` and add a one-line note under **Cha
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
### Phase 106 — Digest snapshot mesh fetch, archive peer last-seen & publish announce E2E (v0.8.70)
|
||||||
|
|
||||||
|
| ID | Item | Status |
|
||||||
|
|----|------|--------|
|
||||||
|
| P106-1 | RPC 73/74 automation digest snapshot gossip + `fetchAutomationDigestSnapshotFromMesh` | [x] |
|
||||||
|
| P106-2 | `@pearcord/archive-peer-seen` + `lastSeenAt` in archive peer picker UI | [x] |
|
||||||
|
| P106-3 | `test:worker-publish-announce-matrix` in publish dry-run gate | [x] |
|
||||||
|
| P106-4 | `test:automation-digest-snapshot-fetch`, `test:archive-peer-last-seen` | [x] |
|
||||||
|
|
||||||
|
**Next:** Digest snapshot fetch retry/backoff · archive peer seen mesh sync slice · live E2E digest fetch across two peers.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
### Phase 105 — Mesh peer indicator, scheduled digest export & publish matrix gate (v0.8.69)
|
### Phase 105 — Mesh peer indicator, scheduled digest export & publish matrix gate (v0.8.69)
|
||||||
|
|
||||||
| ID | Item | Status |
|
| ID | Item | Status |
|
||||||
@@ -303,7 +316,7 @@ When completing work, change `[ ]` → `[x]` and add a one-line note under **Cha
|
|||||||
| P105-3 | `worker:publish` runs `test:worker-trial-matrix` gate | [x] |
|
| P105-3 | `worker:publish` runs `test:worker-trial-matrix` gate | [x] |
|
||||||
| P105-4 | `test:audit-archive-peer-mesh-live`, `test:automation-digest-export-schedule`, `test:worker-publish-matrix` | [x] |
|
| P105-4 | `test:audit-archive-peer-mesh-live`, `test:automation-digest-export-schedule`, `test:worker-publish-matrix` | [x] |
|
||||||
|
|
||||||
**Next:** Automation digest snapshot mesh body gossip · archive peer last-seen timestamps · worker publish announce + matrix E2E script.
|
**Next:** ~~Automation digest snapshot mesh body gossip · archive peer last-seen timestamps · worker publish announce + matrix E2E script~~ (Phase 106).
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -1333,6 +1346,7 @@ When completing work, change `[ ]` → `[x]` and add a one-line note under **Cha
|
|||||||
|
|
||||||
### Changelog
|
### Changelog
|
||||||
|
|
||||||
|
- **2026-05-22** — v0.8.70: automation digest snapshot mesh fetch (RPC 73/74), archive peer `lastSeenAt`, worker publish announce+matrix E2E, `test:automation-digest-snapshot-fetch`, `test:archive-peer-last-seen`, `test:worker-publish-announce-matrix`.
|
||||||
- **2026-05-22** — v0.8.69: mesh-connected archive peer indicator, scheduled automation digest export, worker publish trial matrix gate, `test:audit-archive-peer-mesh-live`, `test:automation-digest-export-schedule`, `test:worker-publish-matrix`.
|
- **2026-05-22** — v0.8.69: mesh-connected archive peer indicator, scheduled automation digest export, worker publish trial matrix gate, `test:audit-archive-peer-mesh-live`, `test:automation-digest-export-schedule`, `test:worker-publish-matrix`.
|
||||||
- **2026-05-22** — v0.8.68: archive fetch peer picker, automation schedule digest export bundle, worker trial matrix, `test:audit-archive-peer-picker`, `test:automation-schedule-digest-export`, `test:worker-trial-matrix`.
|
- **2026-05-22** — v0.8.68: archive fetch peer picker, automation schedule digest export bundle, worker trial matrix, `test:audit-archive-peer-picker`, `test:automation-schedule-digest-export`, `test:worker-trial-matrix`.
|
||||||
- **2026-05-22** — v0.8.67: archive fetch retry/backoff, worker trial receipt assertions, overdue automation dashboard actions, `test:archive-fetch-retry`, `test:automation-overdue-actions`, `test:worker-trial-receipts`.
|
- **2026-05-22** — v0.8.67: archive fetch retry/backoff, worker trial receipt assertions, overdue automation dashboard actions, `test:archive-fetch-retry`, `test:automation-overdue-actions`, `test:worker-trial-receipts`.
|
||||||
|
|||||||
@@ -106,6 +106,8 @@ Mods with **Manage Server** can **Announce worker release to guild** in server s
|
|||||||
|
|
||||||
**v0.8.69:** `worker:publish` and dry-run invoke `npm run test:worker-trial-matrix` before release; `test:worker-publish-matrix` validates the gate in CI.
|
**v0.8.69:** `worker:publish` and dry-run invoke `npm run test:worker-trial-matrix` before release; `test:worker-publish-matrix` validates the gate in CI.
|
||||||
|
|
||||||
|
**v0.8.70:** Publish dry-run also runs `test:worker-publish-announce-matrix` (trial matrix → `announceWorkerRelease` → persisted hint across reopen).
|
||||||
|
|
||||||
`GUILD_SYNC` bundles may include `workerReleaseHint` so joiners learn of published worker versions.
|
`GUILD_SYNC` bundles may include `workerReleaseHint` so joiners learn of published worker versions.
|
||||||
|
|
||||||
| Test | Marker |
|
| Test | Marker |
|
||||||
|
|||||||
Reference in New Issue
Block a user