Reference consumer and learning application for
base-bash-libs.
This repository contains Beacon, a small offline support-bundle collector. It shows how a real Bash application can consume the released Base Bash v2 API while keeping its own commands, fixture schema, collection policy, redaction rules, and user-facing messages.
Beacon does not require Base, Docker, cloud credentials, or network access at
runtime. The verified base-bash-libs v2.0.0 release bundle is committed under
vendor/base-bash-libs, so a fresh clone has everything it needs.
Use Bash 4.2 or newer. On macOS, install a supported Bash with Homebrew; the vendored launcher discovers it automatically.
./bin/beacon --help
./bin/beacon status
./bin/beacon plan
./bin/beacon collect --dry-run
./bin/beacon collect
./bin/beacon verifyThe default input is the deterministic fixture in fixtures/workspace. Real
collection writes only to .beacon-output/beacon-support. Remove that
directory before repeating the real collection, or select an unused destination:
./bin/beacon collect --output /tmp/my-beacon-bundle
./bin/beacon verify --output /tmp/my-beacon-bundlecollect --dry-run creates neither the output directory nor temporary
application state beneath it.
beacon statusreports fixture readiness, the consumer Git branch, and the immutable framework version, commit, dirty state, and provenance.beacon planlists the relative inputs, output location, and redaction policy without changing the filesystem.beacon collectcopies selected fixture files into a support directory, replaces values whose keys containTOKEN,SECRET, orPASSWORD, and writes a checksum manifest without absolute developer-machine paths.beacon verifychecks every manifest entry and confirms that configured fixture secrets are absent from the collected payload.--workspace,--output,--config,--user-config,--quiet,--verbose,--dry-run, and--non-interactivecompose application policy with the Base Bash lifecycle.
Base Bash owns argument parsing, standard application options, typed
configuration, lifecycle hooks, logging, cleanup, safe filesystem helpers,
Git inspection, and immutable package identity. Beacon owns which files form a
support bundle, which fixture keys are sensitive, the manifest format, and the
meaning of status, plan, collect, and verify.
The application imports only modules listed in the released public v2 API. It does not source a sibling checkout or inspect unpublished framework functions.
base-bash-libs.lock records the human-readable
version, full release commit, canonical asset digest, and bundle-manifest
digest. vendor/evidence preserves the release checksum manifest, provenance,
and SPDX SBOM. Verify the committed package independently:
./scripts/verify-vendorThe default application path is completely offline. Downloading or changing a framework release belongs to a reviewed dependency-update change, not runtime.
Install BATS and ShellCheck, then run the full gate:
./tests/validate.shCI runs the full suite on Ubuntu and macOS with Homebrew Bash, plus a network-disabled smoke test on the exact minimum Bash 4.2.53 runtime.
The scheduled and manually dispatched Framework Compatibility workflow tests
an explicit Base Bash release tag or full commit without changing Beacon's
committed default package. The same black-box contract is available locally:
./tests/candidate-smoke.sh /path/to/base-bash-libs-candidateSee framework compatibility and pin updates for the immutable-input rules, reviewed pin-update procedure, and rollback path.
bin/beaconselects the committed Base Bash launcher.lib/beacon.shcontains the consumer-owned CLI and application policy.fixtures/workspaceprovides deterministic, intentionally fake inputs.vendor/base-bash-libsis the verified v2.0.0 release bundle.tests/beacon.batsexercises the installed application boundary.tests/validate.shverifies the vendor, shell quality, tests, and smoke path.
This repository is managed by Base.
Common commands:
basectl setup base-bash-libs-demo
basectl check base-bash-libs-demo
basectl doctor base-bash-libs-demo
basectl test base-bash-libs-demoBase manages this repository's development workflow. It is not a Beacon or Base Bash runtime dependency.