Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -26,3 +26,4 @@ __pycache__/

# bug: This file is created in repo root on test discovery.
/consumer_test.log
/.clwb
38 changes: 38 additions & 0 deletions docs/internals/extensions/metamodel.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,44 @@ extensions = [
]
```

## SEooC Traceability and AoU Linking
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So far the metamodel is not described at all in docs-as-code, thats the first element which has a description. If thats something we should have, this seems like a good start. But if not, then we dont need this either.

@MaximilianSoerenPollak @a-zw

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That makes no sense to me. Such documentation belongs into the process docs. Repeating it here just invites trouble via inconsistencies.

Undo all the changes in this file.


### Overview
Safety Element Out of Context (SEooC) development requires comprehensive traceability across three dimensions:
1. **Requirements** (what must be done)
2. **Architecture** (how it's structured)
3. **Verification** (proof it works)

Assumptions of Use (AoU) are central to this model, as they capture the operational context and constraints that validate the safety case.

### The Traceability Chain
The `covers` link type establishes the connection between requirements and their operational assumptions:

```
Stakeholder Requirement
↓ satisfies
Feature Requirement
↓ covers
Assumption of Use (AoU) ← defines operational context & constraints
↓ (informs architecture)
Component Requirement
↓ fulfils
Component Architecture
↓ implements
Source Code
↓ testlink / source_code_link
Verification Evidence
```

### Why AoU Matters
- **Safety context**: AoU captures assumptions that validate the safety chain
- **Integration risk**: External component assumptions must be explicitly covered
- **Traceability**: Links features to the operational context they depend on

**Process Reference**: [gd_req__req_linkage_aou](https://github.com/eclipse-score/process_description/blob/main/process/process_areas/requirements_engineering/guidance/requirements_process_reqs.rst#gd_req__req_linkage_aou)
- Feature and component requirements SHALL link to AoU via the `covers` link type
- Bi-directional traceability via `covered_by` back-link

## need types

Each type of needs is defined in the `needs_types` section of the `metamodel.yaml` file. Each need type has attributes, links, tags, and other properties that define its structure and behavior within the documentation system.
Expand Down
33 changes: 33 additions & 0 deletions docs/internals/requirements/requirements.rst
Original file line number Diff line number Diff line change
Expand Up @@ -545,6 +545,39 @@ Versioning
.. note::
Certain tool requirements do not have a matching process requirement.

.. tool_req:: Enables needs linking via covers attribute (Requirements to AoU)
:id: tool_req__docs_req_link_covers_aou
:tags: Requirements
:implemented: YES
:version: 1
:satisfies: gd_req__req_linkage_aou
:parent_covered: YES
:status: valid

Docs-as-Code shall support the ``covers`` link type to establish traceability between
requirements and their Assumptions of Use (AoU), per SCORE process specification.

**Purpose**: In SEooC (Safety Element Out of Context) development, AoU capture the
operational context and constraints that validate safety cases. Requirements "cover"
(are bound to) specific assumptions.

Comment on lines +560 to +563
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
**Purpose**: In SEooC (Safety Element Out of Context) development, AoU capture the
operational context and constraints that validate safety cases. Requirements "cover"
(are bound to) specific assumptions.

No need to be chatty here. The reference to gd_req__req_linkage_aou is sufficient "purpose".

**Allowed connections**:

.. table::
:widths: auto

================================ ========================================================
Source Type Link Type Target Type
================================ ========================================================
Feature Requirements covers Assumptions of Use (AoU)
Component Requirements covers Assumptions of Use (AoU)
Comment on lines +572 to +573
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure this will work.

Feature requirements are in score repo?!
Component requirements are in "dependable module" repos?!
Where are the assumptions of use? In score or in "dependable module" repos, or both?

Is this actually described somewhere by now? Sorry, I'm not up to date here.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Latest decision is dec_rec__platform__feature_delivery:

Feature architecture and component artifacts are moved to SW-Module repositories. Feature requirements and logical feature interfaces remain in the S-CORE [platform] repository.

The answer here is "both" I suppose. My understanding is that we do not distinguish between "platform" and "module" for AoUs but we do for requirements. Thus, feature requirements in platform repo cover AoUs in the platform repo and component requirements in module repos cover AoUs in module repos (potentially other module repos though).

================================ ========================================================

**Traceability chain**: Stakeholder Req β†’ Feature Req β†’ (covers) β†’ AoU β†’ Component Req

**Process reference**: :need:`gd_req__req_linkage_aou` β€” Requirements SHALL be linked to AoU
via covers if they already cover these.
Comment on lines +578 to +579
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's not repeat that here, it's already covered by satisfies link.


.. tool_req:: Safety: enforce safe linking
:id: tool_req__docs_common_attr_safety_link_check
:tags: Common Attributes
Expand Down
11 changes: 11 additions & 0 deletions src/extensions/score_metamodel/metamodel.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -306,6 +306,8 @@ needs_types:
valid_until: ^v(0|[1-9]\d*)\.(0|[1-9]\d*)(\.(0|[1-9]\d*))?$
optional_links:
belongs_to: feat # for evaluation
# req-Id: tool_req__docs_req_link_covers_aou
covers: aou_req
tags:
- requirement
- requirement_excl_process
Expand Down Expand Up @@ -336,6 +338,9 @@ needs_types:
# req-Id: tool_req__docs_req_attr_testcov
testcovered: ^(YES|NO)$
hash: ^.*$
optional_links:
# req-Id: tool_req__docs_req_link_covers_aou
covers: aou_req
tags:
- requirement
- requirement_excl_process
Expand Down Expand Up @@ -943,6 +948,12 @@ needs_extra_links:
incoming: fulfilled by
outgoing: fulfils

covers:
incoming: covered by
outgoing: covers
# req-Id: gd_req__req_linkage_aou
# Requirement-to-AoU linking per SCORE process specification
Comment on lines +951 to +955
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
covers:
incoming: covered by
outgoing: covers
# req-Id: gd_req__req_linkage_aou
# Requirement-to-AoU linking per SCORE process specification
# req-Id: gd_req__req_linkage_aou
covers:
incoming: covered by
outgoing: covers


implements:
incoming: implemented by
outgoing: implements
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
..
# *******************************************************************************
# Copyright (c) 2026 Contributors to the Eclipse Foundation
#
# See the NOTICE file(s) distributed with this work for additional
# information regarding copyright ownership.
#
# This program and the accompanying materials are made available under the
# terms of the Apache License Version 2.0 which is available at
# https://www.apache.org/licenses/LICENSE-2.0
#
# SPDX-License-Identifier: Apache-2.0
# *******************************************************************************

#CHECK: check_options

.. Tests that `covers` on feat_req and comp_req only allows aou_req as target.
.. req-Id: tool_req__docs_req_link_covers_aou

.. aou_req:: AoU target for covers tests
:id: aou_req__covers__target
:reqtype: Functional
:security: NO
:safety: QM
:status: valid

AoU content used for covers-link validation tests.


.. stkh_req:: Parent stakeholder requirement for covers tests
:id: stkh_req__covers__parent
:reqtype: Functional
:security: NO
:safety: QM
:status: valid
:rationale: Stakeholder parent rationale for covers-link tests.


.. feat_req:: Parent feature requirement for covers tests
:id: feat_req__covers__parent
:reqtype: Functional
:security: NO
:safety: QM
:status: valid
:satisfies: stkh_req__covers__parent

Parent feature requirement used by covers-link tests.


.. Positive Test: feat_req pointing to an aou_req via covers is valid.
#EXPECT-NOT: feat_req__covers__good_1.covers (['aou_req__covers__target']): does not follow pattern `^aou_req__.*$`.
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I hope that error message is not accurate?! πŸ˜†
So it will not appear anyway. Therefore this test doesn't actually test anything.

Recommendation:

No errors regarding covers link:
#EXPECT-NOT: covers


.. feat_req:: Feature requirement with valid covers link
:id: feat_req__covers__good_1
:reqtype: Functional
:security: NO
:safety: QM
:status: valid
:satisfies: stkh_req__covers__parent
:covers: aou_req__covers__target

Valid feat_req that covers an AoU requirement.


.. Positive Test: comp_req pointing to an aou_req via covers is valid.
#EXPECT-NOT: comp_req__covers__good_1.covers (['aou_req__covers__target']): does not follow pattern `^aou_req__.*$`.

.. comp_req:: Component requirement with valid covers link
:id: comp_req__covers__good_1
:reqtype: Functional
:security: NO
:safety: QM
:status: valid
:satisfies: feat_req__covers__parent
:belongs_to: comp__covers__parent
:covers: aou_req__covers__target

Valid comp_req that covers an AoU requirement.


.. feat:: Feature for covers tests
:id: feat__covers__parent
:security: NO
:safety: QM
:status: valid
Loading