Repository navigation
Reconcile TC18 module naming with RELAY spec v1.14 §13.7.2 #45
Description
RELAY spec v1.14 (https://github.com/SoundMatt/RELAY/releases/tag/v1.14.0) expanded §13.7.2's standard module-name registry with canonical names for the RCP protocol-core concerns this repo's TC18 replacement is building. This was prompted by comparing all four go/cpp/rust/c-RCP replacement efforts directly and finding real naming drift for the same concepts — filing this on each repo so naming converges going forward, per §13.7's requirement that "the names are identical across languages."
Deltas found in this repo (as of the comparison)
-
wire.hpp(new) /legacy_wire.hpp(old) → rename toavtp.hpp. The registry names the AVTPDU header-framing layeravtp(matching go-RCP's and c-RCP's naming). This repo reused the oldwire.hppname for the new format and renamed the old implementation tolegacy_wire.hpp— the inverse naming strategy from the other three. Recommendavtp.hppfor the new AVTPDU/NTSCF/TSCF framing, and whatever name fits for the retired old-protocol code (or removal, if the old wire format is no longer needed once cutover happens). -
Verify
acfis separated out. If wire.hpp/legacy_wire.hpp currently bundles ACF_ABB/ACF_GBB message-format handling (byte_message_info, request/response/ack encoding) together with AVTPDU header framing, split it into a separateacf.hppper the registry — rust-RCP and c-RCP already have this split. -
lifecycle.hpp,regmap.hpp,discovery.hpp— already correctly named and already match the registry (this repo, rust-RCP, and c-RCP all independently split these three apart; go-RCP is the outlier still consolidating them into oneserverpackage). No action needed here — this repo is actually the reference case for this part. -
e2e.hpp— already correctly named. No action needed. -
No dedicated
request.hppmodule visible. The registry'srequestentry covers the conditional-request taxonomy (compound/compound-wait/triggered/chained/timed) plus sequencers.sequencer.hppexists as its own file, but the conditional-request-kind logic doesn't appear to have its own top-level header. Worth checking where this logic currently lives and whether it should be consolidated under (or re-exported from) arequestmodule, even ifsequencer.hppstays as an internal implementation file within it. -
No dedicated
fragment.hppmodule visible. If AVTPDU/ACF fragmentation logic exists elsewhere (e.g. folded into wire.hpp), consider extracting it to match the registry'sfragmententry — go-RCP already has this as its own package.
Secondary note (not a naming issue, flagging for cross-repo awareness)
This repo's roadmap explicitly calls for DEPRECATE on canbr.hpp/linbr.hpp ("CAN and LIN native endpoint types of an RC Server... rather than something external to bridge to from an RCP Client"), while go-RCP's roadmap keeps them as ADAPT (bridging concept survives in reduced scope, as an ergonomics layer). Both are reasoned positions — but worth a conscious cross-repo decision on which one all four implementations should converge on, since it's a real behavioral difference, not just naming.
Not asking for a specific PR — just flagging accurately so whoever/whatever picks this up (including a future pass of the ongoing build-out loop) can verify these deltas against the actual current code and fix what's confirmed.
Activity
refactor: reconcile module naming with RELAY spec v1.14 §13.7.2 (#47)
SoundMatt commentedon Jul 28, 2026
Resolved by #47 (v2.7.1), after independently re-verifying each delta against current code:
Fixed:
rcp/wire.hpp→ split intorcp/avtp.hpp(AVTPDU/NTSCF/TSCF header framing,stream_id/byte_bus_idaddressing) andrcp/acf.hpp(ACF_ABB/ACF_GBB message format), matching the registry's separateavtp/acfentries. Confirmed the delta was still real:wire.hppdid bundle both concerns under the "wire" name.rcp/legacy_wire.hpp(the pre-replacement 16-byte codec, still used internally byrcp/udp.hppuntil v2.13.0) is untouched — its name doesn't collide with anything oncewire.hppis gone.rcp/sequencer.hpp→ renamedrcp/request.hpp. Confirmed still real, but it's a rename rather than a split: the file already covered exactly the registry'srequestentry ("conditional-request taxonomy... and sequencers") in one place, so no file-per-concern split was needed.SequencerTablekeeps its name as the internal sequencer-state sub-concept within the module.Already correct, no action needed (confirmed):
lifecycle,regmap,discovery— this repo is genuinely the reference case here, as the issue suspected.e2e— already correct.Corrected in light of current code:
fragment— not created. By the time this was picked up, ROADMAP.md milestone 52 (v2.8.0, PR feat: v2.8.0 — Fragmentation Go/No-Go Decision, formal close-out (#52) #46) had already decided fragmentation no-go for this cycle. There is no fragmentation logic anywhere in the tree (ms/segment_numare reserved-but-unimplemented fields inrcp/acf.hpp) to extract into a module. Added a short note to ROADMAP.md's disposition section so a future pass doesn't re-open this.Left as-is per your instructions:
canbr.hpp/linbr.hppDEPRECATE (vs. go-RCP's ADAPT) — still an open cross-repo architectural question, not touched here.No protocol behavior changed. Verified locally (full build across compilers,
ctest59/59, RELAYrelay conform --strict) and in CI before merge (all 20 checks green, including gcc-12/clang-14/msvc/macos matrix, clang-tidy, and the full cpfusa suite).