fix(health): akka check uses the shared SPEC Default policy, not Degraded-only OtOpcUaCompat (lmxopcua#771)

OtOpcUaCompat was a migration shim (1d729fb0) preserving the pre-adoption
two-way mapping; nothing depends on it. A node that is not a live cluster
member now fails /health/ready.

Claude-Session: https://claude.ai/code/session_01GT67AEHd2Acv1YPwGfXEoV
This commit is contained in:
Joseph Doherty
2026-11-09 14:13:16 -05:00
parent 90db63cfaf
commit 3d26907b1a
2 changed files with 36 additions and 1 deletions
@@ -84,7 +84,11 @@ public static class HealthEndpoints
"akka",
failureStatus: null,
tags: new[] { ZbHealthTags.Ready, ZbHealthTags.Active },
args: AkkaClusterStatusPolicy.OtOpcUaCompat)
// Shared SPEC Default policy (lmxopcua#771). OtOpcUaCompat was a migration shim that kept the
// pre-adoption two-way behaviour (anything not Up = Degraded), which can never fail /health/ready
// — Degraded passes. Nothing relies on that: Down/Removed/Joining-failed now answer 503 on the
// ready tier, Leaving/Exiting stay Degraded (a draining node keeps serving).
args: AkkaClusterStatusPolicy.Default)
// "Is this node in charge of its mesh?" — Healthy on the one node that owns the active
// work for its Cluster, Unhealthy (503) on its partner, so Traefik pins the AdminUI to the
// node actually hosting the cluster singletons.