From 4bddda30f430c5392b608647f6db1430f9ef3cb5 Mon Sep 17 00:00:00 2001 From: Matt Jones <47545907+SoundMatt@users.noreply.github.com> Date: Wed, 19 Aug 2026 16:27:13 -0700 Subject: [PATCH] docs(fusa): [c-RCP-18-tracker Part 1] propagate tc18_master_id for REQ-DISC-*/REQ-L2-*/REQ-UDP-* MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Scoping sweep over cpp-RCP's remaining ~31 unlinked prefixes (ADMIN, AUTH, CAPI, CFG, CLI, DDS, DISC, DL, DOIP, DYN, ERR, FI, GRPC, L2, LOAN, MDNS, MOCK, MQTT, OBS, REC, RED, RELAY, REST, RL, SHMEM, SIM, SOMEIP, TLS, TSN, UDP, UDS), mirroring the scoping exercise go-RCP already completed for its own remaining prefixes. 28 of 31 prefixes confirmed non-TC18 by their own doc comments: integration-shell/protocol-bridge stubs (DDS, DOIP, GRPC, MQTT, REST, SOMEIP, UDS), cross-cutting auxiliary tooling (ADMIN, AUTH, CAPI, CFG, CLI, DL, DYN, FI, LOAN, MDNS, MOCK, OBS, REC, RED, RL, SHMEM, SIM, TLS, TSN), and the RELAY-sentinel error-code shape assertions (ERR, same disposition go-RCP found for its own REQ-ERR-*). 3 prefixes are genuinely TC18-scoped, with mixed outcomes: - REQ-DISC-* (rcp/discovery.hpp): implements TC18 §12.6/§12.6.1/§12.7.4 discovery-request/response framing and stream-contention-claim behavior directly. 8 of 9 requirements linked to previously-unclaimed master-catalog entries (TC18-12.6-002, TC18-12.6-003 x4, TC18-12.6.1-001, TC18-12.6.1-002, TC18-12.7.4-001). REQ-DISC-008 (error-category/diagnostic-message shape assertion) left unlinked — own error-code infra, not spec text, same as the ERR-* disposition. - REQ-L2-* (rcp/l2.hpp): mostly a master-catalog coverage gap — TC18 §10.1 (EtherType 0x22F0 framing) has zero catalog entries (catalog covers only sections 11-13), matching go-RCP's identical finding for its own L2 package. One exception: REQ-L2-007 cites §12.9.1.1 (multi-request-per-frame), which *is* in catalog scope — linked to TC18-12.9.1.1-001. This corrects a pre-existing tc18 citation on REQ-L2-007 that pointed at the wrong TC18.txt line (L3220, a §12.7.7 register table) instead of the actual quote's location (L3617). - REQ-UDP-* (rcp/udp.hpp): same catalog-gap situation as L2 — Annex J UDP/IP encapsulation (§9/§10-ish) is entirely outside the catalog's §11-13 scope. One exception: REQ-UDP-011's byte_bus_id/transaction_num response-correlation logic is a direct, disciplined match for TC18-12.9.1-010's MUST clause, quoted almost verbatim in both. 10 fields added total across 10 requirement entries (one entry, REQ-L2-007, also gets a citation correction). cpp-RCP is now at 123/376 requirements linked (up from 113/376). Verification: CMake+Ninja Release build (0 errors), ctest 53/53 passing, cpfusa check 0 errors/2 warnings/1 info (unchanged from baseline), cpfusa trace coverage 376/376/376/64 (unchanged). Only .fusa-reqs.json touched; no JSON round-trip, targeted text-level edits matching each entry's existing style. Signed-off-by: Matt Jones <47545907+SoundMatt@users.noreply.github.com> Co-Authored-By: Claude Sonnet 5 --- .fusa-reqs.json | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/.fusa-reqs.json b/.fusa-reqs.json index 309e441..9b7b5b0 100644 --- a/.fusa-reqs.json +++ b/.fusa-reqs.json @@ -246,7 +246,9 @@ "text": "rcp::udp::Client::request shall match each inbound response frame to the pending request whose AcfMessageInfo::byte_bus_id and AcfMessageInfo::transaction_num it echoes, so that two outstanding requests with distinct (byte_bus_id, transaction_num) pairs each receive their own response.", "standard": "iso26262", "level": "ASIL-B", - "asil": "ASIL-B" + "asil": "ASIL-B", + "tc18": "§12.9.1 (\"Response(s) and acknowledge(s) are associated to the requests by the byte_bus_id and transaction number.\"), TC18.txt L3610", + "tc18_master_id": "TC18-12.9.1-010" }, { "id": "REQ-UDP-012", @@ -2348,6 +2350,8 @@ "standard": "iso26262", "level": "ASIL-B", "asil": "ASIL-B", + "tc18": "\u00a712.6.1 Table 18 (\"Byte_bus_id 00000000000b\"; \"op 1b (read request)\"), TC18.txt L2746-2758", + "tc18_master_id": "TC18-12.6.1-001", "severity": "cybersecurity" }, { @@ -2357,6 +2361,8 @@ "standard": "iso26262", "level": "ASIL-B", "asil": "ASIL-B", + "tc18": "\u00a712.6.1 (\"AVTPDUs having a TSCF header are dropped without further response, as well as requests in ACF_GBB format.\"), TC18.txt L2743", + "tc18_master_id": "TC18-12.6.1-002", "severity": "cybersecurity" }, { @@ -2366,6 +2372,8 @@ "standard": "iso26262", "level": "ASIL-B", "asil": "ASIL-B", + "tc18": "\u00a712.6 (\"The first discovery request the RC server receives in HW_UNCONFIGURED or HW_CONFIGURED state is used to set the discovery stream from which now on configuration requests will be accepted.\"), TC18.txt L2732-2733", + "tc18_master_id": "TC18-12.6-003", "severity": "cybersecurity" }, { @@ -2375,6 +2383,8 @@ "standard": "iso26262", "level": "ASIL-B", "asil": "ASIL-B", + "tc18": "\u00a712.6 (\"If the RC Server does not receive configuration requests on the stream for a certain time (Discovery_TimeOut) it will drop the discovery stream and is open for a new discovery.\"), TC18.txt L2733-2735", + "tc18_master_id": "TC18-12.6-003", "severity": "cybersecurity" }, { @@ -2384,6 +2394,8 @@ "standard": "iso26262", "level": "ASIL-B", "asil": "ASIL-B", + "tc18": "\u00a712.6 (\"If multiple discovery requests are received from different RC Clients all requests are responded with the server_config map, but only the first one will be allowed as configuration stream.\"), TC18.txt L2735-2737", + "tc18_master_id": "TC18-12.6-003", "severity": "cybersecurity" }, { @@ -2393,6 +2405,8 @@ "standard": "iso26262", "level": "ASIL-B", "asil": "ASIL-B", + "tc18": "\u00a712.6 (\"If others send configuration requests they will be rejected and get an error response.\"), TC18.txt L2736-2737", + "tc18_master_id": "TC18-12.6-003", "severity": "cybersecurity" }, { @@ -2402,6 +2416,8 @@ "standard": "iso26262", "level": "ASIL-B", "asil": "ASIL-B", + "tc18": "\u00a712.7.4 (\"Changes in configuration via a discovery request are no longer allowed.\"), TC18.txt L2879-2880", + "tc18_master_id": "TC18-12.7.4-001", "severity": "cybersecurity" }, { @@ -2420,6 +2436,8 @@ "standard": "iso26262", "level": "ASIL-B", "asil": "ASIL-B", + "tc18": "§12.6 (\"An RC Server may receive a “discovery request” in any state of the life-cycle and shall send a “discovery response” in return.\"), TC18.txt L2731-2732", + "tc18_master_id": "TC18-12.6-002", "severity": "cybersecurity" }, { @@ -3289,7 +3307,8 @@ "standard": "iso26262", "level": "ASIL-B", "asil": "ASIL-B", - "tc18": "\u00a712.9.1.1 (\"An RCP frame may include multiple ACF-types (requests)\"), TC18.txt L3220" + "tc18": "\u00a712.9.1.1 (\"An RCP frame may include multiple ACF-types (requests).\"), TC18.txt L3617", + "tc18_master_id": "TC18-12.9.1.1-001" }, { "id": "REQ-L2-008",