Observation from Ivan Nemytchenko's tour of GitLab service objects: a service that starts with two private methods grows over time to ~200 lines of code, absorbing controller responsibilities (session handling, response preparation), mixing application and domain logic, calling other services (sometimes circularly), and inheriting from a Base Service framework invented to manage the complexity. Because all this code ends up in the same 'bucket' regardless of the kind of work it does, the single-responsibility principle and layered architecture are effectively killed. Better: find the right shelf and shape for each kind of work.