Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions QUALITY_DECLARATION.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ All packages in the repository share the same version number.

### Version Stability [1.ii]

The current version is **0.3.0**.
The current version is **0.5.0**.
The package follows semver; the pre-1.0 version reflects that the public API may still evolve
based on early adopter feedback, not a lack of quality infrastructure.
The 1.0.0 release is planned after the API has been validated through pilot deployments.
Expand Down Expand Up @@ -225,7 +225,7 @@ Security issues can be reported via GitHub Security Advisories on the

| Requirement | Status | Notes |
|---|---|---|
| Version policy | Met | Semver, all packages at 0.3.0 |
| Version policy | Met | Semver, all packages at 0.5.0 |
| Stable version (>=1.0.0) | Caveat | Pre-1.0; API versioned, 1.0.0 planned post-pilot |
| Change requests | Met | All changes via PR |
| CI | Met | Build + test + coverage on every PR |
Expand All @@ -237,6 +237,6 @@ Security issues can be reported via GitHub Security Advisories on the
| Platform support | Met | Ubuntu Noble / ROS 2 Jazzy + Ubuntu Jammy / ROS 2 Humble + Ubuntu Resolute / ROS 2 Lyrical |
| Security policy | Met | REP-2006 compliant |

**Caveat:** Version is 0.3.0 (pre-1.0.0, requirement 1.ii). The REST API is versioned (`/api/v1/`)
**Caveat:** Version is 0.5.0 (pre-1.0.0, requirement 1.ii). The REST API is versioned (`/api/v1/`)
and the package meets all other Level 3 requirements. The 1.0.0 release is planned after
API validation through pilot deployments.
2 changes: 1 addition & 1 deletion docs/Doxyfile
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
# Used by Breathe extension to integrate with Sphinx

PROJECT_NAME = "ros2_medkit"
PROJECT_NUMBER = "0.1.0"
PROJECT_NUMBER = "0.5.0"
PROJECT_BRIEF = "SOVD Gateway for ROS 2"

# Input settings
Expand Down
4 changes: 2 additions & 2 deletions docs/api/rest.rst
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ Server Capabilities

{
"name": "ROS 2 Medkit Gateway",
"version": "0.4.0",
"version": "0.5.0",
Comment thread
bburda marked this conversation as resolved.
"api_base": "/api/v1",
"endpoints": [
"GET /api/v1/health",
Expand Down Expand Up @@ -78,7 +78,7 @@ Server Capabilities
"version": "1.0.0",
"base_uri": "/api/v1",
"vendor_info": {
"version": "0.4.0",
"version": "0.5.0",
"name": "ros2_medkit"
}
}
Expand Down
2 changes: 2 additions & 0 deletions docs/changelog.rst
Original file line number Diff line number Diff line change
Expand Up @@ -33,3 +33,5 @@ This page aggregates changelogs from all ros2_medkit packages.
.. include:: ../src/ros2_medkit_plugins/ros2_medkit_graph_provider/CHANGELOG.rst

.. include:: ../src/ros2_medkit_plugins/ros2_medkit_opcua/CHANGELOG.rst

.. include:: ../src/ros2_medkit_plugins/ros2_medkit_sovd_service_interface/CHANGELOG.rst
4 changes: 2 additions & 2 deletions docs/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,8 @@
project_copyright = f"{datetime.now().year}, selfpatch"
author = "selfpatch Team"

version = "0.4.0"
release = "0.4.0"
version = "0.5.0"
release = "0.5.0"

# -- General configuration ---------------------------------------------------
# https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration
Expand Down
2 changes: 1 addition & 1 deletion docs/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"

[project]
name = "ros2-medkit-docs"
version = "0.4.0"
version = "0.5.0"
description = "Documentation for ROS 2 Medkit"
authors = [{ name = "bburda", email = "bartoszburda93@gmail.com" }]
requires-python = ">=3.12"
Expand Down
92 changes: 91 additions & 1 deletion scripts/release.sh
Original file line number Diff line number Diff line change
Expand Up @@ -30,9 +30,12 @@ set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
REPO_ROOT="$(cd "${SCRIPT_DIR}/.." && pwd)"
SRC_DIR="${REPO_ROOT}/src"
VERSION_HPP="${SRC_DIR}/ros2_medkit_gateway/include/ros2_medkit_gateway/version.hpp"
VERSION_HPP="${SRC_DIR}/ros2_medkit_gateway/include/ros2_medkit_gateway/core/version.hpp"
CONF_PY="${REPO_ROOT}/docs/conf.py"
DOCS_PYPROJECT="${REPO_ROOT}/docs/pyproject.toml"
DOXYFILE="${REPO_ROOT}/docs/Doxyfile"
QUALITY_DECL="${REPO_ROOT}/QUALITY_DECLARATION.md"
REST_RST="${REPO_ROOT}/docs/api/rest.rst"

usage() {
echo "Usage: $0 {bump <version>|verify [<version>]}"
Expand Down Expand Up @@ -107,6 +110,37 @@ cmd_bump() {
echo " docs/pyproject.toml: -> ${target_version}"
fi

# Update docs/Doxyfile PROJECT_NUMBER
if [ -f "$DOXYFILE" ]; then
sed -i "s|\(PROJECT_NUMBER[[:space:]]*=[[:space:]]*\)\"[0-9]\+\.[0-9]\+\.[0-9]\+\"|\1\"${target_version}\"|" "$DOXYFILE"
echo " docs/Doxyfile PROJECT_NUMBER: -> ${target_version}"
fi

# Update QUALITY_DECLARATION.md current-version references (leave the
# ">=1.0.0" stability-policy mentions untouched via anchored patterns)
if [ -f "$QUALITY_DECL" ]; then
sed -i \
-e "s|current version is \*\*[0-9]\+\.[0-9]\+\.[0-9]\+\*\*|current version is **${target_version}**|" \
-e "s|all packages at [0-9]\+\.[0-9]\+\.[0-9]\+|all packages at ${target_version}|" \
-e "s|Version is [0-9]\+\.[0-9]\+\.[0-9]\+|Version is ${target_version}|" \
"$QUALITY_DECL"
echo " QUALITY_DECLARATION.md: -> ${target_version}"
fi

# Update the gateway-version literals in docs/api/rest.rst example responses.
# Each is anchored on its adjacent "name" key so the SOVD API "version":
# "1.0.0" (which has neither anchor) is never rewritten:
# - root "/" response: "name": "ROS 2 Medkit Gateway" then "version"
# - version-info vendor_info: "version" then "name": "ros2_medkit"
if [ -f "$REST_RST" ]; then
REST_TARGET="$target_version" perl -0pi -e '
my $v = $ENV{REST_TARGET};
s/("name": "ROS 2 Medkit Gateway",\s*\n\s*"version": ")\d+\.\d+\.\d+(")/$1$v$2/g;
s/("version": ")\d+\.\d+\.\d+(",\s*\n\s*"name": "ros2_medkit")/$1$v$2/g;
' "$REST_RST"
echo " docs/api/rest.rst example versions: -> ${target_version}"
fi

echo ""
echo "Bumped ${count} packages + version.hpp + docs to ${target_version}."
echo ""
Expand Down Expand Up @@ -177,8 +211,64 @@ cmd_verify() {
versions_seen+=("$pyproject_version")
fi

# Check docs/Doxyfile PROJECT_NUMBER
if [ -f "$DOXYFILE" ]; then
local doxy_version
doxy_version=$(grep -oP 'PROJECT_NUMBER\s*=\s*"\K[0-9]+\.[0-9]+\.[0-9]+' "$DOXYFILE" || echo "unknown")
if [ -n "$expected_version" ] && [ "$doxy_version" != "$expected_version" ]; then
echo " MISMATCH: docs/Doxyfile PROJECT_NUMBER is ${doxy_version}, expected ${expected_version}"
all_ok=false
else
echo " OK: docs/Doxyfile PROJECT_NUMBER = ${doxy_version}"
fi
versions_seen+=("$doxy_version")
fi

# Check QUALITY_DECLARATION.md current version
if [ -f "$QUALITY_DECL" ]; then
local qd_version
qd_version=$(grep -oP 'current version is \*\*\K[0-9]+\.[0-9]+\.[0-9]+' "$QUALITY_DECL" || echo "unknown")
Comment thread
bburda marked this conversation as resolved.
if [ -n "$expected_version" ] && [ "$qd_version" != "$expected_version" ]; then
echo " MISMATCH: QUALITY_DECLARATION.md current version is ${qd_version}, expected ${expected_version}"
all_ok=false
else
echo " OK: QUALITY_DECLARATION.md current version = ${qd_version}"
fi
versions_seen+=("$qd_version")
fi

# Check docs/api/rest.rst example-response versions (gateway version only;
# the SOVD API "version": "1.0.0" is excluded via the same name anchors as
# the bump path, so it is neither rewritten nor verified here).
if [ -f "$REST_RST" ]; then
local rest_versions
rest_versions=$(perl -0ne '
while (/"name": "ROS 2 Medkit Gateway",\s*\n\s*"version": "(\d+\.\d+\.\d+)"/g) { print "$1\n" }
while (/"version": "(\d+\.\d+\.\d+)",\s*\n\s*"name": "ros2_medkit"/g) { print "$1\n" }
' "$REST_RST")
[ -n "$rest_versions" ] || rest_versions="unknown"
while IFS= read -r rest_version; do
if [ -n "$expected_version" ] && [ "$rest_version" != "$expected_version" ]; then
echo " MISMATCH: docs/api/rest.rst example version is ${rest_version}, expected ${expected_version}"
all_ok=false
else
echo " OK: docs/api/rest.rst example version = ${rest_version}"
fi
versions_seen+=("$rest_version")
done <<< "$rest_versions"
fi

# Check consistency if no expected version given
if [ -z "$expected_version" ]; then
# An "unknown" means a version pattern failed to match in some file.
# Without this guard an all-"unknown" run collapses to one unique value
# and would false-pass the consistency check below.
if printf '%s\n' "${versions_seen[@]}" | grep -qx "unknown"; then
echo ""
echo "ERROR: could not parse a version from one or more files (got 'unknown')."
all_ok=false
fi

local unique_versions
unique_versions=$(printf '%s\n' "${versions_seen[@]}" | sort -u)
local unique_count
Expand Down
9 changes: 9 additions & 0 deletions src/ros2_medkit_cmake/CHANGELOG.rst
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,15 @@
Changelog for package ros2_medkit_cmake
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

0.5.0 (2026-06-08)
------------------
* ``ROS2MedkitWarnings.cmake`` module centralizes compiler warning flags across all packages, with selective ``-Werror`` (namespaced ``MEDKIT_ENABLE_WERROR``, defaults OFF) applied only to flags safe against external headers
* ``ROS2MedkitSanitizers.cmake`` module adds ASan/UBSan and TSan support for sanitizer CI jobs
* ``ROS2MedkitTestDomain.cmake`` centralizes ``ROS_DOMAIN_ID`` allocation for per-test DDS isolation
* Vendored cpp-httplib 0.14.3 as a build-farm fallback (``VENDORED_DIR`` parameter), marked as a SYSTEM include to suppress third-party warnings
* ``medkit_find_cpp_httplib`` caps cpp-httplib at ``< 0.20`` across both the pkg-config and ``find_package(httplib)`` tiers, so distros shipping 0.20+ (Ubuntu 26.04 ships 0.26, which dropped the multipart ``Request::has_file`` API the gateway uses) fall through to the vendored 0.14.3 header instead of failing the build; ``ROS2MedkitCompat.cmake`` extended to cover ROS 2 Lyrical / Ubuntu 26.04 Resolute (rclcpp 32, ``yaml_cpp_vendor`` target export, ``ament_target_dependencies`` removal in ament_cmake 2.8.5+), which replaces Rolling in CI (`#405 <https://github.com/selfpatch/ros2_medkit/pull/405>`_)
* Contributors: @bburda, @mfaferek93

0.4.0 (2026-03-20)
------------------
* Initial release - shared cmake modules extracted from gateway package (`#294 <https://github.com/selfpatch/ros2_medkit/pull/294>`_)
Expand Down
2 changes: 1 addition & 1 deletion src/ros2_medkit_cmake/package.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<?xml-model href="http://download.ros.org/schema/package_format3.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>
<package format="3">
<name>ros2_medkit_cmake</name>
<version>0.4.0</version>
<version>0.5.0</version>
<description>Shared CMake modules for ros2_medkit packages (multi-distro compat, ccache, linting)</description>
<maintainer email="bartoszburda93@gmail.com">bburda</maintainer>
<license>Apache-2.0</license>
Expand Down
6 changes: 6 additions & 0 deletions src/ros2_medkit_diagnostic_bridge/CHANGELOG.rst
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,12 @@
Changelog for package ros2_medkit_diagnostic_bridge
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

0.5.0 (2026-06-08)
------------------
* Build: adopt the centralized ``ROS2MedkitWarnings`` and ``ROS2MedkitSanitizers`` cmake modules
* Tests: use centralized ``ROS_DOMAIN_ID`` allocation for DDS isolation
* Contributors: @bburda

0.4.0 (2026-03-20)
------------------
* Build: use shared cmake modules from ``ros2_medkit_cmake`` package
Expand Down
2 changes: 1 addition & 1 deletion src/ros2_medkit_diagnostic_bridge/package.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<?xml-model href="http://download.ros.org/schema/package_format3.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>
<package format="3">
<name>ros2_medkit_diagnostic_bridge</name>
<version>0.4.0</version>
<version>0.5.0</version>
<description>Bridge node converting ROS2 /diagnostics to FaultManager faults</description>

<maintainer email="michal.faferek@selfpatch.ai">mfaferek93</maintainer>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,12 @@
Changelog for package ros2_medkit_beacon_common
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

0.5.0 (2026-06-08)
------------------
* Updated include paths for the gateway core / ROS 2 ``PluginContext`` layer split and removal of backwards-compat shim headers
* Build: adopt the centralized ``ROS2MedkitWarnings`` cmake module
* Contributors: @bburda

0.4.0 (2026-03-20)
------------------
* Initial release - shared utilities for beacon discovery plugins
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<?xml-model href="http://download.ros.org/schema/package_format3.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>
<package format="3">
<name>ros2_medkit_beacon_common</name>
<version>0.4.0</version>
<version>0.5.0</version>
<description>Shared library for ros2_medkit beacon discovery plugins</description>

<maintainer email="bartoszburda93@gmail.com">bburda</maintainer>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,13 @@
Changelog for package ros2_medkit_linux_introspection
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

0.5.0 (2026-06-08)
------------------
* Migrated the introspection plugins to the ``get_routes()`` plugin API
* Declared ``pkg-config`` as a ``buildtool_depend`` and fixed a route-separator bug
* Build: adopt the centralized ``ROS2MedkitWarnings`` and ``ROS2MedkitSanitizers`` cmake modules
* Contributors: @bburda

0.4.0 (2026-03-20)
------------------
* Initial release - Linux process introspection plugins for ros2_medkit gateway
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<?xml-model href="http://download.ros.org/schema/package_format3.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>
<package format="3">
<name>ros2_medkit_linux_introspection</name>
<version>0.4.0</version>
<version>0.5.0</version>
<description>Linux introspection plugins for ros2_medkit gateway - procfs, systemd, and container</description>
<maintainer email="bartoszburda93@gmail.com">bburda</maintainer>
<license>Apache-2.0</license>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,14 @@
Changelog for package ros2_medkit_param_beacon
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

0.5.0 (2026-06-08)
------------------
* Migrated ``ParameterBeaconPlugin`` to the ``get_routes()`` plugin API
* Added shutdown guards and ``noexcept`` destructors that reset rclcpp resources before member destruction, preventing teardown SIGSEGV; the graph poll now swallows ``rcl`` "context invalid" during shutdown
* Added post-shutdown guard unit tests
* Build: adopt the centralized ``ROS2MedkitWarnings`` cmake module
* Contributors: @bburda

0.4.0 (2026-03-20)
------------------
* Initial release - parameter-based beacon discovery plugin
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<?xml-model href="http://download.ros.org/schema/package_format3.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>
<package format="3">
<name>ros2_medkit_param_beacon</name>
<version>0.4.0</version>
<version>0.5.0</version>
<description>Parameter-based beacon discovery plugin for ros2_medkit gateway</description>

<maintainer email="bartoszburda93@gmail.com">bburda</maintainer>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,14 @@
Changelog for package ros2_medkit_topic_beacon
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

0.5.0 (2026-06-08)
------------------
* Migrated ``TopicBeaconPlugin`` to the ``get_routes()`` plugin API
* Added shutdown guards and ``noexcept`` destructors (with ``override``) that reset rclcpp resources before member destruction, preventing teardown SIGSEGV
* Added post-shutdown guard unit tests
* Build: adopt the centralized ``ROS2MedkitWarnings`` cmake module
* Contributors: @bburda

0.4.0 (2026-03-20)
------------------
* Initial release - topic-based beacon discovery plugin
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<?xml-model href="http://download.ros.org/schema/package_format3.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>
<package format="3">
<name>ros2_medkit_topic_beacon</name>
<version>0.4.0</version>
<version>0.5.0</version>
<description>Topic-based beacon discovery plugin for ros2_medkit gateway</description>

<maintainer email="bartoszburda93@gmail.com">bburda</maintainer>
Expand Down
9 changes: 9 additions & 0 deletions src/ros2_medkit_fault_manager/CHANGELOG.rst
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,15 @@
Changelog for package ros2_medkit_fault_manager
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

0.5.0 (2026-06-08)
------------------
* ``ClearFault`` honors the new ``skip_correlation_auto_clear`` request flag so per-entity fault clears can opt out of cascade-clearing correlated symptom fault codes (`#395 <https://github.com/selfpatch/ros2_medkit/issues/395>`_)
* Three-layer protection against unbounded snapshot growth (bounded buffers plus pruning)
* Concurrency and lifetime hardening: serialize concurrent subscription creation in ``SnapshotCapture``, join capture threads in the ``FaultManagerNode`` destructor, and defense-in-depth shutdown guards to prevent teardown crashes across distros
* Aggregation security hardening and improved test coverage
* Build: adopt the centralized ``ROS2MedkitWarnings`` and ``ROS2MedkitSanitizers`` cmake modules and ``bugprone`` / ``special-member-functions`` clang-tidy checks
* Contributors: @bburda

0.4.0 (2026-03-20)
------------------
* Per-entity confirmation and healing thresholds via manifest configuration (`#269 <https://github.com/selfpatch/ros2_medkit/pull/269>`_)
Expand Down
2 changes: 1 addition & 1 deletion src/ros2_medkit_fault_manager/package.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<?xml-model href="http://download.ros.org/schema/package_format3.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>
<package format="3">
<name>ros2_medkit_fault_manager</name>
<version>0.4.0</version>
<version>0.5.0</version>
<description>Central fault manager node for ros2_medkit fault management system</description>

<maintainer email="bartoszburda93@gmail.com">bburda</maintainer>
Expand Down
6 changes: 6 additions & 0 deletions src/ros2_medkit_fault_reporter/CHANGELOG.rst
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,12 @@
Changelog for package ros2_medkit_fault_reporter
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

0.5.0 (2026-06-08)
------------------
* ``LocalFilter`` now debounces ``PASSED`` events with the same threshold / window filtering as ``FAILED``, preventing rapid CONFIRMED/CLEARED status cycling from triggering unbounded snapshot recapture (`#308 <https://github.com/selfpatch/ros2_medkit/issues/308>`_)
* Build: adopt the centralized ``ROS2MedkitWarnings`` and ``ROS2MedkitSanitizers`` cmake modules
* Contributors: @bburda, @mfaferek93

0.4.0 (2026-03-20)
------------------
* Build: use shared cmake modules from ``ros2_medkit_cmake`` package
Expand Down
2 changes: 1 addition & 1 deletion src/ros2_medkit_fault_reporter/package.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<?xml-model href="http://download.ros.org/schema/package_format3.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>
<package format="3">
<name>ros2_medkit_fault_reporter</name>
<version>0.4.0</version>
<version>0.5.0</version>
<description>Client library for easy fault reporting with local filtering</description>

<maintainer email="michal.faferek@selfpatch.ai">mfaferek93</maintainer>
Expand Down
Loading
Loading