During the past few weeks I have been experimenting with types of workflows for task lists. At the moment I am using a task board with four different lists.
The first list, "Tasks", is where I create any task that I plan on doing in the future. The second list, "Tomorrow", is a list that queues tasks which move to the third list at the end of the day, which is the "Today" list.
There are only two ways to add tasks in the "Today" list, queuing from the "Tomorrow" list, and creating tasks in the "Today" list as extra tasks. Extra tasks will mainly be used for stat tracking so that I can get a feel of how many tasks I should normally be putting in the queue. Any task in this list will age once per day if not completed. Tasks cannot be deleted until a week has passed, which gives ample time to think about the task before dismissing it. When a task is done I check the task and it moves to the "Complete" list at the end of the day.
The "Complete" list is an immutable list with no interaction. It's just a way to see what you've finished recently.
If you want to try out this workflow I have a web app up for it at: