Harden Composer bootstrap and prepare stable 1.0.0 - #4
Merged
Conversation
Llewellynvdm
marked this pull request as ready for review
July 26, 2026 17:28
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.
Outcome
Prepare
getbible/scriptureas a stable, production-hardened1.0.0Composer library with a safe application bootstrap, resilient snapshots, and deployment guidance that starts with the recipient experience.Simplest shipping path
Products should distribute PHP, the enabled
getbibleswordextension, the locked Composer vendor tree, reviewed configuration, and policy-approved SWORD modules as one tested runtime. A recipient launches the product without PIE, Composer, a compiler, administrator access, or low-level module commands.Developers adding the library to an existing Composer application use:
pie install 'getbible/sword:^0.1.1' php --ri getbiblesword composer require getbible/scripture vendor/bin/getbible-scripture scripture:setup vendor/bin/getbible-scripture scripture:doctorA root product installer may confirm the native install, invoke PIE, start a fresh PHP process, run Composer, and then invoke setup/doctor. The dependency package itself cannot do that safely during
composer require.What changed
scripture:doctorand interactive/non-interactivescripture:setupext-getbibleswordstrict at the tested^0.1.0ABI linecomposer scripture:doctorandcomposer scripture:setup1.0.0release metadataComposer/native bootstrap boundary
Composer validates
ext-getbiblesword; dependency scripts do not execute, and a dependency plugin cannot safely provision a privileged native extension or restart the active PHP runtime. PIE remains the native installer.SetupServiceInterface::apply()is the application-owned path for persisting allowed settings and optionally warming installed modules. It never runs PIE, Composer, a system package manager,sudo, an arbitrary subprocess, or a network download.Validation
getbible/sword0.1.0 installed, enabled, and loaded through PIEgetbiblesword.ndjson/v1with two real verse queriesFinal CI: https://github.com/getbible/scripture/actions/runs/30211579586
Release dependency
This PR remains draft until getbible/sword PR #6 is merged, version
0.1.1is published, and the documented literalpie install 'getbible/sword:^0.1.1'path is verified through Packagist. The library itself and its current released-extension integration are green.