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
[rules score] add tool requirements and documentation for AoU forwarding
Tool requirements (TRLC):
- Add Forward_AoU_To_Dependees use case
- Add potential errors: AoU_Silently_Dropped, Invalid_Forwarding_YAML_Accepted
- Add tool requirements: Forward_Own_AoUs_To_Dependees,
Chain_Forward_Received_AoUs, Reject_Unknown_AoU_In_Forwarding_YAML,
Include_Forwarded_AoUs_In_Traceability
User documentation:
- Extend requirements.md with AoU Forwarding section explaining both
automatic and chain-forwarding mechanisms
- Add aou_forwarding attribute to dependable_element in rule_reference.rst
- Add Forwarded AoUs to the dependable element concept in general.md
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copy file name to clipboardExpand all lines: bazel/rules/rules_score/docs/rule_reference.rst
+4Lines changed: 4 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -625,6 +625,10 @@ and scope checks at build/test time.
625
625
- label list
626
626
- no
627
627
- Other ``dependable_element`` targets for cross-referencing and HTML merging (default ``[]``)
628
+
* - ``aou_forwarding``
629
+
- label
630
+
- no
631
+
- A YAML file selecting which *received* AoUs to chain-forward to elements that depend on this one. Each entry requires an ``aou_id`` and a ``justification``. Own AoUs (from ``assumptions_of_use``) are always forwarded automatically.
Copy file name to clipboardExpand all lines: bazel/rules/rules_score/docs/user_guide/requirements.md
+53Lines changed: 53 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -129,6 +129,59 @@ ScoreReq.AoU AOU_001 {
129
129
}
130
130
```
131
131
132
+
### AoU Forwarding
133
+
134
+
When a dependable element depends on another via `deps`, all **assumptions of use** defined by the dependency are automatically forwarded to the dependee. This ensures the integrating project is made aware of every condition it must satisfy — even those originating from transitive dependencies.
135
+
136
+
There are two forwarding mechanisms:
137
+
138
+
**Automatic forwarding (own AoUs)**
139
+
All AoUs declared in a dependable element's `assumptions_of_use` attribute are automatically forwarded to every element that lists it in `deps`. No configuration is needed.
140
+
141
+
**Chain-forwarding (received AoUs)**
142
+
When a dependable element receives forwarded AoUs from its own dependencies, it can selectively forward them further by providing an `aou_forwarding` YAML file. Each entry requires a mandatory justification explaining *why* this AoU is forwarded rather than handled locally:
143
+
144
+
```yaml
145
+
# aou_forwarding.yaml
146
+
forwarded_aous:
147
+
- aou_id: "OtherLibrary.TimingConstraint"
148
+
justification: >
149
+
This timing constraint originates from the underlying library and
150
+
must be satisfied by the final system integrator who controls scheduling.
151
+
```
152
+
153
+
**Handling forwarded AoUs in the dependee**
154
+
Forwarded AoUs appear as a "Forwarded AoUs" tier in the dependee's lobster traceability report. The dependee must handle each forwarded AoU by one of:
155
+
156
+
- Linking it to a component requirement that addresses the assumption
157
+
- Linking it to a test that verifies the assumption is met
158
+
- Chain-forwarding it further (with justification) to its own dependees
159
+
160
+
If a forwarded AoU is not handled, the `bazel test` traceability check will fail.
161
+
162
+
**Example: three-level forwarding chain**
163
+
164
+
```
165
+
other_seooc → defines AoU: TimingConstraint
166
+
↑ (deps)
167
+
middle_seooc → auto-forwards TimingConstraint
168
+
- also chain-forwards it via aou_forwarding.yaml
169
+
↑ (deps)
170
+
integrator_seooc → receives TimingConstraint, must handle it
171
+
```
172
+
173
+
```{code-block} starlark
174
+
:caption: middle_seooc/BUILD
175
+
176
+
dependable_element(
177
+
name = "middle_seooc",
178
+
assumptions_of_use = [":my_aous"],
179
+
aou_forwarding = "aou_forwarding.yaml",
180
+
deps = ["//other:other_seooc"],
181
+
...
182
+
)
183
+
```
184
+
132
185
## Allocation of Requirements to Architectural Elements
133
186
134
187
Requirements are allocated to architectural elements differently depending on their level:
0 commit comments