The following is pseudo-code for a proposed grunt release task.
The task assumes that you're using git and the default remote is where the release should be pushed to.
There are safety checks to ensure a clean release, and the custom checks can be added by the project using the release task.
None of the following is a suggestion on naming, this is purely an overview of the way I think the release task should work.
The word "task" is heavily abused in the comments. These may not be tasks as defined in Grunt.