The default use case is for users to have substitutes enabled and to
fetch binaries from a build farm. The build farm tries to build all
packages, but not all builds succeed. The daemon caches build failures.
This information, however, is not available for users. The default
behaviour of Guix is to attempt building the package locally. This is
fine for packages that the build farm hasn’t attempted yet, but it is a
waste of time when the build has already been attempted without success.
I propose that “guix publish” should also convey information about
failed builds. The Guix client can then abort right away without
wasting time and power to attempt a doomed build. Users may override
this with “--fallback” or a new option.