expose discovery boot interface errors

- improved error messages on failure
- simplify fact extraction

TBH: this whole code needs to be refactored.
`name` call is probably missing, `fact_name.name.split('_').last`