TopicForge 0.5.5
Tool outputs were reworked after testing them with LLM agents on the author's
16 test scenarios (live DDS buses with planted faults).
Breaking
detect_qos_mismatchesreturns aMismatchScanenvelope instead of a bare
list. Migrate by reading["reports"]where you used the list.
Added
list_endpoints, the twelfth tool: every announced DDS writer and reader with
owning participant, structured QoS and a per-topic roll-up that flags orphans
(no_reader,no_writer). Cyclone and mock only.- Continuous discovery tracking on Cyclone, so a node restarted three times
shows as 3lostand 4discoveredevents dated by DDS, not by poll time. announced_ns,lost_ns,time_sourceand related timestamp fields on
participant_eventsandlist_participants.health_checkreportsnow_ns, tracker status and an observed-domain note.QosProfilegains Liveliness, Ownership, Partition, LatencyBudget,
DestinationOrder and DataRepresentation.peek_dds_sampleson builtin discovery topics returns structured endpoint
and participant fields instead of a raw repr string.- Topic filters accept
rt/xandxinterchangeably; a filter that matches
nothing returns the known topics. detect_qos_mismatchesalso reportsmatchedandnot_matchedpairs, hints
(near-miss topic names, path suffixes, type id differences), and the policies
it did and did not check.
Changed
detect_qos_mismatcheschecks Partition first (with*and?wildcards),
then type names, then the RxO rules; Liveliness, LatencyBudget, Ownership,
DestinationOrder and DataRepresentation join Reliability, Durability and
Deadline.topic_metricsandpeek_dds_sampleson a user topic say they have no data
instead of returning zeros or a placeholder.- Tool descriptions no longer carry internal history.
Fixed
- Infinite durations are
Noneinstead of 9223372036854775807. - Races between the tracker and tool calls could mark a live participant lost
or keep endpoints of a departed one. - Concurrent cyclonedds calls could corrupt the heap on Windows; every binding
call now takes one lock. - A failing tracker no longer adds 3 s to every tool call.
- An unreadable QoS duration is treated as unknown, not infinite.
- Typo hints stay bounded on a bus with a thousand topics.
Known limits
- A hung writer (alive, no data) cannot be observed without a data probe.
- A crash and a clean leave look the same;
lost_nsis an upper bound. - A participant that cycles faster than the history depth between two tracker
passes can be missed. - The Fast DDS backend has never run on a bus;
list_endpointsis not
supported there. - DDS Security is not supported, and user-topic payload decoding is disabled.