"branch_STABLE" shall be the development branch pointer with tests successfully passed
"branch_TESTING" shall be the development branch pointer with tests currently running
"branch_UNSTABLE" shall be the branch pointer on which new development can be done while tests are running
Logic
IF tests pass THEN "branch_STABLE" is fast-forwarded to "branch_TESTING" ELSE "branch_TESTING" is fixed
IF "branch_STABLE" == "branch_TESTING" AND "branch_UNSTABLE" reaches a point with new testable features THEN "branch_UNSTABLE" is merged to "branch_TESTING"; testing commences on "branch_TESTING"; development continues on "branch_UNSTABLE"
Let's try a new workflow: Branches
Logic
graph can be
or
if TESTING needed fixing