Repository navigation
Let a release ship the main plugin file under another name - #58
Merged
Merged
Conversation
The release shipped the main plugin file under the name entry-file gives it. WordPress identifies an active plugin by its folder and file, so a plugin whose earlier releases shipped another main file, such as a 1.x bootstrap.php, could not give its source a new name: the update would remove the file WordPress has active and deactivate the plugin on every site. The release takes an optional archive-entry-file. After the checks that read the source's headers, the build renames the entry file to it, refusing a name the project already uses, so the zip that the artifact test, the GitHub release and the wp.org deploy share ships the file under that name, and the required-files assertion checks it. Rows cover the input's validation, the rename, the refusal and the assertion, and docs/workflows.md and docs/scripts-contract.md document the input. Assisted-by: Claude Code:claude-opus-5-5
This was referenced Oct 29, 2026
Merged
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
A release could ship the main plugin file only under the name
entry-filegives it. WordPress identifies an active plugin by its folder and file, so a plugin whose earlier releases shipped another main file, such as a 1.xbootstrap.php, could not give its source a new name: the update would remove the file WordPress has active and deactivate the plugin on every site.reusable-release.ymltakes an optionalarchive-entry-file, which must be a PHP file name.wp dist-archive. It renames the entry file toarchive-entry-file, and refuses a name the project already has.docs/workflows.mdlists the input, the step and its failure, anddocs/scripts-contract.mdthe main file's shipped name.Workflow +22 −1, tests +84, docs +5 −3 (2 files).
Type of change
.github/workflows/reusable-*.yml)php/quality-assurance/)Checklist
tests/Unit/):ReleaseWorkflowTest: the input's validation (unset, a root file, a path in a subfolder, a name without.php), the rename, the refusal to replace a project file, and the required-files assertion under the archive name and under the source name;composer testpasses locally:composer quality-check: PHPCS on both profiles, PHPStan and 161 tests;npm run lint:all, actionlint and zizmor pass.docs/workflows.mdis updated to reflect the new contract: the input's row, the build job's description and its failure list.Review points.
composer quality-check:all's Infection run hit Composer's 300 s process timeout locally. CI does not run it, and its source directories are untouched.