Joseph Doherty
f862804a35
docs(design): per-cluster Akka mesh — separate 2-node mesh per application Cluster
...
Design for review, mirroring the ScadaBridge hub-and-spoke shape. Researched from
the ScadaBridge tree directly rather than from its CLAUDE.md, which understates
the boundary in five ways: there are THREE transports (ClusterClient, gRPC, plus
token-gated HTTP), the gRPC direction is inverted (central dials INTO each site),
active node is the OLDEST Up member and explicitly never the cluster leader, all
clusters share one ActorSystem name, and site nodes carry two roles.
Records a defect worth fixing regardless of the topology decision: OtOpcUa uses
two different node-selection rules at once. SBR is keep-oldest and singletons are
placed on the oldest member, but RedundancyStateActor elects Primary from
RoleLeader("driver") — lowest address. Those diverge permanently after a
restart-and-rejoin, so the node the SBR protects and hosts every singleton on need
not be the node the data-plane gates consider Primary. ScadaBridge forbids that
rule by name, for the reason it gives: both sides claim leadership during a
partition, which is the dual-primary shape archreview 03/S4 exists to prevent.
Three open questions are left explicitly undecided: whether to adopt their
autonomous-site data architecture or keep the shared ConfigDb; what to do about
the registered two-node keep-oldest total-outage gap they acknowledge but have not
closed; and whether to authenticate transports they left unauthenticated.
Claude-Session: https://claude.ai/code/session_01GASWkNEi68FSCtvr6rLoEW
2026-07-21 06:46:17 -04:00
..
2026-05-26 03:04:21 -04:00
2026-05-26 11:15:59 -04:00
2026-06-15 09:52:51 -04:00
2026-05-26 03:55:48 -04:00
2026-06-15 09:52:51 -04:00
2026-06-18 09:24:35 -04:00
2026-05-28 08:36:53 -04:00
2026-06-18 09:24:35 -04:00
2026-05-28 15:19:52 -04:00
2026-05-28 15:29:40 -04:00
2026-06-15 09:52:51 -04:00
2026-05-29 08:45:50 -04:00
2026-05-29 08:59:55 -04:00
2026-05-29 08:59:55 -04:00
2026-05-29 07:58:18 -04:00
2026-05-29 07:43:11 -04:00
2026-06-15 09:52:51 -04:00
2026-06-03 13:59:02 -04:00
2026-06-03 14:06:24 -04:00
2026-06-15 09:52:51 -04:00
2026-06-07 06:08:36 -04:00
2026-06-06 14:20:36 -04:00
2026-06-06 15:07:45 -04:00
2026-06-07 04:49:27 -04:00
2026-06-07 06:09:23 -04:00
2026-06-07 10:06:08 -04:00
2026-06-07 10:20:52 -04:00
2026-06-07 10:56:27 -04:00
2026-06-07 02:50:49 -04:00
2026-06-07 02:59:46 -04:00
2026-06-16 18:51:49 -04:00
2026-06-07 14:55:28 -04:00
2026-06-07 15:00:11 -04:00
2026-06-07 15:57:43 -04:00
2026-06-08 06:49:28 -04:00
2026-06-08 06:49:28 -04:00
2026-06-08 07:10:14 -04:00
2026-06-08 12:02:18 -04:00
2026-06-08 12:11:40 -04:00
2026-06-15 09:52:51 -04:00
2026-06-09 09:03:22 -04:00
2026-06-09 09:11:02 -04:00
2026-06-15 09:52:51 -04:00
2026-06-09 13:44:20 -04:00
2026-06-09 13:56:59 -04:00
2026-06-09 15:52:57 -04:00
2026-06-10 07:27:44 -04:00
2026-06-10 07:36:59 -04:00
2026-06-15 09:52:51 -04:00
2026-06-10 11:28:13 -04:00
2026-06-11 05:37:54 -04:00
2026-06-11 08:08:37 -04:00
2026-06-11 04:19:43 -04:00
2026-06-11 04:24:00 -04:00
2026-06-11 05:37:54 -04:00
2026-06-11 08:23:58 -04:00
2026-06-11 10:51:55 -04:00
2026-06-11 10:56:25 -04:00
2026-06-15 09:52:51 -04:00
2026-06-11 08:28:37 -04:00
2026-06-15 09:52:51 -04:00
2026-06-11 12:42:54 -04:00
2026-06-15 09:52:51 -04:00
2026-06-11 20:22:32 -04:00
2026-06-11 20:31:17 -04:00
2026-06-15 09:52:51 -04:00
2026-06-11 14:03:21 -04:00
2026-06-11 14:13:25 -04:00
2026-06-11 15:42:38 -04:00
2026-06-12 20:55:08 -04:00
2026-06-12 21:05:45 -04:00
2026-06-15 09:52:51 -04:00
2026-06-12 11:03:32 -04:00
2026-06-12 11:10:41 -04:00
2026-06-12 11:10:41 -04:00
2026-06-13 06:21:40 -04:00
2026-06-13 06:24:38 -04:00
2026-06-15 09:52:51 -04:00
2026-06-13 08:11:41 -04:00
2026-06-13 08:14:04 -04:00
2026-06-13 09:37:20 -04:00
2026-06-13 10:45:25 -04:00
2026-06-13 10:51:18 -04:00
2026-06-13 12:44:29 -04:00
2026-06-14 17:08:24 -04:00
2026-06-14 17:11:07 -04:00
2026-06-14 18:09:46 -04:00
2026-06-14 02:50:34 -04:00
2026-06-14 02:58:12 -04:00
2026-06-15 09:52:51 -04:00
2026-06-14 18:46:43 -04:00
2026-06-14 18:48:33 -04:00
2026-06-15 09:52:51 -04:00
2026-06-14 00:51:05 -04:00
2026-06-14 00:51:05 -04:00
2026-06-14 22:38:42 -04:00
2026-06-15 09:52:51 -04:00
2026-06-14 01:13:38 -04:00
2026-06-15 05:57:15 -04:00
2026-06-15 09:52:51 -04:00
2026-06-15 10:43:29 -04:00
2026-06-15 09:40:03 -04:00
2026-06-15 09:40:03 -04:00
2026-06-15 12:33:09 -04:00
2026-06-15 12:41:51 -04:00
2026-06-15 12:41:51 -04:00
2026-06-15 13:59:28 -04:00
2026-06-15 14:05:00 -04:00
2026-06-15 14:05:00 -04:00
2026-06-16 05:18:19 -04:00
2026-06-16 05:21:00 -04:00
2026-06-16 05:21:00 -04:00
2026-06-16 19:17:19 -04:00
2026-06-16 19:23:03 -04:00
2026-06-16 20:15:37 -04:00
2026-06-16 21:06:59 -04:00
2026-06-16 21:10:50 -04:00
2026-06-16 23:02:23 -04:00
2026-06-16 07:12:48 -04:00
2026-06-16 06:32:15 -04:00
2026-06-16 07:35:17 -04:00
2026-06-16 16:09:06 -04:00
2026-06-16 16:11:42 -04:00
2026-06-16 17:32:12 -04:00
2026-06-16 17:47:25 -04:00
2026-06-16 17:51:56 -04:00
2026-06-16 18:41:30 -04:00
2026-06-17 19:52:52 -04:00
2026-06-17 20:00:05 -04:00
2026-06-17 20:51:55 -04:00
2026-06-17 11:44:14 -04:00
2026-06-17 11:51:29 -04:00
2026-06-17 12:14:56 -04:00
2026-06-17 05:15:42 -04:00
2026-06-17 05:17:50 -04:00
2026-06-17 06:37:37 -04:00
2026-06-18 04:59:52 -04:00
2026-06-18 05:01:29 -04:00
2026-06-18 05:24:18 -04:00
2026-06-18 08:47:12 -04:00
2026-06-18 09:07:33 -04:00
2026-06-18 09:24:35 -04:00
2026-06-18 13:30:01 -04:00
2026-06-18 13:31:10 -04:00
2026-06-18 14:02:47 -04:00
2026-06-18 12:59:51 -04:00
2026-06-18 13:00:54 -04:00
2026-06-18 13:14:50 -04:00
2026-06-18 12:17:13 -04:00
2026-06-18 12:19:45 -04:00
2026-06-18 12:48:52 -04:00
2026-06-18 04:11:24 -04:00
2026-06-18 04:13:51 -04:00
2026-06-18 04:35:14 -04:00
2026-06-18 11:26:09 -04:00
2026-06-18 11:29:58 -04:00
2026-06-18 12:02:15 -04:00
2026-06-18 05:55:58 -04:00
2026-06-18 06:00:01 -04:00
2026-06-18 06:19:47 -04:00
2026-06-18 02:30:58 -04:00
2026-06-18 02:34:45 -04:00
2026-06-18 02:54:20 -04:00
2026-07-13 09:53:01 -04:00
2026-06-19 00:23:32 -04:00
2026-06-19 00:26:30 -04:00
2026-06-19 00:54:32 -04:00
2026-06-19 01:19:37 -04:00
2026-06-19 01:19:37 -04:00
2026-07-07 11:46:02 -04:00
2026-06-25 16:41:42 -04:00
2026-06-25 17:04:44 -04:00
2026-06-26 09:11:40 -04:00
2026-06-26 15:19:46 -04:00
2026-06-26 15:19:46 -04:00
2026-06-26 09:11:40 -04:00
2026-06-26 09:11:40 -04:00
2026-06-26 15:19:46 -04:00
2026-06-26 15:19:46 -04:00
2026-06-26 15:19:46 -04:00
2026-06-26 16:09:29 -04:00
2026-06-26 16:09:29 -04:00
2026-06-26 16:09:29 -04:00
2026-07-13 09:53:01 -04:00
2026-06-27 02:00:09 -04:00
2026-07-15 16:54:09 -04:00
2026-07-15 16:50:30 -04:00
2026-07-15 17:42:42 -04:00
2026-07-15 16:54:09 -04:00
2026-07-15 16:54:09 -04:00
2026-07-15 16:54:09 -04:00
2026-07-15 16:54:09 -04:00
2026-07-15 16:50:30 -04:00
2026-07-15 16:54:09 -04:00
2026-07-15 17:42:42 -04:00
2026-07-15 18:14:03 -04:00
2026-07-15 18:14:03 -04:00
2026-07-15 22:05:19 -04:00
2026-07-15 16:50:30 -04:00
2026-07-15 16:50:30 -04:00
2026-07-15 16:50:30 -04:00
2026-07-15 16:50:30 -04:00
2026-07-15 16:50:30 -04:00
2026-07-16 05:27:31 -04:00
2026-07-16 07:38:20 -04:00
2026-07-21 03:37:25 -04:00
2026-07-17 16:07:55 -04:00
2026-07-20 10:18:01 -04:00
2026-07-20 23:15:21 -04:00
2026-07-21 03:46:56 -04:00
2026-07-21 06:13:01 -04:00
2026-07-21 02:14:00 -04:00
2026-07-20 21:45:35 -04:00
2026-07-20 10:46:07 -04:00
2026-07-21 06:18:57 -04:00
2026-07-21 05:03:57 -04:00
2026-07-21 03:27:54 -04:00
2026-07-21 02:40:14 -04:00
2026-07-21 06:46:17 -04:00
2026-07-15 15:23:32 -04:00
2026-07-15 15:23:32 -04:00
2026-05-31 09:59:01 -04:00
2026-05-18 04:53:36 -04:00
2026-05-18 04:53:36 -04:00
2026-05-18 04:53:36 -04:00