Data Version
Transparency
Data structures can have multiple versions without affecting the processing functions that consume or produce them.
Action Version
Transparency
It should be possible to upgrade a processing function without affecting processing functions that call it.
Separation
of Concerns
A processing function should not address more than one concern and should thus not include more than one task.
Separation
of States
Tasks should clearly expose the state of their execution, so that errors can be correctly attributed to their causes.