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"
changedInput schema / properties / topic / description
Previous value: -"DDS topic name. Bare DDS names such as `scan` are valid, as are ROS 2 mangled names such as `rt/scan` and the builtin discovery topics `DCPSParticipant`, `DCPSSubscription`, `DCPSPublication`. Letters, digits, `_`, `/` and `::` are allowed; anything else is rejected."New value: +"DDS topic name: bare (`scan`), ROS 2 mangled (`rt/scan`) or a builtin discovery topic (`DCPSParticipant`, `DCPSSubscription`, `DCPSPublication`). Letters, digits, `_`, `/` and `::` only."
removedInput schema / properties / topic / title
Removed value: -"Topic"
addedInput schema / properties / window_s
Added value: +{
+ "default": 60,
+ "description": "Window in seconds, 1..3600, default 60.",
+ "maximum": 3600,
+ "minimum": 1,
+ "type": "integer"
+}
removedInput schema / properties / window_seconds
Removed value: -{
- "default": 60,
- "description": "Window in seconds over which to compute metrics (1..3600). Defaults to 60 seconds. Smaller windows reflect more recent state; larger windows smooth transient anomalies.",
- "maximum": 3600,
- "minimum": 1,
- "title": "Window Seconds",
- "type": "integer"
-}
removedInput schema / title
Removed value: -"topic_metricsArguments"
changedOutput schema / description
Previous value: -"Temporal metrics for a single DDS topic over a recent window.\n\nBuilt from samples that pass through `peek_dds_samples`. The buffer is\nfilled on demand because neither the `cyclonedds` nor the `fastdds`\nPython binding has a reliable per-sample callback, so a burst between two\ncalls is not seen.\n\nNumeric fields are `None` (`0` for `sequence_gaps_count`) when the data is\nmissing: no samples, no source timestamps, no sequence number in the\npayload. `samples_observed=0` is a valid result, not an error."New value: +"Temporal metrics for a single DDS topic over a recent window."
addedOutput schema / properties / declared_frequency_hz
Added value: +{
+ "anyOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "default": null,
+ "description": "`1 / deadline` of the shortest writer Deadline announced: the promised rate, not the observed one; `None` when none announced."
+}
removedOutput schema / properties / frequency_hz_declared
Removed value: -{
- "anyOf": [
- {
- "type": "number"
- },
- {
- "type": "null"
- }
- ],
- "default": null,
- "description": "Declared, not measured: `1 / deadline` for the shortest QoS Deadline period announced by a writer on this topic in discovery. `None` when no writer announced a finite Deadline or the topic is not announced. It is the rate the application promised, not the rate observed.",
- "title": "Frequency Hz Declared"
-}
removedOutput schema / properties / frequency_hz_observed
Removed value: -{
- "anyOf": [
- {
- "type": "number"
- },
- {
- "type": "null"
- }
- ],
- "default": null,
- "description": "`samples_observed / window_seconds_actual`. `None` when fewer than 2 samples were observed (a single sample does not define a frequency).",
- "title": "Frequency Hz Observed"
-}
changedOutput schema / properties / latency_available / description
Previous value: -"True when at least one sample in the window carried both a publish timestamp and a receive timestamp. The percentile fields are `None` when this is False."New value: +"True when a sample carried both a publish and a receive timestamp."
removedOutput schema / properties / latency_available / title
Removed value: -"Latency Available"
changedOutput schema / properties / latency_ns_p50 / description
Previous value: -"Median publish-to-receive latency in nanoseconds, computed only when the sample type exposes a publish timestamp (typically via `header.stamp` on `Header`-stamped messages). `None` when `latency_available=False`."New value: +"Median publish-to-receive latency in ns; `None` unless `latency_available`."
removedOutput schema / properties / latency_ns_p50 / title
Removed value: -"Latency Ns P50"
removedOutput schema / properties / latency_ns_p95 / title
Removed value: -"Latency Ns P95"
removedOutput schema / properties / latency_ns_p99 / title
Removed value: -"Latency Ns P99"
changedOutput schema / properties / mode_effective / description
Previous value: -"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`."New value: +"`live` or `mock` (fixtures)."
removedOutput schema / properties / mode_effective / title
Removed value: -"Mode Effective"
addedOutput schema / properties / note
Added value: +{
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "default": null,
+ "description": "One sentence of context, or `None`."
+}
addedOutput schema / properties / observed_frequency_hz
Added value: +{
+ "anyOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "default": null,
+ "description": "`samples_observed / window_actual_s`; `None` under 2 samples."
+}
changedOutput schema / properties / samples_observed / description
Previous value: -"Number of samples in the buffer matching `topic` within the window. `0` means TopicForge has not seen any sample on this topic recently: it does NOT mean the topic has no publisher, only that no `peek_dds_samples` call captured one in the window."New value: +"Samples buffered in the window. `0` does NOT mean no publisher, only that no `peek_dds_samples` call captured one."
removedOutput schema / properties / samples_observed / title
Removed value: -"Samples Observed"
changedOutput schema / properties / sequence_gaps_count / description
Previous value: -"Number of missing sequence numbers detected in the buffered samples. `0` either means no gaps observed OR the sample type did not expose a sequence number (check `sequence_numbers_available` to disambiguate)."New value: +"Missing sequence numbers in the buffered samples; `0` also when none exist (see `sequence_numbers_available`)."
removedOutput schema / properties / sequence_gaps_count / title
Removed value: -"Sequence Gaps Count"
changedOutput schema / properties / sequence_numbers_available / description
Previous value: -"True when the adapter successfully extracted sequence numbers from at least one sample. Sequence number support depends on the message type: `Header`-stamped messages with a `seq` field expose it; primitives like `std_msgs/String` do not."New value: +"True when a sequence number could be read from a sample."
removedOutput schema / properties / sequence_numbers_available / title
Removed value: -"Sequence Numbers Available"
changedOutput schema / properties / status / description
Previous value: -"How to read the numbers. `unsupported_user_topic`: the topic is a user topic, whose payload is not decoded, so no metric exists and the null fields are not a measurement. `no_samples_yet`: a supported topic with nothing buffered in the window. `ok`: metrics computed from buffered samples."New value: +"`ok`; `no_samples_yet` (empty buffer); `unsupported_user_topic` (payload not decoded: null fields are not measurements)."
removedOutput schema / properties / status / title
Removed value: -"Status"
removedOutput schema / properties / topic / description
Removed value: -"Topic the metrics were computed for."
removedOutput schema / properties / topic / title
Removed value: -"Topic"
addedOutput schema / properties / window_actual_s
Added value: +{
+ "description": "Seconds actually covered; shorter than `window_s` after a recent start; `0.0` without samples.",
+ "minimum": 0,
+ "type": "number"
+}
addedOutput schema / properties / window_s
Added value: +{
+ "description": "Requested window in seconds (echoed).",
+ "maximum": 3600,
+ "minimum": 1,
+ "type": "integer"
+}
removedOutput schema / properties / window_seconds
Removed value: -{
- "description": "Requested window in seconds (1..3600). Echoed back from the tool call so the LLM can correlate the request.",
- "maximum": 3600,
- "minimum": 1,
- "title": "Window Seconds",
- "type": "integer"
-}
removedOutput schema / properties / window_seconds_actual
Removed value: -{
- "description": "Actual elapsed seconds within the window. May be smaller than `window_seconds` when the adapter buffered samples for less time than the requested window (e.g., the server just started). `0.0` when `samples_observed=0`.",
- "minimum": 0,
- "title": "Window Seconds Actual",
- "type": "number"
-}
changedOutput schema / required
Previous value: -[
- "topic",
- "window_seconds",
- "window_seconds_actual",
- "samples_observed",
- "mode_effective"
-]New value: +[
+ "topic",
+ "window_s",
+ "window_actual_s",
+ "samples_observed",
+ "mode_effective"
+]