Skip to content

Commit feed5ab

Browse files
committed
added clarification for downstream/series project context
1 parent 92b3b8f commit feed5ab

File tree

3 files changed

+37
-16
lines changed

3 files changed

+37
-16
lines changed

.github/CODEOWNERS

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ verification/ @eclipse-score/automotive-score-committers
3030
/docs/design_decisions/*infra* @AlexanderLanin @dcalavrezo-qorix @MaximilianSoerenPollak
3131
# setting TLs until codeowners of architecture are defined
3232
/docs/design_decisions/*arch* @antonkri @FScholPer @qor-lb @johannes-esr
33-
/docs/design_decisions/*strat* @antonkri @FScholPer @qor-lb @johannes-esr
33+
/docs/design_decisions/*strat* @antonkri @FScholPer @qor-lb @johannes-esr
3434
/docs/glossary/ @eclipse-score/automotive-score-committers
3535
/docs/introduction/ @eclipse-score/automotive-score-committers
3636
/docs/manuals/ @eclipse-score/automotive-score-committers

docs/design_decisions/DR-001-strat.md

Lines changed: 28 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,9 @@ SPDX-License-Identifier: Apache-2.0
2424

2525
---
2626

27-
# Consistent Stack vs. Reference Integration
27+
## Consistent Stack vs. Reference Integration
2828

29-
## Context
29+
### Context
3030

3131
The project was initiated with ambiguous architectural assumptions. In some project material, S-CORE is described as a reference integration of independently evolving projects/modules. In parallel, discussions and expectations emerged that treat S-CORE as a coherent, continuously working stack.
3232

@@ -41,7 +41,7 @@ Two categories of modules must be distinguished:
4141
1. Existing open-source projects/modules originating from other contexts and managed independently. These modules may be integrated into S-CORE if they are a good technical fit and align with S-CORE's functional goals. Their independent planning cadence and processes are explicitly acknowledged.
4242
2. Modules that do not yet exist and are created specifically to fulfill the purpose of S-CORE within the S-CORE GitHub organization. These modules are directly affected by this architectural decision.
4343

44-
## Decision
44+
### Decision
4545

4646
S-CORE is defined as a **continuously consistent stack**.
4747

@@ -51,53 +51,68 @@ Modules created in the context of S-CORE exist to serve the stack. Their evoluti
5151

5252
Existing independently managed open-source projects/modules may be integrated where appropriate. Their independence is accepted, but their integration into S-CORE is evaluated and justified exclusively in terms of stack-level goals.
5353

54-
### No Constraint on Independent Module Delivery
54+
#### No Constraint on Independent Module Delivery
5555

5656
This decision concerns architectural alignment and change justification. It does not impose constraints on modularity, packaging, or delivery models of the modules within the stack.
5757

5858
In particular, the consistent stack approach does not prevent modules or features from being independently buildable or releasable, nor from being used outside the S-CORE stack.
5959

6060
The decision only establishes that, when modules are integrated into S-CORE, their evolution and changes must be justified in terms of stack-level objectives.
6161

62-
## Options Considered
62+
### Options Considered
6363

64-
### Option 1: Reference Integration of Independent Modules
64+
The central question separating these options is not whether the S-CORE reference integration will be adopted directly and without adaptation in a downstream product (e.g. a series product) - it will probably not. The question is where integration effort is managed: driven by individual downstream needs at the module level, or consolidated at the stack level to maintain a continuously stable and transparent baseline.
65+
66+
#### Option 1: Reference Integration of Independent Modules
6567

6668
Modules evolve independently, with their own roadmaps and priorities. Integration occurs late and primarily before releases. Coordination effort is concentrated at integration time. Modules effectively behave as separate projects that are assembled into a reference configuration.
6769

70+
In this model, a downstream project (e.g. a series project) can drive module evolution directly. Modules are updated or extended to meet a specific downstream need first; the impact on S-CORE integration is resolved subsequently. This reduces short-term friction for that one downstream context but increases the integration cost for S-CORE and for other downstream projects, which must absorb the resulting divergence without having been part of the original justification.
71+
6872
This option favors module autonomy and minimizes continuous coordination. It shifts complexity to late integration phases and accepts reduced guarantees about the state of the full stack during development.
6973

70-
### Option 2: Consistent Stack as Leading Use Case
74+
#### Option 2: Consistent Stack as Leading Use Case
7175

7276
The stack is the primary architectural artifact. Modules contribute to and are validated against the behavior of the full stack. Continuous integration is used to ensure the stack remains functional throughout development.
7377

74-
This option increases coordination and change management overhead during development. In return, it establishes a clear architectural contract. Changes are evaluated based on their impact on the stack, and the reference stack is expected to remain usable.
78+
In this model, changes must be justified in terms of stack-level objectives before integration. This may require additional upstreaming effort for any individual downstream project compared to Option 1. However, it establishes a stable and transparent reference integration that all downstream projects and end users can build upon, without needing to absorb divergences introduced for another downstream context.
79+
80+
The reference integration is not necessarily expected to be adopted without adaptation in downstream products. Its goal is to provide a continuously integrated, validated baseline - making downstream adaptation as straightforward as possible and providing a shared, openly visible justification platform for all downstream projects involved.
81+
82+
This option also frames the reference integration as a continuous proof of integrability and quality, rather than a single downstream product delivery. In that framing, the reference integration is expected to:
83+
84+
- demonstrate continuous integrability of all S-CORE modules across functional, performance, safety, and security perspectives
85+
- follow S-CORE process and quality expectations per module
86+
- define clear expectations for externally managed modules (for example, OpenSOVD) regarding required artifacts and interfaces
87+
- ensure gaps are addressed either by upstream artifacts or by explicit S-CORE maintenance responsibility
88+
89+
This option increases coordination and change management overhead during development. In return, it establishes a clear architectural contract. Changes are evaluated based on their impact on the stack, and the reference stack is expected to remain usable throughout.
7590

76-
## Consequences
91+
### Consequences
7792

7893
The consistent stack model constrains module-level autonomy. Not all module-local use cases are valid by default. Changes, especially breaking changes, must be justified in terms of stack-level requirements.
7994

8095
The cost is increased coordination effort and earlier discussion of cross-cutting impacts. The benefit is architectural clarity and a shared basis for decision-making across teams.
8196

8297
Late integration risk is reduced. Architectural inconsistencies surface earlier, during development rather than at release time.
8398

84-
## Impact on Development Workflow
99+
### Impact on Development Workflow
85100

86101
For modules created within S-CORE, development is guided by stack objectives. Features and changes are expected to consider their impact on the overall stack from the start.
87102

88103
Breaking changes in any module integrated into the stack require justification based on stack use cases. Module-specific arguments that do not align with stack objectives are insufficient.
89104

90105
This decision does not define concrete workflows, tooling, or CI/CD mechanisms. It establishes the architectural expectation that such mechanisms must support continuous stack consistency.
91106

92-
## Impact on Governance and Planning
107+
### Impact on Governance and Planning
93108

94109
Planning and prioritization discussions must reference stack-level goals. Module roadmaps are not authoritative on their own when they affect the behavior of the stack.
95110

96111
This decision enables future decision records to define how architectural alignment is reviewed, how changes are discussed, and how conflicts between module and stack objectives are resolved.
97112

98113
No specific governance structure or role model is defined by this record.
99114

100-
### Handling of Breaking Changes and Integration Alignment
115+
#### Handling of Breaking Changes and Integration Alignment
101116

102117
This decision does not prescribe a fixed procedural outcome for cases where module evolution and stack integration timelines diverge, for example when a breaking change in a module cannot be integrated into the stack shortly before a planned S-CORE release.
103118

@@ -110,7 +125,7 @@ The decision record does not mandate either approach. Instead, it establishes th
110125

111126
In particular, breaking changes in modules intended to be part of the S-CORE stack require explicit consideration of their impact on stack consistency and planned stack use cases.
112127

113-
## Explicit Non-Goals
128+
### Explicit Non-Goals
114129

115130
This decision record does not:
116131

docs/design_decisions/index.rst

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,14 @@
1515
Decision Records
1616
================
1717

18+
Strategy
19+
~~~~~~~~
20+
21+
.. toctree::
22+
:maxdepth: 1
23+
:glob:
24+
25+
DR-*-strat*
1826

1927
Architecture
2028
~~~~~~~~~~~~
@@ -25,13 +33,11 @@ Architecture
2533

2634
DR-*-arch*
2735

28-
2936
Infrastructure
3037
~~~~~~~~~~~~~~
3138

3239
.. toctree::
3340
:maxdepth: 1
3441
:glob:
3542

36-
DR-*-strat*
3743
DR-*-infra*

0 commit comments

Comments
 (0)