Essa é uma maneira de fazer isso.
Você pode nem precisar que o campo current_status seja um FK; por que não apenas armazenar o valor? Você poderia entrar em referências circulares estranhas de outra forma.
Outra forma seria armazenar um arquivo de status, separado da tabela de projetos. Sempre que o status for alterado, insira o status atual na tabela de archive e altere o valor projects.status.