build: publish development stripped and minified artifacts - #51
Merged
Conversation
Contributor
✅MegaLinter analysis: Success
Notices📣 MegaLinter 9.5.0 is out! Discover the new features and security recommendations in the release announcement. (Skip this info by defining See detailed reports in MegaLinter artifacts Your project could benefit from a custom flavor, which would allow you to run only the linters you need, and thus improve runtime performances. (Skip this info by defining
|
wesley-dean
marked this pull request as ready for review
August 18, 2026 20:29
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.

Summary
Add a three-flavor Bootstrap build and release model:
dist/bootstrap.dev.bash- fully assembled source with comments intactdist/bootstrap.bash- ordinary/default artifact with full-line comments strippeddist/bootstrap.min.bash- stripped artifact processed by Bash-Minifier.256SHA-256 checksum companion for each executableA successful
make buildnow produces all six files.Bash-Minifier dependency
Bash-Minifier is managed through the existing ADR-051 bashdeps boundary rather than new direct Make download logic.
The manifest pins:
Zuzzuc/Bash-minifier9c824e20815a5bca2153ec25ecc02a4edea1430eMinify.shvendor/bash-minifier.bash93cb422360db4cc410d19b068eb074da020a4a743f0eebc9c442d1e5acd90e9bThe upstream file is MIT licensed. The dependency is build-time tooling only and is not embedded as runtime tooling.
Build boundary
make buildremains network-free and non-repairing. It now requires already-preparedvendor/bash-minifier.bashand fails with guidance when that dependency is absent.A fresh checkout therefore uses either:
or:
make allretains explicitdeps->buildordering under ADR-051.Artifact lineage
The build assembles the full ordered project source once as
bootstrap.dev.bash. The ordinarybootstrap.bashis derived from that complete artifact by removing full-line comments while preserving the shebang.bootstrap.min.bashis then derived from the complete stripped artifact through the pinned Bash-Minifier.This means source originating in every Bootstrap library follows the same comment-stripping and minification path as the entry point.
Testing
The Make test runner applies the complete Bats behavior suite to all three executable flavors.
make test-reportemits separate JUnit files for development, stripped, and minified output so CI can identify flavor-specific regressions.Build/dependency regression coverage verifies:
make builddoes not acquire a missing Bash-Minifier dependency;.256files verify their corresponding bytes;make allsynchronizes dependencies before building every flavor.The Test workflow additionally verifies the real commit-pinned Bash-Minifier dependency, byte-drift detection/convergence, checksum validity, and that the real minified output differs from the stripped output.
Releases
The release workflow now publishes and attests all six files:
bootstrap.bashremains the conventional/default filename so existing consumers and download URLs remain compatible.Architecture and documentation
ADR-052 records the three-flavor build decision and partially supersedes the single-artifact portions of ADR-009 and ADR-010 plus the repository-specific ADR-051 statement that a clean
make buildneeds no vendor state. The general ADR-051 network and dependency boundaries remain intact.README, AGENTS.md, testing guidance, release-verification guidance, and the ADR index are updated accordingly.
CI also exposed an existing documentation-runner prerequisite: the current Doxyfile invokes Graphviz
dot, while the Test and Pages workflows installed Doxygen without Graphviz. Both Doxygen runners now install Graphviz explicitly; this is the only change outside the requested build/minification surface.Validation
On the current PR head:
make buildfails clearly when Bash-Minifier is absent and does not create dependency state;make depsand offlinemake deps-checkpass with the commit-pinned Bash-Minifier bytes;make allsucceeds;.256files are created and their checksums verify;deps-checkand reconverged by explicitmake deps;vendor/;make allbuild path;src/orlib/runtime implementation changes.MegaLinter is still running on the current head at the time of this update.
Scope
No
src/orlib/runtime implementation files are changed. The PR is restricted to build/dependency machinery, artifact tests, CI/release behavior, and documentation of those processes, plus the Graphviz prerequisite correction described above.