Offline vendor and standalone workflow

August 31, 2026 ยท View on GitHub

Build and verify a framework bundle from the canonical source tree:

scripts/library-bundle bundle /tmp/base-bash-libs-v2
scripts/library-bundle verify /tmp/base-bash-libs-v2

Install it into a consumer without network access:

scripts/vendor create /tmp/base-bash-libs-v2 vendor/base-bash-libs
scripts/vendor verify vendor/base-bash-libs

base-bash-libs.lock records the framework version, source commit, manifest hash, and verification mode. scripts/vendor update stages a complete new tree, writes its lock, and swaps it atomically; the previous tree remains at vendor/base-bash-libs.previous until a deliberate scripts/vendor rollback.

For an application that must run without a framework checkout, assemble a standalone directory:

scripts/vendor standalone . /tmp/base-bash-libs-v2 dist/app
PATH="$PWD/dist/app/bin:$PATH" dist/app/bin/app --help

The standalone payload contains two deterministic copies of the same verified framework bundle. The root copy is the authoritative runtime layout and is bound by BASE_BASH_STANDALONE.release; the launcher resolves its colocated lib/bash tree without ambient BASE_BASH_LIBS_DIR. The vendor/base-bash-libs copy is the authoritative audit/vendor layout and has its own base-bash-libs.lock, so consumers can verify it independently:

scripts/vendor verify dist/app/vendor/base-bash-libs

Both copies carry the same MANIFEST.sha256, version, and source commit from the input bundle. Standalone creation stages the complete payload and its lock before one atomic move. No command downloads, executes, or evaluates remote content.