Skip to content

docs-as-code: Fix inverted QM architecture fulfilment validation #1005

Closed

Description

@lavrovvalera

Description

What

Correct the architecture-to-requirement safety validation so QM architecture
elements may fulfil QM requirements but cannot fulfil ASIL_B requirements.

Observed behavior

The rule tool_req__docs_arch_link_qm_to_safety_req selects QM architecture
elements, but its original target predicate requires linked requirements to be
non-QM:

needs:
  include: feat_arc_sta, logic_arc_int, logic_arc_int_op, comp_arc_sta, real_arc_int, real_arc_int_op
  condition: safety == QM
check_all:
  fulfils: safety != QM

needs.condition filters source architecture elements. The
check_all.fulfils predicate is evaluated against every linked target
requirement
.

This reverses the intended validation:

Link Actual behavior before correction Expected behavior
QM architecture -> QM requirement Warning No warning
QM architecture -> ASIL_B requirement No warning from this rule Warning identifying the ASIL_B target

Impact: valid QM allocations produce false-positive warnings, while
prohibited QM-to-ASIL_B allocations escape this rule's validation. This is a
validation defect; it does not itself change safety classifications or
demonstrate a runtime safety failure.

Problem notifications

No response

Analysis results

No response

Solution

pply the one-line correction in
src/extensions/score_metamodel/metamodel.yaml:

 check_all:
-  fulfils: safety != QM
+  fulfils: safety == QM

Error Occurrence Rate

None

How to reproduce

  1. Create a valid QM logical interface linked through fulfils to a QM feature
    requirement.
  2. Run graph validation: the rule incorrectly warns that the QM target fails
    safety != QM.
  3. Replace the target with an ASIL_B feature requirement: this rule incorrectly
    accepts it.

The new regression fixture,
src/extensions/score_metamodel/tests/rst/graph/test_arch_qm_fulfils.rst,
provides complete, valid setup and explicit warning expectations.

With that fixture added to the affected baseline and the original predicate
unchanged, run:

bazel test --lockfile_mode=error --test_output=errors \
  //src/extensions/score_metamodel:file_based_tests_graph \
  --test_arg=-k --test_arg=test_arch_qm_fulfils

The regression fails because the valid QM-to-QM case receives this warning:

Parent need `feat_req__qm_fulfils__qm_one` does not fulfill condition `safety != QM`. Explanation: An QM architecture element cannot implement ASIL requirements.

Supporting Information

No response

Classification

Minor

First Affected Release

not released (main)

Last Affected Release

not released (main)

Expected Fixed Release

before release (main)

Category

  • Safety Relevant
  • Security Relevant
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions