diff --git a/.gitignore b/.gitignore index 2900b6074..da016a386 100644 --- a/.gitignore +++ b/.gitignore @@ -26,3 +26,4 @@ __pycache__/ # bug: This file is created in repo root on test discovery. /consumer_test.log +/.clwb diff --git a/docs/internals/requirements/requirements.rst b/docs/internals/requirements/requirements.rst index dd5d8baa5..f18c09e47 100644 --- a/docs/internals/requirements/requirements.rst +++ b/docs/internals/requirements/requirements.rst @@ -545,6 +545,35 @@ 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. + + **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) + ================================ ======================================================== + + **Traceability scope**: Applies in both repository types: feature requirements cover + AoU in platform repositories, and component requirements cover AoU in module repositories. + + **Process reference**: :need:`gd_req__req_linkage_aou` + .. tool_req:: Safety: enforce safe linking :id: tool_req__docs_common_attr_safety_link_check :tags: Common Attributes diff --git a/src/extensions/score_metamodel/metamodel.yaml b/src/extensions/score_metamodel/metamodel.yaml index 0b49ce454..8871cdca2 100644 --- a/src/extensions/score_metamodel/metamodel.yaml +++ b/src/extensions/score_metamodel/metamodel.yaml @@ -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 @@ -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 @@ -943,6 +948,11 @@ needs_extra_links: incoming: fulfilled by outgoing: fulfils + # req-Id: gd_req__req_linkage_aou + covers: + incoming: covered by + outgoing: covers + implements: incoming: implemented by outgoing: implements diff --git a/src/extensions/score_metamodel/tests/rst/options/test_options_covers_link.rst b/src/extensions/score_metamodel/tests/rst/options/test_options_covers_link.rst new file mode 100644 index 000000000..4e0dfbc1e --- /dev/null +++ b/src/extensions/score_metamodel/tests/rst/options/test_options_covers_link.rst @@ -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: 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: covers + +.. 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