The TaskStatus associated with a status update has relied on a single enum and free-form string to communicate the status. There are benefits to adding more data to the status update, and in Mesos 0.21.0, we have introduced the notion of a Source and Reason.
The source of a status update is, broadly speaking, the actor that changed the status. This can currently be Master, Slave, or Executor. Similarly, we have added an enumeration of reasons for the status update. The list can be found in include/mesos/mesos.proto and is fairly extensive.
Our hope is that frameworks can use the source and reason to better communicate status updates to end users, and make better scheduling decisions.
We have also introduced the notion of a TASK_ERROR state, distinct from TASK_LOST. The semantic difference is that tasks that are updated as lost can be rescheduled and should succeed, while tasks with status error will continue to fail if they are rescheduled. In Mesos 0.21.0 we do not send TASK_ERROR but it has been defined so frameworks can prepare to receive it. We will start sending it in Mesos 0.22.0.