You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Retires the pre-replacement REQ-ZONE-*/REQ-CMD-*/REQ-STATUS-* requirement
groups (20 entries) that milestone 61 explicitly left untouched, and
regenerates HARA.md/.fusa-hara.json, TARA-ANALYSIS.md, CYBERSECURITY.md,
and AUDIT_PACK.md against the full v2.x stream/endpoint/register-map
requirement set, keeping existing OS-*/H-*/SG-*/A-*/T-* IDs stable while
replacing every Zone/Command/Controller-era mechanism reference with the
real v2.x module it now maps to. Adds a new H-011/SG-011 hazard/safety-goal
pair for the E2E CRC mechanism, the roadmap's own stated most
safety-relevant new surface.
Replaces the three formal-verification TLA+ specs (AntiReplayGuard,
HealthStateMachine, WatchdogProtocol), none of which matched any mechanism
actually in this tree, with RxSequenceGuard/CrcSafeStateLatch/
WatchdogSafeState modelling rcp/e2e.hpp's and rcp/watchdog.hpp's actual
primitives — each verified for real with TLC via a checked-in .cfg file,
closing a pre-existing gap where FORMAL_VERIFICATION.md's documented
invocation had no config to load.
version.hpp/CMakeLists.txt bumped to 2.18.0. fmea.*/safety-case.*/tara.*/
sbom.json/audit-pack.zip/etc. are left for release.yml's existing
tag-triggered regeneration rather than hand-edited here.
Signed-off-by: Matt <47545907+SoundMatt@users.noreply.github.com>
Copy file name to clipboardExpand all lines: .fusa-hara.json
+59-31Lines changed: 59 additions & 31 deletions
Original file line number
Diff line number
Diff line change
@@ -2,37 +2,41 @@
2
2
"project": "cpp-RCP",
3
3
"standard": "ISO 26262",
4
4
"createdAt": "2026-06-16T00:00:00Z",
5
-
"updatedAt": "2026-06-16T00:00:00Z",
5
+
"updatedAt": "2026-07-28T00:00:00Z",
6
6
"operationalSituations": [
7
7
{
8
8
"id": "OS-001",
9
-
"description": "Normal vehicle operation \u2014 all zone controllers reachable"
9
+
"description": "Normal operation — the RC Client and every discovered RC Server are reachable"
10
10
},
11
11
{
12
12
"id": "OS-002",
13
-
"description": "Partial network fault \u2014 one or more zone controllers unreachable"
13
+
"description": "Partial network fault — one or more RC Servers unreachable or a request stream lost"
14
14
},
15
15
{
16
16
"id": "OS-003",
17
-
"description": "Safety-critical manoeuvre \u2014 emergency braking or collision avoidance active"
17
+
"description": "Safety-critical manoeuvre — a request is in flight to a safety-relevant endpoint (e.g. a GPIO/CAN endpoint driving a braking-adjacent actuator)"
"description": "RC Client software fault — runaway process, crash, or OOM condition on the HPC"
22
22
},
23
23
{
24
24
"id": "OS-005",
25
-
"description": "Elevated network latency \u2014 congestion, EMI, or hardware degradation"
25
+
"description": "Elevated network latency — congestion, EMI, or hardware degradation on the AVB/TSN segment"
26
26
},
27
27
{
28
28
"id": "OS-006",
29
-
"description": "Adversarial access \u2014 attacker present on the zone Ethernet bus"
29
+
"description": "Adversarial access — attacker present on the Ethernet segment"
30
+
},
31
+
{
32
+
"id": "OS-007",
33
+
"description": "RC Server power-state transition — cold/hot start or a StandBy/Sleep to Normal wake sequence in progress"
30
34
}
31
35
],
32
36
"hazards": [
33
37
{
34
38
"id": "H-001",
35
-
"description": "Loss of command delivery to safety-critical zone (e.g. braking actuator)",
39
+
"description": "Loss of request delivery to a safety-critical endpoint (e.g. a braking-adjacent actuator)",
36
40
"situations": [
37
41
"OS-001",
38
42
"OS-002",
@@ -50,7 +54,7 @@
50
54
},
51
55
{
52
56
"id": "H-002",
53
-
"description": "Spurious command sent to wrong zone controller",
57
+
"description": "Request misaddressed to the wrong endpoint via a stale or corrupted stream_id/byte_bus_id pairing",
54
58
"situations": [
55
59
"OS-001"
56
60
],
@@ -66,7 +70,7 @@
66
70
},
67
71
{
68
72
"id": "H-003",
69
-
"description": "Zone controller watchdog not kicked, leading to unintended reset",
73
+
"description": "Per-stream watchdog not kicked, leading to an unintended safe-state entry or endpoint reset",
70
74
"situations": [
71
75
"OS-001",
72
76
"OS-003"
@@ -83,7 +87,7 @@
83
87
},
84
88
{
85
89
"id": "H-004",
86
-
"description": "Replay of stale commands from a previous drive cycle",
90
+
"description": "Replay or out-of-order re-delivery of a stale request from a previous session",
87
91
"situations": [
88
92
"OS-001",
89
93
"OS-006"
@@ -100,7 +104,7 @@
100
104
},
101
105
{
102
106
"id": "H-005",
103
-
"description": "Zone controller falsely reported as alive when unresponsive",
107
+
"description": "RC Server falsely reported reachable/ready when actually unresponsive",
104
108
"situations": [
105
109
"OS-002",
106
110
"OS-005"
@@ -117,7 +121,7 @@
117
121
},
118
122
{
119
123
"id": "H-006",
120
-
"description": "Priority inversion \u2014 low-priority burst of commands starves a safety-critical CmdWatchdog",
124
+
"description": "Execution-priority inversion — a lower-priority request burst starves a safety-tagged or cancellation request",
121
125
"situations": [
122
126
"OS-001",
123
127
"OS-003",
@@ -136,7 +140,7 @@
136
140
},
137
141
{
138
142
"id": "H-007",
139
-
"description": "Rate limiter blocks watchdog kick during high command burst, causing spurious zone reset",
143
+
"description": "Rate limiter blocks a safety-relevant request during a high-traffic burst, causing a spurious watchdog trip",
140
144
"situations": [
141
145
"OS-001",
142
146
"OS-005"
@@ -154,7 +158,7 @@
154
158
},
155
159
{
156
160
"id": "H-008",
157
-
"description": "Unauthorized command injection via unsecured UDP transport on the zone Ethernet bus",
161
+
"description": "Unauthorized request injection or register-map modification via an unsecured transport, spoofed discovery response, or non-root EP0 write",
158
162
"situations": [
159
163
"OS-006"
160
164
],
@@ -170,10 +174,11 @@
170
174
},
171
175
{
172
176
"id": "H-009",
173
-
"description": "Zone controller not properly woken from sleep, causing loss of actuation during safety manoeuvre",
177
+
"description": "RC Server not properly woken from StandBy/Sleep, causing loss of actuation during a safety manoeuvre",
174
178
"situations": [
175
179
"OS-002",
176
-
"OS-003"
180
+
"OS-003",
181
+
"OS-007"
177
182
],
178
183
"risk": {
179
184
"severity": "S3",
@@ -188,7 +193,7 @@
188
193
},
189
194
{
190
195
"id": "H-010",
191
-
"description": "Fault injection state persists across vehicle power cycles, masking real faults in production",
196
+
"description": "Fault injection state persists across process/power cycles, masking real faults in production",
192
197
"situations": [
193
198
"OS-001",
194
199
"OS-004"
@@ -202,47 +207,65 @@
202
207
"safetyGoals": [
203
208
"SG-009"
204
209
]
210
+
},
211
+
{
212
+
"id": "H-011",
213
+
"description": "Undetected payload corruption bypasses the E2E CRC check, or a stream configured to latch on CRC failure fails to enter or hold safe state",
214
+
"situations": [
215
+
"OS-001",
216
+
"OS-003",
217
+
"OS-005"
218
+
],
219
+
"risk": {
220
+
"severity": "S3",
221
+
"exposure": "E3",
222
+
"controllability": "C2",
223
+
"asil": "ASIL-B"
224
+
},
225
+
"safetyGoals": [
226
+
"SG-011"
227
+
]
205
228
}
206
229
],
207
230
"safetyGoals": [
208
231
{
209
232
"id": "SG-001",
210
-
"description": "Commands to safety-critical zones shall be delivered within the watchdog period or a fault shall be signalled.",
233
+
"description": "Requests to safety-critical endpoints shall be delivered within the configured watchdog period or a fault shall be signalled.",
211
234
"asil": "ASIL-B"
212
235
},
213
236
{
214
237
"id": "SG-002",
215
-
"description": "Commands shall only be processed by the zone they are addressed to; misrouted commands shall be rejected.",
238
+
"description": "Requests shall only be dispatched to the endpoint they are addressed to (stream_id + byte_bus_id); misaddressed requests shall be rejected.",
216
239
"asil": "ASIL-B"
217
240
},
218
241
{
219
242
"id": "SG-003",
220
-
"description": "The watchdog kick command (CmdWatchdog) shall always be deliverable at the configured priority.",
243
+
"description": "A per-stream watchdog kick shall be recorded for every accepted inbound request, regardless of request kind or safety tag.",
221
244
"asil": "ASIL-B"
222
245
},
223
246
{
224
247
"id": "SG-004",
225
-
"description": "Replayed or duplicated commands from prior sessions shall be detected and rejected.",
248
+
"description": "A request stream configured with rx_enforce_seq shall reject any sequence number that is not strictly greater than the last accepted one.",
226
249
"asil": "ASIL-B"
227
250
},
228
251
{
229
-
"id": "SG-007",
230
-
"description": "A zone controller that stops publishing Status shall be detected as dead within the configured deadline.",
252
+
"id": "SG-005",
253
+
"description": "Cancellation and triggered requests shall never be delayed by a standard or compound request queued earlier on the same stream.",
231
254
"asil": "ASIL-B"
232
255
},
233
256
{
234
-
"id": "SG-005",
235
-
"description": "Priority::Critical commands shall never be delayed by Priority::Normal or Priority::High commands queued earlier.",
257
+
"id": "SG-006",
258
+
"description": "Transport authentication (mTLS on the UDP/IP variant, or link-layer authentication on native Ethernet) and per-endpoint access policy shall be enforced on every external RC Server connection.",
236
259
"asil": "ASIL-B"
237
260
},
238
261
{
239
-
"id": "SG-006",
240
-
"description": "Transport authentication (mTLS or equivalent) shall be enforced on all external zone controller connections.",
262
+
"id": "SG-007",
263
+
"description": "An RC Server that stops responding shall be detected as unreachable within the configured liveness deadline.",
241
264
"asil": "ASIL-B"
242
265
},
243
266
{
244
267
"id": "SG-008",
245
-
"description": "A zone controller shall only be declared operational after a successful Wake command response.",
268
+
"description": "An RC Server shall only be treated as operational after its lifecycle state machine reports RCP_CONFIGURED following a successful wake sequence.",
246
269
"asil": "ASIL-B"
247
270
},
248
271
{
@@ -252,8 +275,13 @@
252
275
},
253
276
{
254
277
"id": "SG-010",
255
-
"description": "Zone controller health state transitions shall be deterministically derivable from observable send() outcomes alone.",
278
+
"description": "A stream's watchdog/safe-state status shall be deterministically derivable from its own kick/overflow/latch history alone.",
279
+
"asil": "ASIL-B"
280
+
},
281
+
{
282
+
"id": "SG-011",
283
+
"description": "A request whose computed E2E CRC does not match its received trailer shall be rejected, and a stream configured with rx_enforce_e2e shall latch safe state on the first such failure until explicitly reset.",
0 commit comments