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
{{ message }}
Repository navigation
Commit 37043e8
Browse filesBrowse the repository at this point in the historyBrowse files
[rules score] link root causes directly to failure modes
- `safety_analysis` exports `TrlcProviderInfo` (fta_events + failure
modes); AoU files with `root_causes` go to `assumptions_of_use` deps
and to `safety_analysis(safetymeasures=...)` for coverage
Copy file name to clipboardExpand all lines: .github/skills/score-safety-analysis/SKILL.md
+12-5Lines changed: 12 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -159,7 +159,7 @@ $RootCause("<Root cause label 2>", "<RootCauseAlias2>", "OG1")
159
159
|`$TransferInGate(name, alias, connection)`| Link to sub-tree | parent alias |
160
160
161
161
**Rules:**
162
-
-`$RootCause` alias is a plain identifier; the `puml_cli` FTA parser auto-generates a `fta_events.trlc` stub (imported as `<name>_fta`) containing a `RootCause` record named after that alias — `Mitigation`/`CompReq`/`AoU` records reference it explicitly (e.g. `root_causes = [sample_safety_analysis_fta.JustBadLuck]`); there is no implicit name-matching.
162
+
-`$RootCause` alias is a plain identifier; the `puml_cli` FTA parser auto-generates a `fta_events.trlc` stub (imported as `<name>_fta`) containing a `RootCause` record named after that alias (its `failure_modes` lists the `FailureMode`s of the tree's `$FailureMode` root) — `Mitigation`/`CompReq`/`AoU` records reference it explicitly (e.g. `root_causes = [sample_safety_analysis_fta.JustBadLuck]`); there is no implicit name-matching.
163
163
- Build top-down in the file: `$FailureMode` first, then gates, then `$RootCause` leaves.
164
164
- The same `$RootCause` alias may appear in multiple FTAs (shared root cause).
165
165
-`$OrGate` is the default for independent root causes; use `$AndGate` only when all causes must co-occur.
-`ScoreReq.CompReq` — closes it via `derived_from`, referencing the `RootCause` stub alongside any `FeatReq`/`AssumedSystemReq`/`AoU` it also derives from
185
-
-`ScoreReq.AoU` — assumption the caller must satisfy; does **not** extend `SafetyMeasure` and has its own independent, optional `root_causes` field (no `justification` required)
184
+
-`ScoreReq.CompReq` — closes it via `derived_from`, referencing the `RootCause` stub alongside any `FeatReq`/`AssumedSystemReq` it also derives from. An `AoU` in `derived_from` is only for an AoU **received** from another dependable element; the element's own AoUs are never a `derived_from` source
185
+
-`ScoreReq.AoU` — own assumption the caller must satisfy; does **not** extend `SafetyMeasure` and has its own independent, optional `root_causes` field (no `justification` required)
186
186
187
-
**Rule:** every `$RootCause` alias must be referenced by at least one `Mitigation.root_causes`, `CompReq.derived_from`, or `AoU.root_causes` — this is validated by `bazel test` on the owning `dependability_analysis` target.
187
+
**Rule:** every `$RootCause` alias must be referenced by at least one `Mitigation.root_causes`, `CompReq.derived_from`, or `AoU.root_causes`. This is checked by lobster in the traceability report of the enclosing `dependable_element` (Root Causes are covered via the Safety Measures level **or** the Component Requirements level; uncovered ones are reported as `missing reference to Component Requirements or Safety Measures`, and fail `bazel test <dependable_element>` with `maturity = "release"`). Only files passed as `safety_analysis.safetymeasures` form the Safety Measures level, so an AoU file with `root_causes` must be listed there **and** the `assumptions_of_use` target must list the `safety_analysis` target in `deps` (the generated `<fta_package>` package resolves only through it). Every AoU in a `safetymeasures` file must reference a root cause, otherwise it is reported as `missing up reference`; keep AoUs without `root_causes` in a separate file passed only to `assumptions_of_use`:
|`$FailureMode` fm1..fm8 argument does not match any TRLC record | Ensure `<Pkg>.<RecordName>` is spelled identically in both places |
224
229
| A root cause (`$RootCause`) is not referenced by any `Mitigation`/`CompReq`/`AoU`| Add an explicit reference to the generated `<fta_package>.<Alias>``RootCause` stub |
225
230
| New `.puml` not in BUILD `fta_files`| Add the file path to the `srcs` list |
226
-
| AoU added to `safetymeasures.trlc`| AoUs belong in `aous.trlc`; `AoU` does not extend `SafetyMeasure`, it has its own independent `root_causes` field |
231
+
| AoU added to `safetymeasures.trlc`| AoUs belong in `aous.trlc`; `AoU` does not extend `SafetyMeasure`, it has its own independent `root_causes` field. If the AoU closes a root cause, pass `aous.trlc` as `safety_analysis.safetymeasures` (coverage) and add the `safety_analysis` target to `assumptions_of_use.deps`|
232
+
|`CompReq.derived_from` references an own `AoU`| Only AoUs received from another dependable element belong there; own AoUs close root causes via `AoU.root_causes`|
233
+
| Unknown symbol `<fta_package>` when parsing `aous.trlc`| Add the `safety_analysis` target to the `assumptions_of_use``deps`|
227
234
| Wrong RSL used for trlc validation | Always pass the tooling RSL as the first directory argument |
This requires importing the AoU's package and listing the
280
+
The element's own AoUs are never a ``derived_from`` source. This requires
281
+
importing the AoU's package and listing the
281
282
``assumptions_of_use`` target that defines it directly in this target's
282
283
``deps`` — see :doc:`user_guide/assumptions_of_use`.
283
284
@@ -314,7 +315,7 @@ Conditions that the *integrating project* must fulfil when using this SEooC.
314
315
* - ``deps``
315
316
- label list
316
317
- no
317
-
- Other requirement targets (``TrlcProviderInfo``) needed for cross-reference parsing (default ``[]``)
318
+
- Other requirement targets (``TrlcProviderInfo``) needed for cross-reference parsing (default ``[]``). List the ``safety_analysis`` target when an ``AoU`` references its generated ``<fta_package>.<RootCause>`` records.
318
319
* - ``ref_package``
319
320
- string
320
321
- no
@@ -574,7 +575,9 @@ documentation target.
574
575
- string
575
576
- no
576
577
- TRLC package name for the generated ``fta_events.trlc`` stub (the
577
-
``FtaFailureMode``/``RootCause`` records derived from ``root_causes``).
578
+
``RootCause`` records derived from ``root_causes``). The target
579
+
exports it (plus ``failuremodes``) as ``TrlcProviderInfo``, so other
580
+
targets such as ``assumptions_of_use`` can list it in ``deps``.
578
581
Defaults to a sanitized form of ``name`` with a ``_fta`` suffix.
579
582
* - ``arch_design``
580
583
- label
@@ -619,10 +622,6 @@ Running ``bazel test`` validates the full FMEA traceability chain.
619
622
- label list
620
623
- no
621
624
- ``safety_analysis`` targets to include in this analysis (default ``[]``)
622
-
* - ``measures``
623
-
- label list
624
-
- no
625
-
- Additional ``Mitigation``/``AoU``/``CompReq`` ``.trlc`` files not scoped to a single ``safety_analysis`` target, considered for the root-cause-coverage completeness check (default ``[]``)
0 commit comments