Publish LaraFly as one package without split mirrors - #5
Merged
Merged
Conversation
added 2 commits
September 25, 2026 15:16
Generated mechanically from the 29 package composer.json files: 29 replace entries, 28 psr-4 namespaces remapped to packages/*/src, 2 autoload files, and every firefly/* dropped from require and require-dev because a package cannot require what it replaces. composer validate and composer update both pass. The suite does not: 1173 failed, 2635 passed. The failures cluster in samples/lumen, which is a consumer application inside the repository with its own composer.json requiring firefly/* through path repositories — exactly the relationship the replace is meant to serve, and the one it breaks first. Package level autoload-dev and test support namespaces are the other suspects. So the approach is right and the edit is not sufficient: Laravel ships one package that replaces illuminate/*, but its repository is laid out for that from the start. Doing it here means deciding what samples/lumen consumes, what the package level test autoloads become, and whether monorepo-builder still validates. That is a piece of work, not a config change. NOT PUSHED and NOT merged. main is untouched and still on v26.09.8.
Make the root firefly/firefly library own component replacements, runtime dependencies, provider discovery, test autoloads and the installer binary. Keep component manifests as internal contracts validated by monorepo-builder. Use the bundled skeleton in the installer, declare its optional test harness explicitly, and gate PostgreSQL migrations on the selected transport. Exercise exported no-dev applications and copied Lumen consumers in CI, and replace the split release workflow with a tagged-package gate.
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.
LaraFly's metapackage could not be published without 29 component mirror repositories. Publish the repository root as the
firefly/fireflylibrary instead: it contains all component code and replaces the 28 other names withself.version. Applications explicitly requirefirefly/firefly; compatible component requirements then resolve to that same installation.The root now owns external runtime dependencies, production autoloading, Laravel provider discovery and the installer binary. Component test namespaces and Lumen sources stay in root
autoload-dev; Lumen consumes the root through a copied path repository. Internal component manifests remain available for module checks, andcomposer mono-validatestill validates their dependency versions. Testbench stays optional for consumers.The installer now uses its bundled skeleton, removing the remaining scaffolding mirror dependency. This necessarily changes the installer source and its dependency boundary to read the kernel version. The PostgreSQL boot provider also changes: because every adapter now ships, it registers outbox migrations only when the PostgreSQL transport is selected. Regression tests cover both changes.
Replace the split release workflow with a read-only tagged-package validation gate. CI also installs an exported distribution without dev dependencies, boots and compiles a real app, runs the bundled installer, installs Lumen using copied root sources, and rejects an incompatible component version. The publishing guide distinguishes a green validation workflow from a version actually indexed and installable on Packagist.
Validation on PHP 8.5:
composer check: Pint and PHPStan pass; 3,806 tests passed, 6 skipped; Deptrac 0 violations / 0 skipped violations.composer test:browser: 75 passed.composer validate --strict,composer mono-validate,composer test:package, strict MkDocs build and pre-push guard pass.The old mirror and metapackage assertions are replaced by the single-package and installed-consumer contracts. PHP 8.3/8.4/8.5 CI must be green before merge. This PR does not tag a release or change downstream pins.