Don't log at the leaf. Log at the root

When every layer logs the same failure, observability turns into noise. Let inner code return meaning and let the operation boundary report the outcome once.