-
Notifications
You must be signed in to change notification settings - Fork 81
DR-001-Arch: Consistent Stack vs. Reference Integration #2560
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
qor-lb
wants to merge
3
commits into
main
Choose a base branch
from
lb_arch_dr
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
+116
−0
Open
Changes from all commits
Commits
Show all changes
3 commits
Select commit
Hold shift + click to select a range
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,113 @@ | ||
| <!-- | ||
| Copyright (c) 2026 Contributors to the Eclipse Foundation | ||
|
|
||
| See the NOTICE file(s) distributed with this work for additional | ||
| information regarding copyright ownership. | ||
|
|
||
| This program and the accompanying materials are made available under the | ||
| terms of the Apache License Version 2.0 which is available at | ||
| https://www.apache.org/licenses/LICENSE-2.0 | ||
|
|
||
| SPDX-License-Identifier: Apache-2.0 | ||
| --> | ||
|
|
||
| # DR-001-Arch: Consistent Stack vs. Reference Integration | ||
|
|
||
| - **Date:** 2026-02-07 | ||
|
|
||
| ```{dec_rec} Consistent Stack vs. Reference Integration | ||
| :id: dec_rec__arch__consistent_stack_vs_reference | ||
| :status: accepted | ||
| :context: Architecture | ||
| :decision: S-CORE as consistent stack | ||
| ``` | ||
|
|
||
| --- | ||
|
|
||
| # Consistent Stack vs. Reference Integration | ||
|
|
||
| ## Context | ||
|
|
||
| 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. | ||
|
|
||
| This ambiguity creates friction in technical discussions, feature planning, and change justification. Contributors and committers currently lack a clear architectural baseline to decide whether modules, processes and tools are expected to optimize for individual evolution of modules or for the behavior of the overall stack. | ||
|
|
||
| This decision record clarifies the intended architectural role of S-CORE and establishes a foundation for subsequent technical and procedural decisions. | ||
|
|
||
| The scope of this decision applies to the entire S-CORE project, including all existing and future modules. | ||
|
|
||
| Two categories of modules must be distinguished: | ||
|
|
||
| 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. | ||
| 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. | ||
|
|
||
| ## Decision | ||
|
|
||
| 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. | ||
|
|
||
| This decision is binding for the project. Any deviation requires a new, explicitly agreed Architecture Decision Record. | ||
|
|
||
| ### No Constraint on Independent Module Delivery | ||
|
|
||
| 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. | ||
|
|
||
| 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. | ||
|
|
||
|
|
||
| ## Options Considered | ||
|
|
||
| ### Option 1: Reference Integration of Independent Modules | ||
|
|
||
| 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. | ||
|
|
||
| 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. | ||
|
|
||
| ### Option 2: Consistent Stack as Leading Use Case | ||
|
|
||
| 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. | ||
|
|
||
| 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 | ||
|
|
||
| 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. | ||
|
|
||
| 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. | ||
|
|
||
| Late integration risk is reduced. Architectural inconsistencies surface earlier, during development rather than at release time. | ||
|
|
||
| ## Impact on Development Workflow | ||
|
|
||
| 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. | ||
|
|
||
| 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. | ||
|
|
||
| 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. | ||
|
|
||
| ## Impact on Governance and Planning | ||
|
|
||
| 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. | ||
|
|
||
| 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. | ||
|
|
||
| No specific governance structure or role model is defined by this record. | ||
|
|
||
| ## Explicit Non-Goals | ||
|
|
||
| This decision record does not: | ||
|
|
||
| - Define concrete development processes or workflows. | ||
| - Specify CI/CD implementations or quality gates. | ||
| - Define release cadences or versioning strategies. | ||
| - Provide a migration plan for existing modules. | ||
| - Specify how architectural discussions are conducted or moderated. | ||
|
|
||
| These topics are expected to be addressed in follow-up decision records, using this decision as a shared architectural foundation. | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -24,3 +24,4 @@ Infrastructure | |
| :glob: | ||
|
|
||
| DR-*-infra* | ||
| DR-*-arch* | ||
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please include something like: "This approach does not prevent the use-case of independent module (or feature) delivery. I.e. the modules/features are still independent enough to be able to be released as a SEooC.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@aschemmel-tech I added a paragraph to clarify that it is not the goal to constrain the modularity of the stack. Does this suffice or would you like to have the wording differently?