Engineers
To build a system of work, we need to abstract the way that we work.
State
Between the start of a project, t0, and the completion of a project, tC, what changes? The project state, S, changes. S is a combination of many things including the resources of a client, the state of the tool or service that we are building, and available external tools that can be used in the project.
A lot about S is unknown at t0, St_0. In order to learn about S at any point in time, St_n, we need information, I. At any point of a project, and particularly at the start, we can learn information from engagements, E. This gathered information can be used to find the inferred state at a given time, tN:

Notably, the inferred state, Ŝ is not the same as the true state, S: Ŝ ≠ S. This allows for us to rectify inferred states at earlier points in time, tn, when new information becomes available at the current time, tN:

To get from St_0 to St_C we need to change S. Actions, a, are instances of work that change S from one point in time to another:

Due to (1), the Transition function abstracts away the steps of actions typically ending with their own engagements / information extraction. E.G., an action ending with a test that shows that a new feature was successfully deployed.
Engagements
An engagement can be a call, email, or any other event where information is passed from a external entity to our system. Notably, these include interacting with external systems as well as stakeholders to gather information.
These engagements are the driver for information gathering in our system and let us understand what the state is at a given time, as seen in (1).

Actions
Actions are what moves the S forward, as seen in (3). The set of all actions available at a point in time can be defined as:

Simplified to:

These should be acted on in order to bring Ŝt_n closer to SC. Notably, actions update the state and new actions are distilled from engagements:

Actions can be updated when we learn a new set of actions like so:

This function will insert, delete, and update actions in An.
Summary
Considering all of this, the way that we work can be broken down into action creation:

And into action execution:

Since the Transition function will produce its own engagements and information to update the state, it will trigger (9) and recursively call itself in (10) until An is empty because Ŝt_n = St_C.
