In start_build_component, if the builder.build method call fails, the component is marked as failed, and the exception is gobbled up. The module is still in the building state until the poller catches it in fail_lost_builds. It'd be a better UX if the module build fails right away. It could be just as simple as calling builder.module.transition(...) in the except clause.
start_build_component
builder.build
fail_lost_builds
builder.module.transition(...)
Commit 8adce759 fixes this issue
This issue has been migrated to Fedora Forge: https://forge.fedoraproject.org/koji/mbs/issues/1009
Please continue any further discussion there.