|
Bootstrap
Bash-based bootstrap engine reference documentation
|
Accepted
This Architecture Decision Record establishes how experimental capabilities should be introduced and evaluated within the project.
Experimental features allow architectural ideas to mature without immediately becoming part of the project's long-term compatibility commitments.
Previous ADRs establish that the project values:
Not every worthwhile idea is ready to become a permanent part of the bootstrap engine. Some capabilities benefit from practical experience before they are treated as stable public interfaces.
The project requires a consistent approach for introducing such features.
The project may introduce experimental features when they provide an opportunity to evaluate architectural ideas without prematurely committing to their long-term design.
Experimental features should:
Experimental features shall not be considered stable public interfaces.
They may evolve, be redesigned, or be removed based on experience.
When an experimental feature matures, its promotion to a stable capability should be accompanied by the appropriate architectural documentation.
Experimentation encourages innovation.
Separating experimental capabilities from stable interfaces allows the project to explore new ideas while preserving the predictability expected by existing users.
Making experimentation explicit also prevents accidental dependence on behavior that has not yet been fully evaluated.
The project could immediately treat all new capabilities as permanent public interfaces.
This was rejected because early implementations often improve significantly after real-world use.
The project could refuse to expose any capability until its design is considered final.
This was rejected because practical feedback frequently improves architectural decisions and reveals tradeoffs that are difficult to anticipate.
Contributors should distinguish experimental capabilities from stable public interfaces.
Documentation should clearly identify experimental behavior.
Users should understand that experimental features are intended for evaluation rather than long-term automation.
This ADR does not define how experimental features are enabled.
It does not require the project to introduce experimental capabilities.
It does not establish a fixed evaluation period before stabilization.
Future releases may provide dedicated command-line options, manifest annotations, or configuration mechanisms for enabling experimental behavior.
The project should continue to ensure that experimentation remains explicit, discoverable, and isolated from stable workflows.
Experimentation is encouraged, but architectural commitments should be made deliberately.
By treating experimental capabilities as opt-in and distinct from stable interfaces, the project can continue to evolve while preserving the predictability and trust established by earlier ADRs.