The “ready” state on order objects is not implemented. Orders remain “pending” when associated authorizations are all valid and finalization may occur. Client developers should check the authorization statuses to determine if the order is ready.
You should POST the finalization URL when the authorizations are all valid, even if the order remains "pending".
We've added the ready state to Boulder but haven't deployed the change yet as it breaks some popular ACME clients (notably Certbot).
After this Pebble PR is merged you can test your client with an ACME server that returns the new "ready" status by using Pebble.
The Let's Encrypt V2 staging/prod endpoints won't have the "ready" status for a little while (keep an eye on the API announcements section to learn when that will change).