Book: Decoupled PHP β Clean and Hexagonal Architecture for Applications That Outlive the Framework
Also by me: Thinking in Go (2-book series) β Complete Guide to Go Programming + Hexagonal Architecture in Go
My project: Hermes IDE | GitHub β an IDE for developers who ship with Claude Code and other AI coding tools
Me: xgabriel.com | GitHub
Your invoice upload has been "working" for weeks. Then someone asks for the PDF of invoice 4812 and the bucket has nothing at that key. No exception in the logs, no failed job. The use case called Storage::disk('s3')->put(...) , and per the Laravel file storage docs , when a write fails put returns false unless the disk has 'throw' => true in its config. Nobody checked the return value, because nobody thinks of a file write as something that answers with a boolean.
That is one cost of calling the Storage facade from inside a use case.β¦