Skip to content

feat: change mandatory 'fulfils' to optional - #669

Merged
RolandJentschETAS merged 6 commits into
eclipse-score:mainfrom
etas-contrib:improvement_optional_arc_links
Jul 30, 2026
Merged

feat: change mandatory 'fulfils' to optional#669
RolandJentschETAS merged 6 commits into
eclipse-score:mainfrom
etas-contrib:improvement_optional_arc_links

Conversation

@RolandJentschETAS

@RolandJentschETAS RolandJentschETAS commented Jul 28, 2026

Copy link
Copy Markdown
Contributor

📌 Description

Change link from arch to req to optional, as process defines it in this way.

🚨 Impact Analysis

  • This change does not violate any tool requirements and is covered by existing tool requirements
  • This change does not violate any design decisions
  • Otherwise I have created a ticket for new tool qualification

✅ Checklist

  • Added/updated documentation for new or changed features
  • Added/updated tests to cover the changes
  • Followed project coding standards and guidelines

@github-actions

github-actions Bot commented Jul 28, 2026

Copy link
Copy Markdown

License Check Results

🚀 The license check job ran with the Bazel command:

bazel run --lockfile_mode=error //src:license-check

Status: ⚠️ Needs Review

Click to expand output
[License Check Output]
Extracting Bazel installation...
Starting local Bazel server (8.6.0) and connecting to it...
INFO: Invocation ID: 364daac6-4743-451d-a09d-63e40380b952
Computing main repo mapping: 
Computing main repo mapping: 
Loading: 
Loading: 0 packages loaded
Loading: 0 packages loaded
DEBUG: /home/runner/.bazel/external/rules_python+/python/private/repo_utils.bzl:101:16: 
rules_python:coverage_dep WARNING: rules_python's bundled coverage tool has no wheel for python_version=3.12.13, platform=ppc64le-unknown-linux-gnu. `bazel coverage` will produce empty lcov for py_test targets in this configuration. Either pin python_version to a version in the bundled set (see python/private/coverage_deps.bzl), or configure coverage manually via py_runtime.coverage_tool. See docs/coverage.md.
DEBUG: /home/runner/.bazel/external/rules_python+/python/private/repo_utils.bzl:101:16: 
rules_python:coverage_dep WARNING: rules_python's bundled coverage tool has no wheel for python_version=3.12.13, platform=riscv64-unknown-linux-gnu. `bazel coverage` will produce empty lcov for py_test targets in this configuration. Either pin python_version to a version in the bundled set (see python/private/coverage_deps.bzl), or configure coverage manually via py_runtime.coverage_tool. See docs/coverage.md.
DEBUG: /home/runner/.bazel/external/rules_python+/python/private/repo_utils.bzl:101:16: 
rules_python:coverage_dep WARNING: rules_python's bundled coverage tool has no wheel for python_version=3.12.13, platform=s390x-unknown-linux-gnu. `bazel coverage` will produce empty lcov for py_test targets in this configuration. Either pin python_version to a version in the bundled set (see python/private/coverage_deps.bzl), or configure coverage manually via py_runtime.coverage_tool. See docs/coverage.md.
DEBUG: /home/runner/.bazel/external/rules_python+/python/private/repo_utils.bzl:101:16: 
rules_python:coverage_dep WARNING: rules_python's bundled coverage tool has no wheel for python_version=3.12.13, platform=x86_64-unknown-linux-musl. `bazel coverage` will produce empty lcov for py_test targets in this configuration. Either pin python_version to a version in the bundled set (see python/private/coverage_deps.bzl), or configure coverage manually via py_runtime.coverage_tool. See docs/coverage.md.
Loading: 0 packages loaded
    currently loading: src
Loading: 0 packages loaded
    currently loading: src
WARNING: Target pattern parsing failed.
ERROR: Skipping '//src:license-check': no such target '//src:license-check': target 'license-check' not declared in package 'src' defined by /home/runner/work/docs-as-code/docs-as-code/src/BUILD
ERROR: no such target '//src:license-check': target 'license-check' not declared in package 'src' defined by /home/runner/work/docs-as-code/docs-as-code/src/BUILD
INFO: Elapsed time: 7.803s
INFO: 0 processes.
ERROR: Build did NOT complete successfully
ERROR: Build failed. Not running target

@MaximilianSoerenPollak

Copy link
Copy Markdown
Contributor

📌 Description

Change link from arch to req to optional, as process defines it in this way.

Do you have a link to this?

@RolandJentschETAS

RolandJentschETAS commented Jul 28, 2026

Copy link
Copy Markdown
Contributor Author

📌 Description

Change link from arch to req to optional, as process defines it in this way.

Do you have a link to this?

Sure. See https://eclipse-score.github.io/process_description/main/general_concepts/score_building_blocks_concept.html. The lines are blue, what means optional according to the legend. See also https://eclipse-score.github.io/process_description/main/process_areas/architecture_design/guidance/architecture_process_reqs.html#gd_req__arch_attr_fulfils. (should be == optional)

@github-actions

Copy link
Copy Markdown

The created documentation from the pull request is available at: docu-html

masc2023
masc2023 previously approved these changes Jul 28, 2026

@AlexanderLanin AlexanderLanin left a comment

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.

The proposed optionality conflicts with the current tool requirements. Please either retain these mandatory links or update and re-qualify the affected requirements in docs/internals/requirements/requirements.rst before this metamodel change.

generated by Codex running GPT 5.6 Terra

belongs_to: feat # make it mandatory for evaluation
optional_links:
# req-Id: tool_req__docs_arch_link_fulfils, tool_req__docs_arch_link_fulfils_aou
fulfils: feat_req, 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.

tool_req__docs_arch_link_fulfils is titled “Mandatory Architecture Attribute: fulfils” and is marked implemented. tool_req__docs_arch_link_fulfils_aou also requires static views to link to an AoU through fulfils. Making this optional permits a feat_arc_sta without any requirement/AoU trace. The same issue applies to the corresponding comp_arc_sta change below.

Please keep fulfils mandatory, or update the tool requirements and their qualification/status as part of this PR.

generated by Codex running GPT 5.6 Terra

@AlexanderLanin AlexanderLanin Jul 28, 2026

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.

Concrete remediation proposal:

  1. Keep the existing ID tool_req__docs_arch_link_fulfils, but bump its version from 2 to 3 and update its title/text to reflect the corrected process semantics, for example:
    • Title: “Architecture fulfils linkage rules”
    • Text: “Docs-as-Code shall permit fulfils to be omitted for feat_arc_sta and comp_arc_sta. When fulfils is present, Docs-as-Code shall restrict its target to the source/target combinations in the table below.”
      The existing allowed-combinations table can remain.
  2. Update tool_req__docs_arch_link_fulfils_aou as a new version as well: replace “static views link to” with wording that permits, rather than requires, fulfils links to aou_req.
  3. Keep the metamodel requirement references, now referring to the revised requirement versions, and add tests for an unlinked static view (accepted) and an invalid fulfils target (rejected).
  4. If non-QM architecture must still trace to a same-safety requirement, retain that separately as a conditional graph check; making fulfils optional must not bypass it.

A version bump preserves the requirement ID and its traceability history while making the changed semantics explicit.

generated by Codex running GPT 5.6 Terra

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Thanks for the detailed proposal. The tool requirements have been updated to make the optional semantics explicit rather than keeping fulfils mandatory:

  • tool_req__docs_arch_link_fulfils reworded and bumped to version 3 (title "Architecture fulfils linkage rules"; text now: "allow or enforce where necessary that linking via the fulfils attribute follows the defined rules"), allowed-combinations table retained.
  • tool_req__docs_arch_link_fulfils_aou bumped to version 3 and reworded to permit (not require) a fulfils link to aou_req. This aligns with the base process requirement gd_req__arch_attr_fulfils, which is optional in the process repo.
  • Added tests: an unlinked static view is accepted, and an invalid fulfils target is still rejected (feat_arc_sta__fulfils__optional / feat_arc_sta__fulfils__bad_target in test_options_options.rst).

Addressed in c07e9cf.

:parent_covered: YES

Docs-as-Code shall enforce that linking via the ``fulfils`` attribute follows defined rules.
Docs-as-Code shall permit the ``fulfils`` attribute to be omitted for feat_arc_sta and

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.

I would like the wording as follows better:
Docs-as-Code shall allow or enforce where necessary that linking via the ``fulfils`` attribute follows the defined rules.

Then you avoid that whole other thingy no?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Applied your suggested wording. Addressed in c07e9cf.

Architectural static views (feat_arc_sta, comp_arc_sta)
link to Assumptions of Use (aou_req) via the ``fulfils`` attribute.
may link to Assumptions of Use (aou_req) via the ``fulfils`` attribute.
When such a link is present, Docs-as-Code shall restrict its target to aou_req.

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.

The sentence above already includes this stipulation

Suggested change
When such a link is present, Docs-as-Code shall restrict its target to aou_req.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Done — removed the redundant sentence; the reworded sentence above now covers it. Addressed in c07e9cf.

- Reword tool_req__docs_arch_link_fulfils per review (allow/enforce wording)
- Mark all architecture fulfils links as optional in metamodel
- Add tests for unlinked static view (accepted) and invalid fulfils target (rejected)
@AlexanderLanin AlexanderLanin changed the title change mandatory to optional links feat: change mandatory 'fulfils' to optional Jul 30, 2026
@RolandJentschETAS
RolandJentschETAS merged commit ace3f0a into eclipse-score:main Jul 30, 2026
12 of 14 checks passed
@RolandJentschETAS
RolandJentschETAS deleted the improvement_optional_arc_links branch July 30, 2026 06:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Development

Successfully merging this pull request may close these issues.

4 participants