Skip to content

DR-001-Arch: Consistent Stack vs. Reference Integration#2560

Open
qor-lb wants to merge 1 commit intomainfrom
lb_arch_dr
Open

DR-001-Arch: Consistent Stack vs. Reference Integration#2560
qor-lb wants to merge 1 commit intomainfrom
lb_arch_dr

Conversation

@qor-lb
Copy link
Contributor

@qor-lb qor-lb commented Feb 7, 2026

Formal decision record based on discussion during last architecture community workshop: https://github.com/orgs/eclipse-score/discussions/1922#discussioncomment-14871055

This intends to establish a discussion basis for further technical dr's such as:

Important

This PR will be kept open at least until 13th Feb before merging to ensure that necessary reviews can be conducted.

@github-actions
Copy link

github-actions bot commented Feb 7, 2026

⚠️ Docs-as-Code version mismatch detected
Please check the CI build logs for details and align the documentation version with the Bazel dependency.

@github-actions
Copy link

github-actions bot commented Feb 7, 2026

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

@masc2023
Copy link
Contributor

masc2023 commented Feb 8, 2026

Seems related to #2346, Feature as stand-alone Delivery?

@qor-lb
Copy link
Contributor Author

qor-lb commented Feb 8, 2026

Seems related to #2346, Feature as stand-alone Delivery?

Yes agree, added it to the list in the description above.

PandaeDo
PandaeDo previously approved these changes Feb 9, 2026
Copy link
Contributor

@PandaeDo PandaeDo left a comment

Choose a reason for hiding this comment

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

LGTM

Copy link
Contributor

@opajonk opajonk left a comment

Choose a reason for hiding this comment

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

My understanding is the same, at least from the discussion in the last architecture on-site where I was also participating.

(Cross-linking another related DR: #2400)

Copy link
Contributor

@FScholPer FScholPer left a comment

Choose a reason for hiding this comment

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

What option is accepted or did I miss something?

Copy link
Contributor

@aschemmel-tech aschemmel-tech left a comment

Choose a reason for hiding this comment

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

see inline comment

Copy link
Contributor

@FScholPer FScholPer left a comment

Choose a reason for hiding this comment

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

no accepted option defined

@qor-lb
Copy link
Contributor Author

qor-lb commented Feb 12, 2026

Copy link
Contributor

@aschemmel-tech aschemmel-tech left a comment

Choose a reason for hiding this comment

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

Original (blocking) remark is covered. As I understood the discussion in "Alignment Tech Leads, Community Leads & Feature Team Leads" meeting, there needs to be some description how we want to deal with "breaking API changes", which would also differentiate between "small" and "big" changes. Maybe a possibility to differentiate is to ask: "is this change affecting the logical interface described in our Feature Architecture?" - because if yes, the process is asking for a "Feature Change Request" which would also result in planning activities.


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.

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.
Copy link
Contributor

Choose a reason for hiding this comment

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

Imho the heart of the question is about responsibility for breaking changes and that goes beyond "changes must be justified in terms of stack-level objectives".

Let's assume module X makes a breaking change from version 42 to 43 and an S-CORE release is imminent. Now I see two options how integration can be handled and they somewhat correspond to the considered options 1 and 2:

Option 1: Module X does not integrate, thus we cannot release S-CORE yet. Integrators organize to get the version 43 improvements in.

Option 2: Module X does not integrate, thus we release S-CORE with old version 42. Module X if you want to be in the release, you need to work.

Copy link
Contributor Author

@qor-lb qor-lb Feb 16, 2026

Choose a reason for hiding this comment

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

@a-zw from my perspective both options would still be valid even under the current proposed decision. I have added a subsection to the Impact on Governance and Planning section to try and clarify that. Let me know it this resolves your comment or if you feel differently.

Copy link
Contributor

Choose a reason for hiding this comment

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

Ok, I understand that this question is out of scope for this DR.

Now I wonder what is actually in scope? The central implication seems to be "Changes, especially breaking changes, must be justified in terms of stack-level requirements."

That feels like a weak wish. What happens if a module introduces a breaking change unjustified (intentionally or unintentionally)?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

@a-zw the point of this DR is a step before enforcement: it's about establishing consensus what we want.

Before we can discuss how to handle unjustified breaking changes procedurally, or how to detect them with tooling, we need to agree on whether we want justification at all. The alternative is that S-CORE simply has to adapt during integration, and modules carry no obligation to the stack.

That's the question this DR intends answers: no, we don't just "deal with it", modules that are part of the stack are expected to justify breaking changes against stack-level requirements.

Everything you're asking about (what happens if they don't, how we enforce it, how automation can help) is exactly the set of follow-up discussions this DR is meant to enable. Those belong in subsequent DRs, because they only make sense once we've agreed on the principle.

So I would push back slightly on "weak wish", it's an intentionally declarative statement. The teeth should come later, and that is by design.

Copy link
Member

@AlexanderLanin AlexanderLanin left a comment

Choose a reason for hiding this comment

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

LGTM

@qor-lb
Copy link
Contributor Author

qor-lb commented Feb 23, 2026

@aschemmel-tech @FScholPer are your concerns addressed? If yes, could you please approve so that we can move the PR forward?

@FScholPer
Copy link
Contributor

no accepted option defined

@FScholPer the decision is right after the context: https://github.com/eclipse-score/score/pull/2560/changes#diff-7605e72a4577a9aeeadf15aca38407709dc0eff885ee5684e8d46097ef932da8R44

can you just write the option which was Choosen or set the status to progress. Then we can just optimize the text in a next PR

@qor-lb
Copy link
Contributor Author

qor-lb commented Feb 24, 2026

@FScholPer this is the decision (see diff or html):

S-CORE is defined as a continuously consistent stack.

The primary architectural goal of the project is the consistency and correctness of the full stack. All modules within S-CORE are expected to align with the objectives of the stack.

Modules created in the context of S-CORE exist to serve the stack. Their evolution is guided by stack-level use cases, not by module-local objectives in isolation.

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.

IMO merging this as "in progress" has the same effect as keeping this PR open. We should target to reach consensus soon so that we can baseline further DRs on this.


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.

## Consequences
Copy link
Contributor

Choose a reason for hiding this comment

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

Please add Option 3:

  • Goal for RefInt:
    - To show that all S-CORE modules can be (continuously) integrated from a functional perspective, performance perspective and
    dependability (safety and security)
    - Assumption: RefInt is not directly re-used in Series Products and is not a singular Safety Element out of Context
    - Each Module has to follow the S-CORE process
    - Ensure Quality aspects (Quality Management Plan: Compiler errors, SCA, C0/C1, ....) in each of the modules and
    - How to deal with stuff from outside? e.g. OpenSOVD
    - They need to provide the necessary artefacts as Docu, Safety Manual, etc.
    - Or as work-around only: we have to have in S-CORE a maintainer to close the gaps

    • Assumption of Use of S-CORE RefInt
      • as much as possible re-use of the RefInt in Series Product without adaptations

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants