Ops observation, announce, and maintenance

Ops fans WorldAnnounceEvent and NodeMaintenanceChangedEvent out to every ZoneNode, which applies only its own NodeId

Ops observation, announce, and maintenance Ops fans WorldAnnounceEvent and NodeMaintenanceChangedEvent out to every ZoneNode, which applies only its own NodeId WatchNodesReq WatchNodesRes AnnounceWorldReq AnnounceWorldRes WorldAnnounceEvent fanout WorldAnnounceEvent fanout SetMaintenanceReq(nodeId,true) SetMaintenanceRes NodeMaintenanceChangedEvent fanout; Z1 applies only matching NodeId NodeMaintenanceChangedEvent fanout; Z2 applies only matching NodeId Ops Browser · Sequence participant Ops Browser Ops · Sequence participant Ops ZoneNode A · Sequence participant ZoneNode A ZoneNode B · Sequence participant ZoneNode B

Self-actions folded into the preceding message (archify sequence rejects from==to, no following message on that lane)

  • • mermaid Z1->>Z1: apply only matching NodeId — appended to the NodeMaintenanceChangedEvent fanout message to Z1.
  • • mermaid Z2->>Z2: apply only matching NodeId — appended to the NodeMaintenanceChangedEvent fanout message to Z2.

Registered vs. Connected, and maintenance semantics

  • • WatchNodesRes's Registered and Connected are different observations: Connected comes from the peer state of the runtime status observation, and Registered comes from ZoneNode's explicit report — the Framework topology status doesn't expose a registration signal.
  • • If the target zone owner has maintenance=true, the target Zone Spot's OnActorJoin admission rejects with ZoneMaintenance. Only movement within the same zone is allowed.
  • • This maintenance is application admission desired state and does not invoke Host relocation flow's Relocate(PlannedMaintenance) — it is not crash failover.
  • • Ops records desired state to the maintenance store, so the maintenance state for the same NodeId is restored after a ZoneNode restart.