hi-folks/fusion
Fusion is a Laravel package by hi-folks for merging multiple Laravel applications into one. It helps combine routes, views, migrations, and configs so you can build a modular monolith while keeping each application organized.
Architecture fit: v1.2.1 keeps the same Laravel-native shape: Composer package, Artisan commands (fusion:start, fusion:check, fusion:check-model), configurable content directory, and configuration via env/config. The release strengthens the fit for teams running Fusion as part of a deploy pipeline rather than an ad hoc local tool. Three changes matter architecturally:
FUSION_CACHE_TTL with a one-hour default. A sane default, but it makes content freshness a time-based property. Content edits may not appear until TTL expiry unless invalidation is explicit.fusion:check deep validation with JSON output and --include-valid. This turns Fusion from a rendering package into something that can be enforced in CI, which is a meaningful maturity step for a TPM: content quality becomes a gateable, scriptable check rather than a manual review step.The --dir option now spans fusion:start and fusion:check-model, which is consistent but increases the number of places where a path contract must hold.
Integration feasibility: Integration remains straightforward for a Laravel team, and this release improves automation feasibility:
fusion:check is directly consumable by CI, dashboards, and PR annotations. Concise reports by default keep logs readable; --include-valid is opt-in, which is the right default for large content sets.fusion:check-model now returns a non-zero status when a model is incompatible. This is a behavioral change for existing pipelines: jobs that previously passed despite incompatibility will start failing. Treat it as an intentional quality gate, but announce it.fusion:check-model without --model now lists classes under app/Models, and --dir lets teams scan a custom model directory. This reduces the need for teams with non-standard model layouts to script around the command.Technical risk: The highest risks have shifted from dependency health to cache correctness and CI behavioral change.
--dir is used to serve multiple content roots from one application and one cache store, confirm cache keys are namespaced by directory/tenant. This is the single most important thing to verify before any multi-brand or multi-tenant use.file, redis, and database stores, especially around eviction and deploy-time flushing. Validate in each environment.fusion:check-model exit-status fix can turn previously green pipelines red. This is desirable but should be scheduled and communicated.fusion:check --json, the output shape becomes a de facto contract. Ask whether it is versioned or documented as stable.Key questions:
--dir/content root so multi-tenant installs cannot serve one tenant's content to another?FUSION_CACHE_TTL read at runtime or cached in config? Does config:cache need to be rebuilt to change it?fusion:check --json output schema documented and considered stable across minor versions?fusion:check return a non-zero exit code on validation failure, matching the new fusion:check-model behavior?--dir paths validated consistently across fusion:start and fusion:check-model (path traversal, absolute vs relative, storage disks)?Stack fit: Fusion remains a good fit for Laravel applications that want file-based Markdown content without a separate CMS. This release makes it a better fit for teams with mature CI: fusion:check and fusion:check-model can be wired into pull requests, and caching reduces render cost in production. Adopt the Laravel cache store you already operate; avoid introducing a dedicated store just for Fusion unless you need independent eviction.
Migration path: From v1.2.0 to v1.2.1:
config:clear / config:cache as your deployment standard requires.fusion:check and fusion:check-model in a branch without blocking CI, to observe the new exit codes and report formats before they gate merges.FUSION_CACHE_TTL deliberately per environment — short in staging, considered in production.From v1.1.x, follow the v1.2.0 path first (including the tempest/highlight visual regression) and then apply the v1.2.1 steps above.
Compatibility: Build the matrix around four dimensions now: Laravel version, PHP version, cache store driver, and model directory layout.
app/Models does not exist or when models live elsewhere; --dir is the mitigation but should be documented.Sequencing:
fusion:check and fusion:check-model in observe-only mode in CI; collect false positives.FUSION_CACHE_TTL.Maintenance: The release adds operational surface area: a cache to configure, a TTL to govern, and two CI commands whose exit codes now matter. Offset that against real gains — caching lowers render cost, and validation automation reduces manual content review. Assign an owner for cache configuration and for the CI gate, and add FUSION_CACHE_TTL and the check commands to the release-watch checklist. The dependency posture from v1.2.0 (no abandoned highlighter) remains a positive.
Support: Update the runbook with four new topics: "content changed but site shows old version" (TTL and invalidation), "cache store unreachable," "CI now fails on fusion:check-model" (expected after the exit-status fix), and "reading fusion:check --json output." Content authors need a clear statement of how long edits take to appear. Support should have a documented one-line cache clear for Fusion content before they escalate.
Scaling: Caching directly improves scaling for code-heavy and large content sets, which was an open question in the prior assessment. Two caveats: deep validation cost grows with content volume, so scope CI checks to changed files where possible; and multi-tenant deployments using --dir must confirm key isolation before scaling out. --include-valid should stay off in automated runs to avoid enormous logs.
Failure modes: Watch for stale content after edits (TTL not elapsed, invalidation not triggered), cross-tenant cache leakage if keys are not namespaced by content root, cache store outages surfacing as render errors rather than graceful fallback, CI jobs failing unexpectedly after the fusion:check-model exit-status fix, JSON consumers breaking if the report shape changes, config:cache holding a stale FUSION_CACHE_TTL, deep validation timing out on large repositories, and continued v1.2.0 risks around --dir path validation and interactive prompts. Mitigate with explicit TTL per environment, documented cache-clear procedure, tenant-scoped key verification, observe-then-enforce CI rollout, pinned versions, and a rehearsed rollback.
Ramp-up: Developer ramp-up stays low. Add roughly half a day for a platform or DevOps engineer to validate cache behavior per environment and wire the check commands into CI, plus a short engineering communication on the fusion:check-model exit-code change. Budget about one developer day for a staging pilot covering caching and validation, and half a day for runbook and onboarding updates.
How can I help you explore Laravel packages today?