Skip to content

feat: v2.15.0 — Application-Layer Protocol Bridge Rebind (§Phase 15 milestone 59) - #54

Merged
SoundMatt merged 1 commit into
mainfrom
feat/v2.15.0-app-layer-bridge-rebind
Jul 29, 2026
Merged

SoundMatt merged 1 commit into
mainfrom
feat/v2.15.0-app-layer-bridge-rebind

Conversation

@SoundMatt

Copy link
Copy Markdown
Owner

Summary

Implements ROADMAP.md milestone 59, "Application-Layer Protocol Bridge Rebind (v2.15.0)" — the first unchecked/undone milestone in the roadmap's own stated order (milestones 44–58, v2.0.0–v2.14.0, all carry a "Done" note; milestone 59 did not).

  • Rebinds mqttbr.hpp, ddsbr.hpp, someipbr.hpp, restbridge.hpp, grpcbridge.hpp, udsbr.hpp, doipbr.hpp per the Satellite Package Disposition table's ADAPT entry for each file.
  • Each pre-replacement <Name>Controller : public rcp::Controller wrapper (keyed by the removed Zone type) becomes a standalone <Name>Bridge class — the same "primitives, not a wrapped chokepoint" choice rcp/authz.hpp (v2.11.0) and rcp/tsn.hpp/rcp/record.hpp/rcp/observe.hpp (v2.14.0) already made, since there is no unified client-side send() chokepoint left to wrap.
  • Addressing moves from Zone to the opaque per-connection stream_key plus avtp::ByteBusId endpoint pair every other Phase 14/15 header keys on since v2.10.0.
  • Each bridge's send() becomes request(), shaped to match rcp/record.hpp's/rcp/observe.hpp's RequestFn — the same "new client-side send-equivalent call" shape as rcp/udp.hpp's Client::request core signature.
  • The old subscribe()/StatusChannel method is dropped with no replacement (belonged to rcp::Controller's status-telemetry push model, no analog in the target spec).
  • Every method still returns errc::function_not_supported (close() still succeeds) — no real MQTT/DDS/SOME-IP/REST/gRPC/UDS/DoIP behavior is implemented, exactly as this milestone's scope calls for; each protocol's Config struct is unchanged.
  • canbr.hpp/linbr.hpp are untouched — out of scope for this milestone, separate DEPRECATE item at v2.17.0.
  • version.hpp/CMakeLists.txt bumped to 2.15.0; ROADMAP.md gets a "Done (v2.15.0)" note.

Grepping the tree for consumers of each file's pre-v2.15.0 API beyond its own test found none, so no legacy-shim split file was needed, matching the v2.13.0/v2.14.0 rebuild convention. Tests entirely rewritten under the same file/prefix identity as the discarded pre-replacement coverage, traced in .fusa-reqs.json.

Test plan

  • cmake -B build && cmake --build build --parallel — clean build
  • ctest --test-dir build --output-on-failure -j1 — 60/60 tests passing
  • relay conform --strict build/cpp-rcp (RELAY §12 conformance gate) — PASS
  • cpfusa check — 0 errors
  • cpfusa lint — 0 errors (from a clean checkout, no build/ dir noise)
  • cpfusa cyber — 0 errors
  • cpfusa trace --req-coverage 100 — passes at 100% requirement coverage

…ilestone 59)

Rebinds mqttbr.hpp, ddsbr.hpp, someipbr.hpp, restbridge.hpp, grpcbridge.hpp, udsbr.hpp, and doipbr.hpp per ROADMAP.md milestone 59 and the Satellite Package Disposition table's ADAPT entry for each file.

Each pre-replacement `<Name>Controller : public rcp::Controller` wrapper (keyed by the removed Zone type) becomes a standalone `<Name>Bridge` class, the same "primitives, not a wrapped chokepoint" choice rcp/authz.hpp (v2.11.0) and rcp/tsn.hpp/rcp/record.hpp/rcp/observe.hpp (v2.14.0) already made. Addressing moves from Zone to the opaque per-connection stream_key plus avtp::ByteBusId endpoint pair every other Phase 14/15 header keys on since v2.10.0. Each bridge's send() becomes request(), shaped to match rcp/record.hpp's/rcp/observe.hpp's RequestFn — the same client-side send-equivalent call shape as rcp/udp.hpp's Client::request core signature. The old subscribe()/StatusChannel method is dropped with no replacement, since it belonged to rcp::Controller's status-telemetry push model with no analog in the target specification.

Every method still returns errc::function_not_supported (close() still succeeds) — no real MQTT/DDS/SOME-IP/REST/gRPC/UDS/DoIP behavior is implemented, exactly as this milestone's scope calls for; each protocol's Config struct is unchanged. canbr.hpp/linbr.hpp are untouched (separate DEPRECATE item at v2.17.0).

Grepping the tree for consumers of each file's pre-v2.15.0 API beyond its own test found none, so no legacy-shim split file was needed, same as the v2.13.0/v2.14.0 rebuilds. Tests entirely rewritten under the same file/prefix identity as the discarded pre-replacement coverage, traced in .fusa-reqs.json. version.hpp/CMakeLists.txt bumped to 2.15.0; ROADMAP.md gets a Done note.

Verified locally: full build/test (60/60 ctest passing), RELAY conformance gate (relay conform --strict, PASS), and the cpp-FuSa safety suite (check/lint/cyber/trace --req-coverage 100, all 0 errors).

Signed-off-by: Matt <47545907+SoundMatt@users.noreply.github.com>
@SoundMatt
SoundMatt merged commit ff5eba2 into main Jul 29, 2026
20 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant