diff --git a/.fusa-reqs.json b/.fusa-reqs.json index e73370e..be7148c 100644 --- a/.fusa-reqs.json +++ b/.fusa-reqs.json @@ -2524,7 +2524,8 @@ "standard": "iso26262", "level": "ASIL-B", "asil": "ASIL-B", - "scope": "tc18" + "scope": "tc18", + "tc18": "§12.3's Table 32 (\"0x0002.0 ep_enable ... indicating if the endpoint is enabled to executed requests from its request storage\"), TC18.txt L3900-3905" }, { "id": "REQ-SRV-002", @@ -2533,7 +2534,8 @@ "standard": "iso26262", "level": "ASIL-B", "asil": "ASIL-B", - "scope": "tc18" + "scope": "tc18", + "tc18": "§12.3's Table 32 (\"0x0002.0 ep_enable ... indicating if the endpoint is enabled to executed requests from its request storage\"), TC18.txt L3900-3905" }, { "id": "REQ-SRV-003", @@ -2542,7 +2544,8 @@ "standard": "iso26262", "level": "ASIL-B", "asil": "ASIL-B", - "scope": "tc18" + "scope": "tc18", + "tc18": "§12.3's Table 32 (\"0x0002.0 ep_enable ... indicating if the endpoint is enabled to executed requests from its request storage\"), TC18.txt L3900-3905" }, { "id": "REQ-LIFECYCLE-021", @@ -7847,7 +7850,8 @@ "standard": "iso26262", "level": "ASIL-B", "asil": "ASIL-B", - "scope": "tc18" + "scope": "tc18", + "tc18": "§12.9.1.1 (\"An RC Server shall support to handle multiple requests in one frame and check each of them individually if to be processed or not\"), TC18.txt L3221-3224; request_type identifiers per §11.2.2 Table 5, TC18.txt L1186-1199" }, { "id": "REQ-SRV-005", @@ -7856,7 +7860,8 @@ "standard": "iso26262", "level": "ASIL-B", "asil": "ASIL-B", - "scope": "tc18" + "scope": "tc18", + "tc18": "§12.9.1.1 (\"An RC Server shall support to handle multiple requests in one frame and check each of them individually if to be processed or not\"), TC18.txt L3221-3224; request_type identifiers per §11.2.2 Table 5, TC18.txt L1186-1199; UNSUPPORTED_CMD error-code basis per §11.2.2.1/.2's own optional-feature-not-supported rule, TC18.txt L1204-1205, L1300-1301" }, { "id": "REQ-SRV-006", @@ -7865,7 +7870,8 @@ "standard": "iso26262", "level": "ASIL-B", "asil": "ASIL-B", - "scope": "tc18" + "scope": "tc18", + "tc18": "§12.9.2 (\"Whenever an Endpoint is able to start a new request, it shall check for all requests in the EP request storage whether they are due for execution\" ... priority list: 1. cancellation 2. triggered 3. timed 4. compound 5. compound wait 6. chained 7. standard), TC18.txt L3248-3266" }, { "id": "REQ-SRV-007", @@ -7874,7 +7880,8 @@ "standard": "iso26262", "level": "ASIL-B", "asil": "ASIL-B", - "scope": "tc18" + "scope": "tc18", + "tc18": "§12.9.2 (\"Whenever an Endpoint is able to start a new request, it shall check for all requests in the EP request storage whether they are due for execution\" ... priority list: 1. cancellation 2. triggered 3. timed 4. compound 5. compound wait 6. chained 7. standard), TC18.txt L3248-3266; safety-tagged (MSB-set) requests staying in the store until the endpoint's safe state per §11.2.2, TC18.txt L1189-1191 (already implemented as REQ-E2E-012/013's e2e.h gate, rcp_e2e_request_may_execute())" }, { "id": "REQ-SRV-008", @@ -7883,7 +7890,8 @@ "standard": "iso26262", "level": "ASIL-B", "asil": "ASIL-B", - "scope": "tc18" + "scope": "tc18", + "tc18": "§12.9.2 (\"When two or more requests with the same priority are due then starting the execution shall happen in the order with which the requests arrived in the EP request storage.\"), TC18.txt L3265-3266" }, { "id": "REQ-SRV-009", @@ -7892,7 +7900,8 @@ "standard": "iso26262", "level": "ASIL-B", "asil": "ASIL-B", - "scope": "tc18" + "scope": "tc18", + "tc18": "§12.9.3 Table 26 (execution procedure per request type -- compound/compound-wait sequencer-state advance and repeat_count decrement, triggered request's exec_delay-from-threshold timing), TC18.txt L3282-3341" }, { "id": "REQ-SRV-010", @@ -7901,7 +7910,8 @@ "standard": "iso26262", "level": "ASIL-B", "asil": "ASIL-B", - "scope": "tc18" + "scope": "tc18", + "tc18": "§12.9.3 Table 26 (execution procedure per request type -- compound/compound-wait sequencer-state advance and repeat_count decrement, triggered request's exec_delay-from-threshold timing), TC18.txt L3282-3341 -- repeat_count 0xFFFF-infinite / zero-removes-on-finalize rule shared with Table 6/7, TC18.txt L1268-1271, L1385-1388" }, { "id": "REQ-SRV-011", @@ -7910,7 +7920,8 @@ "standard": "iso26262", "level": "ASIL-B", "asil": "ASIL-B", - "scope": "tc18" + "scope": "tc18", + "tc18": "§12.9.3 Table 26 (execution procedure per request type -- compound/compound-wait sequencer-state advance and repeat_count decrement, triggered request's exec_delay-from-threshold timing), TC18.txt L3282-3341 (Triggered request row: \"Upon entering RS state the counted number of received trigger signals is reset to zero and newly arriving trigger signals are counted from zero\"), TC18.txt L3298-3300" }, { "id": "REQ-SRV-012", @@ -7919,7 +7930,8 @@ "standard": "iso26262", "level": "ASIL-B", "asil": "ASIL-B", - "scope": "tc18" + "scope": "tc18", + "tc18": "§11.2.2.4 (\"the second and following requests always wait on the predecessor request to finish its execution\"), TC18.txt L3283-3286 (chapter reference); worked description at TC18.txt L1514-1516" }, { "id": "REQ-SRV-013", @@ -7928,7 +7940,8 @@ "standard": "iso26262", "level": "ASIL-B", "asil": "ASIL-B", - "scope": "tc18" + "scope": "tc18", + "tc18": "§11.2.3.1/.2 clear-all/clear-single cancellation request handling, TC18.txt L1681, L1735-1738, L1794 (established Phase 1 basis, issue #163)" }, { "id": "REQ-SRV-014", @@ -7937,7 +7950,8 @@ "standard": "iso26262", "level": "ASIL-B", "asil": "ASIL-B", - "scope": "tc18" + "scope": "tc18", + "tc18": "watch-dog-overflow queue-clearing rule for non-safety-tagged conditional requests (\"compound requests with 0x0F will be cleared from the queue while the requests with 0x8F remain active after watch-dog overflow\"), TC18.txt L1231-1234, L1330-1332 (compound-wait analogue)" }, { "id": "REQ-MOCK-021", @@ -9415,7 +9429,8 @@ "standard": "iso26262", "level": "ASIL-B", "asil": "ASIL-B", - "scope": "tc18" + "scope": "tc18", + "tc18": "§12.9.2 (\"Each endpoint receives request via its dedicated EP request storage.\"), TC18.txt L3193" }, { "id": "REQ-SRV-022", diff --git a/.fusa.json b/.fusa.json index 0b56465..d6179ee 100644 --- a/.fusa.json +++ b/.fusa.json @@ -2,7 +2,7 @@ "configVersion": "1.0", "project": { "name": "c-RCP", - "version": "0.138.0" + "version": "0.139.0" }, "standard": "iso26262", "strict": false, diff --git a/CHANGELOG.md b/CHANGELOG.md index e205058..c32dca7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -32,6 +32,19 @@ the rationale. ## Releases +### v0.139.0 -- 2026-08-07 + +**Citation backfill, batch 19: SRV.** Issue #164. Cited all 15 +remaining uncited requirements for `server.c`'s request-storage/ +admission/priority-scheduling/completion core against TC18 §12.9.1's +request handling, §12.9.2's seven-tier priority-in-execution ordering, +and §12.9.3 Table 26's per-request-type execution procedure -- SRV is +now 100% cited. Also records that PWR (`powerstate.c`) was scoped and +rejected as a batch candidate: a thin client-side wrapper with no +distinct TC18 text of its own. See `ROADMAP.md` milestone 139 for full +detail. 1028 requirements (unchanged), 100% traced+tested, 0 +`cfusa check` errors. + ### v0.138.0 -- 2026-08-07 **Citation backfill, batch 18: WAKEUP.** Issue #164. Cited 13 of 16 diff --git a/CMakeLists.txt b/CMakeLists.txt index 79b098c..a720531 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,7 +1,7 @@ cmake_minimum_required(VERSION 3.16) project(c-rcp - VERSION 0.138.0 + VERSION 0.139.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 41c1c27..9bba118 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -6845,3 +6845,56 @@ were genuinely uncited before writing anything. Purely additive; no code or test changed. 1028 requirements (unchanged count), 100% traced+tested, 0 `cfusa check` errors. + +### 139. Citation backfill, batch 19: SRV (issue #164) (v0.139.0) + +Nineteenth batch. `server.c`/`server.h` -- the RC Server's per-endpoint +request-storage/admission/priority-scheduling/completion core, 15/22 +uncited going in. Before committing, this batch's scoping pass first +checked PWR (`powerstate.c`, 15 uncited) and found it a thin +client-side convenience wrapper over already-cited primitives +(ep_wakeup.h + power.h) with no TC18 text of its own -- rejected as a +batch candidate, same reasoning as batch 18's MDIO rejection. SRV, by +contrast, sits at the heart of TC18's own request-handling model and +has the richest single-batch TC18 basis of the session: §12.9.1/ +§12.9.1.1's request-handling and multi-request-per-frame admission +rules, §12.9.2's priority-in-execution ordering (cancellation > +triggered > timed > compound > compound-wait > chained > standard, +plus same-priority FIFO tiebreak), and §12.9.3 Table 26's per- +request-type execution procedure, which maps almost line for line onto +`rcp_server_endpoint_complete()`'s own per-kind tick/repeat_count +switch. + +Cited all 15 of the 15 uncited `REQ-SRV-*` requirements -- SRV is now +100% cited. Highlights: the pre-load-then-drain-on-enable queue +(`REQ-SRV-001`-`003`) against Table 32's `ep_enable` common field; +multi-request admission/rejection (`REQ-SRV-004`-`005`) against +§12.9.1.1's per-request accept/reject rule and Table 5's request_type +identifiers; the full priority-selection function +(`REQ-SRV-006`-`008`) against §12.9.2's seven-tier ordering, the +safety-tagged persistence rule (cross-referencing the already-cited +`REQ-E2E-012`/`013` e2e.h gate this function calls), and the FIFO +tiebreak; completion (`REQ-SRV-009`-`010`) and trigger-occurrence +recording (`REQ-SRV-011`) against Table 26's compound/compound-wait/ +triggered rows; chain-predecessor marking (`REQ-SRV-012`) against +§11.2.2.4's "the second and following requests always wait on the +predecessor request to finish its execution" rule; cancellation +(`REQ-SRV-013`) reusing Phase 1's already-established §11.2.3.1/.2 +basis; watchdog purge (`REQ-SRV-014`) against the 0x0F-cleared/ +0x8F-remains-active watch-dog-overflow rule already used for CMP; and +the pending-count getter (`REQ-SRV-021`) against §12.9.2's own "EP +request storage" framing. + +One citation-text error caught and fixed during scoping (before any +edit was written): `rcp_e2e_request_may_execute()` was initially +attributed to `REQ-E2E-014` by proximity guess; a direct grep against +`src/e2e.c`'s own tags showed it is actually `REQ-E2E-012`/`013` -- +corrected before the citation script ran. Always verify a +cross-reference's req-id against the real source tag, never infer it +from nearby line numbers. + +Used the pre-flight citation-target check -- confirmed all 15 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 7c38de6..c8b060c 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.138.0" +#define RCP_VERSION "0.139.0" #endif /* RCP_VERSION_H */