# Changelog ## v0.1.0 (2026-03-27) — Preliminary Release First public release of the RTI UMAA Python SDK. Delivers everything needed to build a working UMAA component using Tier 0 (command) and Tier 1 (report) service templates. ### SDK Core - **`DDSContext`** — Singleton DDS infrastructure manager with auto QoS assignment via `UMAA_QOS_FILE`, topic cache, service registry, and coordinated shutdown - **`BaseService`** — Abstract base class with auto-registration, `close()` lifecycle, and optional `_run()` coroutine - **`BaseComponent`** — Abstract base class for multi-service components with `on_start()`, `_run()`, and `close()` lifecycle hooks - **`CommandProvider`** — Tier 0 server-side command template with full ICD state machine (ISSUED → COMMANDED → EXECUTING → COMPLETED/FAILED/CANCELED), 7 async hooks, content-filtered reader, automatic ack/status publishing - **`CommandConsumer`** — Tier 0 client-side command template with `send()`, `cancel()`, discovery waiting, and lifecycle hooks (`on_status`, `on_ack`, `on_exec_status`, `on_terminal`) - **`CommandProviderSession`** — Per-command state machine with validated transitions (D51 fail-reason checking), cancel/fail/update support - **`ReportProvider`** — Tier 1 single-topic publisher with field validation and instance disposal on close - **`ReportConsumer`** — Tier 1 single-topic subscriber with async `on_report()` hook ### Utilities - **`GUIDUtil`** — GUID generation, hex conversion for CFT filter expressions, UUID string conversion - **`UmaaTimestamp`** / **`set_timestamp()`** — UMAA DateTimeType ↔ Python datetime bidirectional conversion - **`CommandHookError`** / **`CommandFailedError`** / **`AssemblyError`** — Typed exception hierarchy - **`CommandResult`** — Command execution result wrapper - **Field validation** — Automatic numeric range and enum validation against UMAA IDL constraints ### Pre-Wired Service Library - **350 concrete service classes** across 7 UMAA domains: - **CO** (Common Operations) — 42 classes - **EO** (Engineering Operations) — 58 classes - **MM** (Mission Management) — 70 classes - **MO** (Maritime Operations) — 18 classes - **SA** (Situational Awareness) — 66 classes - **SEM** (Sensors) — 26 classes - **SO** (System Operations) — 70 classes - Auto-generated from UMAA IDL via `tools/generate_services.py` - Each class pre-wires command/ack/status/exec_status types and topic names ### Generated Data Model - **596 Python type modules** in `rtiumaapy.datamodel` generated from UMAA IDL using `rtiddsgen` ### Examples - **Autopilot component** — Full 18-service UMAA component (4 command providers, 4 command consumers, 4 report providers, 6 report consumers) - **GlobalVector consumer** — Minimal command consumer example ### QoS - 4 QoS profiles via XML `topic_filter` rules (TelemetryQoS, CommandQoS, ConfigQoS, ElementQoS) - AssignerQoS automatic profile matching by topic name suffix - USTM tool compatibility mode (commented, ready to enable) - Cyclone DDS interoperability support ### Testing - **1,628 tests** passing (unit + DDS integration) - ~1,400 parametrized service library import/subclass/binding tests - Full command lifecycle tests (ack, status, exec_status, rejection, cancellation, update, failure, crash recovery) - Full report lifecycle tests (pub/sub, validation, dispose) - QoS topic_filter regression tests ### Not Yet Implemented - Tier 2: Large Set services (LargeSetReportProvider/Consumer) - Tier 3: Large List services (LargeListReportProvider/Consumer) - Tier 4: Composite services (explicit multi-topic assembly)