Skip to content

feat: v2.14.0 — Auxiliary Transport & Cross-Cutting Rebind (§Phase 15 milestone 58) - #53

Merged
SoundMatt merged 1 commit into
mainfrom
feat/v2.14.0-auxiliary-transport-rebind
Jul 29, 2026
Merged

SoundMatt merged 1 commit into
mainfrom
feat/v2.14.0-auxiliary-transport-rebind

Conversation

@SoundMatt

Copy link
Copy Markdown
Owner

Summary

Implements ROADMAP.md milestone 58, "Auxiliary Transport & Cross-Cutting Rebind (v2.14.0)" — the seven ADAPT-category satellite packages the Satellite Package Disposition table lists, rebound onto the post-replacement stream/byte_bus_id addressing model:

  • rcp/mdns.hpp — rescoped to host:port discovery for the UDP/IP transport variant specifically (ZoneInfo → ServerInfo, keyed by an opaque stream_key). TC18's own wire-level discovery (rcp/discovery.hpp, v2.2.0) needs no name service at all.
  • rcp/tls.hpp — rebuilt as SecureClient/SecureServer wrapping rcp/udp.hpp's Server/Client (v2.13.0), same OpenSSL-gated-backend/stub split as before; now states plainly that the specification's preferred link-security mechanism is MACsec (802.1AE) at layer 2, which this package does not address.
  • rcp/tsn.hpp — PCPMap now maps rcp::request::RequestCategory's seven-way execution-priority ordering (v2.5.0) instead of the removed Priority enum, via a standalone apply_priority() free function rather than a wrapped Controller (no unified client-side send() chokepoint exists yet — that lands at v2.16.0).
  • rcp/shmem.hpp — ZoneServer/Controller become Channel/Registry, keyed by stream_key the same way rcp/watchdog.hpp's Manager already is.
  • rcp/loan.hpp — loan::Controller becomes a standalone BufferPool (buffers re-zeroed on reuse), same "primitive, not a wrapped chokepoint" choice tsn.hpp makes here.
  • rcp/record.hpp — wraps a RequestFn shaped like udp::Client::request's core signature; Entry now carries AcfMessageInfo/payload pairs, and a new read_binary makes the on-disk format round-trip losslessly (previously only asserted non-empty).
  • rcp/observe.hpp — wraps the same RequestFn; Span/Metric swap Zone/CommandType for byte_bus_id/acf_msg_type/stream_key.

No other file in the tree depended on any of the seven pre-v2.14.0 APIs beyond their own tests, so no legacy-shim split file was needed anywhere (verified by grep before starting).

tests/test_{mdns,tls,tsn,shmem,loan,record,observe}.cpp are entirely rewritten under their existing REQ-*-NNN prefixes, traced in .fusa-reqs.json. version.hpp/CMakeLists.txt bumped to 2.14.0; README.md's header table and ROADMAP.md updated with a **Done (v2.14.0):** note.

Test plan

  • cmake --build full project on C++17 and C++20 — clean
  • ctest — 60/60 tests passing
  • cpfusa check / lint / cyber — 0 errors
  • cpfusa trace --req-coverage 100 — 480/480 requirements annotated + tested (100%)
  • cpfusa verify — evidence bundle generated, 60/60 tests
  • relay conform --strict against the built cpp-rcp CLI — PASS
  • CI (GitHub Actions) — pending, to be polled after this PR opens

… milestone 58)

Rebinds all seven ADAPT-category satellite packages ROADMAP.md milestone 58
covers to the post-replacement stream/byte_bus_id addressing model, per the
Satellite Package Disposition table's entries for these files. None of the
seven depended on rcp.hpp's Zone/Command/Controller/Registry model beyond
rcp::Context and its generic error constants, so this is a pure rebind, not
a redesign.

mdns.hpp is rescoped to host:port discovery for the UDP/IP transport
variant specifically (ZoneInfo -> ServerInfo, keyed by an opaque
stream_key); TC18's own wire-level discovery (rcp/discovery.hpp, v2.2.0)
needs no name service at all. tls.hpp is rebuilt as SecureClient/
SecureServer wrapping rcp/udp.hpp's Server/Client (v2.13.0), same
OpenSSL-gated-backend/stub split as before, and now states plainly that
the specification's preferred link-security mechanism is MACsec (802.1AE)
at layer 2, which this package does not address. tsn.hpp's PCPMap now maps
rcp::request::RequestCategory's seven-way execution-priority ordering
(v2.5.0) instead of the removed Priority enum, via a standalone
apply_priority() free function rather than a wrapped Controller — there is
no unified client-side send() chokepoint left to wrap until the
CLI/capi/adapt rebuilds at v2.16.0.

shmem.hpp's ZoneServer/Controller become Channel/Registry, keyed by
stream_key the same way rcp/watchdog.hpp's Manager already is, still
dispatching in-process with no wire encode/decode step. loan.hpp's
loan::Controller becomes a standalone BufferPool (re-zeroing buffers on
reuse), the same "primitive, not a wrapped chokepoint" choice tsn.hpp
makes here. record.hpp and observe.hpp both wrap a RequestFn shaped like
udp::Client::request's core signature; record::Entry now carries
AcfMessageInfo/payload pairs with a new read_binary so the on-disk format
round-trips losslessly, and observe::Span/Metric swap Zone/CommandType for
byte_bus_id/acf_msg_type/stream_key.

No other file in the tree depended on any of the seven pre-v2.14.0 APIs
beyond their own tests, so no legacy-shim split file was needed anywhere.
tests/test_{mdns,tls,tsn,shmem,loan,record,observe}.cpp are entirely
rewritten under their existing REQ-*-NNN prefixes, traced in
.fusa-reqs.json. version.hpp/CMakeLists.txt bumped to 2.14.0; README.md's
header table and ROADMAP.md get updated accordingly, with a Done note.

Verified locally: full build + ctest (60/60 passing) on C++17 and C++20,
cpp-FuSa check/lint/cyber/trace (100% requirement coverage)/verify, and
the RELAY conformance gate.

Signed-off-by: Matt <47545907+SoundMatt@users.noreply.github.com>
@SoundMatt
SoundMatt merged commit 433f9a9 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