Preserve canonical activity failure messages beyond MySQL TEXT capacity and when messages contain NUL bytes. Diagnostic lists remain bounded, while model, detail and history reads retain the complete accepted message.
This patch also prevents expired activity callbacks from racing retained-state pruning and fixes PostgreSQL recent-failure and history-budget reads for NUL-bearing history.
Upgrade with the normal package update and php artisan migrate. The additive migration retains existing rows and failure evidence on package rollback. MySQL/MariaDB require an instant column addition; unsupported layouts fail rather than copying a live table. See failure message storage for migration and rollback behavior.
Laravel 11 now requires 11.56.1 or later for the upstream TokenGuard correction. Laravel 9/10 compatibility remains limited to the documented upgrade/drain path and must not expose TokenGuard while migrating. The legacy advisory remains tracked in #922.
Server images and deployed applications require their own dependency update, migration and acceptance. The rejected-outcome history emitter remains separate.
Changes: #918, #920 and #921. Full changelog: 2.12.0...2.12.2