chore: add release split and consumer validation - #24
Merged
josiahking merged 3 commits intoAug 10, 2026
Conversation
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
Implements EvolvePHP 2 Phase 2.10B: deterministic package-split validation and offline prerelease/stable Composer consumer validation.
This phase validates future package release boundaries without publishing packages, creating remote package repositories, creating source tags, registering Packagist packages, or adding release automation.
Package Split Validation
Adds:
composer --working-dir=workspace release:split:validate
The validator:
git subtree splittwice per packageThe deterministic split validation now runs inside the existing required:
Policy (PHP 8.4)
job before supply-chain validation.
Prerelease Consumer Validation
Adds:
composer --working-dir=workspace release:consumer:validate
The validator creates disposable local VCS package repositories and reproduces
the accepted Composer solver matrix using isolated:
2.0.0-alpha.12.0.0package sets.
Packagist and Composer network access are disabled during the fixtures.
The eight cases verify:
@alphaalone does not propagate through transitive dependenciesminimum-stability: alphawithprefer-stable: truesucceeds2.0.0resolves normally under default stabilityThe consumer validator remains manual/pre-release and is intentionally not a
required CI step.
Composer Constraint Result
The existing first-party internal constraints remain:
^2.0
No package Composer manifest was modified.
No package gained:
@alphaminimum-stabilityprefer-stableversionThe prerelease behavior is a root-consumer stability-policy concern, not an
internal package-constraint defect.
CI Policy Evolution
The existing architecture policy previously prohibited the literal word
releaseanywhere in the workflow.That policy was narrowed so that:
The existing required CI job identities remain unchanged:
Validation
Scope
Exactly 9 files:
No dependencies, package manifests, lockfiles, RFCs, repository settings,
remote repositories, Packagist registrations, source tags or releases changed.
Deferred
Still deferred beyond Phase 2.10: