Files
ScadaBridge/archreview/plans/PLAN-02-communication-store-and-forward.md.tasks.json
T

187 lines
4.3 KiB
JSON

{
"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": "completed",
"blockedBy": []
},
{
"id": 4,
"subject": "Task 4: Wire the delivery gate in the Host + align the S&F design doc",
"status": "completed",
"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": "completed",
"blockedBy": [
5
]
},
{
"id": 7,
"subject": "Task 7: Bound the retry sweep with a batch LIMIT",
"status": "completed",
"blockedBy": [
3
]
},
{
"id": 8,
"subject": "Task 8: Per-target short-circuit in the retry sweep",
"status": "completed",
"blockedBy": [
7
]
},
{
"id": 9,
"subject": "Task 9: Parallel per-target lanes with a small concurrency cap",
"status": "completed",
"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": "completed",
"blockedBy": [
7,
10
]
},
{
"id": 12,
"subject": "Task 12: deferToSweep enqueue mode + immediate sweep kick",
"status": "completed",
"blockedBy": [
9
]
},
{
"id": 13,
"subject": "Task 13: Unstrand and unblock Notify.Send (maxRetries 0 + deferToSweep) + docs",
"status": "completed",
"blockedBy": [
12
]
},
{
"id": 14,
"subject": "Task 14: Park (don't silently drop) corrupt buffered notifications",
"status": "completed",
"blockedBy": []
},
{
"id": 15,
"subject": "Task 15: Wire-format pin tests for cross-cluster contracts",
"status": "completed",
"blockedBy": []
},
{
"id": 16,
"subject": "Task 16: Replicate heartbeat marks to the peer central node",
"status": "completed",
"blockedBy": [
2
]
},
{
"id": 17,
"subject": "Task 17: S&F SQLite hygiene \u2014 WAL + busy_timeout",
"status": "completed",
"blockedBy": [
11
]
},
{
"id": 18,
"subject": "Task 18: Epoch-ms due-check (replace per-row julianday parsing)",
"status": "completed",
"blockedBy": [
17
]
},
{
"id": 19,
"subject": "Task 19: Decouple audit-observer notification from the sweep (ordered channel)",
"status": "completed",
"blockedBy": [
12
]
},
{
"id": 20,
"subject": "Task 20: Buffer resync storage primitives (GetAllMessagesAsync / ReplaceAllAsync)",
"status": "completed",
"blockedBy": [
18
]
},
{
"id": 21,
"subject": "Task 21: Peer-join S&F buffer resync (anti-entropy)",
"status": "completed",
"blockedBy": [
10,
20
]
},
{
"id": 22,
"subject": "Task 22: Conventions & observability cleanup batch (Lows)",
"status": "completed",
"blockedBy": [
16
]
},
{
"id": 23,
"subject": "Task 23: Oldest-parked-age health metric (parked-retention aging signal)",
"status": "completed",
"blockedBy": [
20
]
},
{
"id": 24,
"subject": "Task 24: Pin the reconciliation cursor boundary contract (>= at the site read)",
"status": "completed",
"blockedBy": []
}
],
"lastUpdated": "2026-07-08"
}