Commit vs Fast Commit vs Commit Cleanout in Oracle Database
You have the basics right. There is only one type of commit (no normal, fast...).

from the concepts doc: 


  When a transaction commits, the following actions occur:
  
  
  A system change number (SCN) is generated for the COMMIT.
  
  The internal transaction table for the associated undo tablespace
  records that the transaction has committed. The corresponding unique
  SCN of the transaction is assigned and recorded in the transaction
  table. See "Serializable Isolation Level".
  The log writer (LGWR) process writes remaining redo log entries in the
  redo log buffers to the online redo log and writes the transaction SCN
  to the online redo log. This atomic event constitutes the commit of
  the transaction.
  Oracle Database releases locks held on rows and tables.
  
  Users who were enqueued waiting on locks held by the uncommitted
  transaction are allowed to proceed with their work.
  Oracle Database deletes savepoints.
  Oracle Database performs a commit cleanout.
  
  If modified blocks containing data from the committed transaction are
  still in the SGA, and if no other session is modifying them, then the
  database removes lock-related transaction information from the blocks.
  Ideally, the COMMIT cleans out the blocks so that a subsequent SELECT
  does not have to perform this task.
  


So cleanout (full with redo) will be performed during commit if the blocks are still in the SGA. 

In active systems, it is common for blocks with uncommited transactions to be written to disk and flushed from the SGA. In this case, the block is left as is and the next query that touches the block will perform delayed block cleanout (your point 5 doesn't happen in all cases).