Skip to content

Commit 563660a

Browse files
authored
Merge branch 'main' into attifunel_multiple_derivation_techniques
Signed-off-by: Philipp Ahmann <2428012+pahmann@users.noreply.github.com>
2 parents 084f9de + 1111536 commit 563660a

277 files changed

Lines changed: 9299 additions & 1073 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.bazelversion

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
8.6.0
1+
8.7.0

.github/workflows/docs.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ on:
2626
branches:
2727
- main
2828
release:
29-
types: [created]
29+
types: [published]
3030
merge_group:
3131
types: [checks_requested]
3232

.gitignore

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ user.bazelrc
99
.ruff_cache
1010

1111
# docs:incremental and docs:ide_support build artifacts
12-
/_build*
13-
process/ubproject.toml
12+
_build
13+
ubproject.toml
1414

1515
# Vale - editorial style guide
1616
.vale.ini

MODULE.bazel

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ bazel_dep(name = "rules_pkg", version = "1.1.0")
2525
# Python version
2626
#
2727
###############################################################################
28-
bazel_dep(name = "rules_python", version = "1.8.3")
28+
bazel_dep(name = "rules_python", version = "1.8.5")
2929

3030
PYTHON_VERSION = "3.12"
3131

@@ -41,4 +41,9 @@ python.toolchain(
4141
# Documentation tooling
4242
#
4343
###############################################################################
44-
bazel_dep(name = "score_docs_as_code", version = "4.5.0")
44+
bazel_dep(name = "score_docs_as_code", version = "7.1.0")
45+
git_override(
46+
module_name = "score_docs_as_code",
47+
commit = "57b7e0c05984c92659cde31b5c3c5ee07853f44b",
48+
remote = "https://github.com/eclipse-score/docs-as-code",
49+
)

MODULE.bazel.lock

Lines changed: 15 additions & 14 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

process/conf.py

Lines changed: 93 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,5 +35,96 @@
3535
html_static_path = ["_assets"]
3636
html_css_files = ["custom.css"]
3737

38-
# :need:`{title}` is used in the needs templates to display the title of the need
39-
needs_role_need_template = "{title}"
38+
# Training portals are pre-generated into trainings/_portals/ by build.py.
39+
# This copies the subdirectory tree (e.g. requirements_engineering/) verbatim
40+
# into the Sphinx HTML output root so portals are served alongside the docs.
41+
html_extra_path = ["trainings/_portals"]
42+
43+
# exclude pattern are not supported when calling sphinx-build from other repositories,
44+
# so we do not use them here. Instead, the exclusion of training source files
45+
# and generated portal files is handled in the Sphinx build hook below.
46+
# Exclude training source files and generated portal files from Sphinx processing.
47+
# - trainings/*/source/** : Markdown source files for the training portals
48+
# - trainings/trainings_templates/** : Template files, not Sphinx documents
49+
# - trainings/_portals/** : Generated portal HTML (served via html_extra_path)
50+
#exclude_patterns = [
51+
# "trainings/*/source/**",
52+
# "trainings/trainings_templates/**",
53+
# "trainings/_portals/**",
54+
#]
55+
56+
# :need:`{{ title }}` is used in the needs templates to display the title of the need
57+
needs_role_need_template = "{{ title }}"
58+
59+
60+
# ---------------------------------------------------------------------------
61+
# Training portal build hook
62+
#
63+
# Automatically regenerates all training portals before Sphinx processes the
64+
# documentation. build.py requires the 'markdown' package which is NOT part
65+
# of the docs-as-code Sphinx environment, so it is run via the dedicated
66+
# .venv virtual environment. If that venv is absent it is created
67+
# and the required packages are installed automatically.
68+
# ---------------------------------------------------------------------------
69+
70+
def _build_training_portals(app):
71+
"""Sphinx builder-inited event handler: regenerate all training portals."""
72+
import os, subprocess, sys
73+
from pathlib import Path
74+
75+
conf_dir = Path(app.confdir) # …/process/
76+
repo_root = conf_dir.parent # …/process_description/
77+
venv_dir = repo_root / ".venv"
78+
venv_python = venv_dir / "bin" / "python"
79+
80+
# Locate all training source build scripts
81+
build_scripts = sorted(conf_dir.glob(
82+
"trainings/*/source/build.py"
83+
))
84+
if not build_scripts:
85+
return
86+
87+
# Ensure the venv exists with the required packages
88+
if not venv_python.exists():
89+
reqs_file = build_scripts[0].parent / "requirements.txt"
90+
try:
91+
subprocess.run(
92+
[sys.executable, "-m", "venv", str(venv_dir)],
93+
check=True, capture_output=True,
94+
)
95+
if reqs_file.exists():
96+
subprocess.run(
97+
[str(venv_python), "-m", "pip", "install", "-q",
98+
"-r", str(reqs_file)],
99+
check=True, capture_output=True,
100+
)
101+
except Exception as exc:
102+
import warnings
103+
warnings.warn(
104+
f"[trainings] Could not create .venv_training: {exc}\n"
105+
" Training portals will not be regenerated. "
106+
"Run source/build.py manually.",
107+
stacklevel=1,
108+
)
109+
return
110+
111+
# Run each build script
112+
for script in build_scripts:
113+
try:
114+
subprocess.run(
115+
[str(venv_python), str(script)],
116+
cwd=str(script.parent),
117+
check=True, capture_output=True,
118+
)
119+
print(f"[trainings] Built portal: {script.parent.parent.name}")
120+
except subprocess.CalledProcessError as exc:
121+
import warnings
122+
warnings.warn(
123+
f"[trainings] Portal build failed for {script.parent.parent.name}:\n"
124+
f" {exc.stderr.decode(errors='replace').strip()}",
125+
stacklevel=1,
126+
)
127+
128+
129+
def setup(app):
130+
app.connect("builder-inited", _build_training_portals)
Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,111 @@
1+
..
2+
# *******************************************************************************
3+
# Copyright (c) 2026 Contributors to the Eclipse Foundation
4+
#
5+
# See the NOTICE file(s) distributed with this work for additional
6+
# information regarding copyright ownership.
7+
#
8+
# This program and the accompanying materials are made available under the
9+
# terms of the Apache License Version 2.0 which is available at
10+
# https://www.apache.org/licenses/LICENSE-2.0
11+
#
12+
# SPDX-License-Identifier: Apache-2.0
13+
# *******************************************************************************
14+
15+
.. _decision_record_template:
16+
17+
Decision Record Template
18+
========================
19+
20+
This template is used to create new Decision Records (DRs) in the project using rst files.
21+
For markdown files, please convert the sphinx directive to markdown syntax yourself.
22+
The content of the DR is the same, only the syntax differs.
23+
24+
Suggest to store close to the artefact which is affected by the DR. For example for
25+
platform wide decisions store close to the platform's stakeholder requirements.
26+
27+
In each DR file, include the following sections:
28+
29+
.. code-block:: rst
30+
31+
.. dec_rec:: <Title>
32+
:id: dec_rec__<Platform|Feature|Component>__<Title>, dec_rec__<arch|proc|strat|infra|int>__<slug>
33+
:status: <proposed|accepted|deprecated|rejected|superseded>
34+
:tracking: <link to GitHub issue URL, required once a DR is confirmed>
35+
:version: 2
36+
:affects: <link>
37+
38+
<Description>
39+
Descriptions shall contain at least the following sections:
40+
Context: <Your text>
41+
Decision: <Your text>
42+
Consequences: <Your text>
43+
44+
or use the the provided template below (if not marked as optional, it is mandatory content):
45+
46+
<Decision>
47+
48+
Context
49+
-------
50+
<your text, diagrams, etc>
51+
52+
Consequences
53+
------------
54+
<your text, diagrams, etc>
55+
56+
(optional)
57+
[
58+
Alternatives Considered
59+
-----------------------
60+
61+
<Alternative A>
62+
^^^^^^^^^^^^^^^
63+
<description of the alternative>
64+
65+
Advantages
66+
""""""""""
67+
* **<Advantage 1>:** <Explanation>
68+
* **<Advantage 2>:** <Explanation>
69+
70+
Disadvantages
71+
"""""""""""""
72+
* **<Disadvantage 1>:** <Explanation>
73+
* **<Disadvantage 2>:** <Explanation>
74+
]
75+
76+
Note:
77+
Throughout the discussion of a CR, various ideas will be proposed which are not accepted.
78+
Those rejected ideas should be recorded along with the reasoning as to why they were rejected.
79+
This both helps record the thought process behind the final version of the CR as well as preventing people from bringing up the same rejected idea again in subsequent discussions.
80+
In a way this section can be thought of as a breakout section of the Rationale section that is focused specifically on why certain ideas were not ultimately pursued.
81+
82+
Justification for the Decision
83+
------------------------------
84+
<your text>
85+
86+
87+
Impact Analysis (Optional)
88+
--------------------------
89+
The impact analysis template can be used to detail out the impact on the platform
90+
and if applicable for other aspects, especially for safety/security.
91+
Either reference here to the filled-out template or copy the content from
92+
the template in this chapter and fill it out here.
93+
The impact analysis template is available in [1].
94+
95+
The impact analysis template is available here [1]_.
96+
97+
.. attention::
98+
The above directive must be updated according to your decision record.
99+
100+
- Modify ``dec_rec`` to provide a descriptive and concise title. Summarizing the decision. (mandatory)
101+
- Modify ``id`` to contain the Platform/Feature/Component name the DR belongs to and the title, in upper snake case preceded by ``dec_rec__`` (mandatory)
102+
- Adjust ``status`` according to your needs (mandatory)
103+
- Modify ``tracking`` to point to the implementation issue, required once a DR is confirmed for implementation (recommended)
104+
- Modify ``version`` if original scope is changed (mandatory)
105+
- Modify ``affects`` to point to the work product it affects, mostly this will be requirements, architecture or design (recommended)
106+
- Provide ``Description`` (mandatory)
107+
- Add ``Context`` to describe the issue or motivation behind this decision or change (mandatory)
108+
- Add ``decision`` to detail the proposed change or decision (mandatory)
109+
- Add ``consequences`` to explain the impact of this change, including what becomes easier or more difficult (recommended)
110+
111+
.. [1] The impact analysis template is available here: :ref:`Impact Analysis Template <chm_impact_analysis_templates>`

process/folder_templates/platform/features/feature_name/architecture/index.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,7 @@ Logical Interfaces
9696
:status: invalid
9797
:version: 1
9898
:fulfils: feat_req__feature_name__some_title
99+
:included_by: feat__feature_name
99100
100101
General Interface Description
101102

0 commit comments

Comments
 (0)