Skip to content

TopicForge 0.5.1

Choose a tag to compare

@yaniswav yaniswav released this 22 Aug 17:17
· 52 commits to main since this release

Hotfix: restores installability, plus the external-audit backlog (Lots 0-5, 2026-07-08) that had been sitting under [Unreleased].

Fixed: installability

  • Hard-pinned mcp < 2. TopicForge was uninstallable via pip install topicforge from 2026-07-28 to 2026-08-22: the MCP Python SDK's 2.0.0 release removed the mcp.server.fastmcp module that server/app.py imports, and the dependency was declared as an unbounded mcp>=1.0.0, so every fresh install resolved to the broken SDK version. Migrating to the 2.x API is tracked separately and is not part of this fix.

Fixed: DDS correctness (external audit)

  • topic_metrics: frequency was computed over the wrong time span and off-by-one interval count; a single opportunistic peek now correctly reports frequency_hz_observed = null instead of a fabricated rate.
  • topic_metrics: sequence-gap counting is now per-writer, so multi-writer topics, publisher restarts, and counter wraps no longer inflate the gap count.
  • detect_qos_mismatches: a reader requesting a finite QoS Deadline against a writer offering none is now correctly flagged as incompatible (previously a false negative).
  • LifecycleBuffer and MetricsBuffer participant/topic maps are now bounded (capped at 4096 entries each, oldest evicted first); previously unbounded on a long-running, churny bus.
  • Several smaller correctness fixes: OpenDDS stub no longer misreports availability, a string __slots__ no longer gets exploded character-by-character during decoding, decode recursion is depth-capped, and raw payload preview is sliced before hex-encoding rather than after.

Changed

  • Cyclone discovery/sample reads switched from destructive take_iter to non-destructive read_iter, the correct choice for a read-only observer. This change is validated by static analysis only (ruff + py_compile); it has not yet been exercised against a real multi-vendor DDS bus. Real-bus validation remains open.
  • QoS-mismatch pairing logic deduplicated into a shared, unit-tested module instead of ~40 duplicated lines per adapter.

Docs

  • New docs/TUTORIEL.md: English tutorial with a mock-mode quickstart, the eleven-tool table, advanced options, copy-pasteable scheduled-task prompts, and the telemetry privacy contract.
  • docs/product-plan.md realigned on the shipped 11-tool surface; peek_dds_samples documentation corrected on what the raw decode fallback actually preserves.
pip install topicforge==0.5.1

Full details: https://github.com/yaniswav/TopicForge/blob/main/CHANGELOG.md#051---2026-08-22