chore(mesh): mark Phase 2 tasks 3-5 complete
Claude-Session: https://claude.ai/code/session_01GASWkNEi68FSCtvr6rLoEW
This commit is contained in:
@@ -1,18 +1,133 @@
|
||||
{
|
||||
"planPath": "docs/plans/2026-07-22-mesh-phase2-clusterclient-transport.md",
|
||||
"note": "Per-cluster mesh Phase 2. Decisions pre-made: config-flagged dark switch (MeshTransport:Mode), buffer-size=0, alarm-commands central leg in scope. Three design-doc corrections and the single-mesh duplicate-delivery trap are documented in the plan header — read them before Task 3.",
|
||||
"note": "Per-cluster mesh Phase 2. Decisions pre-made: config-flagged dark switch (MeshTransport:Mode), buffer-size=0, alarm-commands central leg in scope. Three design-doc corrections and the single-mesh duplicate-delivery trap are documented in the plan header \u2014 read them before Task 3.",
|
||||
"tasks": [
|
||||
{"id": 0, "subject": "Task 0: MeshTransportOptions + validator + registration", "status": "completed", "classification": "small", "parallelizableWith": [1], "commit": "5439f148"},
|
||||
{"id": 1, "subject": "Task 1: receptionist extension, buffer-size=0, frame-size logging (effective-config test)", "status": "completed", "classification": "small", "parallelizableWith": [0], "commit": "7b71a6a3", "note": "First draft of the buffering test was VACUOUS -- Config.GetInt returns 0 for a missing key, so it passed before the feature existed. Rewritten to assert through ClusterClientSettings/ClusterReceptionistSettings."},
|
||||
{"id": 2, "subject": "Task 2: MeshCommand envelope + generation-suffixed ClusterClient factory", "status": "completed", "classification": "small", "blockedBy": [0], "commit": "0d6669d5", "note": "Dropped a third test that asserted ClusterClientSettings directly and never touched the factory."},
|
||||
{"id": 3, "subject": "Task 3: CentralCommunicationActor — dark-switched SendToAll fan-out, DB-sourced contacts, ApplyAck forward", "status": "pending", "classification": "high-risk", "blockedBy": [1, 2], "parallelizableWith": [4]},
|
||||
{"id": 4, "subject": "Task 4: NodeCommunicationActor — inbound to node-local EventStream, outbound ApplyAck", "status": "pending", "classification": "standard", "blockedBy": [1, 2], "parallelizableWith": [3]},
|
||||
{"id": 5, "subject": "Task 5: node subscribers accept EventStream too; rename _coordinatorOverride -> _ackRouter", "status": "pending", "classification": "standard", "blockedBy": [4]},
|
||||
{"id": 6, "subject": "Task 6: wire both sides, receptionist registration, pin the wire-contract actor paths", "status": "pending", "classification": "standard", "blockedBy": [3, 5]},
|
||||
{"id": 7, "subject": "Task 7: route the five publish sites through the mesh router (nullable, mediator fallback)", "status": "pending", "classification": "standard", "blockedBy": [6]},
|
||||
{"id": 8, "subject": "Task 8: real two-ActorSystem ClusterClient boundary test + falsifiability control", "status": "pending", "classification": "high-risk", "blockedBy": [7], "parallelizableWith": [9]},
|
||||
{"id": 9, "subject": "Task 9: docker-dev rig config + docs + design-doc correction", "status": "pending", "classification": "small", "blockedBy": [7], "parallelizableWith": [8]},
|
||||
{"id": 10, "subject": "Task 10: live gate on docker-dev (10 steps; step 4 and step 8 are the ones that matter)", "status": "pending", "classification": "high-risk", "blockedBy": [8, 9]}
|
||||
{
|
||||
"id": 0,
|
||||
"subject": "Task 0: MeshTransportOptions + validator + registration",
|
||||
"status": "completed",
|
||||
"classification": "small",
|
||||
"parallelizableWith": [
|
||||
1
|
||||
],
|
||||
"commit": "5439f148"
|
||||
},
|
||||
{
|
||||
"id": 1,
|
||||
"subject": "Task 1: receptionist extension, buffer-size=0, frame-size logging (effective-config test)",
|
||||
"status": "completed",
|
||||
"classification": "small",
|
||||
"parallelizableWith": [
|
||||
0
|
||||
],
|
||||
"commit": "7b71a6a3",
|
||||
"note": "First draft of the buffering test was VACUOUS -- Config.GetInt returns 0 for a missing key, so it passed before the feature existed. Rewritten to assert through ClusterClientSettings/ClusterReceptionistSettings."
|
||||
},
|
||||
{
|
||||
"id": 2,
|
||||
"subject": "Task 2: MeshCommand envelope + generation-suffixed ClusterClient factory",
|
||||
"status": "completed",
|
||||
"classification": "small",
|
||||
"blockedBy": [
|
||||
0
|
||||
],
|
||||
"commit": "0d6669d5",
|
||||
"note": "Dropped a third test that asserted ClusterClientSettings directly and never touched the factory."
|
||||
},
|
||||
{
|
||||
"id": 3,
|
||||
"subject": "Task 3: CentralCommunicationActor \u2014 dark-switched SendToAll fan-out, DB-sourced contacts, ApplyAck forward",
|
||||
"status": "completed",
|
||||
"classification": "high-risk",
|
||||
"blockedBy": [
|
||||
1,
|
||||
2
|
||||
],
|
||||
"parallelizableWith": [
|
||||
4
|
||||
],
|
||||
"commit": "d5b5cb6e",
|
||||
"note": "SendToAll sabotage-verified. Two test-harness bugs found: SubscribeAck goes to the SENDER, and EventFilter matches case-INSENSITIVELY (a 'was NOT' filter also caught 'was not created')."
|
||||
},
|
||||
{
|
||||
"id": 4,
|
||||
"subject": "Task 4: NodeCommunicationActor \u2014 inbound to node-local EventStream, outbound ApplyAck",
|
||||
"status": "completed",
|
||||
"classification": "standard",
|
||||
"blockedBy": [
|
||||
1,
|
||||
2
|
||||
],
|
||||
"parallelizableWith": [
|
||||
3
|
||||
],
|
||||
"commit": "915beec1",
|
||||
"note": "No Ask crosses the boundary in Phase 2, so this actor is far smaller than the sister project's."
|
||||
},
|
||||
{
|
||||
"id": 5,
|
||||
"subject": "Task 5: node subscribers accept EventStream too; rename _coordinatorOverride -> _ackRouter",
|
||||
"status": "completed",
|
||||
"classification": "standard",
|
||||
"blockedBy": [
|
||||
4
|
||||
],
|
||||
"commit": "5cb0e721",
|
||||
"note": "Two wiring tests added -- unit tests either side of the seam both pass with the subscription deleted. First draft raced (ActorOf returns before PreStart; EventStream publish to nobody is dropped silently); alarm version was vacuous until the warm-up moved outside the assertion window."
|
||||
},
|
||||
{
|
||||
"id": 6,
|
||||
"subject": "Task 6: wire both sides, receptionist registration, pin the wire-contract actor paths",
|
||||
"status": "pending",
|
||||
"classification": "standard",
|
||||
"blockedBy": [
|
||||
3,
|
||||
5
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 7,
|
||||
"subject": "Task 7: route the five publish sites through the mesh router (nullable, mediator fallback)",
|
||||
"status": "pending",
|
||||
"classification": "standard",
|
||||
"blockedBy": [
|
||||
6
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 8,
|
||||
"subject": "Task 8: real two-ActorSystem ClusterClient boundary test + falsifiability control",
|
||||
"status": "pending",
|
||||
"classification": "high-risk",
|
||||
"blockedBy": [
|
||||
7
|
||||
],
|
||||
"parallelizableWith": [
|
||||
9
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 9,
|
||||
"subject": "Task 9: docker-dev rig config + docs + design-doc correction",
|
||||
"status": "pending",
|
||||
"classification": "small",
|
||||
"blockedBy": [
|
||||
7
|
||||
],
|
||||
"parallelizableWith": [
|
||||
8
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 10,
|
||||
"subject": "Task 10: live gate on docker-dev (10 steps; step 4 and step 8 are the ones that matter)",
|
||||
"status": "pending",
|
||||
"classification": "high-risk",
|
||||
"blockedBy": [
|
||||
8,
|
||||
9
|
||||
]
|
||||
}
|
||||
],
|
||||
"lastUpdated": "2026-07-22T00:00:00Z"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user