For question one on how to keep jobs run and failed jobs on display longer or to persist longer I found https://github.com/laravel/horizon/issues/275#issuecomment-433363871c in which Dries mentions
In your horizon.php config file there's a trim.recent setting which defaults to 60 minutes. You can increase this as you see fit to persists data longer. I'll send a PR to the docs to document this behavior.
We currently have
/*
|--------------------------------------------------------------------------
| Job Trimming Times
|--------------------------------------------------------------------------
|
| Here you can configure for how long (in minutes) you desire Horizon to
| persist the recent and failed jobs. Typically, recent jobs are kept
| for one hour while all failed jobs are stored for an entire week.
|
*/
'trim' => [
'recent' => 60,
'failed' => 10080,
],
so we can increase the recent trim time from 60 minutes to more. and for failed jobs too if need be.
For updating the job with some middleware for throttling and backoff time I am not quite done yet.