From 80013639efab9ca7b9fe1270cca6ea95d2ac29db Mon Sep 17 00:00:00 2001 From: Joseph Doherty Date: Wed, 8 Jul 2026 17:35:39 -0400 Subject: [PATCH] =?UTF-8?q?docs(archreview):=20PLAN-02=20tasks.json=20?= =?UTF-8?q?=E2=80=94=20mark=20T3,T5,T10=20complete=20(batch=201)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...munication-store-and-forward.md.tasks.json | 204 +++++++++++++++--- 1 file changed, 180 insertions(+), 24 deletions(-) diff --git a/archreview/plans/PLAN-02-communication-store-and-forward.md.tasks.json b/archreview/plans/PLAN-02-communication-store-and-forward.md.tasks.json index 837a8bbd..f047ffaa 100644 --- a/archreview/plans/PLAN-02-communication-store-and-forward.md.tasks.json +++ b/archreview/plans/PLAN-02-communication-store-and-forward.md.tasks.json @@ -1,30 +1,186 @@ { "planPath": "archreview/plans/PLAN-02-communication-store-and-forward.md", "tasks": [ - { "id": 1, "subject": "Task 1: Generation-suffixed, sanitized ClusterClient actor names", "status": "completed", "blockedBy": [] }, - { "id": 2, "subject": "Task 2: Guard client creation in the refresh loop + real-factory address-edit lifecycle test", "status": "completed", "blockedBy": [1] }, - { "id": 3, "subject": "Task 3: Active-node delivery gate on the S&F retry sweep", "status": "pending", "blockedBy": [] }, - { "id": 4, "subject": "Task 4: Wire the delivery gate in the Host + align the S&F design doc", "status": "pending", "blockedBy": [3] }, - { "id": 5, "subject": "Task 5: Key the gRPC client cache by (site, endpoint)", "status": "pending", "blockedBy": [] }, - { "id": 6, "subject": "Task 6: Endpoint-safe unsubscribe in DebugStreamBridgeActor + concurrent-session regression test", "status": "pending", "blockedBy": [5] }, - { "id": 7, "subject": "Task 7: Bound the retry sweep with a batch LIMIT", "status": "pending", "blockedBy": [3] }, - { "id": 8, "subject": "Task 8: Per-target short-circuit in the retry sweep", "status": "pending", "blockedBy": [7] }, - { "id": 9, "subject": "Task 9: Parallel per-target lanes with a small concurrency cap", "status": "pending", "blockedBy": [8] }, - { "id": 10, "subject": "Task 10: Ordered, observable replication dispatch", "status": "pending", "blockedBy": [] }, - { "id": 11, "subject": "Task 11: Upsert-based standby applies for Add/Park/Requeue", "status": "pending", "blockedBy": [7, 10] }, - { "id": 12, "subject": "Task 12: deferToSweep enqueue mode + immediate sweep kick", "status": "pending", "blockedBy": [9] }, - { "id": 13, "subject": "Task 13: Unstrand and unblock Notify.Send (maxRetries 0 + deferToSweep) + docs", "status": "pending", "blockedBy": [12] }, - { "id": 14, "subject": "Task 14: Park (don't silently drop) corrupt buffered notifications", "status": "pending", "blockedBy": [] }, - { "id": 15, "subject": "Task 15: Wire-format pin tests for cross-cluster contracts", "status": "pending", "blockedBy": [] }, - { "id": 16, "subject": "Task 16: Replicate heartbeat marks to the peer central node", "status": "pending", "blockedBy": [2] }, - { "id": 17, "subject": "Task 17: S&F SQLite hygiene — WAL + busy_timeout", "status": "pending", "blockedBy": [11] }, - { "id": 18, "subject": "Task 18: Epoch-ms due-check (replace per-row julianday parsing)", "status": "pending", "blockedBy": [17] }, - { "id": 19, "subject": "Task 19: Decouple audit-observer notification from the sweep (ordered channel)", "status": "pending", "blockedBy": [12] }, - { "id": 20, "subject": "Task 20: Buffer resync storage primitives (GetAllMessagesAsync / ReplaceAllAsync)", "status": "pending", "blockedBy": [18] }, - { "id": 21, "subject": "Task 21: Peer-join S&F buffer resync (anti-entropy)", "status": "pending", "blockedBy": [10, 20] }, - { "id": 22, "subject": "Task 22: Conventions & observability cleanup batch (Lows)", "status": "pending", "blockedBy": [16] }, - { "id": 23, "subject": "Task 23: Oldest-parked-age health metric (parked-retention aging signal)", "status": "pending", "blockedBy": [20] }, - { "id": 24, "subject": "Task 24: Pin the reconciliation cursor boundary contract (>= at the site read)", "status": "pending", "blockedBy": [] } + { + "id": 1, + "subject": "Task 1: Generation-suffixed, sanitized ClusterClient actor names", + "status": "completed", + "blockedBy": [] + }, + { + "id": 2, + "subject": "Task 2: Guard client creation in the refresh loop + real-factory address-edit lifecycle test", + "status": "completed", + "blockedBy": [ + 1 + ] + }, + { + "id": 3, + "subject": "Task 3: Active-node delivery gate on the S&F retry sweep", + "status": "completed", + "blockedBy": [] + }, + { + "id": 4, + "subject": "Task 4: Wire the delivery gate in the Host + align the S&F design doc", + "status": "pending", + "blockedBy": [ + 3 + ] + }, + { + "id": 5, + "subject": "Task 5: Key the gRPC client cache by (site, endpoint)", + "status": "completed", + "blockedBy": [] + }, + { + "id": 6, + "subject": "Task 6: Endpoint-safe unsubscribe in DebugStreamBridgeActor + concurrent-session regression test", + "status": "pending", + "blockedBy": [ + 5 + ] + }, + { + "id": 7, + "subject": "Task 7: Bound the retry sweep with a batch LIMIT", + "status": "pending", + "blockedBy": [ + 3 + ] + }, + { + "id": 8, + "subject": "Task 8: Per-target short-circuit in the retry sweep", + "status": "pending", + "blockedBy": [ + 7 + ] + }, + { + "id": 9, + "subject": "Task 9: Parallel per-target lanes with a small concurrency cap", + "status": "pending", + "blockedBy": [ + 8 + ] + }, + { + "id": 10, + "subject": "Task 10: Ordered, observable replication dispatch", + "status": "completed", + "blockedBy": [] + }, + { + "id": 11, + "subject": "Task 11: Upsert-based standby applies for Add/Park/Requeue", + "status": "pending", + "blockedBy": [ + 7, + 10 + ] + }, + { + "id": 12, + "subject": "Task 12: deferToSweep enqueue mode + immediate sweep kick", + "status": "pending", + "blockedBy": [ + 9 + ] + }, + { + "id": 13, + "subject": "Task 13: Unstrand and unblock Notify.Send (maxRetries 0 + deferToSweep) + docs", + "status": "pending", + "blockedBy": [ + 12 + ] + }, + { + "id": 14, + "subject": "Task 14: Park (don't silently drop) corrupt buffered notifications", + "status": "pending", + "blockedBy": [] + }, + { + "id": 15, + "subject": "Task 15: Wire-format pin tests for cross-cluster contracts", + "status": "pending", + "blockedBy": [] + }, + { + "id": 16, + "subject": "Task 16: Replicate heartbeat marks to the peer central node", + "status": "pending", + "blockedBy": [ + 2 + ] + }, + { + "id": 17, + "subject": "Task 17: S&F SQLite hygiene \u2014 WAL + busy_timeout", + "status": "pending", + "blockedBy": [ + 11 + ] + }, + { + "id": 18, + "subject": "Task 18: Epoch-ms due-check (replace per-row julianday parsing)", + "status": "pending", + "blockedBy": [ + 17 + ] + }, + { + "id": 19, + "subject": "Task 19: Decouple audit-observer notification from the sweep (ordered channel)", + "status": "pending", + "blockedBy": [ + 12 + ] + }, + { + "id": 20, + "subject": "Task 20: Buffer resync storage primitives (GetAllMessagesAsync / ReplaceAllAsync)", + "status": "pending", + "blockedBy": [ + 18 + ] + }, + { + "id": 21, + "subject": "Task 21: Peer-join S&F buffer resync (anti-entropy)", + "status": "pending", + "blockedBy": [ + 10, + 20 + ] + }, + { + "id": 22, + "subject": "Task 22: Conventions & observability cleanup batch (Lows)", + "status": "pending", + "blockedBy": [ + 16 + ] + }, + { + "id": 23, + "subject": "Task 23: Oldest-parked-age health metric (parked-retention aging signal)", + "status": "pending", + "blockedBy": [ + 20 + ] + }, + { + "id": 24, + "subject": "Task 24: Pin the reconciliation cursor boundary contract (>= at the site read)", + "status": "pending", + "blockedBy": [] + } ], "lastUpdated": "2026-07-08" }