Skip to content

Commit da4ea90

Browse files
committed
DR ref_int - add option 3
1 parent bba3711 commit da4ea90

2 files changed

Lines changed: 206 additions & 5 deletions

File tree

docs/design_decisions/DR-008-int.rst

Lines changed: 99 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ DR-008-Int: S-CORE integration scope in reference_integration repository
1919
:id: dec_rec__int__scope_reference_integration
2020
:status: accepted
2121
:context: Integration
22-
:decision: Option 2
22+
:decision: Option 3
2323

2424
Context / Problem
2525
-----------------
@@ -58,14 +58,15 @@ of latest Modules states to ensure early feedback and breaking changes notificat
5858
For S-CORE releases, Modules need to deliver artifacts from local tests as their release assets to be used for certification and documentation.
5959

6060
Pros:
61+
6162
* Modules have full control over their own scope
6263
* Quick integration jobs in reference_integration repository as only Feature Integration tests are executed
6364

6465
Cons:
66+
6567
* No control over configuration, compiling flags, variants
6668
* Documentation and artifacts are distributed across different repositories
67-
* Full-stack S-CORE release might resolve to different version of dependencies that were tested in Module repositories
68-
which makes the release not compliant with S-CORE release requirements.
69+
* Full-stack S-CORE release might resolve to different version of dependencies that were tested in Module repositories which makes the release not compliant with S-CORE release requirements.
6970

7071
Option 2: Re-execute all quality checks in the reference_integration repository
7172
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -80,14 +81,91 @@ All necessary artifacts and single documentation build are generated in referenc
8081
of S-CORE releases.
8182

8283
Pros:
84+
8385
* Single point of truth for configurations, compiling flags, documentation and certification artifacts
8486
* Better control over resolved dependencies
8587
* Better traceability of the tests and documentation for full-stack S-CORE releases
8688

8789
Cons:
90+
8891
* Additional effort for the Module teams to maintain their tests and dependencies to be fully executable in reference_integration repository
8992
* Longer integration jobs in reference_integration repository as all tests are executed
9093

94+
Option 3: Front-load quality checks in modules with lightweight reference_integration
95+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
96+
97+
Modules follow the S-CORE process and run quality tooling in their own context against their own resolved
98+
dependency set. Across modules, teams agree on *what* quality tooling and toolchains to use, but each
99+
module runs them independently. Most importantly, teams agree on dependency versions for the upcoming
100+
S-CORE release: if a module is releasing a new version into the next S-CORE release, every module that
101+
depends on it must migrate to that version before the release. Modules minimize non-dev, non-S-CORE
102+
dependencies in their MODULE.bazel files.
103+
104+
Module Owners deliver as part of their release artifacts in the common form allowing aggregation and
105+
full documentation build in reference_integration. Bazel dependency analysis will allow verification
106+
that collected artifacts are valid for S-CORE release - resolved dependencies for the Module (in scope of their repository)
107+
must match the dependencies for S-CORE release and resolved in reference_integration.
108+
109+
Continous integration of latest Modules based on hashes from their main branches will not allow verification
110+
of the artifacts and full documentation build. That will remain exclusive for S-CORE releases.
111+
112+
Pros:
113+
114+
* Verifying quality where it originates is more reliable — modules have full knowledge of their domain, their specific quality requirements, and the exact dependency context they were tested against
115+
* Technically simpler reference_integration with a well-defined, minimal scope
116+
* Avoids re-executing all checks in a different dependency context, which can mask or introduce issues
117+
* Provides early feedback through regular release candidate publishing
118+
119+
Cons:
120+
121+
* Requires tighter communication and coordination across module teams
122+
* Agreeing on and enforcing a shared dependency manifest adds process overhead
123+
* Backward compatibility guarantees need to be actively maintained across all modules
124+
125+
Comparison
126+
----------
127+
128+
.. list-table:: Reference_integration options comparison
129+
:header-rows: 1
130+
:widths: 30 20 20 30
131+
132+
* - Criterion
133+
- Option 1
134+
- Option 2
135+
- Option 3
136+
* - Quality checks location
137+
- Module repositories only
138+
- reference_integration (re-executed)
139+
- Module repositories (front-loaded)
140+
* - Feature integration tests
141+
- reference_integration
142+
- reference_integration
143+
- reference_integration
144+
* - Dependency mismatch risk
145+
- High
146+
- Low
147+
- Low (via version agreements)
148+
* - Integration job duration
149+
- Short
150+
- Long
151+
- Short
152+
* - Artifact & documentation consolidation
153+
- Distributed across repositories
154+
- Single point of truth
155+
- Consolidated at release time
156+
* - Module team maintenance effort
157+
- Low
158+
- High
159+
- Medium
160+
* - Cross-module coordination overhead
161+
- Low
162+
- Medium (triage of CI failures)
163+
- Medium (shared dependency manifest)
164+
* - Traceability for S-CORE release
165+
- Weak
166+
- Strong
167+
- Strong (via release artifacts)
168+
91169
Evaluation
92170
----------
93171

@@ -106,5 +184,21 @@ executable in the reference_integration repository with both public APIs and tes
106184
It allows generating a single documentation build with full traceability across different repositories which will stay persistent
107185
and will not require external linking.
108186

109-
**Decision:** Option 2 has been most favored by the community.
110-
We accept additional effort for the integration process in exchange for a better traceability.
187+
Option 3 front-loads quality verification into the modules themselves and keeps reference_integration
188+
lightweight. It addresses the dependency mismatch risk of Option 1 through coordinated version
189+
agreements across modules rather than by re-executing checks centrally. However, it relies on
190+
disciplined inter-module coordination and backward compatibility guarantees, which adds process
191+
overhead and requires a shared dependency manifest to remain manageable.
192+
193+
.. _option3_infographic:
194+
195+
.. figure:: _assets/DR-008-int-option3_infographic.svg
196+
:align: center
197+
:width: 75%
198+
199+
Option 3 visual breakdown
200+
201+
**Decision:** Option 3 got positive feedback and was selected by the community.
202+
We accept a trade-off of full documentation beeing available only for S-CORE releases,
203+
while having a more efficient and reliable integration process without extra efforts to maintain
204+
internal test targets in reference_integration repository.
Lines changed: 107 additions & 0 deletions
Loading

0 commit comments

Comments
 (0)