docs(archreview): PLAN-02 tasks.json — mark T3,T5,T10 complete (batch 1)
This commit is contained in:
@@ -1,30 +1,186 @@
|
|||||||
{
|
{
|
||||||
"planPath": "archreview/plans/PLAN-02-communication-store-and-forward.md",
|
"planPath": "archreview/plans/PLAN-02-communication-store-and-forward.md",
|
||||||
"tasks": [
|
"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": 1,
|
||||||
{ "id": 3, "subject": "Task 3: Active-node delivery gate on the S&F retry sweep", "status": "pending", "blockedBy": [] },
|
"subject": "Task 1: Generation-suffixed, sanitized ClusterClient actor names",
|
||||||
{ "id": 4, "subject": "Task 4: Wire the delivery gate in the Host + align the S&F design doc", "status": "pending", "blockedBy": [3] },
|
"status": "completed",
|
||||||
{ "id": 5, "subject": "Task 5: Key the gRPC client cache by (site, endpoint)", "status": "pending", "blockedBy": [] },
|
"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": 2,
|
||||||
{ "id": 9, "subject": "Task 9: Parallel per-target lanes with a small concurrency cap", "status": "pending", "blockedBy": [8] },
|
"subject": "Task 2: Guard client creation in the refresh loop + real-factory address-edit lifecycle test",
|
||||||
{ "id": 10, "subject": "Task 10: Ordered, observable replication dispatch", "status": "pending", "blockedBy": [] },
|
"status": "completed",
|
||||||
{ "id": 11, "subject": "Task 11: Upsert-based standby applies for Add/Park/Requeue", "status": "pending", "blockedBy": [7, 10] },
|
"blockedBy": [
|
||||||
{ "id": 12, "subject": "Task 12: deferToSweep enqueue mode + immediate sweep kick", "status": "pending", "blockedBy": [9] },
|
1
|
||||||
{ "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": 3,
|
||||||
{ "id": 17, "subject": "Task 17: S&F SQLite hygiene — WAL + busy_timeout", "status": "pending", "blockedBy": [11] },
|
"subject": "Task 3: Active-node delivery gate on the S&F retry sweep",
|
||||||
{ "id": 18, "subject": "Task 18: Epoch-ms due-check (replace per-row julianday parsing)", "status": "pending", "blockedBy": [17] },
|
"status": "completed",
|
||||||
{ "id": 19, "subject": "Task 19: Decouple audit-observer notification from the sweep (ordered channel)", "status": "pending", "blockedBy": [12] },
|
"blockedBy": []
|
||||||
{ "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": 4,
|
||||||
{ "id": 23, "subject": "Task 23: Oldest-parked-age health metric (parked-retention aging signal)", "status": "pending", "blockedBy": [20] },
|
"subject": "Task 4: Wire the delivery gate in the Host + align the S&F design doc",
|
||||||
{ "id": 24, "subject": "Task 24: Pin the reconciliation cursor boundary contract (>= at the site read)", "status": "pending", "blockedBy": [] }
|
"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"
|
"lastUpdated": "2026-07-08"
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user