In Photoscan 1.4.1, there is no way to reliably check if a given step has been done anymore.
When you create a new project you have point_cloud, dense_cloud, model, etc, set to None. When you run the alignment, other attributes are still None but once you run the camera optimization, dense_cloud and model are set to a null object of their respective type.
The issue now is that it is really cumbersome to check if the steps has been done as they are not guaranteed to be None if not and there is no attribute/method to check that condition. I guess this is due to the fact that chunks now hold a list of all those products, which also imply that we cannot remove a product by setting its attribute to None anymore.
Another weird behavior is that the list of products keeps null instances when they are cleared and new ones are added. In this project I have only one model and the orthomosaic was cleared.
chunk.models
Out[10]: 2018-04-09 11:24:55 [<Model 'empty'>, <Model '332650 faces, 167072 vertices'>]
chunk.elevations
Out[11]: 2018-04-09 11:25:06 [<Elevation '2977x1689'>]
chunk.orthomosaics
Out[12]: 2018-04-09 11:25:14 [<Orthomosaic ''>, <Orthomosaic ''>]