Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Core Laravel Package

laravel-persona/core

Core package for Laravel Persona, providing foundational APIs to define, resolve, and manage personas in Laravel applications. It offers a lightweight, extensible base for building persona-driven profiles, contexts, and behavior across your app.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit The package plugs into Laravel's standard package conventions (service provider, publishable config, artisan install command) and now claims a slot in the application's scheduler. That is a meaningful architectural shift: an auto-registered scheduled task is no longer a passive library — it becomes a runtime actor in every environment where the install command runs, including staging and CI-provisioned apps. For a Laravel shop already using schedule:run via cron or schedule:work, the fit is natural. For shops that treat the scheduler as a hand-curated, centrally reviewed surface (common in regulated or multi-tenant deployments), auto-registration reduces the visibility of what runs in production.

Integration feasibility Low-to-moderate effort. Typical path is composer require, run the install/publish command, review the published config, and confirm registration via php artisan schedule:list. The v1.1.2 change removes one step (manually adding the sweeper to the console kernel / routes/console.php / bootstrap/app.php), which should reduce misconfiguration. The caveat is that existing consumers who already scheduled the command manually will now get a duplicate registration unless they remove their own entry — a silent double-sweep is a real possibility.

Technical risk

  • Semantic versioning: a new feature (auto-scheduling) shipped in a patch release (1.1.2). Behavior-changing additions in a patch mean a routine composer update can alter production scheduling without a deliberate minor-version review. Treat the next update as requiring a changelog read, not just a green CI run.
  • Duplicate scheduling: the package cannot know whether the host app already registered the sweeper. Overlap protection (withoutOverlapping, onOneServer) and lock store behavior need verification before rollout.
  • Deployment script removal: described as a project-structure chore, but if any fork, Dockerfile, CI pipeline, or runbook referenced the packaged deployment script path, that reference now fails. Scope this against our own tooling before assuming it is a no-op.
  • Raw-delete cleanup documentation: this confirms a real operational hazard — direct SQL deletes bypass model events and create orphans. Documentation is the fix here, which means correctness depends on humans following a procedure, not on code.

Key questions

  1. Is auto-scheduling gated by a config flag (enabled, cron expression, queue vs. sync) and does it ship enabled or disabled by default?
  2. Does the registered task use withoutOverlapping() and onOneServer()? What lock store does it assume?
  3. How does the install command detect an existing manual registration, and does it fail loudly or silently double-register?
  4. What are the sweep batch size, chunking strategy, and transaction/locking behavior under load?
  5. Is the sweep idempotent and safe to run concurrently with application writes and replica lag?
  6. Will the scheduled task execute inside the test suite (RefreshDatabase apps), and does it add runtime to CI?
  7. Does the package support Laravel 11/12 scheduler registration (withSchedule / routes/console.php) as well as the legacy kernel path?
  8. Was the deployment script's removal announced anywhere other than the changelog, and is there a documented replacement?

Integration Approach

Stack fit Requires a Laravel application with a functioning scheduler (system cron invoking schedule:run, or a long-running schedule:work process). PHP and framework version constraints should be confirmed against composer.json rather than inferred. Where the host app runs multiple app servers, the scheduler should be a single designated node or the task must carry onOneServer() with a shared cache backend (Redis/Database) — otherwise every node sweeps.

Migration path

  1. Pin the current version; read the 1.1.1 → 1.1.2 diff rather than relying on the release notes alone.
  2. Audit the codebase for any pre-existing manual registration of the sweeper and remove it in the same change.
  3. Audit CI, Dockerfiles, and runbooks for references to the removed deployment script.
  4. Install into a scratch branch, publish config, and run php artisan schedule:list to confirm exactly one entry, the intended cadence, and the intended queue/connection.
  5. Verify behavior with config:cache enabled — a common failure point for packages that read config at boot.

Compatibility Additive scheduling should be backward compatible at the API level, but it is not behavior-neutral. Two compatibility surfaces to check: (a) Laravel scheduler API differences across 10/11/12, and (b) the organization's own deployment tooling referencing the removed script. Also confirm queue driver assumptions — if the sweeper is queued, environments without a worker will silently accumulate jobs.

Sequencing Land the version bump in a branch with scheduling explicitly disabled (assuming a config toggle exists); enable in staging against a production-shaped dataset for at least one full cadence cycle; observe query duration, rows affected, and lock contention; then enable in production behind the same config flag. Keep the flag as a kill switch rather than removing it after rollout.

Operational Impact

Maintenance The package now owns a row in the production schedule, which means it belongs in the runbook alongside other periodic jobs: owner, cadence, expected duration, log location, and disable procedure. Config publish diffs on upgrade need review, since new keys (scheduling toggle, cron expression) will appear. The raw-delete documentation creates a cross-team obligation: whoever runs manual SQL against these tables must coordinate with sweeper timing and expectations.

Support Removal of the deployment script shifts a small amount of tooling ownership to us; if anything depended on it, that support burden arrives with the upgrade rather than later. First-line support needs to know where sweeper output lands (log channel, exit codes, failure notifications) before the first production incident, not during it.

Scaling Sweep cost is proportional to orphan volume, not to application traffic, which makes it deceptive: it may be invisible for months and then become the heaviest query in the system after a data-integrity incident. Confirm batching and per-run row caps so a single execution cannot lock a large table. On multi-node deployments, the difference between one sweep and N concurrent sweeps is a database availability concern, not a performance tuning detail.

Failure modes

  • Installed but install command never run → no schedule, no sweeps, silent accumulation of orphans.
  • Install run in a pipeline that also manually registers → duplicate concurrent sweeps and lock contention.
  • Lock store unavailable (Redis down) → either overlapping execution or a silently skipped run, depending on implementation.
  • Replica lag → sweep evaluates stale references and deletes rows the primary still points at.
  • config:cache staleness after upgrade → scheduling toggle ignored, task runs against intent.
  • Removed deployment script still referenced in CI → deploy pipeline failure unrelated to application code.
  • Test suite executing the scheduled task → slower CI, and potentially destructive fixtures.

Ramp-up Low for a Laravel-fluent engineer: roughly half a day to install, verify registration, and read the sweep implementation; add a day for staging validation at realistic data volume. The nontrivial ramp-up is organizational, not technical — teaching operators the raw-delete procedure and getting the scheduled task into the on-call runbook.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
novasa/laravel-language-center
opencage/geocode
adolfoholzer/parameters
livenetworks/ln-starter
shitoudev/permissionmanager
johannesclimacus/laravel-tui
hocvt/seotools
vitalybaev/sypexgeo
amphibee/themosis-ignition
gito-me/fast-excel
frankyso/laravel-ipaymu
geolize-studio/laravel-chile
boomerangui/chat
cgv/localized-resource
noith/settings
kda/laravel-package
kda/filament-dynamic-navigation
bypersoft/signbox
pairus/product-data
fayne/laravel-filament-cms-core