Zenoh session topology and health

The Zenoh-specific session and observability surface. This cluster :satisfies: Zenoh reference connector (FEAT_0042).

Feature: Zenoh session topology and health FEAT_0045
status: open
satisfies: FEAT_0042
is refined by: ADR_0041

The Zenoh-specific session and observability surface — peer-vs- client mode configuration, scout/locator wiring, and the stack-internal reconnect posture. Health-event semantics inherit from Connection lifecycle (FEAT_0034) and re-affirm Stack-internal-reconnect co... (REQ_0235) (stack- internal reconnect emits health events without ReconnectPolicy).

Requirement: Zenoh session mode is a config knob REQ_0440
status: implemented
satisfies: FEAT_0045
is refined by: IMPL_0060
is implemented by: BB_0040, BB_0042
is verified by: TEST_0308, TEST_0312, TEST_0313

ZenohConnectorOptions::mode shall accept the values SessionMode::{Peer, Client, Router} and shall default to Peer. The gateway shall translate this knob into the corresponding zenoh::Config field before calling zenoh::open.

Requirement: NO ReconnectPolicy on Zenoh session loss REQ_0441
status: rejected
satisfies: FEAT_0045
is verified by: TEST_0309

The Zenoh connector shall not use ReconnectPolicy trait (REQ_0232) ReconnectPolicy on session loss. Zenoh’s own scout / reconnect machinery owns the retry; the connector merely emits HealthEvent on every observed transition between ConnectorHealth variants (mirrors Stack-internal-reconnect co... (REQ_0235) for tonic/gRPC).

Requirement: HealthEvent emitted on every Zenoh session transition REQ_0442
status: implemented
satisfies: FEAT_0045
is refined by: IMPL_0060
is implemented by: BB_0042
is verified by: TEST_0308
links outgoing: BB_0042, TEST_0308

Every transition of the Zenoh session between alive and closed states observed by the gateway (including the initial Connecting Up and any subsequent re-bringup driven by Zenoh’s own retry) shall emit one HealthEvent on the connector’s health channel (re-affirms HealthEvent emitted on ever... (REQ_0234)).

Requirement: Connect and listen locators surfaced to zenoh::Config REQ_0443
status: open
satisfies: FEAT_0045
is refined by: IMPL_0060
is verified by: TEST_0312, TEST_0313

ZenohConnectorOptions::connect and ZenohConnectorOptions::listen shall be carried to zenoh::Config verbatim before zenoh::open. Validation of locator URIs is delegated to zenoh (the connector neither parses nor canonicalises them).

Requirement: zenoh-integration cargo feature gates the real zenoh dep REQ_0444
status: implemented
satisfies: FEAT_0045
is refined by: IMPL_0060
is implemented by: BB_0040
is verified by: TEST_0310
links outgoing: BB_0040, TEST_0310

The real zenoh crate shall be an optional dependency of taktora-connector-zenoh, activated only by a default-off zenoh-integration cargo feature (mirrors taktora-connector-ethercat (BB_0030)’s bus-integration posture). Availability of MockZenohSession and the connector framework types in the default build is covered separately by MockZenohSession ships unfe... (REQ_0445).

Requirement: MockZenohSession ships unfeature-gated REQ_0445
status: implemented
satisfies: FEAT_0045
is refined by: IMPL_0060
is verified by: TEST_0302, TEST_0310
links outgoing: BB_0040, TEST_0302, TEST_0310

MockZenohSession — an in-process pub/sub + query loopback implementation of the ZenohSessionLike trait — shall ship in the default build, not gated by zenoh-integration. It exists so that the Layer-1 (pure-logic) test pyramid can exercise the full envelope ↔ session ↔ envelope hop without depending on the real zenoh crate.

Requirement: Linux, macOS, and Windows are supported host operating systems REQ_0446
status: implemented
satisfies: FEAT_0045
is refined by: IMPL_0060
is verified by: TEST_0311
links outgoing: BB_0040, TEST_0311

The Zenoh connector shall support Linux, macOS, and Windows as host operating systems for both plugin and gateway (broader than Linux raw socket required o... (REQ_0325)’s Linux-only EtherCAT posture, because Zenoh has no OS-specific socket requirement comparable to CAP_NET_RAW).