Before publishing any tag:
- register
https://github.com/getbible/scriptureasgetbible/scriptureon Packagist; - enable Packagist's GitHub synchronization hook;
- protect
mainandv*.*.*tags with repository rulesets; - require every CI job, including the released-extension native integration;
- allow only the reviewed release workflow or release App to create protected tags; and
- enable private vulnerability reporting.
Packagist reads package versions from Git tags. It does not need a package upload or a publishing credential in the workflow.
-
Update
VERSION. -
Move applicable changelog entries from
Unreleasedinto a dated## [VERSION] - YYYY-MM-DDsection. -
Confirm
composer.jsondeclares the exact tested PHP, Joomla Framework, and native-extension compatibility. -
Run:
composer check composer audit
-
Review the latest coverage inventory. Every public class and method must have intentional test evidence; exclusions require a documented reason.
-
Review the retained deterministic native integration evidence for real module compilation, two verse lookups, metadata, initialization, and maintenance status. This required check must not depend on a live module mirror.
-
Verify the lowest-dependency and clean-distribution jobs.
-
Verify
pie install 'getbible/sword:^0.1.1'resolves a published native source package for a clean supported PHP installation. -
Merge through a maintainer-reviewed pull request and wait for required checks on
main.
Changing VERSION does not publish the package.
Run the Release workflow from the default branch and enter the exact version
already present in VERSION and CHANGELOG.md. The workflow:
- verifies stable semantic versioning and changelog alignment;
- confirms the release commit is contained in the default branch;
- runs Composer validation, tests, coding standards, static analysis, and the dependency security audit;
- builds and installs a clean Composer archive;
- creates and pushes the annotated
vVERSIONtag; - creates the GitHub release; and
- attaches the package archive and
SHA256SUMS.
A maintainer-created v*.*.* tag enters the same validation and publication
path. The tag must match VERSION exactly and point to a commit contained in
the default branch.
The release workflow does not register Packagist or alter its settings. Packagist's configured GitHub hook consumes the validated tag.
A release must state:
- PHP versions;
- Joomla Framework major versions;
getbible/swordextension version;- getBibleSword product and ABI versions;
- NDJSON contract identifier; and
- SWORD engine version.
Do not infer contract compatibility from the package tag alone.
After Packagist has synchronized:
composer clear-cache
composer show getbible/scripture --allIn a clean supported runtime with the native extension already installed:
composer require getbible/scripture
vendor/bin/getbible-scripture scripture:doctor --jsonConfirm that the resolved package tag, extension version, ABI, contract, installed modules, and health output match the release record.