build: manage Bootstrap dependencies through bashdeps - #50
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 18:14
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
Adopt the released
bashdeps.bashcontract for Bootstrap's external build/development artifacts while preserving one explicit, independently verified Makefile bootstrap path for bashdeps itself.The fresh-checkout path is now:
This PR also retains the generated-documentation cleanup that originally began in PR #50:
vendor/anddoc/reference/are generated state, reference documentation is regenerated by the Pages workflow, and generated Doxygen output is removed from source control.Dependency pins
bashdeps.bash:bb6c807fa12c010950bda06172ac0611d278c57aca1f8352f41502d0d76b4e6cdoxygen-bash.awk:dc09bccac7cdb69940b2b34f0c2a92d862c5979d578364ec66782ac92338a3eaThe Doxygen filter now uses the immutable
v0.0.6tag URL rather than the previous movingmainURL.Make target contract
make depsmay use the network, verifies or repairs the pinned bashdeps bootstrap, then convergesdependencies.txtthroughbashdeps.bash sync.make deps-checkis offline and non-repairing; it verifies the existing bootstrap and runsbashdeps.bash verify.make builddoes not acquire or verify dependencies. Bootstrap's consumer artifact currently needs no external build artifact, so a cleanmake buildsucceeds without creatingvendor/.make allexplicitly completes dependency synchronization before recursively invokingmake build, preserving ordering under parallel Make.make docsconsumes preparedvendor/doxygen-bash.awkstate and does not acquire missing dependencies implicitly.make allimplicitly.Trust and publication behavior
The Makefile directly owns only
vendor/bashdeps.bash. Existing bootstrap bytes are reused only when they match the committed SHA-256 digest. Missing or mismatched bytes are downloaded to staging, verified, and only then published. Failed acquisition or digest verification does not overwrite the prior destination.Ordinary external files are declared in committed
dependencies.txt; the digest is authoritative for byte identity. Bashdeps itself is intentionally excluded from that manifest to avoid a circular bootstrap dependency.CI, documentation, and releases
make builddoes not create dependency state.make depsand offlinemake deps-check, deliberately tampers with the managed Doxygen filter, verifies detection, and then converges state through another explicitmake deps.vendor/is removed.make deps,make deps-check,make docs, and a finalmake deps-checkbefore deployment.dist/bootstrap.bashremains functional after removingvendor/.doc/reference/andvendor/remain ignored generated state; previously committed Doxygen output is removed.Architecture and documentation
ADR-051 records the bootstrap paradox, trust model, target/network boundaries, convergence model, generated-state policy, CI/release implications, and runtime isolation. README, AGENTS.md,
doc/testing.md, release-verification guidance, the ADR index, and Doxyfile comments are updated to describe the current contract.Validation
On the current PR head:
build, realdeps, offlinedeps-check, freshall, tamper detection/convergence, documentation generation, clean tracked state after docs, and runtime execution after removingvendor/;make allbootstrap/synchronization path before real package-manager execution;src/orlib/runtime source files changed and that generateddoc/reference/output is removed from source control.MegaLinter is still running on the current head at the time of this update; no MegaLinter failure is being reported here as a completed result.