From 4ea0ffd2c0bb07390690e94f6d8f5618af24c2ae Mon Sep 17 00:00:00 2001 From: Matt <47545907+SoundMatt@users.noreply.github.com> Date: Fri, 7 Aug 2026 13:50:27 -0700 Subject: [PATCH] docs: v0.142.0 -- citation backfill batch 22: CHAIN (issue #164) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cited 8/9 remaining uncited REQ-CHAIN-* requirements against TC18 §11.2.2.4's Figure 11 chained-request wire format, the no-predecessor CHAIN_ERROR rule, the cs-bit-driven CHAIN_ABORTED rule, and the reserved-octet rejection rule. One id-mapping error (REQ-CHAIN-002 vs the actually-uncited REQ-CHAIN-001) caught and fixed by the pre-flight check before any edit ran. Purely additive; no code or test behavior changed. 1028 requirements (unchanged count), 100% traced+tested, 0 cfusa check errors. Signed-off-by: Matt <47545907+SoundMatt@users.noreply.github.com> --- .fusa-reqs.json | 24 ++++++++++++++++-------- .fusa.json | 2 +- CHANGELOG.md | 9 +++++++++ CMakeLists.txt | 2 +- ROADMAP.md | 36 ++++++++++++++++++++++++++++++++++++ include/rcp/version.h | 2 +- 6 files changed, 64 insertions(+), 11 deletions(-) diff --git a/.fusa-reqs.json b/.fusa-reqs.json index 0be9114..481abb5 100644 --- a/.fusa-reqs.json +++ b/.fusa-reqs.json @@ -5402,7 +5402,8 @@ "standard": "iso26262", "level": "ASIL-B", "asil": "ASIL-B", - "scope": "tc18" + "scope": "tc18", + "tc18": "§11.2.2.4 Figure 11 / field table (GBB for chained requests: request_type=0x01, reserved octets, chain_exec_delay, cs), TC18.txt L1503-1560; general ACF_GBB frame-validation basis" }, { "id": "REQ-CHAIN-004", @@ -5421,7 +5422,8 @@ "standard": "iso26262", "level": "ASIL-B", "asil": "ASIL-B", - "scope": "tc18" + "scope": "tc18", + "tc18": "§11.2.2 (\"conditional requests are sent using ACF_GBB having mtv = 0 (time stamp not valid) and using the bytes of the message_timestamp field to convey the execution condition\"), TC18.txt L1186-1189; general ACF_GBB frame-validation basis" }, { "id": "REQ-CHAIN-006", @@ -5430,7 +5432,8 @@ "standard": "iso26262", "level": "ASIL-B", "asil": "ASIL-B", - "scope": "tc18" + "scope": "tc18", + "tc18": "§11.2.2 (\"conditional requests are sent using ACF_GBB having mtv = 0 (time stamp not valid) and using the bytes of the message_timestamp field to convey the execution condition\"), TC18.txt L1186-1189" }, { "id": "REQ-CHAIN-007", @@ -5439,7 +5442,8 @@ "standard": "iso26262", "level": "ASIL-B", "asil": "ASIL-B", - "scope": "tc18" + "scope": "tc18", + "tc18": "§11.2.2 Table 5 (\"0x01\" -> \"Chained\"), TC18.txt L1186-1199" }, { "id": "REQ-CHAIN-008", @@ -5448,7 +5452,8 @@ "standard": "iso26262", "level": "ASIL-B", "asil": "ASIL-B", - "scope": "tc18" + "scope": "tc18", + "tc18": "§11.2.2.4 (\"If the first request in an AVTPDU is a chain request, then there is no predecessor to chain to, thus the entire chain will be ignored. An error response with the error code 'CHAIN_ERROR' to each request will be generated\"), TC18.txt L1518-1521" }, { "id": "REQ-CHAIN-009", @@ -5457,7 +5462,8 @@ "standard": "iso26262", "level": "ASIL-B", "asil": "ASIL-B", - "scope": "tc18" + "scope": "tc18", + "tc18": "§11.2.2.4 (\"cs ... 1b: request will not be executed in case the previous request returned an error, as a consequence the remainder of the chain is not executed, and the request send an error response with error code = CHAIN_ABORTED\"), TC18.txt L1555-1560" }, { "id": "REQ-CHAIN-010", @@ -7848,7 +7854,8 @@ "standard": "iso26262", "level": "ASIL-B", "asil": "ASIL-B", - "scope": "tc18" + "scope": "tc18", + "tc18": "§11.2.2.4 (\"chain_exec_delay: Execution delay in multiples of ep_delay_time... for the request execution after the previous request has been finalized.\"), TC18.txt L1550-1551" }, { "id": "REQ-CHAIN-012", @@ -7857,7 +7864,8 @@ "standard": "iso26262", "level": "ASIL-B", "asil": "ASIL-B", - "scope": "tc18" + "scope": "tc18", + "tc18": "§11.2.2.4 (\"reserved: All bits shall be written as 0, else the request will be rejected\" / \"...shall be rejected\"), TC18.txt L1549, L1552" }, { "id": "REQ-SRV-004", diff --git a/.fusa.json b/.fusa.json index 3818617..c7937c3 100644 --- a/.fusa.json +++ b/.fusa.json @@ -2,7 +2,7 @@ "configVersion": "1.0", "project": { "name": "c-RCP", - "version": "0.141.0" + "version": "0.142.0" }, "standard": "iso26262", "strict": false, diff --git a/CHANGELOG.md b/CHANGELOG.md index 0afa2da..39ae4eb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -32,6 +32,15 @@ the rationale. ## Releases +### v0.142.0 -- 2026-08-07 + +**Citation backfill, batch 22: CHAIN.** Issue #164. Cited 8 of 9 +remaining uncited chained-request requirements against TC18 +§11.2.2.4's Figure 11 wire format, the no-predecessor CHAIN_ERROR +rule, the cs-bit-driven CHAIN_ABORTED rule, and the reserved-octet +rejection rule. See `ROADMAP.md` milestone 142 for full detail. 1028 +requirements (unchanged), 100% traced+tested, 0 `cfusa check` errors. + ### v0.141.0 -- 2026-08-07 **Citation backfill, batch 21: TRIG.** Issue #164. Cited 8 of 9 diff --git a/CMakeLists.txt b/CMakeLists.txt index 05ec879..ef52df9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,7 +1,7 @@ cmake_minimum_required(VERSION 3.16) project(c-rcp - VERSION 0.141.0 + VERSION 0.142.0 DESCRIPTION "OPEN Alliance TC18 Remote Control Protocol (C)" HOMEPAGE_URL "https://github.com/SoundMatt/c-RCP" LANGUAGES C diff --git a/ROADMAP.md b/ROADMAP.md index 4b95d27..fb9415b 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -6953,3 +6953,39 @@ were genuinely uncited before writing anything. Purely additive; no code or test changed. 1028 requirements (unchanged count), 100% traced+tested, 0 `cfusa check` errors. + +### 142. Citation backfill, batch 22: CHAIN (issue #164) (v0.142.0) + +Twenty-second batch. `request_chained.c`/`request_chained.h`, 9/12 +uncited going in. One id-mapping error caught and fixed before +running the citation script this batch: initially drafted a citation +for `REQ-CHAIN-002`, but the live field-presence scan showed it was +already cited (`REQ-CHAIN-001`, the `strerror()` requirement, was the +one actually uncited and correctly left that way) -- corrected the +target list before writing anything, the pre-flight check's purpose +working exactly as intended. + +Cited 8 of the 9 uncited `REQ-CHAIN-*` requirements: member encode +(`REQ-CHAIN-003`) and decode validation (`REQ-CHAIN-005`-`007`) +against §11.2.2.4's Figure 11 chained-request wire format +(request_type=0x01, reserved octets, chain_exec_delay, cs) and the +shared §11.2.2 mtv=0-repurposing intro + Table 5's `0x01` opcode; the +no-predecessor CHAIN_ERROR rule (`REQ-CHAIN-008`) against "If the +first request in an AVTPDU is a chain request, then there is no +predecessor to chain to, thus the entire chain will be ignored. An +error response with the error code 'CHAIN_ERROR'..."; the cs-bit-driven +CHAIN_ABORTED rule (`REQ-CHAIN-009`) against the cs field's own two- +value definition; exec-delay elapsing (`REQ-CHAIN-011`) against +chain_exec_delay's own field description; and the reserved-octet +rejection rule (`REQ-CHAIN-012`) against "All bits shall be written as +0, else the request will be rejected" (appearing twice for the two +reserved octet groups). + +Left uncited, deliberately: `REQ-CHAIN-001` (`strerror()` uniqueness) +-- the same implementation-detail pattern as every prior batch. + +Used the pre-flight citation-target check -- confirmed all 8 targets +were genuinely uncited before writing anything. + +Purely additive; no code or test changed. 1028 requirements (unchanged +count), 100% traced+tested, 0 `cfusa check` errors. diff --git a/include/rcp/version.h b/include/rcp/version.h index 5c00527..3814a0f 100644 --- a/include/rcp/version.h +++ b/include/rcp/version.h @@ -6,6 +6,6 @@ #ifndef RCP_VERSION_H #define RCP_VERSION_H -#define RCP_VERSION "0.141.0" +#define RCP_VERSION "0.142.0" #endif /* RCP_VERSION_H */