Skip to content

TopicForge 0.5.5

Choose a tag to compare

@yaniswav yaniswav released this 02 Oct 12:17
· 27 commits to main since this release

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_mismatches returns a MismatchScan envelope 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 3 lost and 4 discovered events dated by DDS, not by poll time.
  • announced_ns, lost_ns, time_source and related timestamp fields on
    participant_events and list_participants.
  • health_check reports now_ns, tracker status and an observed-domain note.
  • QosProfile gains Liveliness, Ownership, Partition, LatencyBudget,
    DestinationOrder and DataRepresentation.
  • peek_dds_samples on builtin discovery topics returns structured endpoint
    and participant fields instead of a raw repr string.
  • Topic filters accept rt/x and x interchangeably; a filter that matches
    nothing returns the known topics.
  • detect_qos_mismatches also reports matched and not_matched pairs, hints
    (near-miss topic names, path suffixes, type id differences), and the policies
    it did and did not check.

Changed

  • detect_qos_mismatches checks Partition first (with * and ? wildcards),
    then type names, then the RxO rules; Liveliness, LatencyBudget, Ownership,
    DestinationOrder and DataRepresentation join Reliability, Durability and
    Deadline.
  • topic_metrics and peek_dds_samples on 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 None instead 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_ns is 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_endpoints is not
    supported there.
  • DDS Security is not supported, and user-topic payload decoding is disabled.