Skip to content

Commit 68aab5c

Browse files
committed
chore(release): extend version coverage and complete gateway changelog
release.sh now also bumps and verifies docs/Doxyfile PROJECT_NUMBER and the QUALITY_DECLARATION.md current-version references, which previous releases missed (Doxyfile was 0.1.0, the quality declaration 0.3.0); both are now 0.5.0 and validated by verify. Gateway 0.5.0 changelog: add the GET /apps/{id}/belongs-to endpoint, the pool-backed TopicDataProvider plus /health subscription-executor stats, and the updates x-medkit.phase field; trim a stray out-of-scope sentence from the SchemaWriter note.
1 parent 7822178 commit 68aab5c

4 files changed

Lines changed: 53 additions & 7 deletions

File tree

QUALITY_DECLARATION.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ All packages in the repository share the same version number.
3333

3434
### Version Stability [1.ii]
3535

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

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

240-
**Caveat:** Version is 0.3.0 (pre-1.0.0, requirement 1.ii). The REST API is versioned (`/api/v1/`)
240+
**Caveat:** Version is 0.5.0 (pre-1.0.0, requirement 1.ii). The REST API is versioned (`/api/v1/`)
241241
and the package meets all other Level 3 requirements. The 1.0.0 release is planned after
242242
API validation through pilot deployments.

docs/Doxyfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
# Used by Breathe extension to integrate with Sphinx
33

44
PROJECT_NAME = "ros2_medkit"
5-
PROJECT_NUMBER = "0.1.0"
5+
PROJECT_NUMBER = "0.5.0"
66
PROJECT_BRIEF = "SOVD Gateway for ROS 2"
77

88
# Input settings

scripts/release.sh

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@ SRC_DIR="${REPO_ROOT}/src"
3333
VERSION_HPP="${SRC_DIR}/ros2_medkit_gateway/include/ros2_medkit_gateway/core/version.hpp"
3434
CONF_PY="${REPO_ROOT}/docs/conf.py"
3535
DOCS_PYPROJECT="${REPO_ROOT}/docs/pyproject.toml"
36+
DOXYFILE="${REPO_ROOT}/docs/Doxyfile"
37+
QUALITY_DECL="${REPO_ROOT}/QUALITY_DECLARATION.md"
3638

3739
usage() {
3840
echo "Usage: $0 {bump <version>|verify [<version>]}"
@@ -107,6 +109,23 @@ cmd_bump() {
107109
echo " docs/pyproject.toml: -> ${target_version}"
108110
fi
109111

112+
# Update docs/Doxyfile PROJECT_NUMBER
113+
if [ -f "$DOXYFILE" ]; then
114+
sed -i "s|\(PROJECT_NUMBER[[:space:]]*=[[:space:]]*\)\"[0-9]\+\.[0-9]\+\.[0-9]\+\"|\1\"${target_version}\"|" "$DOXYFILE"
115+
echo " docs/Doxyfile PROJECT_NUMBER: -> ${target_version}"
116+
fi
117+
118+
# Update QUALITY_DECLARATION.md current-version references (leave the
119+
# ">=1.0.0" stability-policy mentions untouched via anchored patterns)
120+
if [ -f "$QUALITY_DECL" ]; then
121+
sed -i \
122+
-e "s|current version is \*\*[0-9]\+\.[0-9]\+\.[0-9]\+\*\*|current version is **${target_version}**|" \
123+
-e "s|all packages at [0-9]\+\.[0-9]\+\.[0-9]\+|all packages at ${target_version}|" \
124+
-e "s|Version is [0-9]\+\.[0-9]\+\.[0-9]\+|Version is ${target_version}|" \
125+
"$QUALITY_DECL"
126+
echo " QUALITY_DECLARATION.md: -> ${target_version}"
127+
fi
128+
110129
echo ""
111130
echo "Bumped ${count} packages + version.hpp + docs to ${target_version}."
112131
echo ""
@@ -177,6 +196,32 @@ cmd_verify() {
177196
versions_seen+=("$pyproject_version")
178197
fi
179198

199+
# Check docs/Doxyfile PROJECT_NUMBER
200+
if [ -f "$DOXYFILE" ]; then
201+
local doxy_version
202+
doxy_version=$(grep -oP 'PROJECT_NUMBER\s*=\s*"\K[0-9]+\.[0-9]+\.[0-9]+' "$DOXYFILE" || echo "unknown")
203+
if [ -n "$expected_version" ] && [ "$doxy_version" != "$expected_version" ]; then
204+
echo " MISMATCH: docs/Doxyfile PROJECT_NUMBER is ${doxy_version}, expected ${expected_version}"
205+
all_ok=false
206+
else
207+
echo " OK: docs/Doxyfile PROJECT_NUMBER = ${doxy_version}"
208+
fi
209+
versions_seen+=("$doxy_version")
210+
fi
211+
212+
# Check QUALITY_DECLARATION.md current version
213+
if [ -f "$QUALITY_DECL" ]; then
214+
local qd_version
215+
qd_version=$(grep -oP 'current version is \*\*\K[0-9]+\.[0-9]+\.[0-9]+' "$QUALITY_DECL" || echo "unknown")
216+
if [ -n "$expected_version" ] && [ "$qd_version" != "$expected_version" ]; then
217+
echo " MISMATCH: QUALITY_DECLARATION.md current version is ${qd_version}, expected ${expected_version}"
218+
all_ok=false
219+
else
220+
echo " OK: QUALITY_DECLARATION.md current version = ${qd_version}"
221+
fi
222+
versions_seen+=("$qd_version")
223+
fi
224+
180225
# Check consistency if no expected version given
181226
if [ -z "$expected_version" ]; then
182227
local unique_versions

src/ros2_medkit_gateway/CHANGELOG.rst

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,9 +51,7 @@ Changelog for package ros2_medkit_gateway
5151
``parameters`` / ``error`` (``GET .../scripts/{id}/executions/{eid}``) and
5252
the script ``parameters_schema`` field (``GET .../scripts/{id}``). Clients
5353
that tested ``field === null`` or relied on the key always being present must
54-
treat an absent key the same as ``null``. The ``rtmaps_medkit`` variant is
55-
explicitly NOT covered by this PR - its handlers continue to run on the
56-
pre-typed HandlerContext surface and will be migrated separately
54+
treat an absent key the same as ``null``
5755
(`#403 <https://github.com/selfpatch/ros2_medkit/issues/403>`_)
5856
* Synchronous operation-execution service-call failures
5957
(``POST /api/v1/{entity-path}/operations/{id}/executions`` when the underlying
@@ -102,6 +100,9 @@ Changelog for package ros2_medkit_gateway
102100
* All-or-nothing fragment semantics: a single malformed or forbidden fragment fails the entire load / reload and keeps the previously-loaded manifest active (`#376 <https://github.com/selfpatch/ros2_medkit/issues/376>`_)
103101
* ``ManifestParser::parse_fragment_file`` convenience entrypoint that injects a synthetic ``manifest_version`` header when the fragment omits one
104102
* See ``design/plugin_entity_notifications.rst`` for the lifecycle, merge-rule, and plugin-side write-contract walkthrough
103+
* New ``GET /api/v1/apps/{app_id}/belongs-to`` discovery endpoint returning the areas and components an app belongs to; the ``belongs-to`` URI is advertised on ``GET /apps/{app_id}`` (`#196 <https://github.com/selfpatch/ros2_medkit/issues/196>`_)
104+
* Pool-backed ``TopicDataProvider`` for live topic data: a shared subscription pool owned by a single-writer executor node, with LRU and idle eviction and publisher-QoS matching, replacing per-request subscriptions. Pool and executor health are surfaced as the ``x-medkit-subscription-executor`` vendor-extension stats on ``GET /api/v1/health``, read atomically so ``/health`` never blocks under load (`#384 <https://github.com/selfpatch/ros2_medkit/issues/384>`_)
105+
* ``GET /api/v1/updates/{id}/status`` exposes the update lifecycle ``phase`` under the response ``x-medkit`` object
105106
* Contributors: @bburda, @mfaferek93, @eclipse0922
106107

107108
0.4.0 (2026-03-20)

0 commit comments

Comments
 (0)