Contracts were never in C++23 - C++26 was the goal when they cut it from C++20. The C++ cut was done by the people pushing contracts, while this is done by a different group.
Why yes, because the C++20 was so poorly thought through that in the July 2019 WG21 meeting the design was deemed irremediably broken, and consequently the committee made the unprecedented decision to just disband the group and start over by forming a new one. This happened so close to the kickoff that contracts were right there excluded from C++23.
And after all these years, the proposal remains broken.
Why yes, because the C++20 was so poorly thought through that in the July 2019 WG21 meeting the design was deemed irremediably broken, and consequently the committee made the unprecedented decision to just disband the group and start over by forming a new one. This happened so close to the kickoff that contracts were right there excluded from C++23.
And after all these years, the proposal remains broken.