Changelog
=========
All notable changes to ros2_medkit are documented in this file.
The format is based on `Keep a Changelog `_,
and this project adheres to `Semantic Versioning `_.
[Unreleased]
------------
Added
~~~~~
* SOVD bulk-data endpoints for all entity types:
- ``GET /{entity}/bulk-data`` - list available bulk-data categories
- ``GET /{entity}/bulk-data/{category}`` - list bulk-data descriptors
- ``GET /{entity}/bulk-data/{category}/{id}`` - download bulk-data file
* Inline ``environment_data`` in fault response with:
- ``extended_data_records``: First/last occurrence timestamps
- ``snapshots[]``: Array of freeze_frame and rosbag entries
* SOVD-compliant ``status`` object in fault response with aggregatedStatus,
testFailed, confirmedDTC, pendingDTC fields
* UUID identifiers for rosbag bulk-data items
* ``x-medkit`` extensions with occurrence_count, severity_label
Changed
~~~~~~~
* Fault response structure now SOVD-compliant with ``item`` wrapper
* Rosbag downloads use SOVD bulk-data pattern instead of legacy endpoints
* Rosbag IDs changed from timestamps to UUIDs
Removed
~~~~~~~
* ``GET /faults/{code}/snapshots`` - use ``environment_data`` in fault response
* ``GET /faults/{code}/snapshots/bag`` - use bulk-data endpoint
* ``GET /{entity}/faults/{code}/snapshots`` - use ``environment_data``
* ``GET /{entity}/faults/{code}/snapshots/bag`` - use bulk-data endpoint
**Breaking Changes:**
* Fault response structure changed - clients must update to handle ``item`` wrapper
and ``environment_data`` structure
* Legacy snapshot endpoints removed - migrate to inline snapshots and bulk-data
* Rosbag identifiers changed from timestamps to UUIDs
[0.1.0] - 2026-02-01
--------------------
First public release of ros2_medkit.
Added
~~~~~
**Gateway (ros2_medkit_gateway)**
- REST API gateway exposing ROS 2 graph via SOVD-compatible endpoints
- Discovery endpoints: ``/areas``, ``/components``, ``/apps``, ``/functions``
- Data access: Read topic data, publish to topics
- Operations: Call ROS 2 services and actions with execution tracking
- Configurations: Read/write/reset ROS 2 node parameters
- Faults: Query and clear faults from fault manager
- Three discovery modes: runtime_only, hybrid, manifest_only
- Manifest-based discovery with YAML system definitions
- Heuristic app detection in runtime mode
- JWT authentication with RBAC (viewer, operator, configurator, admin roles)
- TLS/HTTPS support with configurable TLS 1.2/1.3
- CORS configuration for browser clients
- SSE (Server-Sent Events) for real-time fault notifications
- Health check endpoint
**Fault Manager (ros2_medkit_fault_manager)**
- Centralized fault storage and management node
- ROS 2 services: ``report_fault``, ``list_faults``, ``clear_fault``
- AUTOSAR DEM-style debounce lifecycle (PREFAILED → CONFIRMED → HEALED → CLEARED)
- Fault aggregation from multiple sources
- Severity escalation
- In-memory storage with thread-safe implementation
**Fault Reporter (ros2_medkit_fault_reporter)**
- Client library for reporting faults from ROS 2 nodes
- Local filtering with configurable threshold and time window
- Fire-and-forget async service calls
- High-severity bypass for immediate fault reporting
**Diagnostic Bridge (ros2_medkit_diagnostic_bridge)**
- Bridge node converting ``/diagnostics`` messages to fault manager faults
- Configurable severity mapping from diagnostic status levels
- Support for diagnostic arrays with multiple status entries
**Serialization (ros2_medkit_serialization)**
- Runtime JSON ↔ ROS 2 message serialization
- Dynamic message introspection without compile-time type knowledge
- Support for all ROS 2 built-in types, arrays, nested messages
- Type caching for performance
**Messages (ros2_medkit_msgs)**
- ``Fault.msg``: Fault status message with severity, timestamps, sources
- ``FaultEvent.msg``: Fault event for subscriptions
- ``ReportFault.srv``: Service for reporting faults
- ``ListFaults.srv``: Service for querying faults with filters
- ``ClearFault.srv``: Service for clearing faults
**Documentation**
- Sphinx documentation with Doxygen integration
- Getting Started tutorial
- REST API reference
- Configuration reference (server, discovery, manifest)
- Authentication and HTTPS tutorials
- Docker deployment guide
- Companion project tutorials (web-ui, mcp-server)
**Tooling**
- Postman collection for API testing
- VS Code tasks for build/test/launch
- Development container configuration
- GitHub Actions CI/CD pipeline
Companion Projects
~~~~~~~~~~~~~~~~~~
- `sovd_web_ui `_: Web interface for entity browsing
- `ros2_medkit_mcp `_: MCP server for LLM integration
SOVD Compliance
~~~~~~~~~~~~~~~
This release implements a subset of the SOVD (Service-Oriented Vehicle Diagnostics)
specification adapted for ROS 2:
- Core discovery endpoints (areas, components)
- Extended discovery (apps, functions) via manifest mode
- Data access (read, write)
- Operations (services, actions with executions)
- Configurations (parameters)
- Faults (query, clear) with environment_data
- Bulk data transfer (rosbags via bulk-data endpoints)
Not yet implemented:
- Software updates
- Locks
- Triggers
- Communication logs