changedInput schema / properties / domain_id / description
Previous value: -"Accepted for compatibility (0..232). TopicForge observes the domain it joined at startup (TOPICFORGE_DDS_DOMAIN_ID); this argument does not switch domains, and the response `domain_id` says which one was observed."New value: +"Ignored: it does not switch domains and is only range-checked (0..232). The domain observed is the one joined at startup (`TOPICFORGE_DDS_DOMAIN_ID`), reported in the response `domain_id`; `note` flags a different non-zero value."
removedInput schema / properties / domain_id / title
Removed value: -"Domain Id"
removedInput schema / title
Removed value: -"list_participantsArguments"
addedOutput schema / $defs / NameLifecycle
Added value: +{
+ "additionalProperties": false,
+ "properties": {
+ "departures": {
+ "description": "Times a participant with this name was lost.",
+ "minimum": 0,
+ "type": "integer"
+ },
+ "lives": {
+ "description": "Distinct GUIDs that carried this name; restarts = `lives` - 1.",
+ "minimum": 1,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "lives",
+ "departures"
+ ],
+ "type": "object"
+}
removedOutput schema / $defs / ParticipantInfo / description
Removed value: -"DDS participant discovered on the configured domain.\n\nCarries identity (`guid`, `name`, `vendor`) plus lifecycle fields\n(`first_seen_ns`, `last_seen_ns`, `status`, `seen_count`)."
changedOutput schema / $defs / ParticipantInfo / properties / announced_ns / description
Previous value: -"Nanoseconds since epoch (DDS source timestamp of the participant's most recent announcement, taken from the announcing side's clock; the local clock when the announcer sent none). `None` when the backend does not expose it. Distinct from `first_seen_ns` / `last_seen_ns`, which are TopicForge's own local clock."New value: +"Source timestamp of the latest announcement, on the announcer's clock; `None` if unavailable."
removedOutput schema / $defs / ParticipantInfo / properties / announced_ns / title
Removed value: -"Announced Ns"
removedOutput schema / $defs / ParticipantInfo / properties / domain_id / description
Removed value: -"DDS domain id the participant is bound to."
removedOutput schema / $defs / ParticipantInfo / properties / domain_id / title
Removed value: -"Domain Id"
changedOutput schema / $defs / ParticipantInfo / properties / first_seen_ns / description
Previous value: -"Wall-clock timestamp (nanoseconds since epoch) of the **first** discovery sample TopicForge observed for this participant. `None` when the adapter does not track lifecycle."New value: +"Wall-clock ns of the first discovery sample seen; `None` without lifecycle tracking."
removedOutput schema / $defs / ParticipantInfo / properties / first_seen_ns / title
Removed value: -"First Seen Ns"
removedOutput schema / $defs / ParticipantInfo / properties / guid / description
Removed value: -"DDS Global Unique Identifier of the participant: hex string, stable across discovery events within a single deployment."
removedOutput schema / $defs / ParticipantInfo / properties / guid / title
Removed value: -"Guid"
removedOutput schema / $defs / ParticipantInfo / properties / hostname / description
Removed value: -"Hostname announced in discovery (Cyclone `__Hostname` property). `None` when the vendor does not announce it."
removedOutput schema / $defs / ParticipantInfo / properties / hostname / title
Removed value: -"Hostname"
changedOutput schema / $defs / ParticipantInfo / properties / is_observer / description
Previous value: -"True for TopicForge's own read-only observer participant, which joins the domain to watch it and appears in this list; false for every other participant."New value: +"True for TopicForge's own read-only observer participant."
removedOutput schema / $defs / ParticipantInfo / properties / is_observer / title
Removed value: -"Is Observer"
changedOutput schema / $defs / ParticipantInfo / properties / last_seen_ns / description
Previous value: -"Wall-clock timestamp (nanoseconds since epoch) of the **most recent** discovery sample observed. Used by `participant_events` to distinguish currently-active participants from those that left the bus. `None` when the adapter does not track lifecycle."New value: +"Wall-clock ns of the latest discovery sample; `None` without lifecycle tracking."
removedOutput schema / $defs / ParticipantInfo / properties / last_seen_ns / title
Removed value: -"Last Seen Ns"
changedOutput schema / $defs / ParticipantInfo / properties / lost_ns / description
Previous value: -"Nanoseconds since epoch of the moment the participant left, once `status` is `left`; `None` while it is active. How precise it is depends on `lost_time_source`. It is an upper bound of when the participant died: after a clean shutdown it is the exact leave time, after a crash it is when the lease expired, and the two cannot be told apart. The process died at or before `lost_ns`, and at most one lease earlier (10 s Cyclone default, 20 s Fast, 100 s RTI)."New value: +"Once `left`: ns upper bound of the death (exact after a clean shutdown; after a crash the lease expiry, up to one lease earlier: 10 s Cyclone, 20 s Fast, 100 s RTI). `None` while active."
removedOutput schema / $defs / ParticipantInfo / properties / lost_ns / title
Removed value: -"Lost Ns"
changedOutput schema / $defs / ParticipantInfo / properties / lost_time_source / description
Previous value: -"Where `lost_ns` comes from: `dds_source_timestamp` (timestamp carried by the discovery dispose) or `observed_local` (the moment TopicForge noticed, the weakest). `None` while active."New value: +"Origin of `lost_ns`: `dds_source_timestamp` or `observed_local` (weakest); `None` while active."
removedOutput schema / $defs / ParticipantInfo / properties / lost_time_source / title
Removed value: -"Lost Time Source"
removedOutput schema / $defs / ParticipantInfo / properties / mode_effective
Removed value: -{
- "description": "Runtime mode the adapter served this response in: `live` (real ROS2 introspection) or `mock` (deterministic fixtures). Lets a caller tell a real graph from a demo one without calling `health_check`.",
- "enum": [
- "mock",
- "live"
- ],
- "title": "Mode Effective",
- "type": "string"
-}
changedOutput schema / $defs / ParticipantInfo / properties / name / description
Previous value: -"Participant name the application announced through the standard DDS EntityName QoS (PID_ENTITY_NAME in RTPS discovery), for example `lidar_driver`. `None` when the application did not set one (Dust DDS cannot) or the backend does not expose it."New value: +"Announced EntityName (e.g. `lidar_driver`); `None` when the application set none (Dust DDS cannot)."
removedOutput schema / $defs / ParticipantInfo / properties / name / title
Removed value: -"Name"
addedOutput schema / $defs / ParticipantInfo / properties / node_names
Added value: +{
+ "description": "Fully qualified ROS 2 node names sharing this participant; empty when `node_names_source` is `none`.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+}
addedOutput schema / $defs / ParticipantInfo / properties / node_names_source
Added value: +{
+ "default": "none",
+ "description": "`ros_discovery_info`, `ros2_cli` or `none` (no link made).",
+ "enum": [
+ "ros_discovery_info",
+ "ros2_cli",
+ "none"
+ ],
+ "type": "string"
+}
changedOutput schema / $defs / ParticipantInfo / properties / seen_count / description
Previous value: -"Number of distinct discovery samples observed for this participant across all calls to `list_participants` during this server's lifetime. Starts at 1 and increments on each observation."New value: +"Discovery observations of this GUID in this server's lifetime. Not a restart count: a restart is a new GUID (see `restarts_by_name`)."
removedOutput schema / $defs / ParticipantInfo / properties / seen_count / title
Removed value: -"Seen Count"
changedOutput schema / $defs / ParticipantInfo / properties / status / description
Previous value: -"Lifecycle status. `active` means TopicForge has a recent discovery sample for this GUID and the bus has not signalled removal. `left` means the participant was observed earlier but has since disappeared (a Fast DDS `REMOVED` callback or a Cyclone polling delta). `unknown` when the adapter does not track lifecycle."New value: +"`active`, `left` (seen earlier, since gone) or `unknown` (no lifecycle tracking)."
removedOutput schema / $defs / ParticipantInfo / properties / status / title
Removed value: -"Status"
changedOutput schema / $defs / ParticipantInfo / properties / vendor / description
Previous value: -"DDS implementation that announced this participant, decoded from the OMG-RTPS `vendor_id` field on the discovery sample. `cyclone` (Eclipse Cyclone DDS), `fast` (eProsima Fast DDS), `rti` (RTI Connext), `rti_micro` (RTI Connext Micro), `opensplice` (ADLink OpenSplice), `opendds` (OCI OpenDDS), `coredx` (Twin Oaks CoreDX), `intercom` (Kongsberg InterCOM), `dust` (S2E Dust DDS). `mock` is reserved for synthetic fixtures. `unknown` means the vendor could not be determined: TopicForge reads it from the vendor prefix of the participant GUID, and some vendors (for example Dust DDS and RTI Connext) do not put their vendor id there, while the Cyclone Python binding does not expose the RTPS header vendor id. The participant is still reported; see `vendor_source`. Any conformant DDS-RTPS participant should appear through standard discovery; Cyclone DDS and Dust DDS have been observed on a live bus. See `docs/dds-interop-matrix.md`."New value: +"DDS implementation read from the GUID vendor prefix: cyclone, fast, rti, rti_micro, opensplice, opendds, coredx, intercom, dust, mock or `unknown` (Dust DDS and RTI Connext do not put theirs there); see `vendor_source`."
removedOutput schema / $defs / ParticipantInfo / properties / vendor / title
Removed value: -"Vendor"
changedOutput schema / $defs / ParticipantInfo / properties / vendor_source / description
Previous value: -"Where `vendor` came from: `guid_prefix` when it was read from the vendor prefix of the participant GUID, `none` when the vendor is unknown (or synthetic in mock mode)."New value: +"`guid_prefix` when `vendor` was read from the GUID, else `none`."
removedOutput schema / $defs / ParticipantInfo / properties / vendor_source / title
Removed value: -"Vendor Source"
changedOutput schema / $defs / ParticipantInfo / required
Previous value: -[
- "guid",
- "vendor",
- "domain_id",
- "mode_effective"
-]New value: +[
+ "guid",
+ "vendor",
+ "domain_id"
+]
removedOutput schema / $defs / ParticipantInfo / title
Removed value: -"ParticipantInfo"
addedOutput schema / additionalProperties
Added value: +false
addedOutput schema / description
Added value: +"Envelope returned by `list_participants`."
addedOutput schema / properties / domain_id
Added value: +{
+ "description": "DDS domain observed (joined at startup).",
+ "maximum": 232,
+ "minimum": 0,
+ "type": "integer"
+}
addedOutput schema / properties / mode_effective
Added value: +{
+ "description": "`live` or `mock` (fixtures).",
+ "enum": [
+ "mock",
+ "live"
+ ],
+ "type": "string"
+}
addedOutput schema / properties / note
Added value: +{
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "default": null,
+ "description": "One sentence of context, or `None`."
+}
addedOutput schema / properties / participants
Added value: +{
+ "items": {
+ "$ref": "#/$defs/ParticipantInfo"
+ },
+ "type": "array"
+}
addedOutput schema / properties / restarts_by_name
Added value: +{
+ "additionalProperties": {
+ "$ref": "#/$defs/NameLifecycle"
+ },
+ "description": "Names seen with several GUIDs or lost at least once (absent: ran once and stayed). A restart is a new GUID with the same name.",
+ "type": "object"
+}
addedOutput schema / properties / restarts_note
Added value: +{
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "default": null,
+ "description": "Set when unnamed participants were left out of `restarts_by_name`."
+}
removedOutput schema / properties / result
Removed value: -{
- "items": {
- "$ref": "#/$defs/ParticipantInfo"
- },
- "title": "Result",
- "type": "array"
-}
addedOutput schema / properties / returned
Added value: +{
+ "minimum": 0,
+ "type": "integer"
+}
addedOutput schema / properties / total
Added value: +{
+ "minimum": 0,
+ "type": "integer"
+}
addedOutput schema / properties / truncated
Added value: +{
+ "type": "boolean"
+}
changedOutput schema / required
Previous value: -[
- "result"
-]New value: +[
+ "participants",
+ "returned",
+ "total",
+ "truncated",
+ "domain_id",
+ "mode_effective"
+]
changedOutput schema / title
Previous value: -"list_participantsOutput"New value: +"ParticipantListing"