{
  "id": "laravel-livewire-postgresql",
  "name": "Laravel + Livewire + PostgreSQL",
  "use_cases": [
    "SaaS",
    "Administrative and business applications",
    "Server-driven interactive products"
  ],
  "choose_when": [
    "PHP team or Laravel ecosystem fit is strong.",
    "Integrated auth, queues and concrete agent inspection tools reduce assembly work."
  ],
  "avoid_when": [
    "The UI fundamentally requires an offline/client-state architecture; use the Inertia alternative if Laravel still fits.",
    "A hosting plan cannot operate needed queue workers or scheduled jobs."
  ],
  "tools": [
    {
      "job": "UI",
      "default": "Official Livewire starter kit + Blade/Tailwind",
      "alternatives": [
        "Official React/Vue/Svelte Inertia kits for heavier client interactions"
      ],
      "reason": "One supported starter establishes coherent UI/auth integration.",
      "limits": "Starter includes Flux; distinguish its free components from paid Pro assets.",
      "source_urls": [
        "https://laravel.com/framework/docs/13.x/starter-kits",
        "https://fluxui.dev/pricing"
      ]
    },
    {
      "job": "Database and migrations",
      "default": "PostgreSQL + Eloquent + Laravel migrations",
      "alternatives": [
        "SQLite for local/small deployments; existing MySQL where operationally established"
      ],
      "reason": "Conventional ORM and migrations with a production relational store.",
      "limits": "Use constraints; production-engine integration tests; never use migrate:fresh against retained data.",
      "source_urls": [
        "https://laravel.com/framework/docs/13.x/database",
        "https://laravel.com/framework/docs/13.x/migrations"
      ]
    },
    {
      "job": "Authentication",
      "default": "Starter-kit Fortify auth",
      "alternatives": [
        "WorkOS starter variant for managed identity requirements"
      ],
      "reason": "Existing authentication flow plus resource-level authorization.",
      "limits": "Policies remain application work; managed identity adds external terms/cost.",
      "source_urls": [
        "https://laravel.com/framework/docs/13.x/starter-kits",
        "https://laravel.com/framework/docs/13.x/authorization"
      ]
    },
    {
      "job": "Authorization",
      "default": "Laravel policies and gates",
      "alternatives": [
        "Existing explicit resource-level authorization implementation; identity providers still require policies"
      ],
      "reason": "Existing authentication flow plus resource-level authorization.",
      "limits": "Policies remain application work; managed identity adds external terms/cost.",
      "source_urls": [
        "https://laravel.com/framework/docs/13.x/starter-kits",
        "https://laravel.com/framework/docs/13.x/authorization"
      ]
    },
    {
      "job": "Queues",
      "default": "Laravel database queue + supervised workers",
      "alternatives": [
        "Redis + Horizon for queue dashboards/balancing; SQS for an established managed queue"
      ],
      "reason": "Simple starting infrastructure with explicit scale-up options.",
      "limits": "Use after-commit dispatch, idempotent jobs, finite retries and worker restarts. Horizon requires Redis.",
      "source_urls": [
        "https://laravel.com/framework/docs/13.x/queues",
        "https://laravel.com/framework/docs/13.x/horizon"
      ]
    },
    {
      "job": "Tests",
      "default": "Pest or PHPUnit from starter; Dusk for key browser flows",
      "alternatives": [
        "Keep the existing test runner rather than changing syntax for its own sake"
      ],
      "reason": "Application and browser verification complement each other.",
      "limits": "Use a dedicated test database and install Dusk only in development.",
      "source_urls": [
        "https://laravel.com/framework/docs/13.x/testing",
        "https://laravel.com/framework/docs/13.x/dusk"
      ]
    },
    {
      "job": "Lint, static analysis and security",
      "default": "Pint + Larastan/PHPStan + Composer audit",
      "alternatives": [
        "Existing equivalent tooling if already maintained"
      ],
      "reason": "Formatting, static checks and dependency advisory checks expose different failures.",
      "limits": "Install a compatible Larastan version and configure its extension; no audit substitutes for authorization tests.",
      "source_urls": [
        "https://laravel.com/framework/docs/13.x/pint",
        "https://github.com/larastan/larastan",
        "https://getcomposer.org/doc/03-cli.md#audit"
      ]
    },
    {
      "job": "Deployment",
      "default": "PHP-FPM web service + worker supervisor + scheduler on chosen host",
      "alternatives": [
        "Laravel Cloud for managed operation; Forge for server management"
      ],
      "reason": "A conventional process model is a practical default.",
      "limits": "Serve only public/; APP_DEBUG=false; persist uploads; reload workers after releases; paid platforms are optional.",
      "source_urls": [
        "https://laravel.com/framework/docs/13.x/deployment"
      ]
    },
    {
      "job": "Agent tooling",
      "default": "Laravel Boost development dependency",
      "alternatives": [
        "Normal CLI/docs when MCP is unavailable"
      ],
      "reason": "Version-aware documentation and route/schema/log inspection provide concrete context.",
      "limits": "Tools can execute application code; use development credentials and honor maintained repository instructions. A README-only integration is an optional project policy; inspect installed Boost help before opting out of generated instructions.",
      "source_urls": [
        "https://laravel.com/framework/docs/13.x/ai"
      ]
    },
    {
      "job": "Licensing and hosting",
      "default": "Laravel framework MIT; self-hostable",
      "alternatives": [
        "Optional paid Flux Pro and managed services"
      ],
      "reason": "Framework use does not mandate a hosting subscription.",
      "limits": "Check each optional asset/package/service license separately.",
      "source_urls": [
        "https://github.com/laravel/framework/blob/13.x/LICENSE.md",
        "https://fluxui.dev/pricing"
      ]
    },
    {
      "job": "Transactional email",
      "default": "Laravel Mail",
      "alternatives": [
        "Preserve an existing compatible project choice"
      ],
      "reason": "Mailables and queue integration keep delivery in application conventions",
      "limits": "Configure the selected mailer and verified sender; use queued mail where required, after-commit handling and failed-job monitoring. Provider acceptance is not inbox delivery.",
      "source_urls": [
        "https://laravel.com/framework/docs/13.x/mail"
      ]
    },
    {
      "job": "Uploads and object storage",
      "default": "Laravel Storage / Flysystem",
      "alternatives": [
        "Preserve an existing compatible project choice"
      ],
      "reason": "Storage disks support private local or S3-backed files",
      "limits": "Configure filesystems.php; install the selected adapter only, authorize downloads and uploads, define size/type limits and retention. Ephemeral deploy disks are not durable shared storage.",
      "source_urls": [
        "https://laravel.com/framework/docs/13.x/filesystem"
      ]
    },
    {
      "job": "Realtime transport",
      "default": "Laravel broadcasting + Reverb when self-hosted sockets are required",
      "alternatives": [
        "Preserve an existing compatible project choice"
      ],
      "reason": "Private channels integrate realtime application events",
      "limits": "Use the installed broadcasting setup; configure Echo, channel authorization, queued events and a supervised Reverb process. Verify TLS/proxy/scaling and reconnect; broadcast is not durable replay.",
      "source_urls": [
        "https://laravel.com/framework/docs/13.x/broadcasting"
      ]
    }
  ],
  "setup_steps": [
    "Start in a local development workspace with a supported PHP/Composer runtime, PostgreSQL, Node/npm and Git. Resolve actual package compatibility; Boost minimums do not define Laravel minimums.",
    "Install installer if needed with composer global require laravel/installer; run laravel new product and choose Livewire, PostgreSQL and the desired test runner; enter product.",
    "Configure .env database/mail/queue settings and confirm application key generation; do not commit secrets. Run php artisan migrate against the intended development database.",
    "Run npm install then npm run build; run composer run dev. Configure a supervised queue worker and scheduler separately for production.",
    "Add composer require laravel/boost --dev; inspect installed boost:install help and configure the selected integration. Honor generated guidance unless the repository explicitly chooses README-only instructions; inspect available installer options or configure MCP manually for that policy.",
    "Add compatible Larastan as a dev dependency and configure phpstan.neon using its guide. For browser tests add laravel/dusk as a dev dependency then run php artisan dusk:install.",
    "Prepare an authorized release: install locked production dependencies, build assets, review migrations, run php artisan optimize, and reload supervised services. Confirm backup/restore and rollback compatibility before production migration."
  ],
  "verification_commands": [
    "php --version",
    "composer check-platform-reqs",
    "php artisan about",
    "php artisan migrate:status",
    "php artisan test",
    "php artisan dusk",
    "vendor/bin/pint --test",
    "vendor/bin/phpstan analyse",
    "composer audit",
    "npm run build"
  ],
  "evidence_status": "documentation-reviewed",
  "open_questions": [
    "Which starter-kit features and paid UI components are actually required?",
    "Which identity and per-resource authorization policies must be supported?",
    "Which host, mail/storage providers, realtime capacity and worker/scheduler operation will own production?"
  ],
  "sources": [
    {
      "url": "https://laravel.com/framework/docs/13.x/starter-kits",
      "title": "Laravel Starter Kits",
      "checked_date": "2026-10-10"
    },
    {
      "url": "https://fluxui.dev/pricing",
      "title": "Flux Pricing and Component Tiers",
      "checked_date": "2026-10-10"
    },
    {
      "url": "https://laravel.com/framework/docs/13.x/database",
      "title": "Laravel Database: Getting Started",
      "checked_date": "2026-10-10"
    },
    {
      "url": "https://laravel.com/framework/docs/13.x/migrations",
      "title": "Laravel Database Migrations",
      "checked_date": "2026-10-10"
    },
    {
      "url": "https://laravel.com/framework/docs/13.x/authorization",
      "title": "Laravel Authorization",
      "checked_date": "2026-10-10"
    },
    {
      "url": "https://laravel.com/framework/docs/13.x/queues",
      "title": "Laravel Queues",
      "checked_date": "2026-10-10"
    },
    {
      "url": "https://laravel.com/framework/docs/13.x/horizon",
      "title": "Laravel Horizon",
      "checked_date": "2026-10-10"
    },
    {
      "url": "https://laravel.com/framework/docs/13.x/testing",
      "title": "Testing Applications",
      "checked_date": "2026-10-10"
    },
    {
      "url": "https://laravel.com/framework/docs/13.x/dusk",
      "title": "Laravel Dusk",
      "checked_date": "2026-10-10"
    },
    {
      "url": "https://laravel.com/framework/docs/13.x/pint",
      "title": "Laravel Pint",
      "checked_date": "2026-10-10"
    },
    {
      "url": "https://github.com/larastan/larastan",
      "title": "Larastan README",
      "checked_date": "2026-10-10"
    },
    {
      "url": "https://getcomposer.org/doc/03-cli.md#audit",
      "title": "Composer CLI: Audit",
      "checked_date": "2026-10-10"
    },
    {
      "url": "https://laravel.com/framework/docs/13.x/deployment",
      "title": "Laravel Deployment",
      "checked_date": "2026-10-10"
    },
    {
      "url": "https://laravel.com/framework/docs/13.x/ai",
      "title": "AI Assisted Development",
      "checked_date": "2026-10-10"
    },
    {
      "url": "https://github.com/laravel/framework/blob/13.x/LICENSE.md",
      "title": "Laravel Framework MIT License",
      "checked_date": "2026-10-10"
    },
    {
      "url": "https://laravel.com/framework/docs/13.x/mail",
      "title": "Laravel Mail",
      "checked_date": "2026-10-10"
    },
    {
      "url": "https://laravel.com/framework/docs/13.x/filesystem",
      "title": "Laravel file storage",
      "checked_date": "2026-10-10"
    },
    {
      "url": "https://laravel.com/framework/docs/13.x/broadcasting",
      "title": "Laravel broadcasting",
      "checked_date": "2026-10-10"
    }
  ],
  "title": "Laravel + Livewire",
  "language": "PHP",
  "group": "Web applications",
  "kind": [
    "web"
  ],
  "ui": "server",
  "host": "server",
  "summary": "PHP product applications with a cohesive UI, auth and queue toolset.",
  "shape": "Laravel · Livewire · Blade · PostgreSQL",
  "tradeoff": "The web process, queue workers and scheduler each need deployment supervision.",
  "research_file": "rails-laravel.json",
  "reviewed": "2026-10-10",
  "best_practices": [
    "Use policies and gates for permissions; a starter's authentication flow does not supply product authorization.",
    "Preserve the selected starter's test conventions and verify Livewire behavior in a real browser.",
    "Supervise queue workers and schedule execution explicitly. Verify retries and avoid duplicate external effects.",
    "Use Laravel Boost during development with the project's installed documentation; keep production exposure separate."
  ],
  "research_freshness": {
    "core_guidance_checked_on": "2026-10-13",
    "sources": [
      "https://laravel.com/framework/docs/13.x/installation",
      "https://laravel.com/framework/docs/13.x/ai"
    ],
    "scope": "Core framework roles, current setup/agent documentation and cited-source availability rechecked; not a reimplementation or exhaustive semantic audit of every third-party dependency."
  },
  "guide_url": "/stacks/laravel-livewire-postgresql/",
  "markdown_url": "/stacks/laravel-livewire-postgresql/guide.md",
  "json_url": "/stacks/laravel-livewire-postgresql/record.json",
  "architecture_and_migration": {
    "id": "laravel-livewire-postgresql",
    "version_scope": "Laravel 13.x and Livewire 4.x documentation fetched 11 October 2026. These are documentation scopes, not proof of installed compatibility; inspect composer.lock, PHP version, queue/session/cache drivers and current Livewire component format before implementation.",
    "operating_model": "Laravel combines conventional routes, middleware, authentication guards/providers and database migrations. Livewire components combine PHP behavior with Blade rendering. Recommendation: use these conventions for connected forms and business screens; keep server authorization and domain writes explicit instead of treating public component properties as trusted state.",
    "architecture": [
      "Recommendation: keep a single domain writer and migration owner during shared-schema coexistence; let controllers, Livewire actions and queued workers call the same application operation with its authorization and transaction rules.",
      "Queue connections select backends while queue names select work categories. The documented choices include relational storage, Redis and SQS. Recommendation: choose a backend from recovery and operation requirements rather than assuming every Laravel application needs Redis.",
      "Recommendation: list HTTP PHP execution, queue workers, the scheduler and a selected broadcast server separately. Livewire component interactivity does not by itself establish multi-client event delivery; broadcasting has its own backend/client and queue configuration."
    ],
    "developer_workflow": [
      "In a configured local Laravel project, php artisan make:livewire post.create creates a Livewire 4 component; --class retains the established class-based style and --mfc creates a multi-file component. Inspect existing conventions before choosing a format.",
      "php artisan make:job ProcessPodcast creates a queued job. Configure the selected connection and run php artisan queue:work --queue=high,default only after those queues and priorities match the application; supervise the production worker separately.",
      "php artisan migrate applies reviewed migrations. For missing database session/queue tables, the selected-version docs provide php artisan make:session-table and php artisan make:queue-table; check existing migrations first to avoid duplicate tables.",
      "Recommendation: verify behavior with real driver instances in a disposable environment, including timeout/retry interaction, denied Livewire actions, concurrent session writes and private broadcast authorization. Faking queue submission alone cannot exercise worker serialization or crash recovery."
    ],
    "avoid": [
      "Avoid switching queue consumers solely because both use Redis: Laravel payloads and Eloquent identifier rehydration are framework execution contracts. Recommendation: preserve old consumers or translate deliberately versioned payloads.",
      "Avoid worker timeout values longer than retry_after; Laravel warns this can allow the job to be processed twice. Avoid assuming unique-job locks make external effects exactly once; recommendation: use business idempotency.",
      "Avoid calling onOneServer a cross-stack scheduler lock. It uses a shared supported Laravel cache store; recommendation: explicitly retire the old scheduler for the transferred business category.",
      "Avoid trusting client-editable Livewire properties or hidden buttons for authorization. Avoid Cache::flush on a backend shared with other applications; the documented flush ignores the configured prefix."
    ],
    "transitions": [
      {
        "capability": "data",
        "existing_contract": "Inventory table identifiers, casts/nullability, timestamps, constraints and side effects currently attached to writes. Migrations evolve the schema; Eloquent models do not automatically reproduce another runtime’s callbacks.",
        "coexistence": "Recommendation: keep the existing writer authoritative, add compatible fields and move one domain operation at a time. Let one named migration runner own shared tables and keep old readers functional during the rollback window.",
        "target": "Laravel database migrations and the selected PostgreSQL schema, with application operations reused by controllers/Livewire/workers. Recommendation: delay destructive schema contraction until all old readers retire.",
        "benefits": [
          {
            "benefit": "Recommendation: conventional schema and application ownership can make changes reviewable in one maintained application.",
            "prerequisites": "Explicit writer transfer, tested value mappings and a single schema owner.",
            "tradeoffs": "Both runtimes remain constrained by the shared schema; reversal does not recreate deleted business data."
          }
        ],
        "checks": [
          "Create and update a representative fixture through both allowed paths; compare IDs, nulls, timezone handling and unique/foreign-key failures.",
          "Apply the reviewed migration to a disposable restored copy and confirm both deployed versions still understand new writes."
        ],
        "rollback": "Recommendation: restore the old writer before contracting fields; preserve additive schema and reconcile writes accepted by Laravel.",
        "sources": [
          "https://laravel.com/docs/13.x/migrations"
        ],
        "id": "data-1"
      },
      {
        "capability": "jobs",
        "existing_contract": "Record connection, queue, PHP job class, serialized model identifiers/relationships, timeout, retry_after, failures and delayed/running work. Model arguments may be re-fetched when the worker executes.",
        "coexistence": "Recommendation: keep old consumers for old payloads; route new categories to isolated Laravel queues. Transfer producers and each schedule owner together. Account for ready, delayed, failed, retry and in-flight work before retiring the old backend.",
        "target": "ShouldQueue jobs on an intentionally selected database/Redis/SQS connection, with supervised workers and explicit attempts/timeouts. after_commit or afterCommit delays dispatch until commit; recommendation: use a durable outbox for a required recoverable commit-to-broker handoff.",
        "benefits": [
          {
            "benefit": "Recommendation: a job category can move without rebuilding the entire backlog.",
            "prerequisites": "Versioned payload fixtures, isolated queues and retained old consumers.",
            "tradeoffs": "Two queue systems may remain temporarily; serialized framework objects are not a portable cross-runtime API."
          }
        ],
        "checks": [
          "Enqueue a model, alter/delete it before execution and verify the intended rehydration/failure behavior.",
          "Roll back the domain transaction and verify after-commit dispatch produces no job; kill after an external effect and prove retry cannot duplicate the business effect.",
          "Set worker timeout below the applicable retry/visibility boundary and verify a long job cannot have two concurrent effects."
        ],
        "rollback": "Recommendation: stop the new producer, keep consumers for accepted payload versions and reconcile external effects before restoring old queue routing.",
        "sources": [
          "https://laravel.com/docs/13.x/queues"
        ],
        "id": "jobs-1"
      },
      {
        "capability": "identity",
        "existing_contract": "Capture guard/provider, account mapping, session driver, cookie/encryption configuration, remember-me behavior, expiry and logout. The current docs default to database sessions; the application may use another driver.",
        "coexistence": "Recommendation: retain a named identity authority or qualified session exchange; share cookies only after full-format fixtures pass. Map old per-resource permissions into every Livewire/server action and keep concurrent session semantics explicit.",
        "target": "Laravel authentication guard/provider plus a selected session store and resource authorization. Session blocking needs a supported atomic-lock cache driver and is unavailable with cookie sessions.",
        "benefits": [
          {
            "benefit": "Recommendation: explicit session/account ownership can preserve user continuity during feature migration.",
            "prerequisites": "Qualified identity/session mapping and common revocation rules.",
            "tradeoffs": "Lock-capable session coordination adds a store dependency; a shared database alone does not prove cookie compatibility."
          }
        ],
        "checks": [
          "Login through the old application, access the Laravel feature and revoke/logout; both paths must deny future operations.",
          "Run concurrent requests that modify one session and verify required data is not lost.",
          "Modify a Livewire public identifier to another tenant’s record and directly invoke the action; the server must reject it."
        ],
        "rollback": "Recommendation: retain old session/exchange support until the cohort can return, while preserving every revocation and account mapping.",
        "sources": [
          "https://laravel.com/docs/13.x/authentication",
          "https://laravel.com/docs/13.x/session",
          "https://livewire.laravel.com/docs/4.x/security"
        ],
        "id": "identity-1"
      },
      {
        "capability": "realtime",
        "existing_contract": "Capture client protocol, event name/payload, private/presence channel identity, authorization endpoint and queue connection. ShouldBroadcast dispatches broadcast work; event production and broadcast execution are separate concerns.",
        "coexistence": "Recommendation: retain the old endpoint for old clients and bridge versioned domain events to the selected Laravel broadcaster. Route a stable room/user cohort including reconnects; designate one publisher per committed domain change.",
        "target": "Laravel broadcasting with an explicitly chosen supported driver and client integration, plus working queue workers when required. Defer transactional events until commit with the documented mechanism; recommendation: persist domain state for reconnect recovery.",
        "benefits": [
          {
            "benefit": "Recommendation: backend events can update multiple authorized clients.",
            "prerequisites": "Configured broadcaster, workers and matching event/client contracts.",
            "tradeoffs": "Livewire alone does not remove those operational pieces; changing the broadcaster protocol may require a bridge or client rollout."
          }
        ],
        "checks": [
          "Put clients on separate server instances and verify one committed event reaches all authorized recipients.",
          "Rollback the domain write and confirm no premature broadcast occurs.",
          "Revoke private-channel access, disconnect/reconnect and verify unauthorized delivery fails and the UI catches up from source state."
        ],
        "rollback": "Recommendation: preserve old event names/endpoints and stop new publication before restoring the old publisher; reconcile already-visible state.",
        "sources": [
          "https://laravel.com/docs/13.x/broadcasting",
          "https://laravel.com/docs/13.x/queues"
        ],
        "id": "realtime-1"
      },
      {
        "capability": "cache",
        "existing_contract": "Inventory cached values, serialization, TTLs and invalidation separately from locks, unique jobs, scheduler coordination and sessions. Laravel supports several cache stores with different capabilities.",
        "coexistence": "Recommendation: version namespaces for changed representations and keep coordination on the same qualified central store. Move reconstructible values separately; never globally flush a shared backend during cutover.",
        "target": "Selected Laravel cache driver for disposable cached data; a supported central store for atomic locks across servers. Recommendation: use explicit dedicated stores/namespaces for distinct ownership boundaries.",
        "benefits": [
          {
            "benefit": "Recommendation: a cache backend can change independently of domain storage when contents are reconstructible.",
            "prerequisites": "Verified invalidation, serialization and coordination inventory.",
            "tradeoffs": "Lock owners and dependent scheduler/session features may still prevent retiring the old backend."
          }
        ],
        "checks": [
          "Warm both application versions, update authoritative data and verify both observe the required invalidation/TTL rule.",
          "Contend for a lock from two servers; only the intended owner may act.",
          "Clear only the migration’s disposable cache and verify other applications and coordination keys survive."
        ],
        "rollback": "Recommendation: restore previous cache routing and rebuild from domain data; preserve lock/session store ownership until a separate qualified transition.",
        "sources": [
          "https://laravel.com/docs/13.x/cache"
        ],
        "id": "cache-1"
      },
      {
        "capability": "operations",
        "existing_contract": "List scheduler definitions, timezones, overlapping task prevention, worker lifecycle and cache-backed coordination. Laravel schedules and old cron/Celery/Rails schedules may describe the same business action.",
        "coexistence": "Recommendation: give each scheduled action one logical owner. Transfer it at an explicit boundary; Laravel onOneServer coordinates Laravel instances using a shared supported store and does not retire an external scheduler.",
        "target": "A documented Laravel scheduler invocation and supervised queue workers. Use withoutOverlapping/onOneServer only with their selected store and intended lock scope; recommendation: document missed-run and business idempotency policies separately.",
        "benefits": [
          {
            "benefit": "Recommendation: explicit schedule and worker ownership can prevent accidental duplicate production during rollout.",
            "prerequisites": "Schedule inventory, shared supported locking when needed and a coordinated old-scheduler retirement.",
            "tradeoffs": "A lock prevents concurrent starts within its scope, not every replayed business effect; coexistence still needs two operational inventories."
          }
        ],
        "checks": [
          "Run the scheduled fixture across two Laravel servers and verify one enqueue, then confirm the old scheduler stays disabled for that category.",
          "Exercise timezone and long-running/overlap cases; restart the worker and scheduler and verify intended missed-run behavior."
        ],
        "rollback": "Recommendation: stop the Laravel schedule before restoring the old owner; reconcile accepted jobs and completed effects before replay.",
        "sources": [
          "https://laravel.com/docs/13.x/scheduling",
          "https://laravel.com/docs/13.x/queues"
        ],
        "id": "operations-1"
      }
    ],
    "sources": [
      {
        "url": "https://laravel.com/docs/13.x/migrations",
        "title": "Laravel 13 Database Migrations",
        "claim": "Schema migration and rollback commands."
      },
      {
        "url": "https://laravel.com/docs/13.x/queues",
        "title": "Laravel 13 Queues",
        "claim": "Connections versus queues, model serialization, after-commit dispatch, workers and timeout/retry_after interaction."
      },
      {
        "url": "https://laravel.com/docs/13.x/session",
        "title": "Laravel 13 HTTP Session",
        "claim": "Database session default, driver/table prerequisites and session-blocking requirements."
      },
      {
        "url": "https://laravel.com/docs/13.x/authentication",
        "title": "Laravel 13 Authentication",
        "claim": "Guard/provider architecture, sessions, logout and authentication configuration."
      },
      {
        "url": "https://laravel.com/docs/13.x/broadcasting",
        "title": "Laravel 13 Broadcasting",
        "claim": "Broadcast drivers, ShouldBroadcast/queue execution, private authorization and after-commit dispatch."
      },
      {
        "url": "https://laravel.com/docs/13.x/cache",
        "title": "Laravel 13 Cache",
        "claim": "Backend capabilities, atomic lock prerequisites and prefix-independent cache flush."
      },
      {
        "url": "https://laravel.com/docs/13.x/scheduling",
        "title": "Laravel 13 Scheduling",
        "claim": "Scheduler operation, timezones, overlap prevention and shared-store onOneServer locking."
      },
      {
        "url": "https://livewire.laravel.com/docs/4.x/components",
        "title": "Livewire 4 Components",
        "claim": "PHP/Blade components and make:livewire format options."
      },
      {
        "url": "https://livewire.laravel.com/docs/4.x/security",
        "title": "Livewire 4 Security",
        "claim": "Client-controlled properties/actions require validation and authorization."
      }
    ],
    "reviewed_at": "2026-10-11",
    "evidence": "documentation-reviewed"
  },
  "rewrite_url": "/rewrite/guide.md",
  "migration_contracts_url": "/rewrite/contracts.json",
  "agent_workflow": [
    "Read README, dependency manifests, lockfiles, runtime pins and the maintained project workflow before changing anything. Preserve an existing stack unless reconsidering it is part of the request.",
    "Use this guide to select tools by requirement. Resolve compatible versions from official and installed-version documentation; record the actual lockfile and runtime versions.",
    "Create a plan for schema changes, identity, authorization, external effects and deployment. A library choice does not complete its integration.",
    "Run relevant checks after configuration. Exercise the real interface, failure paths and packaged artifact on the intended target. Report commands, versions, results and untested behavior.",
    "On failure, retain the command and diagnostic, fix the failing prerequisite and resume there. Do not regenerate over existing work or suppress failures to make a check green."
  ],
  "selection": {
    "native_ui": false,
    "static_hosting": false,
    "offline_client_candidate": false
  },
  "coverage_note": "Tools are curated starting points for this application role. Exact versions, integrations and offline behavior require project-specific qualification."
}
