Skip to content

feat: v2.17.0 — Deprecation Sweep (§Phase 16 milestone 61) - #56

Merged
SoundMatt merged 1 commit into
mainfrom
feat/v2.17.0-deprecation-sweep
Jul 29, 2026
Merged

SoundMatt merged 1 commit into
mainfrom
feat/v2.17.0-deprecation-sweep

Conversation

@SoundMatt

Copy link
Copy Markdown
Owner

Summary

Implements ROADMAP.md milestone 61, "Deprecation Sweep (v2.17.0)" — the first milestone of Phase 16 ("Deprecation & Certification Refresh"), following the Satellite Package Disposition table's already-recorded DEPRECATE call for seven packages with no OPEN Alliance TC18 Remote Control Protocol analog:

  • canbr.hpp / linbr.hpp — CAN/LIN are native RC Server endpoint types (v2.7.0), not bridge targets; the bridge direction these assumed is inverted by the real protocol
  • federation.hpp — multi-HPC lease-based zone-ownership forwarding has no analog; the spec's real multi-client arbitration (root-client/discovery-stream-claim) is architecturally different
  • proxy.hpp — TC18 has no proxy-node concept
  • zonegroup.hpp — the spec's real way to batch targets is packing several ACF messages into one AVTPDU, a different mechanism from fan-out-to-N-zones
  • prioqueue.hpp — its Priority enum is removed; the spec's real priority concept is a fixed server-side execution-priority ordering
  • firmware.hpp — OTA has no analog and is left an application-layer concern

Changes

  • Deleted all seven headers and their dedicated test files
  • tests/CMakeLists.txt: pulled canbr/linbr out of the shared bridge-stub foreach loop (the seven ADAPTed bridges sharing that loop are untouched); removed the five standalone CMake blocks for federation/proxy/zonegroup/prioqueue/firmware
  • tests/test_config.cpp: replaced its incidental proxy::ProxyRegistry dependency (used purely as a generic empty rcp::Registry test double, no proxy-specific behavior under test) with a small local EmptyRegistry double, so config::load coverage and REQ-CFG-* traceability survive without reaching back into a deleted package. rcp/config.hpp itself remains untouched — its own rebind onto the new manifest schema stays a separate, open item.
  • .fusa-reqs.json: pruned the 44 requirement entries backing the deleted packages (REQ-CAN-001..004, REQ-LIN-001..004 — canbr/linbr's own req prefixes, distinct from the native endpoints' REQ-CANEP-*/REQ-LINEP-* — plus REQ-PROXY-*, REQ-FED-*, REQ-ZG-*, REQ-PQ-*, REQ-FW-*). Necessary because cpfusa trace --req-coverage 100 (the same gate CI's cpfusa-trace job enforces) treats a requirement id with no matching source annotation as an uncovered gap. This is a narrow prune of exactly what this milestone orphaned — not the fuller regeneration milestone README's TC18 wire-codec table entries omit the wire-conformance-not-claimed caveat (and byte_bus_id width vs TC18 needs verifying) #62 (Certification Refresh) still owns.
  • version.hpp / CMakeLists.txt PROJECT VERSION bumped to 2.17.0
  • ROADMAP.md: added the milestone's **Done (v2.17.0):** close-out paragraph

Test plan

All verified locally against a full clean build before pushing:

  • cmake --build (Release, C++17) — clean build, no leftover references to the removed headers
  • ctest — 53/53 tests pass (down from 60; the seven removed suites)
  • cpfusa check / lint / cyber — 0 errors (only pre-existing warnings)
  • cpfusa trace --req-coverage 100 — passes (100%, confirmed the prune above was required: without it, coverage drops to 90.9%)
  • RELAY conform --strict against the built cpp-rcp CLI — passes unchanged (this milestone touches no wire-format or CLI-surface code)
  • Grepped the tree for #include references to all seven removed headers — zero remaining outside their own header/test pair

Removes the seven satellite packages the Satellite Package Disposition
table already calls DEPRECATE with no TC18 analog: canbr.hpp, linbr.hpp
(CAN/LIN are native RC Server endpoint types as of v2.7.0, not bridge
targets — the bridge direction these two assumed is inverted by the real
protocol), federation.hpp (multi-HPC lease-based zone forwarding has no
analog; the spec's real multi-client arbitration is the root-client/
discovery-stream-claim mechanism, a different architecture), proxy.hpp
(TC18 has no proxy-node concept — a client addresses a server directly),
zonegroup.hpp (the spec's real way to batch targets is packing several ACF
messages with different byte_bus_ids into one AVTPDU, not fan-out to N
zones), prioqueue.hpp (its Priority enum is removed; the spec's real
priority concept is a fixed server-side execution-priority ordering across
request kinds), and firmware.hpp (OTA has no analog and is left an
application-layer concern). Each header's own dedicated test file is
deleted alongside it, and tests/CMakeLists.txt is updated to match: canbr/
linbr are pulled out of the shared bridge-stub foreach loop (the seven
ADAPTed bridges sharing that loop are untouched), and the five standalone
CMake blocks for federation/proxy/zonegroup/prioqueue/firmware are removed.

tests/test_config.cpp borrowed proxy.hpp purely as a generic empty
rcp::Registry test double (legacy_mock::Registry always pre-populates all
5 zones) — no ProxyController-specific behavior was ever under test. It
now defines its own minimal EmptyRegistry double locally instead, so the
config::load coverage (and its REQ-CFG-* traceability) survives without
reaching back into a deleted package; rcp/config.hpp itself, and its own
still-open rebind onto the new manifest schema, are untouched.

.fusa-reqs.json is pruned of the 44 requirement entries backing the
deleted packages (REQ-CAN-001..004 and REQ-LIN-001..004 — canbr.hpp's and
linbr.hpp's own req prefixes, distinct from the native endpoints' REQ-
CANEP-*/REQ-LINEP-* — plus REQ-PROXY-*, REQ-FED-*, REQ-ZG-*, REQ-PQ-*, and
REQ-FW-*), since cpfusa trace --req-coverage 100 treats any requirement id
with no matching fusa:req/fusa:test source annotation as an uncovered gap.
This is a narrow prune of exactly what this milestone's own deletions
orphaned, not the fuller regeneration milestone #62 (Certification
Refresh) still owns against the complete v2.x requirement set.

version.hpp and CMakeLists.txt PROJECT VERSION move to 2.17.0.

Signed-off-by: Matt <47545907+SoundMatt@users.noreply.github.com>
@SoundMatt
SoundMatt merged commit 454364e into main Jul 29, 2026
20 checks passed
@SoundMatt
SoundMatt deleted the feat/v2.17.0-deprecation-sweep branch July 29, 2026 03:55
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