|
Bootstrap
Bash-based bootstrap engine reference documentation
|
Accepted
This Architecture Decision Record establishes that the bootstrap engine should remain intentionally small, focused, and opinionated.
The core engine should provide the minimum capabilities necessary to interpret manifests, construct execution plans, and delegate package operations. Features that are optional, platform-specific, or narrowly applicable should be implemented outside the core whenever practical.
Previous ADRs establish a consistent architectural direction:
Without an explicit boundary around the core engine, there is a natural tendency for unrelated capabilities to accumulate over time.
Examples might include editor configuration, desktop customization, secret management, cloud integration, or other workstation-specific behaviors.
Although individually useful, such features can distract from the project's primary purpose and increase maintenance burden.
The bootstrap engine shall maintain a deliberately small core.
The core engine owns:
Capabilities that are not essential to those responsibilities should generally be implemented as higher-level manifests, profiles, or separate tools rather than incorporated into the engine itself.
The project should prefer enabling extension over embedding policy.
A small core is easier to understand, test, document, and maintain.
Keeping policy outside the engine allows different users to compose workflows appropriate for their own environments without increasing complexity for everyone else.
This philosophy also reinforces the project's goal of remaining inspectable and predictable.
The project could gradually absorb workstation provisioning, configuration management, and other automation tasks.
This was rejected because it blurs the project's purpose and encourages feature creep.
The engine could include numerous optional behaviors controlled by flags or configuration.
This was rejected because optional behavior still increases implementation, testing, and documentation complexity.
Future feature proposals should first consider whether they belong in the core engine or are better expressed through composition.
Contributors should prefer extending manifests, profiles, or companion tools before expanding the engine itself.
This ADR does not prohibit growth.
It does not prevent introducing new core capabilities when they strengthen the engine's primary responsibilities.
It does, however, establish that growth should remain deliberate and aligned with the project's architectural purpose.
Future companion projects may provide higher-level provisioning, workstation profiles, or environment-specific integrations built upon the bootstrap engine's stable public interfaces.
Such projects should complement the engine rather than redefine its mission.
The bootstrap engine should remain small, focused, and composable.
A deliberately limited core preserves clarity, maintainability, and long-term architectural integrity while allowing richer workflows to be built around it.