json.loads succeeding does not mean the result is a list of objects with an id. A dict, an entry without an id, or a scalar raised TypeError or KeyError, which escaped unhandled and defeated the point of the change. Both cases now raise DaemonError, and the original exception is chained so the cause is visible.