Task: Add readiness state and project startup lifecycle

Add readiness state and project startup lifecycle

Separate the external container state from the actual readiness of the child application.

The running state of the external DinD does not mean that the internal Compose has already built and the application is ready. A project-level state model of building / starting / ready / failed with a verifiable readiness criterion and an error cause is needed. It must be suitable for the API, the agent, and the GUI.