The purpose for Project Evolution is to track the evolution of a project. There are 3 types of projects, and 3 types of status.
Types
Status
A project is not only defined by it’s name, but rather the progression of it’s names. For example, a project could start off by being called PROJECT and later become PROJECT_B, and both are technically the same project despite have different entries in the database. This makes it easier to allow things like Products and project membership to still reference old versions of projects, and still display with the most recent version of the project.
There are 4 types of actions which can occur during a project’s lifetime:
The UI for making these changes is found at Special:ProjectEvolution, and in general the UI should always be used for making these changes. If the changes are done manually in the database, then it could go into an unstable state. If for example, a project is created with an entry in grand_project and grand_project_evolution, but not it grand_project_status or grand_project_description, then it will be as if the project does not exist, or will exist in some partial state. There are some checks when instantiating projects for these states, however it may still be possible that project instantiation will fail if there is something missing in the DB. Therefore it is best to always use the UI for these changes.