docs(v0.8.71): Phase 107 complete, Phase 108 planned
Document digest fetch retry, archivePeerSeen GUILD_SYNC, UI loading states, new smokes, and Phase 108 backlog (notifications, peer health, worker audit). Co-authored-by: Cursor <[email protected]>
This commit is contained in:
@@ -57,6 +57,8 @@ Pearcord records **local audit entries** in HyperDB (`@pearcord/audit-log`) for
|
||||
|
||||
**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).
|
||||
|
||||
**v0.8.71:** `archivePeerSeen` syncs across mesh on `GUILD_SYNC`. Digest **Fetch from mesh** shows loading state, retry count on success, and attempt count on failure.
|
||||
|
||||
## Tests
|
||||
|
||||
| Script | Marker |
|
||||
|
||||
@@ -92,6 +92,9 @@ Pearcord validates itself without manual QA.
|
||||
| `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:digest-fetch-retry` | Digest snapshot fetch backoff (`DIGEST_FETCH_RETRY_SMOKE_OK`) |
|
||||
| `npm run test:archive-peer-seen-sync` | `archivePeerSeen` GUILD_SYNC (`ARCHIVE_PEER_SEEN_SYNC_SMOKE_OK`) |
|
||||
| `npm run test:automation-digest-snapshot-fetch-live` | Live mesh digest fetch (`AUTOMATION_DIGEST_SNAPSHOT_FETCH_LIVE_SMOKE_OK`) |
|
||||
| `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:automation-export` | Automation manifest export/import (`AUTOMATION_EXPORT_SMOKE_OK`) |
|
||||
|
||||
@@ -167,6 +167,8 @@ Retention: max 8 archives per guild, 30-day prune. `appendAuditExportArchive` me
|
||||
|
||||
**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.
|
||||
|
||||
**v0.8.71:** `exportArchivePeerSeenSlice` / `ingestArchivePeerSeenRow` on `GUILD_SYNC`. Digest snapshot mesh fetch uses `computeArchiveFetchBackoffMs` retry loop (max 5 attempts).
|
||||
|
||||
## Tests
|
||||
|
||||
| Script | Validates |
|
||||
@@ -195,6 +197,9 @@ Retention: max 8 archives per guild, 30-day prune. `appendAuditExportArchive` me
|
||||
| `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:digest-fetch-retry` | Digest snapshot fetch backoff → `DIGEST_FETCH_RETRY_SMOKE_OK` |
|
||||
| `npm run test:archive-peer-seen-sync` | `archivePeerSeen` GUILD_SYNC → `ARCHIVE_PEER_SEEN_SYNC_SMOKE_OK` |
|
||||
| `npm run test:automation-digest-snapshot-fetch-live` | Live mesh digest body fetch → `AUTOMATION_DIGEST_SNAPSHOT_FETCH_LIVE_SMOKE_OK` |
|
||||
| `npm run test:integration-worker` | Retention + worker templates |
|
||||
| `npm run test:delivery-metrics` | `DELIVERY_METRICS_SMOKE_OK` |
|
||||
| `npm run test:app-events` | App event bridge (unchanged) |
|
||||
|
||||
@@ -24,6 +24,7 @@ When a member joins a guild over an invite, they may have **no local message his
|
||||
"auditExportArchives": [ { "id", "exportedAt", "count", "filter" } ],
|
||||
"automationDigestExportSchedule": { "enabled": false, "intervalHours": 24, "format": "text", "lastExportAt": 0 },
|
||||
"automationDigestExportSnapshots": [ { "id", "exportedAt", "format", "summaryLines" } ],
|
||||
"archivePeerSeen": [ { "userId", "lastSeenAt", "source" } ],
|
||||
"hookFailureDigest": { "digest": { "totalFailures": 0, "topHooks": [] }, "exportedAt": 0 }
|
||||
}
|
||||
```
|
||||
@@ -42,6 +43,8 @@ When a member joins a guild over an invite, they may have **no local message his
|
||||
|
||||
**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.
|
||||
|
||||
**v0.8.71:** `archivePeerSeen` (up to 16 rows) syncs peer last-seen timestamps for archive/digest fetch pickers across the mesh.
|
||||
|
||||
## When sync is sent
|
||||
|
||||
| Trigger | Who pushes |
|
||||
|
||||
+3
-1
@@ -156,9 +156,11 @@ 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.
|
||||
|
||||
**v0.8.71 (Phase 107):** Digest snapshot fetch retry/backoff, `archivePeerSeen` on GUILD_SYNC, live mesh digest fetch, digest fetch UI loading/retry feedback.
|
||||
|
||||
**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.
|
||||
|
||||
**Next (Phase 107):** Digest fetch retry/backoff, `archivePeerSeen` GUILD_SYNC slice, live two-peer digest fetch smoke.
|
||||
**Next (Phase 108):** Digest export notification prefs, archive peer health score, worker release fanout audit.
|
||||
|
||||
**v0.8.69 (Phase 105):** Mesh-connected archive peer indicator, scheduled automation digest export, worker publish matrix gate.
|
||||
|
||||
|
||||
+20
-6
@@ -307,16 +307,29 @@ When completing work, change `[ ]` → `[x]` and add a one-line note under **Cha
|
||||
|
||||
---
|
||||
|
||||
### Phase 107 — Digest fetch resilience & archive seen mesh sync (planned)
|
||||
### Phase 108 — Digest notifications, peer health & worker fanout audit (planned)
|
||||
|
||||
| ID | Item | Status |
|
||||
|----|------|--------|
|
||||
| P107-1 | `fetchAutomationDigestSnapshotFromMesh` retry + backoff (mirror audit archives) | [ ] |
|
||||
| P107-2 | `archivePeerSeen` slice on `GUILD_SYNC` + ingest | [ ] |
|
||||
| P107-3 | Live two-peer digest snapshot fetch smoke | [ ] |
|
||||
| P107-4 | UI loading/error states for digest mesh fetch | [ ] |
|
||||
| P108-1 | Automation digest export notification prefs (P2P app events) | [ ] |
|
||||
| P108-2 | Archive peer health score in fetch picker | [ ] |
|
||||
| P108-3 | Worker release mesh fanout audit log entries | [ ] |
|
||||
| P108-4 | Combined automation health dashboard smoke | [ ] |
|
||||
|
||||
**Next:** Automation digest export email notification prefs · archive peer health score · worker release mesh fanout audit.
|
||||
**Next:** Scheduled digest email relay stub · mod digest inbox channel · worker semver constraint checks.
|
||||
|
||||
---
|
||||
|
||||
### Phase 107 — Digest fetch resilience & archive seen mesh sync (v0.8.71)
|
||||
|
||||
| ID | Item | Status |
|
||||
|----|------|--------|
|
||||
| P107-1 | `fetchAutomationDigestSnapshotFromMesh` retry + backoff (mirror audit archives) | [x] |
|
||||
| P107-2 | `archivePeerSeen` slice on `GUILD_SYNC` + ingest | [x] |
|
||||
| P107-3 | Live two-peer digest snapshot fetch smoke | [x] |
|
||||
| P107-4 | UI loading/error states for digest mesh fetch | [x] |
|
||||
|
||||
**Next:** ~~Automation digest export email notification prefs · archive peer health score · worker release mesh fanout audit~~ (Phase 108).
|
||||
|
||||
---
|
||||
|
||||
@@ -1359,6 +1372,7 @@ When completing work, change `[ ]` → `[x]` and add a one-line note under **Cha
|
||||
|
||||
### Changelog
|
||||
|
||||
- **2026-05-22** — v0.8.71: digest snapshot fetch retry/backoff, `GUILD_SYNC.archivePeerSeen`, digest fetch UI loading states, `test:digest-fetch-retry`, `test:archive-peer-seen-sync`, `test:automation-digest-snapshot-fetch-live`.
|
||||
- **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.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`.
|
||||
|
||||
Reference in New Issue
Block a user