Rules
Do not hold request, config repository, tenant context, or current assistant in a singleton constructor. A singleton is resolved once and reused; whatever it captured on the first job is what every later job sees. Keep mutable request or job state inscoped bindings. Laravel rebuilds
scoped bindings per job, which is exactly the lifetime such an object needs.
Switch tenants through TenantSwitcher::runForTenant(), restoring in
finally. Without the restore, the next job inherits the context.