Make sure you're allowing enough time for the cron job to do it's job, once per hour. You can force it to run for testing through the cron job manager. (admin.php?cron/)
The flow should be...
User Joins > Email Confirmed > Valid > Registered Group > Makes First Post, Reaches Goal of 1 Post > Cron Job Runs at XX:20* > User Is Pormoted and added to New Group.
Do not change the default user group of Registered.
The promoted member should have: Registered + Custom Group for people with 1 post.
*XF 2.x - The default User Group Promotion is set to run once per hour at XX:20. You can customize this by changing the cron schedule.
User Joins > Email Confirmed > Valid > Registered Group > Makes First Post, Reaches Goal of 1 Post > Cron Job Runs at XX:20* > User Is Pormoted and added to New Group.
After trying all day yesterday, I found that the problem is in the newly created user group.
I've looked through a lot of information, but I still don't know what the problem is.